Overview
ETH Balance
ETH Value
$0.00View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
Contract ABI
API[{"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":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CUBE__BPSTooHigh","type":"error"},{"inputs":[],"name":"CUBE__ExceedsContractBalance","type":"error"},{"inputs":[],"name":"CUBE__ExcessiveFeePayout","type":"error"},{"inputs":[],"name":"CUBE__FeeNotEnough","type":"error"},{"inputs":[],"name":"CUBE__IsNotSigner","type":"error"},{"inputs":[],"name":"CUBE__MintingIsNotActive","type":"error"},{"inputs":[],"name":"CUBE__NonceAlreadyUsed","type":"error"},{"inputs":[],"name":"CUBE__SignatureAndCubesInputMismatch","type":"error"},{"inputs":[],"name":"CUBE__TransferFailed","type":"error"},{"inputs":[],"name":"CUBE__WithdrawFailed","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":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ContractWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"questId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"issueNumber","type":"uint256"},{"indexed":false,"internalType":"string","name":"walletProvider","type":"string"},{"indexed":false,"internalType":"string","name":"embedOrigin","type":"string"}],"name":"CubeClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"cubeTokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"txHash","type":"string"},{"indexed":false,"internalType":"string","name":"networkChainId","type":"string"}],"name":"CubeTransaction","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeePayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isActive","type":"bool"}],"name":"MintingSwitch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"questId","type":"uint256"},{"indexed":false,"internalType":"enum CUBE.QuestType","name":"questType","type":"uint8"},{"indexed":false,"internalType":"enum CUBE.Difficulty","name":"difficulty","type":"uint8"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"string[]","name":"tags","type":"string[]"},{"indexed":false,"internalType":"string[]","name":"communities","type":"string[]"}],"name":"QuestMetadata","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":"uint256","name":"cubeTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"enum CUBE.TokenType","name":"tokenType","type":"uint8"}],"name":"TokenReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"string","name":"_signingDomain","type":"string"},{"internalType":"string","name":"_signatureVersion","type":"string"},{"internalType":"address","name":"_admin","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"questId","type":"uint256"},{"internalType":"string[]","name":"communities","type":"string[]"},{"internalType":"string","name":"title","type":"string"},{"internalType":"enum CUBE.Difficulty","name":"difficulty","type":"uint8"},{"internalType":"enum CUBE.QuestType","name":"questType","type":"uint8"},{"internalType":"string[]","name":"tags","type":"string[]"}],"name":"initializeQuest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"questId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"},{"internalType":"string","name":"walletProvider","type":"string"},{"internalType":"string","name":"tokenURI","type":"string"},{"internalType":"string","name":"embedOrigin","type":"string"},{"components":[{"internalType":"string","name":"txHash","type":"string"},{"internalType":"string","name":"networkChainId","type":"string"}],"internalType":"struct CUBE.TransactionData[]","name":"transactions","type":"tuple[]"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"BPS","type":"uint16"}],"internalType":"struct CUBE.FeeRecipient[]","name":"recipients","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum CUBE.TokenType","name":"tokenType","type":"uint8"}],"internalType":"struct CUBE.RewardData","name":"reward","type":"tuple"}],"internalType":"struct CUBE.CubeData[]","name":"cubeData","type":"tuple[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"mintCubes","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"s_isMintingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isMintingActive","type":"bool"}],"name":"setIsMintingActive","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":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516141d86200010460003960008181611882015281816118ab0152611a7d01526141d86000f3fe6080604052600436106101d85760003560e01c806370a0823111610102578063aab4160111610095578063d547741f11610064578063d547741f146105e9578063e985e9c514610609578063f72c0d8b14610671578063f907497c146106a557600080fd5b8063aab4160114610546578063ad3cb1cc14610560578063b88d4fde146105a9578063c87b56dd146105c957600080fd5b8063a1ebf35d116100d1578063a1ebf35d146104bd578063a217fddf146104f1578063a22cb46514610506578063a35d3d861461052657600080fd5b806370a08231146103fb57806384b0196e1461041b57806391d148541461044357806395d89b41146104a857600080fd5b80632e6400241161017a57806342842e0e1161014957806342842e0e146103935780634f1ef286146103b357806352d1902d146103c65780636352211e146103db57600080fd5b80632e6400241461031e5780632f2ff15d1461033e57806336568abe1461035e5780633ccfd60b1461037e57600080fd5b8063095ea7b3116101b6578063095ea7b31461026c5780630bdd68751461028e57806323b872dd146102a1578063248a9ca3146102c157600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046132bd565b6106c5565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b506102276106d6565b604051610209919061332a565b34801561024057600080fd5b5061025461024f36600461333d565b61078c565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c610287366004613372565b6107d4565b005b61028c61029c3660046133e8565b6107e3565b3480156102ad57600080fd5b5061028c6102bc366004613454565b610977565b3480156102cd57600080fd5b506103106102dc36600461333d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b34801561032a57600080fd5b5061028c610339366004613560565b610a33565b34801561034a57600080fd5b5061028c61035936600461361e565b610bf2565b34801561036a57600080fd5b5061028c61037936600461361e565b610c36565b34801561038a57600080fd5b5061028c610c87565b34801561039f57600080fd5b5061028c6103ae366004613454565b610d4c565b61028c6103c136600461364a565b610d67565b3480156103d257600080fd5b50610310610d82565b3480156103e757600080fd5b506102546103f636600461333d565b610db1565b34801561040757600080fd5b50610310610416366004613698565b610dbc565b34801561042757600080fd5b50610430610e43565b60405161020997969594939291906136b3565b34801561044f57600080fd5b506101fd61045e36600461361e565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104b457600080fd5b50610227610f3f565b3480156104c957600080fd5b506103107f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b3480156104fd57600080fd5b50610310600081565b34801561051257600080fd5b5061028c610521366004613775565b610f90565b34801561053257600080fd5b5061028c61054136600461379f565b610f9b565b34801561055257600080fd5b506001546101fd9060ff1681565b34801561056c57600080fd5b506102276040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105b557600080fd5b5061028c6105c43660046137ba565b610fe7565b3480156105d557600080fd5b506102276105e436600461333d565b610ffe565b3480156105f557600080fd5b5061028c61060436600461361e565b6110a0565b34801561061557600080fd5b506101fd610624366004613822565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b34801561067d57600080fd5b506103107fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c81565b3480156106b157600080fd5b5061028c6106c03660046138fa565b6110e4565b60006106d082611157565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008054606091908190610708906139b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610734906139b5565b80156107815780601f1061075657610100808354040283529160200191610781565b820191906000526020600020905b81548152906001019060200180831161076457829003601f168201915b505050505091505090565b6000610797826111ad565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b03166106d0565b6107df82823361121e565b5050565b6107eb61122b565b60015460ff16610827576040517f9d2c8e7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828114610860576040517fc70ea82800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b848110156108a85785858281811061087e5761087e613a08565b90506020028101906108909190613a37565b61089e906040013583613aa4565b9150600101610864565b50803410156108e3576040517fea259f9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848110156109465761093e86868381811061090357610903613a08565b90506020028101906109159190613a37565b85858481811061092757610927613a08565b90506020028101906109399190613ab7565b6112ac565b6001016108e6565b505061097160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6001600160a01b0382166109bf576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006109cc83833361153e565b9050836001600160a01b0316816001600160a01b031614610971576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016109b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610a7e5750825b905060008267ffffffffffffffff166001148015610a9b5750303b155b905081158015610aa9575080155b15610ae0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610b415784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610b4b8a8a6116b7565b610b5588886116c9565b610b5d6116db565b610b656116db565b610b6d6116e5565b6001805460ff191681179055610b846000876116f5565b508315610be65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610c2c816117c4565b61097183836116f5565b6001600160a01b0381163314610c78576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8282826117d1565b505050565b6000610c92816117c4565b604051600090339047908381818185875af1925050503d8060008114610cd4576040519150601f19603f3d011682016040523d82523d6000602084013e610cd9565b606091505b5050905080610d14576040517f2baafbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040514781527f6c9cf7ce96a10a51ae8b3fc5aca25e4754a77b3e821c133c5cebb1d30abe7e8e906020015b60405180910390a15050565b610c8283838360405180602001604052806000815250610fe7565b610d6f611877565b610d7882611947565b6107df8282611971565b6000610d8c611a72565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106d0826111ad565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316610e22576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b6001600160a01b039092166000908152600390920160205250604090205490565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610e8257506001810154155b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016109b6565b610ef0611ad4565b610ef8611b25565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930091610708906139b5565b6107df338383611b76565b6000610fa6816117c4565b6001805460ff19168315159081179091556040519081527f7d16763644b2f7d5a11e2b05fe3a9cc4edb4568049295f4e62024269ae2f6eab90602001610d40565b610ff2848484610977565b61097184848484611c52565b600081815260036020526040902080546060919061101b906139b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611047906139b5565b80156110945780601f1061106957610100808354040283529160200191611094565b820191906000526020600020905b81548152906001019060200180831161107757829003601f168201915b50505050509050919050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546110da816117c4565b61097183836117d1565b7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4061110e816117c4565b867f8a2c815542d43af541960cd9124f5ec6a55c4b8c69f0dda02ed413b401e309cd848688868b604051611146959493929190613ba0565b60405180910390a250505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106d057506106d082611df7565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120546001600160a01b0316806106d0576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016109b6565b610c828383836001611eda565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112a6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000546112ba848484612071565b60005b6112ca60e0860186613c05565b905081101561138b57817fabd48d213cb20ec6f191e95c191131c8fc3832f194f53febcb53d4834baae50761130260e0880188613c05565b8481811061131257611312613a08565b90506020028101906113249190613c6d565b61132e9080613ab7565b61133b60e08a018a613c05565b8681811061134b5761134b613a08565b905060200281019061135d9190613c6d565b61136b906020810190613ab7565b60405161137b9493929190613ccc565b60405180910390a26001016112bd565b5061139960a0850185613ab7565b6000838152600360205260409020916113b3919083613d4c565b50833560009081526002602052604081208054600190810190915581540181556113e1610100860186613e48565b905011156113f2576113f284612165565b61140b6114056080860160608701613698565b826123fd565b61141b6080850160608601613698565b84356000818152600260205260409020546001600160a01b0392909216918391907ffe94555d033bd3fc0f75671674d030640f03095d8345426fcab3a9a0bffdc4fb9061146b60808a018a613ab7565b61147860c08c018c613ab7565b604051611489959493929190613eb0565b60405180910390a4610140840135156109715761014084018035906114b2906101208701613698565b6001600160a01b0316827f6d6039156ec873b5c217b996d727775a9eea208e1329e87aaa4b617c76d2bb946101608801356101808901356114fb6101c08b016101a08c01613edd565b60405161150a93929190613f12565b60405180910390a450505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300906001600160a01b03908116908416156115ac576115ac818587612417565b6001600160a01b0381161561160a576115c9600086600080611eda565b6001600160a01b0381166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b6001600160a01b0386161561163b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b6116bf6124ad565b6107df8282612514565b6116d16124ad565b6107df8282612557565b6116e36124ad565b565b6116ed6124ad565b6116e36125ca565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117ba576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117703390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106d0565b60009150506106d0565b6117ce81336125d2565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117ba576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106d0565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061191057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119047f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116e3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c6107df816117c4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119cb575060408051601f3d908101601f191682019092526119c891810190613f2d565b60015b611a0c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016109b6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611a68576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b610c82838361265f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116e3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610708906139b5565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610708906139b5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316611be2576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016109b6565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b15610971576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290611cad903390889087908790600401613f46565b6020604051808303816000875af1925050508015611ce8575060408051601f3d908101601f19168201909252611ce591810190613f82565b60015b611d6a573d808015611d16576040519150601f19603f3d011682016040523d82523d6000602084013e611d1b565b606091505b508051600003611d62576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611df0576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611e8a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106d057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d0565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611f0f57506001600160a01b03831615155b15612028576000611f1f856111ad565b90506001600160a01b03841615801590611f4b5750836001600160a01b0316816001600160a01b031614155b8015611f9c57506001600160a01b0380821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611fde576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b82156120265784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061207e8484846126b5565b6001600160a01b03811660009081527fbc6704768de17ac743a4c41122099f7a3464fc20363467b8527e22c7572f5d3a602052604090205490915060ff166120f2576040517f0f3c13fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208085013560009081526004909152604090205460ff1615612141576040517f76abf21400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050506020908101356000908152600490915260409020805460ff19166001179055565b600061271047825b61217b610100860186613e48565b9050811015611df05761ffff8316612197610100870187613e48565b838181106121a7576121a7613a08565b90506040020160200160208101906121bf9190613f9f565b61ffff1611156121fb576040517f635015ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff8416612210610100880188613e48565b8481811061222057612220613a08565b90506040020160200160208101906122389190613f9f565b61224a9061ffff166040890135613fc3565b6122549190613fda565b90506122608186613aa4565b945085604001358511156122a0576040517fcc3b3ebc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828511156122da576040517f2c2cae9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006122ea610100880188613e48565b848181106122fa576122fa613a08565b6123109260206040909202019081019150613698565b90506001600160a01b038116156123f3576000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461236e576040519150601f19603f3d011682016040523d82523d6000602084013e612373565b606091505b50509050806123ae576040517f7327470c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03167fc9a9861643a061bfa3739f3b26e5d64578cd78bb863dbd5dac0aca396728d9a7846040516123e991815260200190565b60405180910390a2505b505060010161216d565b6107df82826040518060200160405280600081525061270e565b612422838383612725565b610c82576001600160a01b038316612469576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016109b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61251c6124ad565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806125488482614015565b50600181016109718382614015565b61255f6124ad565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125ab8482614015565b50600381016125ba8382614015565b5060008082556001909101555050565b6115186124ad565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107df576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016109b6565b612668826127e9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156126ad57610c828282612891565b6107df6128fe565b6000806126c185612936565b905061270584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506129509050565b95945050505050565b612718838361297a565b610c826000848484611c52565b60006001600160a01b038316158015906127e15750826001600160a01b0316846001600160a01b0316148061279e57506001600160a01b0380851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b806127e1575060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b038481169116145b949350505050565b806001600160a01b03163b600003612838576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016109b6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516128ae9190614111565b600060405180830381855af49150503d80600081146128e9576040519150601f19603f3d011682016040523d82523d6000602084013e6128ee565b606091505b5091509150612705858383612a11565b34156116e3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106d061294483612a86565b80519060200120612ba3565b6000806000806129608686612beb565b9250925092506129708282612c38565b5090949350505050565b6001600160a01b0382166129bd576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b60006129cb8383600061153e565b90506001600160a01b03811615610c82576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b606082612a2657612a2182612d3c565b6116b0565b8151158015612a3d57506001600160a01b0384163b155b15612a7f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b50806116b0565b60607f7b49e75f5dee25184e7fc560a05a02fa4311f0290980e85c2f8d7733b7fd3aba823560208401356040850135612ac460808701878701613698565b612ad9612ad46080890189613ab7565b612d7e565b612ae9612ad460a08a018a613ab7565b612af9612ad460c08b018b613ab7565b612b0e612b0960e08c018c613c05565b612da0565b612b24612b1f6101008d018d613e48565b612e7c565b612b318c61012001612f1b565b60408051602081019c909c528b019990995260608a019790975260808901959095526001600160a01b0390931660a088015260c087019190915260e0860152610100850152610120840152610140830152610160820152610180015b6040516020818303038152906040529050919050565b60006106d0612bb0612f9c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008351604103612c255760208401516040850151606086015160001a612c1788828585612fab565b955095509550505050612c31565b50508151600091506002905b9250925092565b6000826003811115612c4c57612c4c613b1c565b03612c55575050565b6001826003811115612c6957612c69613b1c565b03612ca0576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115612cb457612cb4613b1c565b03612cee576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b6003826003811115612d0257612d02613b1c565b036107df576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b805115612d4c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008282604051612d90929190614123565b6040518091039020905092915050565b6000808267ffffffffffffffff811115612dbc57612dbc613490565b604051908082528060200260200182016040528015612de5578160200160208202803683370190505b50905060005b83811015612e4b57612e1f858583818110612e0857612e08613a08565b9050602002810190612e1a9190613c6d565b61307a565b80519060200120828281518110612e3857612e38613a08565b6020908102919091010152600101612deb565b5080604051602001612e5d9190614133565b6040516020818303038152906040528051906020012091505092915050565b6000808267ffffffffffffffff811115612e9857612e98613490565b604051908082528060200260200182016040528015612ec1578160200160208202803683370190505b50905060005b83811015612e4b57612eef858583818110612ee457612ee4613a08565b9050604002016130d9565b80519060200120828281518110612f0857612f08613a08565b6020908102919091010152600101612ec7565b60007fbb5588251ed87f59437bd9a89dd0ef74f88c736ab95bdcd74955ff21bcf35e79612f4b6020840184613698565b602084013560408501356060860135612f6a60a0880160808901613edd565b604051602001612f7f96959493929190614169565b604051602081830303815290604052805190602001209050919050565b6000612fa6613149565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612fe65750600091506003905082613070565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561303a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661306657506000925060019150829050613070565b9250600091508190505b9450945094915050565b60607f93dc1bac6b117acdbb889b9a825b9bc731449f703cc02b69049722fcba5dbe346130aa612ad48480613ab7565b6130ba612ad46020860186613ab7565b6040805160208101949094528301919091526060820152608001612b8d565b60607fdf3d1189f68f42c28f9fad9d69ff7a974d0a800a2e4420ed400e45a46d2fac2f6131096020840184613698565b6131196040850160208601613f9f565b604051602001612b8d939291909283526001600160a01b0391909116602083015261ffff16604082015260600190565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6131746131bd565b61317c613239565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100816131e9611ad4565b80519091501561320157805160209091012092915050565b81548015613210579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081613265611b25565b80519091501561327d57805160209091012092915050565b60018201548015613210579392505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117ce57600080fd5b6000602082840312156132cf57600080fd5b81356116b08161328f565b60005b838110156132f55781810151838201526020016132dd565b50506000910152565b600081518084526133168160208601602086016132da565b601f01601f19169290920160200192915050565b6020815260006116b060208301846132fe565b60006020828403121561334f57600080fd5b5035919050565b80356001600160a01b038116811461336d57600080fd5b919050565b6000806040838503121561338557600080fd5b61338e83613356565b946020939093013593505050565b60008083601f8401126133ae57600080fd5b50813567ffffffffffffffff8111156133c657600080fd5b6020830191508360208260051b85010111156133e157600080fd5b9250929050565b600080600080604085870312156133fe57600080fd5b843567ffffffffffffffff8082111561341657600080fd5b6134228883890161339c565b9096509450602087013591508082111561343b57600080fd5b506134488782880161339c565b95989497509550505050565b60008060006060848603121561346957600080fd5b61347284613356565b925061348060208501613356565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e8576134e8613490565b604052919050565b600082601f83011261350157600080fd5b813567ffffffffffffffff81111561351b5761351b613490565b61352e6020601f19601f840116016134bf565b81815284602083860101111561354357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561357857600080fd5b853567ffffffffffffffff8082111561359057600080fd5b61359c89838a016134f0565b965060208801359150808211156135b257600080fd5b6135be89838a016134f0565b955060408801359150808211156135d457600080fd5b6135e089838a016134f0565b945060608801359150808211156135f657600080fd5b50613603888289016134f0565b92505061361260808701613356565b90509295509295909350565b6000806040838503121561363157600080fd5b8235915061364160208401613356565b90509250929050565b6000806040838503121561365d57600080fd5b61366683613356565b9150602083013567ffffffffffffffff81111561368257600080fd5b61368e858286016134f0565b9150509250929050565b6000602082840312156136aa57600080fd5b6116b082613356565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526136ef60e084018a6132fe565b8381036040850152613701818a6132fe565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561375357835183529284019291840191600101613737565b50909c9b505050505050505050505050565b8035801515811461336d57600080fd5b6000806040838503121561378857600080fd5b61379183613356565b915061364160208401613765565b6000602082840312156137b157600080fd5b6116b082613765565b600080600080608085870312156137d057600080fd5b6137d985613356565b93506137e760208601613356565b925060408501359150606085013567ffffffffffffffff81111561380a57600080fd5b613816878288016134f0565b91505092959194509250565b6000806040838503121561383557600080fd5b61383e83613356565b915061364160208401613356565b600082601f83011261385d57600080fd5b8135602067ffffffffffffffff8083111561387a5761387a613490565b8260051b6138898382016134bf565b93845285810183019383810190888611156138a357600080fd5b84880192505b858310156138df578235848111156138c15760008081fd5b6138cf8a87838c01016134f0565b83525091840191908401906138a9565b98975050505050505050565b80356002811061336d57600080fd5b60008060008060008060c0878903121561391357600080fd5b86359550602087013567ffffffffffffffff8082111561393257600080fd5b61393e8a838b0161384c565b9650604089013591508082111561395457600080fd5b6139608a838b016134f0565b9550606089013591506003821061397657600080fd5b81945061398560808a016138eb565b935060a089013591508082111561399b57600080fd5b506139a889828a0161384c565b9150509295509295509295565b600181811c908216806139c957607f821691505b602082108103613a02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe41833603018112613a6b57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156106d0576106d0613a75565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613aec57600080fd5b83018035915067ffffffffffffffff821115613b0757600080fd5b6020019150368190038213156133e157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015613b93578284038952613b818483516132fe565b98850198935090840190600101613b69565b5091979650505050505050565b600060028710613bb257613bb2613b1c565b86825260038610613bc557613bc5613b1c565b85602083015260a06040830152613bdf60a08301866132fe565b8281036060840152613bf18186613b4b565b905082810360808401526138df8185613b4b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c3a57600080fd5b83018035915067ffffffffffffffff821115613c5557600080fd5b6020019150600581901b36038213156133e157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613a6b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000613ce0604083018688613ca1565b8281036020840152613cf3818587613ca1565b979650505050505050565b601f821115610c8257600081815260208120601f850160051c81016020861015613d255750805b601f850160051c820191505b81811015613d4457828155600101613d31565b505050505050565b67ffffffffffffffff831115613d6457613d64613490565b613d7883613d7283546139b5565b83613cfe565b6000601f841160018114613dca5760008515613d945750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611df0565b600083815260209020601f19861690835b82811015613dfb5786850135825560209485019460019092019101613ddb565b5086821015613e36577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e7d57600080fd5b83018035915067ffffffffffffffff821115613e9857600080fd5b6020019150600681901b36038213156133e157600080fd5b858152606060208201526000613eca606083018688613ca1565b82810360408401526138df818587613ca1565b600060208284031215613eef57600080fd5b8135600481106116b057600080fd5b60048110613f0e57613f0e613b1c565b9052565b83815260208101839052606081016127e16040830184613efe565b600060208284031215613f3f57600080fd5b5051919050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613f7860808301846132fe565b9695505050505050565b600060208284031215613f9457600080fd5b81516116b08161328f565b600060208284031215613fb157600080fd5b813561ffff811681146116b057600080fd5b80820281158282048414176106d0576106d0613a75565b600082614010577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b815167ffffffffffffffff81111561402f5761402f613490565b6140438161403d84546139b5565b84613cfe565b602080601f83116001811461409657600084156140605750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613d44565b600085815260208120601f198616915b828110156140c5578886015182559484019460019091019084016140a6565b508582101561410157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613a6b8184602087016132da565b8183823760009101908152919050565b815160009082906020808601845b8381101561415d57815185529382019390820190600101614141565b50929695505050505050565b600060c0820190508782526001600160a01b0387166020830152856040830152846060830152836080830152613cf360a0830184613efe56fea2646970667358221220e623a0d027ed828690c06fbcf3f1ac3fe7010216a0dd1b1de4b7b6260c38c6f264736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d85760003560e01c806370a0823111610102578063aab4160111610095578063d547741f11610064578063d547741f146105e9578063e985e9c514610609578063f72c0d8b14610671578063f907497c146106a557600080fd5b8063aab4160114610546578063ad3cb1cc14610560578063b88d4fde146105a9578063c87b56dd146105c957600080fd5b8063a1ebf35d116100d1578063a1ebf35d146104bd578063a217fddf146104f1578063a22cb46514610506578063a35d3d861461052657600080fd5b806370a08231146103fb57806384b0196e1461041b57806391d148541461044357806395d89b41146104a857600080fd5b80632e6400241161017a57806342842e0e1161014957806342842e0e146103935780634f1ef286146103b357806352d1902d146103c65780636352211e146103db57600080fd5b80632e6400241461031e5780632f2ff15d1461033e57806336568abe1461035e5780633ccfd60b1461037e57600080fd5b8063095ea7b3116101b6578063095ea7b31461026c5780630bdd68751461028e57806323b872dd146102a1578063248a9ca3146102c157600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046132bd565b6106c5565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b506102276106d6565b604051610209919061332a565b34801561024057600080fd5b5061025461024f36600461333d565b61078c565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c610287366004613372565b6107d4565b005b61028c61029c3660046133e8565b6107e3565b3480156102ad57600080fd5b5061028c6102bc366004613454565b610977565b3480156102cd57600080fd5b506103106102dc36600461333d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b34801561032a57600080fd5b5061028c610339366004613560565b610a33565b34801561034a57600080fd5b5061028c61035936600461361e565b610bf2565b34801561036a57600080fd5b5061028c61037936600461361e565b610c36565b34801561038a57600080fd5b5061028c610c87565b34801561039f57600080fd5b5061028c6103ae366004613454565b610d4c565b61028c6103c136600461364a565b610d67565b3480156103d257600080fd5b50610310610d82565b3480156103e757600080fd5b506102546103f636600461333d565b610db1565b34801561040757600080fd5b50610310610416366004613698565b610dbc565b34801561042757600080fd5b50610430610e43565b60405161020997969594939291906136b3565b34801561044f57600080fd5b506101fd61045e36600461361e565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104b457600080fd5b50610227610f3f565b3480156104c957600080fd5b506103107f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b3480156104fd57600080fd5b50610310600081565b34801561051257600080fd5b5061028c610521366004613775565b610f90565b34801561053257600080fd5b5061028c61054136600461379f565b610f9b565b34801561055257600080fd5b506001546101fd9060ff1681565b34801561056c57600080fd5b506102276040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105b557600080fd5b5061028c6105c43660046137ba565b610fe7565b3480156105d557600080fd5b506102276105e436600461333d565b610ffe565b3480156105f557600080fd5b5061028c61060436600461361e565b6110a0565b34801561061557600080fd5b506101fd610624366004613822565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b34801561067d57600080fd5b506103107fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c81565b3480156106b157600080fd5b5061028c6106c03660046138fa565b6110e4565b60006106d082611157565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008054606091908190610708906139b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610734906139b5565b80156107815780601f1061075657610100808354040283529160200191610781565b820191906000526020600020905b81548152906001019060200180831161076457829003601f168201915b505050505091505090565b6000610797826111ad565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b03166106d0565b6107df82823361121e565b5050565b6107eb61122b565b60015460ff16610827576040517f9d2c8e7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828114610860576040517fc70ea82800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b848110156108a85785858281811061087e5761087e613a08565b90506020028101906108909190613a37565b61089e906040013583613aa4565b9150600101610864565b50803410156108e3576040517fea259f9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848110156109465761093e86868381811061090357610903613a08565b90506020028101906109159190613a37565b85858481811061092757610927613a08565b90506020028101906109399190613ab7565b6112ac565b6001016108e6565b505061097160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6001600160a01b0382166109bf576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006109cc83833361153e565b9050836001600160a01b0316816001600160a01b031614610971576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016109b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610a7e5750825b905060008267ffffffffffffffff166001148015610a9b5750303b155b905081158015610aa9575080155b15610ae0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610b415784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610b4b8a8a6116b7565b610b5588886116c9565b610b5d6116db565b610b656116db565b610b6d6116e5565b6001805460ff191681179055610b846000876116f5565b508315610be65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610c2c816117c4565b61097183836116f5565b6001600160a01b0381163314610c78576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8282826117d1565b505050565b6000610c92816117c4565b604051600090339047908381818185875af1925050503d8060008114610cd4576040519150601f19603f3d011682016040523d82523d6000602084013e610cd9565b606091505b5050905080610d14576040517f2baafbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040514781527f6c9cf7ce96a10a51ae8b3fc5aca25e4754a77b3e821c133c5cebb1d30abe7e8e906020015b60405180910390a15050565b610c8283838360405180602001604052806000815250610fe7565b610d6f611877565b610d7882611947565b6107df8282611971565b6000610d8c611a72565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106d0826111ad565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316610e22576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b6001600160a01b039092166000908152600390920160205250604090205490565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610e8257506001810154155b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016109b6565b610ef0611ad4565b610ef8611b25565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930091610708906139b5565b6107df338383611b76565b6000610fa6816117c4565b6001805460ff19168315159081179091556040519081527f7d16763644b2f7d5a11e2b05fe3a9cc4edb4568049295f4e62024269ae2f6eab90602001610d40565b610ff2848484610977565b61097184848484611c52565b600081815260036020526040902080546060919061101b906139b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611047906139b5565b80156110945780601f1061106957610100808354040283529160200191611094565b820191906000526020600020905b81548152906001019060200180831161107757829003601f168201915b50505050509050919050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546110da816117c4565b61097183836117d1565b7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4061110e816117c4565b867f8a2c815542d43af541960cd9124f5ec6a55c4b8c69f0dda02ed413b401e309cd848688868b604051611146959493929190613ba0565b60405180910390a250505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106d057506106d082611df7565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120546001600160a01b0316806106d0576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016109b6565b610c828383836001611eda565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112a6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000546112ba848484612071565b60005b6112ca60e0860186613c05565b905081101561138b57817fabd48d213cb20ec6f191e95c191131c8fc3832f194f53febcb53d4834baae50761130260e0880188613c05565b8481811061131257611312613a08565b90506020028101906113249190613c6d565b61132e9080613ab7565b61133b60e08a018a613c05565b8681811061134b5761134b613a08565b905060200281019061135d9190613c6d565b61136b906020810190613ab7565b60405161137b9493929190613ccc565b60405180910390a26001016112bd565b5061139960a0850185613ab7565b6000838152600360205260409020916113b3919083613d4c565b50833560009081526002602052604081208054600190810190915581540181556113e1610100860186613e48565b905011156113f2576113f284612165565b61140b6114056080860160608701613698565b826123fd565b61141b6080850160608601613698565b84356000818152600260205260409020546001600160a01b0392909216918391907ffe94555d033bd3fc0f75671674d030640f03095d8345426fcab3a9a0bffdc4fb9061146b60808a018a613ab7565b61147860c08c018c613ab7565b604051611489959493929190613eb0565b60405180910390a4610140840135156109715761014084018035906114b2906101208701613698565b6001600160a01b0316827f6d6039156ec873b5c217b996d727775a9eea208e1329e87aaa4b617c76d2bb946101608801356101808901356114fb6101c08b016101a08c01613edd565b60405161150a93929190613f12565b60405180910390a450505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300906001600160a01b03908116908416156115ac576115ac818587612417565b6001600160a01b0381161561160a576115c9600086600080611eda565b6001600160a01b0381166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b6001600160a01b0386161561163b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b6116bf6124ad565b6107df8282612514565b6116d16124ad565b6107df8282612557565b6116e36124ad565b565b6116ed6124ad565b6116e36125ca565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117ba576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117703390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106d0565b60009150506106d0565b6117ce81336125d2565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117ba576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106d0565b306001600160a01b037f000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b516148061191057507f000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b56001600160a01b03166119047f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116e3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c6107df816117c4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119cb575060408051601f3d908101601f191682019092526119c891810190613f2d565b60015b611a0c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016109b6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611a68576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b610c82838361265f565b306001600160a01b037f000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b516146116e3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610708906139b5565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610708906139b5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316611be2576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016109b6565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b15610971576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290611cad903390889087908790600401613f46565b6020604051808303816000875af1925050508015611ce8575060408051601f3d908101601f19168201909252611ce591810190613f82565b60015b611d6a573d808015611d16576040519150601f19603f3d011682016040523d82523d6000602084013e611d1b565b606091505b508051600003611d62576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611df0576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611e8a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106d057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d0565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611f0f57506001600160a01b03831615155b15612028576000611f1f856111ad565b90506001600160a01b03841615801590611f4b5750836001600160a01b0316816001600160a01b031614155b8015611f9c57506001600160a01b0380821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611fde576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b82156120265784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061207e8484846126b5565b6001600160a01b03811660009081527fbc6704768de17ac743a4c41122099f7a3464fc20363467b8527e22c7572f5d3a602052604090205490915060ff166120f2576040517f0f3c13fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208085013560009081526004909152604090205460ff1615612141576040517f76abf21400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050506020908101356000908152600490915260409020805460ff19166001179055565b600061271047825b61217b610100860186613e48565b9050811015611df05761ffff8316612197610100870187613e48565b838181106121a7576121a7613a08565b90506040020160200160208101906121bf9190613f9f565b61ffff1611156121fb576040517f635015ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff8416612210610100880188613e48565b8481811061222057612220613a08565b90506040020160200160208101906122389190613f9f565b61224a9061ffff166040890135613fc3565b6122549190613fda565b90506122608186613aa4565b945085604001358511156122a0576040517fcc3b3ebc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828511156122da576040517f2c2cae9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006122ea610100880188613e48565b848181106122fa576122fa613a08565b6123109260206040909202019081019150613698565b90506001600160a01b038116156123f3576000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461236e576040519150601f19603f3d011682016040523d82523d6000602084013e612373565b606091505b50509050806123ae576040517f7327470c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03167fc9a9861643a061bfa3739f3b26e5d64578cd78bb863dbd5dac0aca396728d9a7846040516123e991815260200190565b60405180910390a2505b505060010161216d565b6107df82826040518060200160405280600081525061270e565b612422838383612725565b610c82576001600160a01b038316612469576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016109b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61251c6124ad565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806125488482614015565b50600181016109718382614015565b61255f6124ad565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125ab8482614015565b50600381016125ba8382614015565b5060008082556001909101555050565b6115186124ad565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107df576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016109b6565b612668826127e9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156126ad57610c828282612891565b6107df6128fe565b6000806126c185612936565b905061270584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506129509050565b95945050505050565b612718838361297a565b610c826000848484611c52565b60006001600160a01b038316158015906127e15750826001600160a01b0316846001600160a01b0316148061279e57506001600160a01b0380851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b806127e1575060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b038481169116145b949350505050565b806001600160a01b03163b600003612838576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016109b6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516128ae9190614111565b600060405180830381855af49150503d80600081146128e9576040519150601f19603f3d011682016040523d82523d6000602084013e6128ee565b606091505b5091509150612705858383612a11565b34156116e3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106d061294483612a86565b80519060200120612ba3565b6000806000806129608686612beb565b9250925092506129708282612c38565b5090949350505050565b6001600160a01b0382166129bd576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b60006129cb8383600061153e565b90506001600160a01b03811615610c82576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016109b6565b606082612a2657612a2182612d3c565b6116b0565b8151158015612a3d57506001600160a01b0384163b155b15612a7f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b6565b50806116b0565b60607f7b49e75f5dee25184e7fc560a05a02fa4311f0290980e85c2f8d7733b7fd3aba823560208401356040850135612ac460808701878701613698565b612ad9612ad46080890189613ab7565b612d7e565b612ae9612ad460a08a018a613ab7565b612af9612ad460c08b018b613ab7565b612b0e612b0960e08c018c613c05565b612da0565b612b24612b1f6101008d018d613e48565b612e7c565b612b318c61012001612f1b565b60408051602081019c909c528b019990995260608a019790975260808901959095526001600160a01b0390931660a088015260c087019190915260e0860152610100850152610120840152610140830152610160820152610180015b6040516020818303038152906040529050919050565b60006106d0612bb0612f9c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008351604103612c255760208401516040850151606086015160001a612c1788828585612fab565b955095509550505050612c31565b50508151600091506002905b9250925092565b6000826003811115612c4c57612c4c613b1c565b03612c55575050565b6001826003811115612c6957612c69613b1c565b03612ca0576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115612cb457612cb4613b1c565b03612cee576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b6003826003811115612d0257612d02613b1c565b036107df576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016109b6565b805115612d4c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008282604051612d90929190614123565b6040518091039020905092915050565b6000808267ffffffffffffffff811115612dbc57612dbc613490565b604051908082528060200260200182016040528015612de5578160200160208202803683370190505b50905060005b83811015612e4b57612e1f858583818110612e0857612e08613a08565b9050602002810190612e1a9190613c6d565b61307a565b80519060200120828281518110612e3857612e38613a08565b6020908102919091010152600101612deb565b5080604051602001612e5d9190614133565b6040516020818303038152906040528051906020012091505092915050565b6000808267ffffffffffffffff811115612e9857612e98613490565b604051908082528060200260200182016040528015612ec1578160200160208202803683370190505b50905060005b83811015612e4b57612eef858583818110612ee457612ee4613a08565b9050604002016130d9565b80519060200120828281518110612f0857612f08613a08565b6020908102919091010152600101612ec7565b60007fbb5588251ed87f59437bd9a89dd0ef74f88c736ab95bdcd74955ff21bcf35e79612f4b6020840184613698565b602084013560408501356060860135612f6a60a0880160808901613edd565b604051602001612f7f96959493929190614169565b604051602081830303815290604052805190602001209050919050565b6000612fa6613149565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612fe65750600091506003905082613070565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561303a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661306657506000925060019150829050613070565b9250600091508190505b9450945094915050565b60607f93dc1bac6b117acdbb889b9a825b9bc731449f703cc02b69049722fcba5dbe346130aa612ad48480613ab7565b6130ba612ad46020860186613ab7565b6040805160208101949094528301919091526060820152608001612b8d565b60607fdf3d1189f68f42c28f9fad9d69ff7a974d0a800a2e4420ed400e45a46d2fac2f6131096020840184613698565b6131196040850160208601613f9f565b604051602001612b8d939291909283526001600160a01b0391909116602083015261ffff16604082015260600190565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6131746131bd565b61317c613239565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100816131e9611ad4565b80519091501561320157805160209091012092915050565b81548015613210579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081613265611b25565b80519091501561327d57805160209091012092915050565b60018201548015613210579392505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117ce57600080fd5b6000602082840312156132cf57600080fd5b81356116b08161328f565b60005b838110156132f55781810151838201526020016132dd565b50506000910152565b600081518084526133168160208601602086016132da565b601f01601f19169290920160200192915050565b6020815260006116b060208301846132fe565b60006020828403121561334f57600080fd5b5035919050565b80356001600160a01b038116811461336d57600080fd5b919050565b6000806040838503121561338557600080fd5b61338e83613356565b946020939093013593505050565b60008083601f8401126133ae57600080fd5b50813567ffffffffffffffff8111156133c657600080fd5b6020830191508360208260051b85010111156133e157600080fd5b9250929050565b600080600080604085870312156133fe57600080fd5b843567ffffffffffffffff8082111561341657600080fd5b6134228883890161339c565b9096509450602087013591508082111561343b57600080fd5b506134488782880161339c565b95989497509550505050565b60008060006060848603121561346957600080fd5b61347284613356565b925061348060208501613356565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e8576134e8613490565b604052919050565b600082601f83011261350157600080fd5b813567ffffffffffffffff81111561351b5761351b613490565b61352e6020601f19601f840116016134bf565b81815284602083860101111561354357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561357857600080fd5b853567ffffffffffffffff8082111561359057600080fd5b61359c89838a016134f0565b965060208801359150808211156135b257600080fd5b6135be89838a016134f0565b955060408801359150808211156135d457600080fd5b6135e089838a016134f0565b945060608801359150808211156135f657600080fd5b50613603888289016134f0565b92505061361260808701613356565b90509295509295909350565b6000806040838503121561363157600080fd5b8235915061364160208401613356565b90509250929050565b6000806040838503121561365d57600080fd5b61366683613356565b9150602083013567ffffffffffffffff81111561368257600080fd5b61368e858286016134f0565b9150509250929050565b6000602082840312156136aa57600080fd5b6116b082613356565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526136ef60e084018a6132fe565b8381036040850152613701818a6132fe565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561375357835183529284019291840191600101613737565b50909c9b505050505050505050505050565b8035801515811461336d57600080fd5b6000806040838503121561378857600080fd5b61379183613356565b915061364160208401613765565b6000602082840312156137b157600080fd5b6116b082613765565b600080600080608085870312156137d057600080fd5b6137d985613356565b93506137e760208601613356565b925060408501359150606085013567ffffffffffffffff81111561380a57600080fd5b613816878288016134f0565b91505092959194509250565b6000806040838503121561383557600080fd5b61383e83613356565b915061364160208401613356565b600082601f83011261385d57600080fd5b8135602067ffffffffffffffff8083111561387a5761387a613490565b8260051b6138898382016134bf565b93845285810183019383810190888611156138a357600080fd5b84880192505b858310156138df578235848111156138c15760008081fd5b6138cf8a87838c01016134f0565b83525091840191908401906138a9565b98975050505050505050565b80356002811061336d57600080fd5b60008060008060008060c0878903121561391357600080fd5b86359550602087013567ffffffffffffffff8082111561393257600080fd5b61393e8a838b0161384c565b9650604089013591508082111561395457600080fd5b6139608a838b016134f0565b9550606089013591506003821061397657600080fd5b81945061398560808a016138eb565b935060a089013591508082111561399b57600080fd5b506139a889828a0161384c565b9150509295509295509295565b600181811c908216806139c957607f821691505b602082108103613a02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe41833603018112613a6b57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156106d0576106d0613a75565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613aec57600080fd5b83018035915067ffffffffffffffff821115613b0757600080fd5b6020019150368190038213156133e157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015613b93578284038952613b818483516132fe565b98850198935090840190600101613b69565b5091979650505050505050565b600060028710613bb257613bb2613b1c565b86825260038610613bc557613bc5613b1c565b85602083015260a06040830152613bdf60a08301866132fe565b8281036060840152613bf18186613b4b565b905082810360808401526138df8185613b4b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c3a57600080fd5b83018035915067ffffffffffffffff821115613c5557600080fd5b6020019150600581901b36038213156133e157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613a6b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000613ce0604083018688613ca1565b8281036020840152613cf3818587613ca1565b979650505050505050565b601f821115610c8257600081815260208120601f850160051c81016020861015613d255750805b601f850160051c820191505b81811015613d4457828155600101613d31565b505050505050565b67ffffffffffffffff831115613d6457613d64613490565b613d7883613d7283546139b5565b83613cfe565b6000601f841160018114613dca5760008515613d945750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611df0565b600083815260209020601f19861690835b82811015613dfb5786850135825560209485019460019092019101613ddb565b5086821015613e36577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e7d57600080fd5b83018035915067ffffffffffffffff821115613e9857600080fd5b6020019150600681901b36038213156133e157600080fd5b858152606060208201526000613eca606083018688613ca1565b82810360408401526138df818587613ca1565b600060208284031215613eef57600080fd5b8135600481106116b057600080fd5b60048110613f0e57613f0e613b1c565b9052565b83815260208101839052606081016127e16040830184613efe565b600060208284031215613f3f57600080fd5b5051919050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613f7860808301846132fe565b9695505050505050565b600060208284031215613f9457600080fd5b81516116b08161328f565b600060208284031215613fb157600080fd5b813561ffff811681146116b057600080fd5b80820281158282048414176106d0576106d0613a75565b600082614010577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b815167ffffffffffffffff81111561402f5761402f613490565b6140438161403d84546139b5565b84613cfe565b602080601f83116001811461409657600084156140605750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613d44565b600085815260208120601f198616915b828110156140c5578886015182559484019460019091019084016140a6565b508582101561410157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613a6b8184602087016132da565b8183823760009101908152919050565b815160009082906020808601845b8381101561415d57815185529382019390820190600101614141565b50929695505050505050565b600060c0820190508782526001600160a01b0387166020830152856040830152846060830152836080830152613cf360a0830184613efe56fea2646970667358221220e623a0d027ed828690c06fbcf3f1ac3fe7010216a0dd1b1de4b7b6260c38c6f264736f6c63430008140033
Generate instant answers for your smart contract questions using Al Models. Read more.
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

