[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "MaxSupplyExceeded", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "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": "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": [], "name": "interchainTokenId", "outputs": [ { "internalType": "bytes32", "name": "tokenId_", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interchainTokenService", "outputs": [ { "internalType": "address", "name": "service", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "destinationChain", "type": "string" }, { "internalType": "bytes", "name": "recipient", "type": "bytes" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "metadata", "type": "bytes" } ], "name": "interchainTransfer", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "string", "name": "destinationChain", "type": "string" }, { "internalType": "bytes", "name": "recipient", "type": "bytes" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "metadata", "type": "bytes" } ], "name": "interchainTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "maxSupply_", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "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" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId_", "type": "bytes32" }, { "internalType": "address", "name": "its_", "type": "address" } ], "name": "setTokenIdAndIts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101606040523480156200001257600080fd5b5060405180604001604052806004815260200163524d524b60e01b81525080604051806040016040528060018152602001603160f81b81525060405180604001604052806004815260200163524d524b60e01b81525060405180604001604052806004815260200163524d524b60e01b815250816003908162000096919062000364565b506004620000a5828262000364565b50620000b79150839050600562000188565b61012052620000c881600662000188565b61014052815160208084019190912060e052815190820120610100524660a0526200015660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525062000181600073cd7a0d098e3a750126b0fec54be401476812cfc0620001c1565b50620004a5565b6000602083511015620001a857620001a08362000273565b9050620001bb565b81620001b5848262000364565b5060ff90505b92915050565b60008281526008602090815260408083206001600160a01b038516845290915281205460ff166200026a5760008381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620002213390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001bb565b506000620001bb565b600080829050601f81511115620002aa578260405163305a27a960e01b8152600401620002a1919062000430565b60405180910390fd5b8051620002b78262000480565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002ea57607f821691505b6020821081036200030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035f57600081815260208120601f850160051c810160208610156200033a5750805b601f850160051c820191505b818110156200035b5782815560010162000346565b5050505b505050565b81516001600160401b03811115620003805762000380620002bf565b6200039881620003918454620002d5565b8462000311565b602080601f831160018114620003d05760008415620003b75750858301515b600019600386901b1c1916600185901b1785556200035b565b600085815260208120601f198616915b828110156200040157888601518255948401946001909101908401620003e0565b5085821015620004205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b818110156200045f5785810183015185820160400152820162000441565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200030b5760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611a51620005006000396000610eb501526000610e8801526000610d5701526000610d2f01526000610c8a01526000610cb401526000610cde0152611a516000f3fe6080604052600436106101e35760003560e01c806370a0823111610102578063a60fee3711610095578063d539139311610064578063d539139314610580578063d547741f146105b4578063d5abeb01146105d4578063dd62ed3e146105f257600080fd5b8063a60fee371461051a578063a9059cbb1461052d578063bc0ba3c51461054d578063d505accf1461056057600080fd5b806391d14854116100d157806391d14854146104b057806395d89b41146104d05780639dc29fac146104e5578063a217fddf1461050557600080fd5b806370a082311461041257806379cc6790146104485780637ecebe001461046857806384b0196e1461048857600080fd5b8063248a9ca31161017a5780633644e515116101495780633644e5151461039d57806336568abe146103b257806340c10f19146103d257806342966c68146103f257600080fd5b8063248a9ca3146102fd578063282c51f31461032d5780632f2ff15d14610361578063313ce5671461038157600080fd5b80630e3cf2b6116101b65780630e3cf2b614610287578063129d8188146102a957806318160ddd146102c857806323b872dd146102dd57600080fd5b806301ffc9a7146101e857806306fdde031461021d578063095ea7b31461023f57806309c6bed91461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046114d8565b610638565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261066f565b604051610214919061154f565b34801561024b57600080fd5b5061020861025a36600461157e565b610701565b34801561026b57600080fd5b506009546040516001600160a01b039091168152602001610214565b34801561029357600080fd5b506102a76102a23660046115a8565b610719565b005b3480156102b557600080fd5b50600a545b604051908152602001610214565b3480156102d457600080fd5b506002546102ba565b3480156102e957600080fd5b506102086102f83660046115d4565b61074c565b34801561030957600080fd5b506102ba610318366004611610565b60009081526008602052604090206001015490565b34801561033957600080fd5b506102ba7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b34801561036d57600080fd5b506102a761037c3660046115a8565b610770565b34801561038d57600080fd5b5060405160128152602001610214565b3480156103a957600080fd5b506102ba61079b565b3480156103be57600080fd5b506102a76103cd3660046115a8565b6107aa565b3480156103de57600080fd5b506102a76103ed36600461157e565b6107e2565b3480156103fe57600080fd5b506102a761040d366004611610565b610816565b34801561041e57600080fd5b506102ba61042d366004611629565b6001600160a01b031660009081526020819052604090205490565b34801561045457600080fd5b506102a761046336600461157e565b610823565b34801561047457600080fd5b506102ba610483366004611629565b61083c565b34801561049457600080fd5b5061049d61085a565b6040516102149796959493929190611644565b3480156104bc57600080fd5b506102086104cb3660046115a8565b6108a0565b3480156104dc57600080fd5b506102326108cb565b3480156104f157600080fd5b506102a761050036600461157e565b6108da565b34801561051157600080fd5b506102ba600081565b6102a7610528366004611723565b61090e565b34801561053957600080fd5b5061020861054836600461157e565b6109a5565b6102a761055b3660046117d7565b6109b3565b34801561056c57600080fd5b506102a761057b36600461187b565b610a04565b34801561058c57600080fd5b506102ba7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156105c057600080fd5b506102a76105cf3660046115a8565b610b43565b3480156105e057600080fd5b506a084595161401484a0000006102ba565b3480156105fe57600080fd5b506102ba61060d3660046118ee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061066957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461067e90611918565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa90611918565b80156106f75780601f106106cc576101008083540402835291602001916106f7565b820191906000526020600020905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b60003361070f818585610b68565b5060019392505050565b600061072481610b75565b50600a91909155600980546001600160a01b0319166001600160a01b03909216919091179055565b60003361075a858285610b7f565b610765858585610b8a565b506001949350505050565b60008281526008602052604090206001015461078b81610b75565b6107958383610be9565b50505050565b60006107a5610c7d565b905090565b6001600160a01b03811633146107d35760405163334bd91960e11b815260040160405180910390fd5b6107dd8282610da8565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661080c81610b75565b6107dd8383610e15565b6108203382610e4b565b50565b61082e823383610b7f565b6108388282610e4b565b5050565b6001600160a01b038116600090815260076020526040812054610669565b60006060806000806000606061086e610e81565b610876610eae565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461067e90611918565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861090481610b75565b6107dd8383610e4b565b610919883385610b7f565b6009546001600160a01b03166001600160a01b03166370756cde3461093d600a5490565b8b8b8b8b8b8b8b8b6040518b63ffffffff1660e01b81526004016109699998979695949392919061197b565b6000604051808303818588803b15801561098257600080fd5b505af1158015610996573d6000803e3d6000fd5b50505050505050505050505050565b60003361070f818585610b8a565b336009546001600160a01b03166001600160a01b03166370756cde346109d8600a5490565b848c8c8c8c8c8c8c6040518b63ffffffff1660e01b81526004016109699998979695949392919061197b565b83421115610a2d5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a7a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ad582610edb565b90506000610ae582878787610f08565b9050896001600160a01b0316816001600160a01b031614610b2c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610a24565b610b378a8a8a610b68565b50505050505050505050565b600082815260086020526040902060010154610b5e81610b75565b6107958383610da8565b6107dd8383836001610f36565b610820813361100b565b6107dd838383611044565b6001600160a01b038316610bb457604051634b637e8f60e11b815260006004820152602401610a24565b6001600160a01b038216610bde5760405163ec442f0560e01b815260006004820152602401610a24565b6107dd8383836110bc565b6000610bf583836108a0565b610c755760008381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610c2d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610669565b506000610669565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610cd657507f000000000000000000000000000000000000000000000000000000000000000046145b15610d0057507f000000000000000000000000000000000000000000000000000000000000000090565b6107a5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000610db483836108a0565b15610c755760008381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610669565b6001600160a01b038216610e3f5760405163ec442f0560e01b815260006004820152602401610a24565b610838600083836110bc565b6001600160a01b038216610e7557604051634b637e8f60e11b815260006004820152602401610a24565b610838826000836110bc565b60606107a57f00000000000000000000000000000000000000000000000000000000000000006005611114565b60606107a57f00000000000000000000000000000000000000000000000000000000000000006006611114565b6000610669610ee8610c7d565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610f1a888888886111bf565b925092509250610f2a828261128e565b50909695505050505050565b6001600160a01b038416610f605760405163e602df0560e01b815260006004820152602401610a24565b6001600160a01b038316610f8a57604051634a1406b160e11b815260006004820152602401610a24565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561079557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ffd91815260200190565b60405180910390a350505050565b61101582826108a0565b6108385760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610a24565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461079557818110156110ad57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610a24565b61079584848484036000610f36565b6001600160a01b038316611109576a084595161401484a000000816110e060025490565b6110ea91906119e4565b111561110957604051638a164f6360e01b815260040160405180910390fd5b6107dd838383611347565b606060ff831461112e5761112783611471565b9050610669565b81805461113a90611918565b80601f016020809104026020016040519081016040528092919081815260200182805461116690611918565b80156111b35780601f10611188576101008083540402835291602001916111b3565b820191906000526020600020905b81548152906001019060200180831161119657829003601f168201915b50505050509050610669565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156111fa5750600091506003905082611284565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561124e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661127a57506000925060019150829050611284565b9250600091508190505b9450945094915050565b60008260038111156112a2576112a2611a05565b036112ab575050565b60018260038111156112bf576112bf611a05565b036112dd5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156112f1576112f1611a05565b036113125760405163fce698f760e01b815260048101829052602401610a24565b600382600381111561132657611326611a05565b03610838576040516335e2f38360e21b815260048101829052602401610a24565b6001600160a01b03831661137257806002600082825461136791906119e4565b909155506113e49050565b6001600160a01b038316600090815260208190526040902054818110156113c55760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610a24565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166114005760028054829003905561141f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161146491815260200190565b60405180910390a3505050565b6060600061147e836114b0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561066957604051632cd44ac360e21b815260040160405180910390fd5b6000602082840312156114ea57600080fd5b81356001600160e01b03198116811461150257600080fd5b9392505050565b6000815180845260005b8181101561152f57602081850181015186830182015201611513565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006115026020830184611509565b80356001600160a01b038116811461157957600080fd5b919050565b6000806040838503121561159157600080fd5b61159a83611562565b946020939093013593505050565b600080604083850312156115bb57600080fd5b823591506115cb60208401611562565b90509250929050565b6000806000606084860312156115e957600080fd5b6115f284611562565b925061160060208501611562565b9150604084013590509250925092565b60006020828403121561162257600080fd5b5035919050565b60006020828403121561163b57600080fd5b61150282611562565b60ff60f81b881681526000602060e08184015261166460e084018a611509565b8381036040850152611676818a611509565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156116c8578351835292840192918401916001016116ac565b50909c9b505050505050505050505050565b60008083601f8401126116ec57600080fd5b50813567ffffffffffffffff81111561170457600080fd5b60208301915083602082850101111561171c57600080fd5b9250929050565b60008060008060008060008060a0898b03121561173f57600080fd5b61174889611562565b9750602089013567ffffffffffffffff8082111561176557600080fd5b6117718c838d016116da565b909950975060408b013591508082111561178a57600080fd5b6117968c838d016116da565b909750955060608b0135945060808b01359150808211156117b657600080fd5b506117c38b828c016116da565b999c989b5096995094979396929594505050565b60008060008060008060006080888a0312156117f257600080fd5b873567ffffffffffffffff8082111561180a57600080fd5b6118168b838c016116da565b909950975060208a013591508082111561182f57600080fd5b61183b8b838c016116da565b909750955060408a0135945060608a013591508082111561185b57600080fd5b506118688a828b016116da565b989b979a50959850939692959293505050565b600080600080600080600060e0888a03121561189657600080fd5b61189f88611562565b96506118ad60208901611562565b95506040880135945060608801359350608088013560ff811681146118d157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561190157600080fd5b61190a83611562565b91506115cb60208401611562565b600181811c9082168061192c57607f821691505b60208210810361194c57634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8981526001600160a01b038916602082015260c0604082018190526000906119a6908301898b611952565b82810360608401526119b981888a611952565b905085608084015282810360a08401526119d4818587611952565b9c9b505050505050505050505050565b8082018082111561066957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220dd85b1ad2b8ee35966e42673e8f6919d02f9cc0889371d3ad7c4465510faea6a64736f6c63430008150033