[ { "inputs": [ { "components": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension[]", "name": "extensions", "type": "tuple[]" } ], "internalType": "struct PixotchiRouter.SimpleRouterConstructorParams", "name": "_simpleRouterV3Params", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "uint256", "name": "_start", "type": "uint256" }, { "internalType": "uint256", "name": "_end", "type": "uint256" } ], "name": "InvalidCodeAtRange", "type": "error" }, { "inputs": [], "name": "WriteError", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" }, { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "indexed": false, "internalType": "struct IExtension.Extension", "name": "extension", "type": "tuple" } ], "name": "ExtensionAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "indexed": false, "internalType": "struct IExtension.Extension", "name": "extension", "type": "tuple" } ], "name": "ExtensionRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" }, { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "indexed": false, "internalType": "struct IExtension.Extension", "name": "extension", "type": "tuple" } ], "name": "ExtensionReplaced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "indexed": false, "internalType": "struct IExtension.ExtensionMetadata", "name": "extMetadata", "type": "tuple" } ], "name": "FunctionDisabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "indexed": false, "internalType": "struct IExtension.ExtensionFunction", "name": "extFunction", "type": "tuple" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "indexed": false, "internalType": "struct IExtension.ExtensionMetadata", "name": "extMetadata", "type": "tuple" } ], "name": "FunctionEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" }, { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "_disableFunctionInExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "_extension", "type": "tuple" } ], "name": "addExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "contractVersion", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "defaultExtensions", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" }, { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "disableFunctionInExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction", "name": "_function", "type": "tuple" } ], "name": "enableFunctionInExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllExtensions", "outputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension[]", "name": "allExtensions", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "extensionName", "type": "string" } ], "name": "getExtension", "outputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "getImplementationForFunction", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" } ], "name": "getMetadataForFunction", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRoleWithSwitch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initializeRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" } ], "name": "removeExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "_extension", "type": "tuple" } ], "name": "replaceExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60a06040523480156200001157600080fd5b5060405162004ff238038062004ff2833981016040819052620000349162000d31565b80518051600090156200007c576200004c82620000be565b620000798260405160200162000063919062000ec3565b60408051601f1981840301815291905262000172565b90505b6001600160a01b03166080525060017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0055620000b7620001e2565b50620011d4565b8051600160005b828110156200011957620000fb848281518110620000e757620000e762000f2b565b60200260200101516200023560201b60201c565b9150811562000119576200011160018262000f57565b9050620000c5565b50806200016d5760405162461bcd60e51b815260206004820152601e60248201527f42617365526f757465723a20696e76616c696420657874656e73696f6e2e000060448201526064015b60405180910390fd5b505050565b600080620001a2836040516020016200018c919062000f6d565b60408051601f1981840301815291905262000497565b90508051602082016000f091506001600160a01b038216620001d75760405163046a55db60e11b815260040160405180910390fd5b50919050565b905090565b6080516001600160a01b0316620001f557565b60006200020a608051620004c560201b60201c565b905060008180602001905181019062000224919062000f95565b90506200023181620004dd565b5050565b805151516000901580159062000280575062000250620006b7565b6001018260000151600001516040516200026b919062000fcd565b9081526040519081900360200190205460ff16155b80156200029a57508151604001516001600160a01b031615155b90506001620002a8620006b7565b600101836000015160000151604051620002c3919062000fcd565b908152604051908190036020019020805491151560ff1990921691909117905580620002f157506000919050565b60208201515160005b8181101562000490578215620004905760008460200151828151811062000325576200032562000f2b565b602090810291909101015180519091506000906001600160e01b031916620003c257604051602001620003759060208082526009908201526872656365697665282960b81b604082015260600190565b604051602081830303815290604052805190602001208260200151604051602001620003a2919062000feb565b60405160208183030381529060405280519060200120141590506200040b565b602080830151604051620003d7920162000fcd565b604051602081830303815290604052805190602001206001600160e01b03191682600001516001600160e01b031916141590505b801580156200044057506200041f620006b7565b82516001600160e01b0319166000908152602091909152604090205460ff16155b945060016200044e620006b7565b92516001600160e01b03191660009081526020939093526040909220805460ff191692151592909217909155506200048860018262000f57565b9050620002fa565b5050919050565b6060815182604051602001620004af92919062001000565b6040516020818303038152906040529050919050565b6060620004d782600160001962000718565b92915050565b60005b81518110156200023157600082828151811062000501576200050162000f2b565b602002602001015190506200052f81600001516000015162000528620007d660201b60201c565b90620007e2565b50805180516200053f91620007f0565b60208101515160005b8181101562000639576200055b620007d6565b60020183600001516000015160405162000576919062000fcd565b908152602001604051809103902060030183602001518281518110620005a057620005a062000f2b565b6020908102919091018101518254600180820185556000948552938390208251600290920201805463ffffffff191660e09290921c919091178155918101519092820190620005f09082620010dd565b505050620006248360200151828151811062000610576200061062000f2b565b602090810291909101015151845162000872565b6200063160018262000f57565b905062000548565b508151604080820151915190516001600160a01b03909216916200065e919062000fcd565b60405180910390207fbb37a605de78ba6bc667aeaf438d0aae8247e6f48a8fad23730e4fbbb480abf384604051620006979190620011a9565b60405180910390a350620006af905060018262000f57565b9050620004e0565b600080620006e760017f11c19c8d567686e9e4073585fe511ac02fcfc0ce76ceba4592185bf5bec3cd1f620011be565b604051602001620006fa91815260200190565b60408051601f19818403018152919052805160209091012092915050565b6060833b60008190036200073d575050604080516020810190915260008152620007cf565b808411156200075d575050604080516020810190915260008152620007cf565b83831015620007915760405163162544fd60e11b815260048101829052602481018590526044810184905260640162000164565b8383038482036000828210620007a85782620007aa565b815b60408051603f8301601f19168101909152818152955090508087602087018a3c505050505b9392505050565b6000620001dd620008aa565b6000620007cf8383620008da565b80620007fb620007d6565b600201836040516200080e919062000fcd565b908152604051908190036020019020815181906200082d9082620010dd565b5060208201516001820190620008449082620010dd565b5060409190910151600290910180546001600160a01b0319166001600160a01b039092169190911790555050565b806200087d620007d6565b6001600160e01b03198416600090815260039190910160205260409020815181906200082d9082620010dd565b600080620006e760017f775b9fab5634a62bb2a682c067408edbed43efd726183d2e2af744334d47acb7620011be565b6000620008e8838362000945565b6200093c578254600181018455600084815260209020016200090b8382620010dd565b50825460405160018501906200092390859062000fcd565b90815260405190819003602001902055506001620004d7565b506000620004d7565b600082600101826040516200095b919062000fcd565b9081526040519081900360200190205415159392505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620009af57620009af62000974565b60405290565b604051606081016001600160401b0381118282101715620009af57620009af62000974565b604051601f8201601f191681016001600160401b038111828210171562000a055762000a0562000974565b604052919050565b60006001600160401b0382111562000a295762000a2962000974565b5060051b60200190565b60005b8381101562000a5057818101518382015260200162000a36565b50506000910152565b600082601f83011262000a6b57600080fd5b81516001600160401b0381111562000a875762000a8762000974565b62000a9c601f8201601f1916602001620009da565b81815284602083860101111562000ab257600080fd5b62000ac582602083016020870162000a33565b949350505050565b600082601f83011262000adf57600080fd5b8151602062000af862000af28362000a0d565b620009da565b82815260059290921b8401810191818101908684111562000b1857600080fd5b8286015b8481101562000bba5780516001600160401b038082111562000b3e5760008081fd5b908801906040828b03601f190181131562000b595760008081fd5b62000b636200098a565b838801516001600160e01b03198116811462000b7f5760008081fd5b815290830151908282111562000b955760008081fd5b62000ba58c898487010162000a59565b81890152865250505091830191830162000b1c565b509695505050505050565b600082601f83011262000bd757600080fd5b8151602062000bea62000af28362000a0d565b82815260059290921b8401810191818101908684111562000c0a57600080fd5b8286015b8481101562000bba5780516001600160401b038082111562000c2f57600080fd5b90880190601f196040838c038201121562000c4957600080fd5b62000c536200098a565b878401518381111562000c6557600080fd5b84016060818e038401121562000c7a57600080fd5b62000c84620009b5565b9250888101518481111562000c9857600080fd5b62000ca88e8b8385010162000a59565b84525060408101518481111562000cbe57600080fd5b62000cce8e8b8385010162000a59565b848b015250606001516001600160a01b038116811462000ced57600080fd5b80604084015250818152604084015191508282111562000d0c57600080fd5b62000d1c8c898487010162000acd565b81890152865250505091830191830162000c0e565b60006020828403121562000d4457600080fd5b81516001600160401b038082111562000d5c57600080fd5b908301906020828603121562000d7157600080fd5b60405160208101818110838211171562000d8f5762000d8f62000974565b60405282518281111562000da257600080fd5b62000db08782860162000bc5565b82525095945050505050565b6000815180845262000dd681602086016020860162000a33565b601f01601f19169290920160200192915050565b6000604082516040855280516060604087015262000e0c60a087018262000dbc565b9050602080830151603f1988840301606089015262000e2c838262000dbc565b604094909401516001600160a01b03166080890152508581015187840382890152805180855290820193925081830190600581901b8401830160005b8281101562000eb557858203601f19018452865180516001600160e01b031916835285015185830189905262000ea18984018262000dbc565b978601979486019492505060010162000e68565b509998505050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562000f1e57603f1988860301845262000f0b85835162000dea565b9450928501929085019060010162000eec565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620004d757620004d762000f41565b600081526000825162000f8881600185016020870162000a33565b9190910160010192915050565b60006020828403121562000fa857600080fd5b81516001600160401b0381111562000fbf57600080fd5b62000ac58482850162000bc5565b6000825162000fe181846020870162000a33565b9190910192915050565b602081526000620007cf602083018462000dbc565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200104581600e85016020870162000a33565b91909101600e019392505050565b600181811c908216806200106857607f821691505b602082108103620001d757634e487b7160e01b600052602260045260246000fd5b601f8211156200016d576000816000526020600020601f850160051c81016020861015620010b45750805b601f850160051c820191505b81811015620010d557828155600101620010c0565b505050505050565b81516001600160401b03811115620010f957620010f962000974565b62001111816200110a845462001053565b8462001089565b602080601f831160018114620011495760008415620011305750858301515b600019600386901b1c1916600185901b178555620010d5565b600085815260208120601f198616915b828110156200117a5788860151825594840194600190910190840162001159565b5085821015620011995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000620007cf602083018462000dea565b81810381811115620004d757620004d762000f41565b608051613e02620011f0600039600061032e0152613e026000f3fe60806040526004361061014f5760003560e01c8063a0a8e460116100b6578063ca15c8731161006f578063ca15c87314610505578063cb2ef6f714610525578063ce0b601314610549578063d547741f14610569578063e05688fe14610589578063ee7d2adf146105a9576101bf565b8063a0a8e4601461043a578063a0dbaefd14610456578063a217fddf14610483578063a32fa5b314610498578063c0562f6d146104b8578063c22707ee146104d8576101bf565b80634a00cc48116101085780634a00cc4814610368578063512cf9141461038a578063572b6c05146103aa5780638856a113146103da5780639010d07c146103fa57806391d148541461041a576101bf565b80630e87d9e314610248578063248a9ca31461025d5780632f2ff15d146102bc57806336568abe146102dc578063429eed80146102fc578063463c48641461031c576101bf565b366101bf577fc7fc9545a7a1c6d926eb226aca9b0331d15be911879e1d18bd76f146a8dc000080547fc7fc9545a7a1c6d926eb226aca9b0331d15be911879e1d18bd76f146a8dc0008546101a49134916105c9565b8160070160008282546101b79190613273565b925050819055005b366000036101c957005b60006101e06000356001600160e01b0319166105e7565b90506001600160a01b03811661023d5760405162461bcd60e51b815260206004820181905260248201527f526f757465723a2066756e6374696f6e20646f6573206e6f742065786973742e60448201526064015b60405180910390fd5b610246816105fc565b005b34801561025457600080fd5b50610246610625565b34801561026957600080fd5b506102a9610278366004613286565b60009081527f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e501602052604090205490565b6040519081526020015b60405180910390f35b3480156102c857600080fd5b506102466102d73660046132bb565b6107df565b3480156102e857600080fd5b506102466102f73660046132bb565b61089f565b34801561030857600080fd5b506102466103173660046133fe565b610911565b34801561032857600080fd5b506103507f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b3565b34801561037457600080fd5b5061037d610b8d565b6040516102b39190613589565b34801561039657600080fd5b506102466103a53660046133fe565b610c7d565b3480156103b657600080fd5b506103ca6103c53660046135ed565b610cab565b60405190151581526020016102b3565b3480156103e657600080fd5b506102466103f5366004613660565b610ce8565b34801561040657600080fd5b506103506104153660046136c3565b610d16565b34801561042657600080fd5b506103ca6104353660046132bb565b610e25565b34801561044657600080fd5b50604051600181526020016102b3565b34801561046257600080fd5b506104766104713660046136e5565b610e5d565b6040516102b39190613700565b34801561048f57600080fd5b506102a9600081565b3480156104a457600080fd5b506103ca6104b33660046132bb565b610fe7565b3480156104c457600080fd5b506102466104d33660046137b1565b611058565b3480156104e457600080fd5b506104f86104f33660046138a2565b611088565b6040516102b391906138d6565b34801561051157600080fd5b506102a9610520366004613286565b6110ba565b34801561053157600080fd5b506d2834bc37ba31b434a937baba32b960911b6102a9565b34801561055557600080fd5b506103506105643660046136e5565b6105e7565b34801561057557600080fd5b506102466105843660046132bb565b611157565b34801561059557600080fd5b506102466105a43660046137b1565b61116e565b3480156105b557600080fd5b506102466105c43660046138a2565b61119b565b60008260001904841183021582026105e057600080fd5b5091020490565b60006105f282610e5d565b6040015192915050565b3660008037600080366000845af43d6000803e80801561061b573d6000f35b3d6000fd5b505050565b600080516020613d8d8339815191525460ff808216916101009004168015808015610653575060018360ff16105b8061066b5750303b15801561066b57508260ff166001145b6106ce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610234565b600080516020613d8d833981519152805460ff19166001179055801561070b57600080516020613d8d833981519152805461ff0019166101001790555b6107136111cd565b7344e156cbb4506cee55a96b45d10a77806e01246961073360008261120b565b61075d7f55add213c41f3851b4506717b8af695a4256979dff496dcaae7789f6121331aa8261120b565b6107877f55add213c41f3851b4506717b8af695a4256979dff496dcaae7789f6121331aa8061121f565b50801561062057600080516020613d8d833981519152805461ff0019169055604080516001815290517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a1505050565b610812600080516020613dad8339815191525b6000848152600191909101602052604090205461080d611286565b611290565b600080516020613dad8339815191526000838152602091825260408082206001600160a01b0385168352909252205460ff16156108915760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610234565b61089b828261120b565b5050565b806001600160a01b03166108b1611286565b6001600160a01b0316146109075760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610234565b61089b828261131c565b610919611330565b6109355760405162461bcd60e51b8152600401610234906138e9565b61093f8282611365565b6109b15760405162461bcd60e51b815260206004820152603860248201527f457874656e73696f6e4d616e616765723a2063616e6e6f742072656d6f76652060448201527f66756e6374696f6e2066726f6d20657874656e73696f6e2e00000000000000006064820152608401610234565b60006109bb611464565b6001600160e01b0319831660009081526003919091016020526040908190208151606081019092528054829082906109f290613920565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1e90613920565b8015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b50505050508152602001600182018054610a8490613920565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab090613920565b8015610afd5780601f10610ad257610100808354040283529160200191610afd565b820191906000526020600020905b815481529060010190602001808311610ae057829003601f168201915b5050509183525050600291909101546001600160a01b03166020909101529050610b27838361146e565b610b308261173b565b816001600160e01b03191683604051610b499190613954565b60405180910390207fbb931a9651175c9c82f86afbf6ad37a9141aa8d1d42bf798739be245a12e4e8883604051610b809190613700565b60405180910390a3505050565b60606000610ba1610b9c611464565b61178e565b8051909150806001600160401b03811115610bbe57610bbe6132e7565b604051908082528060200260200182016040528015610c1857816020015b6040805160a08101825260609181018281528282018390526000608083015281526020810191909152815260200190600190039081610bdc5790505b50925060005b81811015610c7757610c48838281518110610c3b57610c3b613970565b6020026020010151611799565b848281518110610c5a57610c5a613970565b6020908102919091010152610c70600182613273565b9050610c1e565b50505090565b610c85611330565b610ca15760405162461bcd60e51b8152600401610234906138e9565b61089b8282610911565b6001600160a01b031660009081527f82aadcdf5bea62fd30615b6c0754b644e71b6c1e8c55b71bb927ad005b504f00602052604090205460ff1690565b610cf0611330565b610d0c5760405162461bcd60e51b8152600401610234906138e9565b61089b8282611a43565b600080610d21611c98565b600085815260209190915260408120549150805b82811015610e1b576000610d47611c98565b60008881526020918252604080822085835260010190925220546001600160a01b031614610dbf57848203610dad57610d7e611c98565b600087815260209182526040808220938252600190930190915220546001600160a01b03169250610e1f915050565b610db8600183613273565b9150610e09565b610dca866000610e25565b8015610df65750610dd9611c98565b600087815260209182526040808220828052600201909252205481145b15610e0957610e06600183613273565b91505b610e14600182613273565b9050610d35565b5050505b92915050565b6000918252600080516020613dad833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60408051606080820183528082526020820152600091810191909152610e81611464565b6001600160e01b031983166000908152600391909101602052604090819020815160608101909252805482908290610eb890613920565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee490613920565b8015610f315780601f10610f0657610100808354040283529160200191610f31565b820191906000526020600020905b815481529060010190602001808311610f1457829003601f168201915b50505050508152602001600182018054610f4a90613920565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7690613920565b8015610fc35780601f10610f9857610100808354040283529160200191610fc3565b820191906000526020600020905b815481529060010190602001808311610fa657829003601f168201915b5050509183525050600291909101546001600160a01b031660209091015292915050565b6000600080516020613dad833981519152600084815260209182526040808220828052909252205460ff1661104f57600080516020613dad8339815191526000848152602091825260408082206001600160a01b0386168352909252205460ff169050610e1f565b50600192915050565b611060611330565b61107c5760405162461bcd60e51b8152600401610234906138e9565b61108581611ca2565b50565b6040805160a08101825260609181018281528282018390526000608083015281526020810191909152610e1f82611799565b6000806110c5611c98565b6000848152602091909152604081205491505b818110156111325760006110ea611c98565b60008681526020918252604080822085835260010190925220546001600160a01b0316146111205761111d600184613273565b92505b61112b600182613273565b90506110d8565b5061113e836000610e25565b156111515761114e600183613273565b91505b50919050565b610907600080516020613dad8339815191526107f2565b611176611330565b6111925760405162461bcd60e51b8152600401610234906138e9565b61108581611e0b565b6111a3611330565b6111bf5760405162461bcd60e51b8152600401610234906138e9565b61108581611f35565b905090565b600080516020613d8d83398151915254610100900460ff166112015760405162461bcd60e51b815260040161023490613986565b61120961227f565b565b61121582826122d9565b61089b828261235f565b60008281527f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e5016020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60006111c861241e565b600080516020613dad8339815191526000838152602091825260408082206001600160a01b0385168352909252205460ff1661089b576112da816001600160a01b03166014612440565b6112e5836020612440565b6040516020016112f69291906139d1565b60408051601f198184030181529082905262461bcd60e51b825261023491600401613a3e565b61132682826125e2565b61089b828261266e565b3360009081527fa04e902a2f30cc90fb357dcfb1d97b3ca94b63614f538cf21ec72e982ed2d5b2602052604090205460ff1690565b600061137983611373611464565b906126fd565b6113955760405162461bcd60e51b815260040161023490613a51565b826040516020016113a69190613a3e565b604051602081830303815290604052805190602001206113c4611464565b6001600160e01b031984166000908152600391909101602090815260409182902091516113f2929101613a9c565b604051602081830303815290604052805190602001201461104f5760405162461bcd60e51b815260206004820152602660248201527f457874656e73696f6e4d616e616765723a20696e636f727265637420657874656044820152653739b4b7b71760d11b6064820152608401610234565b60006111c8612709565b6000611478611464565b600201836040516114899190613954565b9081526020016040518091039020600301805480602002602001604051908101604052809291908181526020016000905b828210156115975760008481526020908190206040805180820190915260028502909101805460e01b6001600160e01b0319168252600181018054929391929184019161150690613920565b80601f016020809104026020016040519081016040528092919081815260200182805461153290613920565b801561157f5780601f106115545761010080835404028352916020019161157f565b820191906000526020600020905b81548152906001019060200180831161156257829003601f168201915b505050505081525050815260200190600101906114ba565b5050825192935060009150505b8181101561173457836001600160e01b0319168382815181106115c9576115c9613970565b6020026020010151600001516001600160e01b03191603611722576115ec611464565b600201856040516115fd9190613954565b90815260405190819003602001902060030161161a600184613b2c565b8154811061162a5761162a613970565b9060005260206000209060020201611640611464565b600201866040516116519190613954565b9081526020016040518091039020600301828154811061167357611673613970565b600091825260209091208254600290920201805463ffffffff191663ffffffff9092169190911781556001808201906116ae90840182613b87565b509050506116ba611464565b600201856040516116cb9190613954565b90815260200160405180910390206003018054806116eb576116eb613c63565b600082815260208120600260001990930192830201805463ffffffff191681559061171960018301826131be565b50509055611734565b61172d600182613273565b90506115a4565b5050505050565b611743611464565b6001600160e01b031982166000908152600391909101602052604081209061176b82826131be565b6117796001830160006131be565b5060020180546001600160a01b031916905550565b6060610e1f82612767565b6040805160a081018252606091810182815282820183905260006080830152815260208101919091526117ca611464565b600201826040516117db9190613954565b9081526040805191829003602001822060a0830182528054909183919082019083908290829061180a90613920565b80601f016020809104026020016040519081016040528092919081815260200182805461183690613920565b80156118835780601f1061185857610100808354040283529160200191611883565b820191906000526020600020905b81548152906001019060200180831161186657829003601f168201915b5050505050815260200160018201805461189c90613920565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890613920565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b5050509183525050600291909101546001600160a01b03166020918201529082526003830180546040805182850281018501909152818152938301939260009084015b82821015611a355760008481526020908190206040805180820190915260028502909101805460e01b6001600160e01b031916825260018101805492939192918401916119a490613920565b80601f01602080910402602001604051908101604052809291908181526020018280546119d090613920565b8015611a1d5780601f106119f257610100808354040283529160200191611a1d565b820191906000526020600020905b815481529060010190602001808311611a0057829003601f168201915b50505050508152505081526020019060010190611958565b505050915250909392505050565b611a4d8282612844565b611abf5760405162461bcd60e51b815260206004820152603760248201527f457874656e73696f6e4d616e616765723a2063616e6e6f742053746f72653a2060448201527f66756e6374696f6e20666f7220657874656e73696f6e2e0000000000000000006064820152608401610234565b611ac9828261286e565b6000611ad3611464565b60020183604051611ae49190613954565b9081526040805191829003602001822060608301909152805482908290611b0a90613920565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3690613920565b8015611b835780601f10611b5857610100808354040283529160200191611b83565b820191906000526020600020905b815481529060010190602001808311611b6657829003601f168201915b50505050508152602001600182018054611b9c90613920565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc890613920565b8015611c155780601f10611bea57610100808354040283529160200191611c15565b820191906000526020600020905b815481529060010190602001808311611bf857829003601f168201915b5050509183525050600291909101546001600160a01b03166020909101528251909150611c429082612abc565b81600001516001600160e01b03191683604051611c5f9190613954565b60405180910390207f681115194e519bda23de4da5218f3bc38f5585eab7c6b7d5fa66caa4602f574d8484604051610b80929190613c79565b60006111c8612b33565b611cab81612b95565b611d0b5760405162461bcd60e51b815260206004820152602b60248201527f457874656e73696f6e4d616e616765723a2063616e6e6f74207265706c61636560448201526a1032bc3a32b739b4b7b71760a91b6064820152608401610234565b80518051611d1891612c4c565b805151611d2490612c83565b60208101515160005b81811015611da557611d6483600001516000015184602001518381518110611d5757611d57613970565b602002602001015161286e565b611d9383602001518281518110611d7d57611d7d613970565b6020026020010151600001518460000151612abc565b611d9e600182613273565b9050611d2d565b508151604080820151915190516001600160a01b0390921691611dc89190613954565b60405180910390207f5f1ef2b136db521971a88818ce904a8e310082338afdc100212a31270664215884604051611dff91906138d6565b60405180910390a35050565b611e1481612e2c565b611e705760405162461bcd60e51b815260206004820152602760248201527f457874656e73696f6e4d616e616765723a2063616e6e6f74206164642065787460448201526632b739b4b7b71760c91b6064820152608401610234565b80518051611e7d91612c4c565b60208101515160005b81811015611edb57611eb083600001516000015184602001518381518110611d5757611d57613970565b611ec983602001518281518110611d7d57611d7d613970565b611ed4600182613273565b9050611e86565b508151604080820151915190516001600160a01b0390921691611efe9190613954565b60405180910390207fbb37a605de78ba6bc667aeaf438d0aae8247e6f48a8fad23730e4fbbb480abf384604051611dff91906138d6565b611f3e81612ef4565b611f9d5760405162461bcd60e51b815260206004820152602a60248201527f457874656e73696f6e4d616e616765723a2063616e6e6f742072656d6f76652060448201526932bc3a32b739b4b7b71760b11b6064820152608401610234565b6000611fa7611464565b60020182604051611fb89190613954565b9081526040805191829003602001822060a08301825280549091839190820190839082908290611fe790613920565b80601f016020809104026020016040519081016040528092919081815260200182805461201390613920565b80156120605780601f1061203557610100808354040283529160200191612060565b820191906000526020600020905b81548152906001019060200180831161204357829003601f168201915b5050505050815260200160018201805461207990613920565b80601f01602080910402602001604051908101604052809291908181526020018280546120a590613920565b80156120f25780601f106120c7576101008083540402835291602001916120f2565b820191906000526020600020905b8154815290600101906020018083116120d557829003601f168201915b5050509183525050600291909101546001600160a01b03166020918201529082526003830180546040805182850281018501909152818152938301939260009084015b828210156122125760008481526020908190206040805180820190915260028502909101805460e01b6001600160e01b0319168252600181018054929391929184019161218190613920565b80601f01602080910402602001604051908101604052809291908181526020018280546121ad90613920565b80156121fa5780601f106121cf576101008083540402835291602001916121fa565b820191906000526020600020905b8154815290600101906020018083116121dd57829003601f168201915b50505050508152505081526020019060010190612135565b5050505081525050905061222582612f24565b61222e82612c83565b8160405161223c9190613954565b60405180910390207f3169a23cec9ad1a25ab59bbe00ecf8973dd840c745775ea8877041ef5ce65bcc8260405161227391906138d6565b60405180910390a25050565b600080516020613d8d83398151915254610100900460ff166122b35760405162461bcd60e51b815260040161023490613986565b60017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0055565b6000828152600080516020613dad833981519152602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561231b611286565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000612369611c98565b6000848152602091909152604090205490506001612385611c98565b60008581526020919091526040812080549091906123a4908490613273565b909155508290506123b3611c98565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b0392909216919091179055806123f3611c98565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b600061242933610cab565b1561243b575060131936013560601c90565b503390565b6060600061244f836002613ca7565b61245a906002613273565b6001600160401b03811115612471576124716132e7565b6040519080825280601f01601f19166020018201604052801561249b576020820181803683370190505b509050600360fc1b816000815181106124b6576124b6613970565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124e5576124e5613970565b60200101906001600160f81b031916908160001a9053506000612509846002613ca7565b612514906001613273565b90505b600181111561258c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061254857612548613970565b1a60f81b82828151811061255e5761255e613970565b60200101906001600160f81b031916908160001a90535060049490941c9361258581613cbe565b9050612517565b5083156125db5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610234565b9392505050565b6125ec8282611290565b600080516020613dad8339815191526000838152602091825260408082206001600160a01b038516835290925220805460ff1916905561262a611286565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000612678611c98565b6000848152602091825260408082206001600160a01b0386168352600201909252205490506126a5611c98565b6000848152602091825260408082208483526001019092522080546001600160a01b03191690556126d4611c98565b6000938452602090815260408085206001600160a01b0390941685526002909301905250812055565b60006125db8383612f58565b60008061273760017f775b9fab5634a62bb2a682c067408edbed43efd726183d2e2af744334d47acb7613b2c565b60405160200161274991815260200190565b60408051601f19818403018152919052805160209091012092915050565b606081600001805480602002602001604051908101604052809291908181526020016000905b828210156128395783829060005260206000200180546127ac90613920565b80601f01602080910402602001604051908101604052809291908181526020018280546127d890613920565b80156128255780601f106127fa57610100808354040283529160200191612825565b820191906000526020600020905b81548152906001019060200180831161280857829003601f168201915b50505050508152602001906001019061278d565b505050509050919050565b600061285283611373611464565b61104f5760405162461bcd60e51b815260040161023490613a51565b80516000906001600160e01b0319166128f8576040516020016128ae9060208082526009908201526872656365697665282960b81b604082015260600190565b6040516020818303038152906040528051906020012082602001516040516020016128d99190613a3e565b604051602081830303815290604052805190602001201415905061293f565b60208083015160405161290b9201613954565b604051602081830303815290604052805190602001206001600160e01b03191682600001516001600160e01b031916141590505b80156129ab5760405162461bcd60e51b815260206004820152603560248201527f457874656e73696f6e4d616e616765723a20666e2073656c6563746f7220616e604482015274321039b4b3b730ba3ab9329036b4b9b6b0ba31b41760591b6064820152608401610234565b60006129b5611464565b83516001600160e01b031916600090815260039190910160205260409020600201546001600160a01b031614612a455760405162461bcd60e51b815260206004820152602f60248201527f457874656e73696f6e4d616e616765723a2066756e6374696f6e20696d706c2060448201526e30b63932b0b23c9032bc34b9ba399760891b6064820152608401610234565b612a4d611464565b60020183604051612a5e9190613954565b908152604051602091819003820190206003018054600180820183556000928352918390208551600290920201805463ffffffff191660e09290921c91909117815591840151849291820190612ab49082613cd5565b505050505050565b80612ac5611464565b6001600160e01b0319841660009081526003919091016020526040902081518190612af09082613cd5565b5060208201516001820190612b059082613cd5565b5060409190910151600290910180546001600160a01b0319166001600160a01b039092169190911790555050565b60008060ff19612b6460017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c613b2c565b604051602001612b7691815260200190565b60408051601f1981840301815291905280516020909101201692915050565b805151600090612ba790611373611464565b612bc35760405162461bcd60e51b815260040161023490613a51565b8151604001516001600160a01b0316612c445760405162461bcd60e51b815260206004820152603a60248201527f457874656e73696f6e4d616e616765723a20616464696e6720657874656e736960448201527f6f6e20776974686f757420696d706c656d656e746174696f6e2e0000000000006064820152608401610234565b506001919050565b80612c55611464565b60020183604051612c669190613954565b90815260405190819003602001902081518190612af09082613cd5565b6000612c8d611464565b60020182604051612c9e9190613954565b9081526020016040518091039020600301805480602002602001604051908101604052809291908181526020016000905b82821015612dac5760008481526020908190206040805180820190915260028502909101805460e01b6001600160e01b03191682526001810180549293919291840191612d1b90613920565b80601f0160208091040260200160405190810160405280929190818152602001828054612d4790613920565b8015612d945780601f10612d6957610100808354040283529160200191612d94565b820191906000526020600020905b815481529060010190602001808311612d7757829003601f168201915b50505050508152505081526020019060010190612ccf565b505050509050612dba611464565b60020182604051612dcb9190613954565b90815260200160405180910390206003016000612de891906131f8565b60005b815181101561062057612e1a828281518110612e0957612e09613970565b60200260200101516000015161173b565b612e25600182613273565b9050612deb565b80515151600090612e7f5760405162461bcd60e51b815260206004820152601d60248201527f457874656e73696f6e4d616e616765723a20656d707479206e616d652e0000006044820152606401610234565b815151612e9490612e8e611464565b90612f85565b612bc35760405162461bcd60e51b815260206004820152602b60248201527f457874656e73696f6e4d616e616765723a20657874656e73696f6e20616c726560448201526a30b23c9032bc34b9ba399760a91b6064820152608401610234565b6000612f0882612f02611464565b90612f91565b612c445760405162461bcd60e51b815260040161023490613a51565b612f2c611464565b60020181604051612f3d9190613954565b908152604051908190036020019020600061176b82826131be565b60008260010182604051612f6c9190613954565b9081526040519081900360200190205415159392505050565b60006125db8383612f9d565b60006125db8383612fff565b6000612fa98383612f58565b612ff757825460018101845560008481526020902001612fc98382613cd5565b5082546040516001850190612fdf908590613954565b90815260405190819003602001902055506001610e1f565b506000610e1f565b60008083600101836040516130149190613954565b9081526020016040518091039020549050806000146131b457600061303a600183613b2c565b855490915060009061304e90600190613b2c565b905081811461315557600086600001828154811061306e5761306e613970565b90600052602060002001805461308390613920565b80601f01602080910402602001604051908101604052809291908181526020018280546130af90613920565b80156130fc5780601f106130d1576101008083540402835291602001916130fc565b820191906000526020600020905b8154815290600101906020018083116130df57829003601f168201915b505050505090508087600001848154811061311957613119613970565b90600052602060002001908161312f9190613cd5565b508387600101826040516131439190613954565b90815260405190819003602001902055505b855486908061316657613166613c63565b60019003818190600052602060002001600061318291906131be565b905585600101856040516131969190613954565b90815260200160405180910390206000905560019350505050610e1f565b6000915050610e1f565b5080546131ca90613920565b6000825580601f106131da575050565b601f0160209004906000526020600020908101906110859190613219565b50805460008255600202906000526020600020908101906110859190613232565b5b8082111561322e576000815560010161321a565b5090565b8082111561322e57805463ffffffff19168155600061325460018301826131be565b50600201613232565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e1f57610e1f61325d565b60006020828403121561329857600080fd5b5035919050565b80356001600160a01b03811681146132b657600080fd5b919050565b600080604083850312156132ce57600080fd5b823591506132de6020840161329f565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561331f5761331f6132e7565b60405290565b604051606081016001600160401b038111828210171561331f5761331f6132e7565b604051601f8201601f191681016001600160401b038111828210171561336f5761336f6132e7565b604052919050565b600082601f83011261338857600080fd5b81356001600160401b038111156133a1576133a16132e7565b6133b4601f8201601f1916602001613347565b8181528460208386010111156133c957600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160e01b0319811681146132b657600080fd5b6000806040838503121561341157600080fd5b82356001600160401b0381111561342757600080fd5b61343385828601613377565b9250506132de602084016133e6565b60005b8381101561345d578181015183820152602001613445565b50506000910152565b6000815180845261347e816020860160208601613442565b601f01601f19169290920160200192915050565b60008151606084526134a76060850182613466565b9050602083015184820360208601526134c08282613466565b6040948501516001600160a01b03169590940194909452509092915050565b63ffffffff60e01b815116825260006020820151604060208501526135076040850182613466565b949350505050565b60008151604084526135246040850182613492565b9050602080840151858303828701528281518085528385019150838160051b860101848401935060005b8281101561357c57601f1987830301845261356a8286516134df565b9486019493860193915060010161354e565b5098975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156135e057603f198886030184526135ce85835161350f565b945092850192908501906001016135b2565b5092979650505050505050565b6000602082840312156135ff57600080fd5b6125db8261329f565b60006040828403121561361a57600080fd5b6136226132fd565b905061362d826133e6565b815260208201356001600160401b0381111561364857600080fd5b61365484828501613377565b60208301525092915050565b6000806040838503121561367357600080fd5b82356001600160401b038082111561368a57600080fd5b61369686838701613377565b935060208501359150808211156136ac57600080fd5b506136b985828601613608565b9150509250929050565b600080604083850312156136d657600080fd5b50508035926020909101359150565b6000602082840312156136f757600080fd5b6125db826133e6565b6020815260006125db6020830184613492565b600082601f83011261372457600080fd5b813560206001600160401b0380831115613740576137406132e7565b8260051b61374f838201613347565b938452858101830193838101908886111561376957600080fd5b84880192505b858310156137a5578235848111156137875760008081fd5b6137958a87838c0101613608565b835250918401919084019061376f565b98975050505050505050565b6000602082840312156137c357600080fd5b81356001600160401b03808211156137da57600080fd5b90830190604082860312156137ee57600080fd5b6137f66132fd565b82358281111561380557600080fd5b83016060818803121561381757600080fd5b61381f613325565b81358481111561382e57600080fd5b61383a89828501613377565b82525060208201358481111561384f57600080fd5b61385b89828501613377565b60208301525061386d6040830161329f565b604082015282525060208301358281111561388757600080fd5b61389387828601613713565b60208301525095945050505050565b6000602082840312156138b457600080fd5b81356001600160401b038111156138ca57600080fd5b61350784828501613377565b6020815260006125db602083018461350f565b6020808252601f908201527f457874656e73696f6e4d616e616765723a20756e617574686f72697a65642e00604082015260600190565b600181811c9082168061393457607f821691505b60208210810361115157634e487b7160e01b600052602260045260246000fd5b60008251613966818460208701613442565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351613a01816015850160208801613442565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351613a32816026840160208801613442565b01602601949350505050565b6020815260006125db6020830184613466565b6020808252602b908201527f457874656e73696f6e4d616e616765723a20657874656e73696f6e20646f657360408201526a103737ba1032bc34b9ba1760a91b606082015260800190565b6000602080835260008454613ab081613920565b8060208701526040600180841660008114613ad25760018114613aee57613b1e565b60ff19851660408a0152604084151560051b8a01019550613b1e565b89600052602060002060005b85811015613b155781548b8201860152908301908801613afa565b8a016040019650505b509398975050505050505050565b81810381811115610e1f57610e1f61325d565b601f821115610620576000816000526020600020601f850160051c81016020861015613b685750805b601f850160051c820191505b81811015612ab457828155600101613b74565b818103613b92575050565b613b9c8254613920565b6001600160401b03811115613bb357613bb36132e7565b613bc781613bc18454613920565b84613b3f565b6000601f821160018114613bfb5760008315613be35750848201545b600019600385901b1c1916600184901b178455611734565b600085815260209020601f19841690600086815260209020845b83811015613c355782860154825560019586019590910190602001613c15565b5085831015613c535781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b604081526000613c8c60408301856134df565b8281036020840152613c9e8185613492565b95945050505050565b8082028115828204841417610e1f57610e1f61325d565b600081613ccd57613ccd61325d565b506000190190565b81516001600160401b03811115613cee57613cee6132e7565b613cfc81613bc18454613920565b602080601f831160018114613d315760008415613d195750858301515b600019600386901b1c1916600185901b178555612ab4565b600085815260208120601f198616915b82811015613d6057888601518255948401946001909101908401613d41565b5085821015613c5357939096015160001960f8600387901b161c19169092555050600190811b0190555056fe322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee03000a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e500a26469706673582212203ec085220e755bd4552ec455163fd62aa050853c90c36aac45164cd0ef84336b64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000104000000000000000000000000000000000000000000000000000000000000017c000000000000000000000000000000000000000000000000000000000000027a00000000000000000000000000000000000000000000000000000000000002ac000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da1a590e810d895e34ff124487682f053ee00211000000000000000000000000000000000000000000000000000000000000000b436f6e6669674c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d50434837435266626e42654b683833784a33666b32366f37784d4879377362765242714d72587050774864480000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000004207d57498c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017696e697469616c697a65436f6e6669674c6f6769632829000000000000000000b303c03a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017736574436f6e66696728626f6f6c2c75696e7432353629000000000000000000325cb44b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015736574505245434953494f4e2875696e7432353629000000000000000000000056d3163d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001473657452656e64657265722861646472657373290000000000000000000000001bddb706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001a736574526576536861726557616c6c657428616464726573732900000000000088b00837000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004573657453747261696e2875696e743235362c75696e743235362c75696e743235362c737472696e672c737472696e672c626f6f6c2c75696e743235362c75696e7432353629000000000000000000000000000000000000000000000000000000144fa6d70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000011736574546f6b656e28616464726573732900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000004b66bc11cc624a66df870906fa7de24261865827000000000000000000000000000000000000000000000000000000000000000947616d654c6f67696300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d63536346635956534b6433656d4e626d5648504a6f394c38733968624a4e45524761794474554d62484169430000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000006a0000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000007a0e1fa7638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001761747461636b2875696e743235362c75696e7432353629000000000000000000d12b4e6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000012676574416c6c53747261696e496e666f282900000000000000000000000000005c622a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000126765745374617475732875696e74323536290000000000000000000000000000f929b585000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001d6973417070726f766564466e2875696e743235362c6164647265737329000000b559bbb400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000156973506c616e74416c6976652875696e74323536290000000000000000000000e2c352ed00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000156b696c6c2875696e743235362c75696e7432353629000000000000000000000005c58df2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000e6c6576656c2875696e7432353629000000000000000000000000000000000000f251b76a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000196f6e41747461636b2875696e743235362c75696e7432353629000000000000000573ea940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015706173732875696e743235362c75696e74323536290000000000000000000000ccc73973000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001370656e64696e674574682875696e743235362900000000000000000000000000db006a75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000f72656465656d2875696e74323536290000000000000000000000000000000000114da366000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001c736574506c616e744e616d652875696e743235362c737472696e6729000000006d7b7fc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015737461747573546f537472696e672875696e743829000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005d4581c56d397b3a6378a9522ca945d45156a1ea000000000000000000000000000000000000000000000000000000000000000b47617264656e4c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5672646547413874684c7675774865657a685953514b485463784c4e566d51345237667a4d516e4b5342376d00000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005a0715488b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001d6275794163636573736f72792875696e743235362c75696e743235362900000079c5cb1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002a6372656174654974656d28737472696e672c75696e743235362c75696e743235362c75696e743235362900000000000000000000000000000000000000000000a53c1f8700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000376372656174654974656d73282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e74323536295b5d29000000000000000000eba475b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000003b6564697447617264656e4974656d73282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e74323536295b5d29000000000099cc726d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030656469744974656d2875696e743235362c75696e743235362c75696e743235362c737472696e672c75696e743235362900000000000000000000000000000000ac6ca58b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000012676574416c6c47617264656e4974656d282900000000000000000000000000004864d053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001667657447617264656e4974656d2875696e743235362900000000000000000000143b35f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017696e697469616c697a6547617264656e4c6f6769632829000000000000000000843bd64100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000136974656d4578697374732875696e74323536290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000fdbbfe32f6b27671695a1bdadebfaf24ed6ede2e00000000000000000000000000000000000000000000000000000000000000084e46544c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d653166544852744c4c4b6a38734252436a334438773566616664616f47477133526f6d6d4a706a72483144670000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000000007e0000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000009800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000de0095ea7b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000018617070726f766528616464726573732c75696e7432353629000000000000000070a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001262616c616e63654f66286164647265737329000000000000000000000000000042966c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d6275726e2875696e743235362900000000000000000000000000000000000000081812fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014676574417070726f7665642875696e74323536290000000000000000000000002a5d51380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015676574506c616e74496e666f2875696e743235362900000000000000000000001123d4de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000019676574506c616e747342794f776e657228616464726573732900000000000000ba9a58e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000018676574506c616e7473496e666f2875696e743235365b5d290000000000000000837aa7290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014696e697469616c697a654e46544c6f6769632829000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000216973417070726f766564466f72416c6c28616464726573732c616464726573732900000000000000000000000000000000000000000000000000000000000000a0712d68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d6d696e742875696e74323536290000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066e616d65282900000000000000000000000000000000000000000000000000006352211e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000106f776e65724f662875696e7432353629000000000000000000000000000000005f0c851d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002672656d6f7665546f6b656e496446726f6d4f776e65722875696e7433322c6164647265737329000000000000000000000000000000000000000000000000000042842e0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000029736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536290000000000000000000000000000000000000000000000b88d4fde000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002f736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362c6279746573290000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001f736574417070726f76616c466f72416c6c28616464726573732c626f6f6c290001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000019737570706f727473496e7465726661636528627974657334290000000000000095d89b41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000873796d626f6c28290000000000000000000000000000000000000000000000004e9dfa770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000029746f6b656e4275726e416e6452656469737472696275746528616464726573732c75696e74323536290000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000011746f6b656e5552492875696e743235362900000000000000000000000000000018160ddd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d746f74616c537570706c7928290000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000257472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000097cba67fb52dffad0ac8620870f689bd266da70a000000000000000000000000000000000000000000000000000000000000000852656e64657265720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d63484651325454556b79743437574d576279633532624c754c75454132456d6f3776734a755277587538517a00000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0517f28f9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001b676574496d6167655572692875696e743235362c737472696e67290000000000287ac237000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008570726570617265546f6b656e555249282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e74382c737472696e672c75696e743235362c616464726573732c75696e74323536292c737472696e672900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da7f3e4f2ad8af4b2238d856318418a452f1d1d7000000000000000000000000000000000000000000000000000000000000000953686f704c6f67696300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d53615a6a5571774b376e48343569565934796b7876667956626274683845363631437256344a584c42734d7700000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000160a14ca56f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010676574416c6c53686f704974656d28290000000000000000000000000000000007cdbee9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001e67657450757263686173656453686f704974656d732875696e74323536290000b46cea5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001773686f704974656d4578697374732875696e7432353629000000000000000000
0xa26469706673582212203ec085220e755bd4552ec455163fd62aa050853c90c36aac45164cd0ef84336b64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000104000000000000000000000000000000000000000000000000000000000000017c000000000000000000000000000000000000000000000000000000000000027a00000000000000000000000000000000000000000000000000000000000002ac000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da1a590e810d895e34ff124487682f053ee00211000000000000000000000000000000000000000000000000000000000000000b436f6e6669674c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d50434837435266626e42654b683833784a33666b32366f37784d4879377362765242714d72587050774864480000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000004207d57498c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017696e697469616c697a65436f6e6669674c6f6769632829000000000000000000b303c03a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017736574436f6e66696728626f6f6c2c75696e7432353629000000000000000000325cb44b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015736574505245434953494f4e2875696e7432353629000000000000000000000056d3163d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001473657452656e64657265722861646472657373290000000000000000000000001bddb706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001a736574526576536861726557616c6c657428616464726573732900000000000088b00837000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004573657453747261696e2875696e743235362c75696e743235362c75696e743235362c737472696e672c737472696e672c626f6f6c2c75696e743235362c75696e7432353629000000000000000000000000000000000000000000000000000000144fa6d70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000011736574546f6b656e28616464726573732900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000004b66bc11cc624a66df870906fa7de24261865827000000000000000000000000000000000000000000000000000000000000000947616d654c6f67696300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d63536346635956534b6433656d4e626d5648504a6f394c38733968624a4e45524761794474554d62484169430000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000006a0000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000007a0e1fa7638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001761747461636b2875696e743235362c75696e7432353629000000000000000000d12b4e6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000012676574416c6c53747261696e496e666f282900000000000000000000000000005c622a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000126765745374617475732875696e74323536290000000000000000000000000000f929b585000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001d6973417070726f766564466e2875696e743235362c6164647265737329000000b559bbb400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000156973506c616e74416c6976652875696e74323536290000000000000000000000e2c352ed00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000156b696c6c2875696e743235362c75696e7432353629000000000000000000000005c58df2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000e6c6576656c2875696e7432353629000000000000000000000000000000000000f251b76a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000196f6e41747461636b2875696e743235362c75696e7432353629000000000000000573ea940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015706173732875696e743235362c75696e74323536290000000000000000000000ccc73973000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001370656e64696e674574682875696e743235362900000000000000000000000000db006a75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000f72656465656d2875696e74323536290000000000000000000000000000000000114da366000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001c736574506c616e744e616d652875696e743235362c737472696e6729000000006d7b7fc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015737461747573546f537472696e672875696e743829000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005d4581c56d397b3a6378a9522ca945d45156a1ea000000000000000000000000000000000000000000000000000000000000000b47617264656e4c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5672646547413874684c7675774865657a685953514b485463784c4e566d51345237667a4d516e4b5342376d00000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005a0715488b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001d6275794163636573736f72792875696e743235362c75696e743235362900000079c5cb1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002a6372656174654974656d28737472696e672c75696e743235362c75696e743235362c75696e743235362900000000000000000000000000000000000000000000a53c1f8700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000376372656174654974656d73282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e74323536295b5d29000000000000000000eba475b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000003b6564697447617264656e4974656d73282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e74323536295b5d29000000000099cc726d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030656469744974656d2875696e743235362c75696e743235362c75696e743235362c737472696e672c75696e743235362900000000000000000000000000000000ac6ca58b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000012676574416c6c47617264656e4974656d282900000000000000000000000000004864d053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001667657447617264656e4974656d2875696e743235362900000000000000000000143b35f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000017696e697469616c697a6547617264656e4c6f6769632829000000000000000000843bd64100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000136974656d4578697374732875696e74323536290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000fdbbfe32f6b27671695a1bdadebfaf24ed6ede2e00000000000000000000000000000000000000000000000000000000000000084e46544c6f6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d653166544852744c4c4b6a38734252436a334438773566616664616f47477133526f6d6d4a706a72483144670000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000000007e0000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000009800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000de0095ea7b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000018617070726f766528616464726573732c75696e7432353629000000000000000070a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001262616c616e63654f66286164647265737329000000000000000000000000000042966c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d6275726e2875696e743235362900000000000000000000000000000000000000081812fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014676574417070726f7665642875696e74323536290000000000000000000000002a5d51380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000015676574506c616e74496e666f2875696e743235362900000000000000000000001123d4de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000019676574506c616e747342794f776e657228616464726573732900000000000000ba9a58e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000018676574506c616e7473496e666f2875696e743235365b5d290000000000000000837aa7290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014696e697469616c697a654e46544c6f6769632829000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000216973417070726f766564466f72416c6c28616464726573732c616464726573732900000000000000000000000000000000000000000000000000000000000000a0712d68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d6d696e742875696e74323536290000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066e616d65282900000000000000000000000000000000000000000000000000006352211e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000106f776e65724f662875696e7432353629000000000000000000000000000000005f0c851d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002672656d6f7665546f6b656e496446726f6d4f776e65722875696e7433322c6164647265737329000000000000000000000000000000000000000000000000000042842e0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000029736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536290000000000000000000000000000000000000000000000b88d4fde000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002f736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362c6279746573290000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001f736574417070726f76616c466f72416c6c28616464726573732c626f6f6c290001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000019737570706f727473496e7465726661636528627974657334290000000000000095d89b41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000873796d626f6c28290000000000000000000000000000000000000000000000004e9dfa770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000029746f6b656e4275726e416e6452656469737472696275746528616464726573732c75696e74323536290000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000011746f6b656e5552492875696e743235362900000000000000000000000000000018160ddd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d746f74616c537570706c7928290000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000257472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000097cba67fb52dffad0ac8620870f689bd266da70a000000000000000000000000000000000000000000000000000000000000000852656e64657265720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d63484651325454556b79743437574d576279633532624c754c75454132456d6f3776734a755277587538517a00000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0517f28f9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001b676574496d6167655572692875696e743235362c737472696e67290000000000287ac237000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008570726570617265546f6b656e555249282875696e743235362c737472696e672c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e743235362c75696e74382c737472696e672c75696e743235362c616464726573732c75696e74323536292c737472696e672900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da7f3e4f2ad8af4b2238d856318418a452f1d1d7000000000000000000000000000000000000000000000000000000000000000953686f704c6f67696300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d53615a6a5571774b376e48343569565934796b7876667956626274683845363631437256344a584c42734d7700000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000160a14ca56f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010676574416c6c53686f704974656d28290000000000000000000000000000000007cdbee9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001e67657450757263686173656453686f704974656d732875696e74323536290000b46cea5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001773686f704974656d4578697374732875696e7432353629000000000000000000