[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_tokenToSell", "type": "uint256" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "string", "name": "newBaseURI", "type": "string" } ], "name": "BaseURIChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxBuyCountPerWallet", "type": "uint256" } ], "name": "MaxBuyCountPerWalletChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "whitelistSigner", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "startTime", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "endTime", "type": "uint32" } ], "name": "PresaleConfigChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newShip", "type": "address" } ], "name": "ShipChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTokenPrice", "type": "uint256" } ], "name": "TokenPriceChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenReserved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenSold", "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": false, "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "TreasuryChanged", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PRESALE_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "boughtCounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "buyTokens", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "buyTokensWithSignature", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [], "name": "maxBuyCountPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "presaleConfig", "outputs": [ { "internalType": "address", "name": "whitelistSigner", "type": "address" }, { "internalType": "uint32", "name": "startTime", "type": "uint32" }, { "internalType": "uint32", "name": "endTime", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "reserveTokens", "outputs": [], "stateMutability": "nonpayable", "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": "string", "name": "newbaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxBuyCountPerWallet", "type": "uint256" } ], "name": "setMaxBuyCountPerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_treasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "whitelistSigner", "type": "address" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "setUpPresale", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenSoldCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenToSell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
608060405260016012553480156200001657600080fd5b506040516200346538038062003465833981016040819052620000399162000406565b8383620000463362000259565b6001805581516200005f906002906020850190620002a9565b50805162000075906003906020840190620002a9565b50505060008211620000da5760405162461bcd60e51b8152602060048201526024808201527f494d454e46543a205f746f6b656e546f53656c6c206e6565647320746f2062656044820152630203e20360e41b60648201526084015b60405180910390fd5b60008111620001375760405162461bcd60e51b815260206004820152602260248201527f494d454e46543a205f6d6178537570706c79206e6565647320746f206265203e604482015261020360f41b6064820152608401620000d1565b808210620001ae5760405162461bcd60e51b815260206004820152603d60248201527f494d454e46543a20746f6b656e546f53656c6c206e65656420746f206265207360448201527f6d616c6c657220746f20746f74616c20737570706c79206f66206e66740000006064820152608401620000d1565b60109190915560115550805160209182012060408051808201825260018152603160f81b9084015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528151808403909101815260c090920190528051910120601655620004d3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620002b79062000480565b90600052602060002090601f016020900481019282620002db576000855562000326565b82601f10620002f657805160ff191683800117855562000326565b8280016001018555821562000326579182015b828111156200032657825182559160200191906001019062000309565b506200033492915062000338565b5090565b5b8082111562000334576000815560010162000339565b600082601f8301126200036157600080fd5b81516001600160401b03808211156200037e576200037e620004bd565b604051601f8301601f19908116603f01168101908282118183101715620003a957620003a9620004bd565b81604052838152602092508683858801011115620003c657600080fd5b600091505b83821015620003ea5785820183015181830184015290820190620003cb565b83821115620003fc5760008385830101525b9695505050505050565b600080600080608085870312156200041d57600080fd5b84516001600160401b03808211156200043557600080fd5b62000443888389016200034f565b955060208701519150808211156200045a57600080fd5b5062000469878288016200034f565b604087015160609097015195989097509350505050565b600181811c908216806200049557607f821691505b60208210811415620004b757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612f8280620004e36000396000f3fe6080604052600436106102305760003560e01c806370a082311161012e578063b88d4fde116100ab578063e985e9c51161006f578063e985e9c514610650578063eeb57aa614610699578063f0f44260146106ac578063f2fde38b146106cc578063fd88fa69146106ec57600080fd5b8063b88d4fde146105a6578063c87b56dd146105c6578063d4ae7522146105e6578063d5abeb011461061a578063dad026cb1461063057600080fd5b80637ff9b596116100f25780637ff9b596146105105780638034d85c146105265780638da5cb5b1461055357806395d89b4114610571578063a22cb4651461058657600080fd5b806370a082311461048f578063715018a6146104af57806375794a3c146104c457806378cf19e9146104da5780637b7210e8146104fa57600080fd5b806342842e0e116101bc57806361d027b31161018057806361d027b3146104045780636352211e146104245780636a61e5fc146104445780636c0360eb146104645780636cd071541461047957600080fd5b806342842e0e1461036e5780634f6ccce71461038e5780635198a06e146103ae578063522c698d146103c457806355f804b3146103e457600080fd5b806318160ddd1161020357806318160ddd146102e657806323b872dd146103055780632f745c59146103255780633610724e146103455780633644e5151461035857600080fd5b806301ffc9a71461023557806306fdde031461026a578063081812fc1461028c578063095ea7b3146102c4575b600080fd5b34801561024157600080fd5b50610255610250366004612b12565b610751565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f61077c565b6040516102619190612cba565b34801561029857600080fd5b506102ac6102a7366004612b8e565b61080e565b6040516001600160a01b039091168152602001610261565b3480156102d057600080fd5b506102e46102df366004612ab1565b6108a8565b005b3480156102f257600080fd5b50600a545b604051908152602001610261565b34801561031157600080fd5b506102e461032036600461295d565b6109be565b34801561033157600080fd5b506102f7610340366004612ab1565b6109ef565b6102e4610353366004612b8e565b610a85565b34801561036457600080fd5b506102f760165481565b34801561037a57600080fd5b506102e461038936600461295d565b610aa1565b34801561039a57600080fd5b506102f76103a9366004612b8e565b610abc565b3480156103ba57600080fd5b506102f7600f5481565b3480156103d057600080fd5b506102e46103df366004612add565b610b4f565b3480156103f057600080fd5b506102e46103ff366004612b4c565b610cec565b34801561041057600080fd5b506015546102ac906001600160a01b031681565b34801561043057600080fd5b506102ac61043f366004612b8e565b610d60565b34801561045057600080fd5b506102e461045f366004612b8e565b610dd7565b34801561047057600080fd5b5061027f610e3d565b34801561048557600080fd5b506102f760105481565b34801561049b57600080fd5b506102f76104aa366004612907565b610ecb565b3480156104bb57600080fd5b506102e4610f52565b3480156104d057600080fd5b506102f760125481565b3480156104e657600080fd5b506102e46104f5366004612ab1565b610f88565b34801561050657600080fd5b506102f7600d5481565b34801561051c57600080fd5b506102f7600e5481565b34801561053257600080fd5b506102f7610541366004612907565b60136020526000908152604090205481565b34801561055f57600080fd5b506000546001600160a01b03166102ac565b34801561057d57600080fd5b5061027f61114a565b34801561059257600080fd5b506102e46105a1366004612a7e565b611159565b3480156105b257600080fd5b506102e46105c136600461299e565b611168565b3480156105d257600080fd5b5061027f6105e1366004612b8e565b61119a565b3480156105f257600080fd5b506102f77f46e3896d51ae2975031c99bde656c5b37bbe33d36ec98df9dc9b17281466bdd181565b34801561062657600080fd5b506102f760115481565b34801561063c57600080fd5b506102e461064b366004612b8e565b611275565b34801561065c57600080fd5b5061025561066b366004612924565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102e46106a7366004612ba7565b6112d4565b3480156106b857600080fd5b506102e46106c7366004612907565b611314565b3480156106d857600080fd5b506102e46106e7366004612907565b61138c565b3480156106f857600080fd5b50600c54610725906001600160a01b0381169063ffffffff600160a01b8204811691600160c01b90041683565b604080516001600160a01b03909416845263ffffffff9283166020850152911690820152606001610261565b60006001600160e01b0319821663780e9d6360e01b1480610776575061077682611424565b92915050565b60606002805461078b90612e33565b80601f01602080910402602001604051908101604052809291908181526020018280546107b790612e33565b80156108045780601f106107d957610100808354040283529160200191610804565b820191906000526020600020905b8154815290600101906020018083116107e757829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b031661088c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006108b382610d60565b9050806001600160a01b0316836001600160a01b031614156109215760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610883565b336001600160a01b038216148061093d575061093d813361066b565b6109af5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610883565b6109b98383611474565b505050565b6109c833826114e2565b6109e45760405162461bcd60e51b815260040161088390612d54565b6109b98383836115d9565b60006109fa83610ecb565b8210610a5c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610883565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b610a9e8160405180602001604052806000815250611780565b50565b6109b983838360405180602001604052806000815250611168565b6000610ac7600a5490565b8210610b2a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610883565b600a8281548110610b3d57610b3d612ef5565b90600052602060002001549050919050565b6000546001600160a01b03163314610b795760405162461bcd60e51b815260040161088390612d1f565b6000610b8483611ed1565b90506000610b9183611ed1565b90506001600160a01b038516610be05760405162461bcd60e51b8152602060048201526014602482015273494d454e46543a207a65726f206164647265737360601b6044820152606401610883565b60008263ffffffff16118015610c0157508163ffffffff168163ffffffff16115b610c4d5760405162461bcd60e51b815260206004820152601a60248201527f494d454e46543a20696e76616c69642074696d652072616e67650000000000006044820152606401610883565b60408051606080820183526001600160a01b03881680835263ffffffff8681166020808601829052918716948601859052600c80546001600160c01b0319168417600160a01b83021763ffffffff60c01b1916600160c01b8702179055855192835290820152928301919091527f883135fc965d7f7dbcc3014a73e1da89792169e1946b4fa2b4217cef2ae08003910160405180910390a15050505050565b6000546001600160a01b03163314610d165760405162461bcd60e51b815260040161088390612d1f565b610d2260148383612835565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf68282604051610d54929190612c8b565b60405180910390a15050565b6000818152600460205260408120546001600160a01b0316806107765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610883565b6000546001600160a01b03163314610e015760405162461bcd60e51b815260040161088390612d1f565b600e8190556040518181527fac21bacd333b316c6640fca5086322638b0a7aa4367179afd5dfcbe0a5427bc7906020015b60405180910390a150565b60148054610e4a90612e33565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7690612e33565b8015610ec35780601f10610e9857610100808354040283529160200191610ec3565b820191906000526020600020905b815481529060010190602001808311610ea657829003601f168201915b505050505081565b60006001600160a01b038216610f365760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610883565b506001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610f7c5760405162461bcd60e51b815260040161088390612d1f565b610f866000611f3a565b565b6000546001600160a01b03163314610fb25760405162461bcd60e51b815260040161088390612d1f565b6001600160a01b038216610fff5760405162461bcd60e51b8152602060048201526014602482015273494d454e46543a207a65726f206164647265737360601b6044820152606401610883565b601254816110475760405162461bcd60e51b81526020600482015260156024820152741253515391950e881a5b9d985b1a590818dbdd5b9d605a1b6044820152606401610883565b60115482611056600184612df0565b6110609190612da5565b11156110ae5760405162461bcd60e51b815260206004820152601b60248201527f494d454e46543a206d617820737570706c7920657863656564656400000000006044820152606401610883565b81601260008282546110c09190612da5565b90915550600090505b82811015611144576110e4846110df8385612da5565b611f8a565b7f059b47189b97a25d79b2e8a4a5af2bbb0e875b59ce5057302a77e2c6c9e2d503846111108385612da5565b604080516001600160a01b03909316835260208301919091520160405180910390a18061113c81612e6e565b9150506110c9565b50505050565b60606003805461078b90612e33565b611164338383611fa4565b5050565b61117233836114e2565b61118e5760405162461bcd60e51b815260040161088390612d54565b61114484848484612073565b6000818152600460205260409020546060906001600160a01b03166112195760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610883565b60006112236120a6565b90506000815111611243576040518060200160405280600081525061126e565b8061124d846120b5565b60405160200161125e929190612c1f565b6040516020818303038152906040525b9392505050565b6000546001600160a01b0316331461129f5760405162461bcd60e51b815260040161088390612d1f565b600d8190556040518181527fa9f222f6f2b4c703f0a2c3f063fb242eefb0202fdccf3007ac74f80d2c7ac7dd90602001610e32565b6109b98383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b6000546001600160a01b0316331461133e5760405162461bcd60e51b815260040161088390612d1f565b601580546001600160a01b0319166001600160a01b0383169081179091556040519081527fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f60890602001610e32565b6000546001600160a01b031633146113b65760405162461bcd60e51b815260040161088390612d1f565b6001600160a01b03811661141b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610883565b610a9e81611f3a565b60006001600160e01b031982166380ac58cd60e01b148061145557506001600160e01b03198216635b5e139f60e01b145b8061077657506301ffc9a760e01b6001600160e01b0319831614610776565b600081815260066020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114a982610d60565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b031661155b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610883565b600061156683610d60565b9050806001600160a01b0316846001600160a01b031614806115a15750836001600160a01b03166115968461080e565b6001600160a01b0316145b806115d157506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115ec82610d60565b6001600160a01b0316146116505760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610883565b6001600160a01b0382166116b25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610883565b6116bd8383836121b3565b6116c8600082611474565b6001600160a01b03831660009081526005602052604081208054600192906116f1908490612df0565b90915550506001600160a01b038216600090815260056020526040812080546001929061171f908490612da5565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600260015414156117d35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610883565b600260015560408051606081018252600c546001600160a01b038116825263ffffffff600160a01b8204811660208401819052600160c01b9092041692820192909252906118635760405162461bcd60e51b815260206004820152601e60248201527f494d454e46543a2070726573616c65206e6f7420636f6e6669677572656400006044820152606401610883565b6015546001600160a01b03166118bb5760405162461bcd60e51b815260206004820152601860248201527f494d454e46543a207472656173757279206e6f742073657400000000000000006044820152606401610883565b6000600e541161190d5760405162461bcd60e51b815260206004820152601b60248201527f494d454e46543a20746f6b656e207072696365206e6f742073657400000000006044820152606401610883565b600083116119555760405162461bcd60e51b81526020600482015260156024820152741253515391950e881a5b9d985b1a590818dbdd5b9d605a1b6044820152606401610883565b6000600d54116119b35760405162461bcd60e51b8152602060048201526024808201527f494d454e46543a206d6178427579436f756e7450657257616c6c6574206e6f74604482015263081cd95d60e21b6064820152608401610883565b3483600e546119c29190612dd1565b14611a1b5760405162461bcd60e51b8152602060048201526024808201527f494d454e46543a20696e636f7272656374206e617469766520746f6b656e2076604482015263616c756560e01b6064820152608401610883565b806020015163ffffffff16421015611a755760405162461bcd60e51b815260206004820152601c60248201527f494d454e46543a207072652073616c65206e6f742073746172746564000000006044820152606401610883565b806040015163ffffffff16421015611bc957601654604080517f46e3896d51ae2975031c99bde656c5b37bbe33d36ec98df9dc9b17281466bdd1602082015233918101919091526000919060600160405160208183030381529060405280519060200120604051602001611b0092919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815291905280516020909101209050600080611b27838661226b565b90925090506000816004811115611b4057611b40612ec9565b148015611b5557506001600160a01b03821615155b8015611b6d575083516001600160a01b038381169116145b611bc55760405162461bcd60e51b8152602060048201526024808201527f494d454e46543a20696e76616c696420617070726f76616c20666f722070726560448201526373616c6560e01b6064820152608401610883565b5050505b601254600f54601054600091611bde91612df0565b905060008111611c295760405162461bcd60e51b81526020600482015260166024820152751253515391950e88105b1b081d1bdad95b881cdbdb1960521b6044820152606401610883565b33600090815260136020526040812054600d54611c469190612df0565b905060008111611caa5760405162461bcd60e51b815260206004820152602960248201527f494d454e46543a206d617820636f756e74206f6620746869732077616c6c657460448201526808195e18d95959195960ba1b6064820152608401610883565b6000611cbf87611cba84866122db565b6122db565b60115490915081611cd1600187612df0565b611cdb9190612da5565b1115611d295760405162461bcd60e51b815260206004820152601b60248201527f494d454e46543a206d617820737570706c7920657863656564656400000000006044820152606401610883565b3360009081526013602052604081208054839290611d48908490612da5565b909155505086811015611dde57600081600e54611d659190612dd1565b6015546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611da0573d6000803e3d6000fd5b50336108fc611daf8334612df0565b6040518115909202916000818181858888f19350505050158015611dd7573d6000803e3d6000fd5b5050611e19565b6015546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611e17573d6000803e3d6000fd5b505b8060126000828254611e2b9190612da5565b9250508190555080600f6000828254611e449190612da5565b90915550600090505b81811015611ec357611e63336110df8388612da5565b7ffe2ff4cf36ff7d2c2b06eb960897ee0d76d9c3e58da12feb7b93e86b226dd34433611e8f8388612da5565b604080516001600160a01b03909316835260208301919091520160405180910390a180611ebb81612e6e565b915050611e4d565b505060018055505050505050565b600063ffffffff821115611f365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610883565b5090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111648282604051806020016040528060008152506122f1565b816001600160a01b0316836001600160a01b031614156120065760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610883565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61207e8484846115d9565b61208a84848484612324565b6111445760405162461bcd60e51b815260040161088390612ccd565b60606014805461078b90612e33565b6060816120d95750506040805180820190915260018152600360fc1b602082015290565b8160005b811561210357806120ed81612e6e565b91506120fc9050600a83612dbd565b91506120dd565b60008167ffffffffffffffff81111561211e5761211e612f0b565b6040519080825280601f01601f191660200182016040528015612148576020820181803683370190505b5090505b84156115d15761215d600183612df0565b915061216a600a86612e89565b612175906030612da5565b60f81b81838151811061218a5761218a612ef5565b60200101906001600160f81b031916908160001a9053506121ac600a86612dbd565b945061214c565b6001600160a01b03831661220e5761220981600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b612231565b816001600160a01b0316836001600160a01b031614612231576122318382612431565b6001600160a01b038216612248576109b9816124ce565b826001600160a01b0316826001600160a01b0316146109b9576109b9828261257d565b6000808251604114156122a25760208301516040840151606085015160001a612296878285856125c1565b945094505050506122d4565b8251604014156122cc57602083015160408401516122c18683836126ae565b9350935050506122d4565b506000905060025b9250929050565b60008183106122ea578161126e565b5090919050565b6122fb83836126e7565b6123086000848484612324565b6109b95760405162461bcd60e51b815260040161088390612ccd565b60006001600160a01b0384163b1561242657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612368903390899088908890600401612c4e565b602060405180830381600087803b15801561238257600080fd5b505af19250505080156123b2575060408051601f3d908101601f191682019092526123af91810190612b2f565b60015b61240c573d8080156123e0576040519150601f19603f3d011682016040523d82523d6000602084013e6123e5565b606091505b5080516124045760405162461bcd60e51b815260040161088390612ccd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115d1565b506001949350505050565b6000600161243e84610ecb565b6124489190612df0565b60008381526009602052604090205490915080821461249b576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a546000906124e090600190612df0565b6000838152600b6020526040812054600a805493945090928490811061250857612508612ef5565b9060005260206000200154905080600a838154811061252957612529612ef5565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a80548061256157612561612edf565b6001900381819060005260206000200160009055905550505050565b600061258883610ecb565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156125f857506000905060036126a5565b8460ff16601b1415801561261057508460ff16601c14155b1561262157506000905060046126a5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612675573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661269e576000600192509250506126a5565b9150600090505b94509492505050565b6000806001600160ff1b038316816126cb60ff86901c601b612da5565b90506126d9878288856125c1565b935093505050935093915050565b6001600160a01b03821661273d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610883565b6000818152600460205260409020546001600160a01b0316156127a25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610883565b6127ae600083836121b3565b6001600160a01b03821660009081526005602052604081208054600192906127d7908490612da5565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461284190612e33565b90600052602060002090601f01602090048101928261286357600085556128a9565b82601f1061287c5782800160ff198235161785556128a9565b828001600101855582156128a9579182015b828111156128a957823582559160200191906001019061288e565b50611f369291505b80821115611f3657600081556001016128b1565b60008083601f8401126128d757600080fd5b50813567ffffffffffffffff8111156128ef57600080fd5b6020830191508360208285010111156122d457600080fd5b60006020828403121561291957600080fd5b813561126e81612f21565b6000806040838503121561293757600080fd5b823561294281612f21565b9150602083013561295281612f21565b809150509250929050565b60008060006060848603121561297257600080fd5b833561297d81612f21565b9250602084013561298d81612f21565b929592945050506040919091013590565b600080600080608085870312156129b457600080fd5b84356129bf81612f21565b935060208501356129cf81612f21565b925060408501359150606085013567ffffffffffffffff808211156129f357600080fd5b818701915087601f830112612a0757600080fd5b813581811115612a1957612a19612f0b565b604051601f8201601f19908116603f01168101908382118183101715612a4157612a41612f0b565b816040528281528a6020848701011115612a5a57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215612a9157600080fd5b8235612a9c81612f21565b91506020830135801515811461295257600080fd5b60008060408385031215612ac457600080fd5b8235612acf81612f21565b946020939093013593505050565b600080600060608486031215612af257600080fd5b8335612afd81612f21565b95602085013595506040909401359392505050565b600060208284031215612b2457600080fd5b813561126e81612f36565b600060208284031215612b4157600080fd5b815161126e81612f36565b60008060208385031215612b5f57600080fd5b823567ffffffffffffffff811115612b7657600080fd5b612b82858286016128c5565b90969095509350505050565b600060208284031215612ba057600080fd5b5035919050565b600080600060408486031215612bbc57600080fd5b83359250602084013567ffffffffffffffff811115612bda57600080fd5b612be6868287016128c5565b9497909650939450505050565b60008151808452612c0b816020860160208601612e07565b601f01601f19169290920160200192915050565b60008351612c31818460208801612e07565b835190830190612c45818360208801612e07565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612c8190830184612bf3565b9695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208152600061126e6020830184612bf3565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612db857612db8612e9d565b500190565b600082612dcc57612dcc612eb3565b500490565b6000816000190483118215151615612deb57612deb612e9d565b500290565b600082821015612e0257612e02612e9d565b500390565b60005b83811015612e22578181015183820152602001612e0a565b838111156111445750506000910152565b600181811c90821680612e4757607f821691505b60208210811415612e6857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612e8257612e82612e9d565b5060010190565b600082612e9857612e98612eb3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9e57600080fd5b6001600160e01b031981168114610a9e57600080fdfea26469706673582212206e10efe4189a3902f8a9e3308197f28e2fcdc2444b847015c00f992aa58683e264736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000008547269506f642d580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008547269506f642d58000000000000000000000000000000000000000000000000