[ { "inputs": [], "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": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": 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" }, { "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": [ { "internalType": "uint64[]", "name": "quantities", "type": "uint64[]" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "batchAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "royalty_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFee_", "type": "uint96" } ], "name": "initialize", "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": [], "name": "maxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "presaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": [], "name": "saleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerMint", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "newPrice", "type": "uint256" }, { "internalType": "bool", "name": "presale", "type": "bool" } ], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopSale", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRevenue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052610137805461ffff191690553480156200001d57600080fd5b50620000286200002e565b620000f0565b600054610100900460ff16156200009b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ee576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61360880620001006000396000f3fe6080604052600436106102515760003560e01c806368428a1b11610139578063afef7c04116100b6578063e36b0b371161007a578063e36b0b37146106ab578063e985e9c5146106c0578063f0f4426014610709578063f2fde38b14610729578063fb9d09c814610749578063fd51fae81461075c57600080fd5b8063afef7c0414610616578063b88d4fde14610636578063bf2d9e0b14610656578063c87b56dd1461066b578063d53ab5011461068b57600080fd5b80638da5cb5b116100fd5780638da5cb5b1461059a57806393d756aa146105b857806395d89b41146105cb578063a035b1fe146105e0578063a22cb465146105f657600080fd5b806368428a1b1461050757806370a0823114610525578063715018a614610545578063789e3a551461055a5780637cb647591461057a57600080fd5b80633ccfd60b116101d257806353135ca01161019657806353135ca01461045a57806355f804b3146104735780635944c753146104935780635f48f393146104b357806361d027b3146104c95780636352211e146104e757600080fd5b80633ccfd60b146103d957806342842e0e146103ee578063453c23101461040e5780634f6ccce714610424578063507e094f1461044457600080fd5b806318160ddd1161021957806318160ddd1461032757806323b872dd146103475780632a55205a146103675780632f745c59146103a6578063386bacdc146103c657600080fd5b806301ffc9a71461025657806304634d8d1461028b57806306fdde03146102ad578063081812fc146102cf578063095ea7b314610307575b600080fd5b34801561026257600080fd5b50610276610271366004612adf565b61076f565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a6366004612b2f565b610780565b005b3480156102b957600080fd5b506102c2610796565b6040516102829190612bba565b3480156102db57600080fd5b506102ef6102ea366004612bcd565b610828565b6040516001600160a01b039091168152602001610282565b34801561031357600080fd5b506102ab610322366004612be6565b61084f565b34801561033357600080fd5b50610100545b604051908152602001610282565b34801561035357600080fd5b506102ab610362366004612c10565b610969565b34801561037357600080fd5b50610387610382366004612c4c565b61099a565b604080516001600160a01b039093168352602083019190915201610282565b3480156103b257600080fd5b506103396103c1366004612be6565b610a48565b6102ab6103d4366004612cc9565b610ade565b3480156103e557600080fd5b506102ab610d5c565b3480156103fa57600080fd5b506102ab610409366004612c10565b610e91565b34801561041a57600080fd5b5061013554610339565b34801561043057600080fd5b5061033961043f366004612bcd565b610eac565b34801561045057600080fd5b5061013454610339565b34801561046657600080fd5b506101375460ff16610276565b34801561047f57600080fd5b506102ab61048e366004612dcd565b610f41565b34801561049f57600080fd5b506102ab6104ae366004612e01565b610f56565b3480156104bf57600080fd5b5061013354610339565b3480156104d557600080fd5b5060ca546001600160a01b03166102ef565b3480156104f357600080fd5b506102ef610502366004612bcd565b610f69565b34801561051357600080fd5b5061013754610100900460ff16610276565b34801561053157600080fd5b50610339610540366004612e3d565b610fc9565b34801561055157600080fd5b506102ab61104f565b34801561056657600080fd5b506102ab610575366004612e68565b611063565b34801561058657600080fd5b506102ab610595366004612bcd565b61109c565b3480156105a657600080fd5b506033546001600160a01b03166102ef565b6102ab6105c6366004612eb1565b6110aa565b3480156105d757600080fd5b506102c2611234565b3480156105ec57600080fd5b5061013654610339565b34801561060257600080fd5b506102ab610611366004612edb565b611243565b34801561062257600080fd5b506102ab610631366004612f05565b61124e565b34801561064257600080fd5b506102ab610651366004612f8e565b611378565b34801561066257600080fd5b5060cb54610339565b34801561067757600080fd5b506102c2610686366004612bcd565b6113b0565b34801561069757600080fd5b506102ab6106a6366004613009565b611417565b3480156106b757600080fd5b506102ab6114cc565b3480156106cc57600080fd5b506102766106db366004613068565b6001600160a01b03918216600090815260d16020908152604080832093909416825291909152205460ff1690565b34801561071557600080fd5b506102ab610724366004612e3d565b6114e2565b34801561073557600080fd5b506102ab610744366004612e3d565b61150c565b6102ab610757366004613092565b611518565b6102ab61076a3660046130ad565b61168d565b600061077a826118e8565b92915050565b61078861190d565b6107928282611967565b5050565b606060cc80546107a59061311b565b80601f01602080910402602001604051908101604052809291908181526020018280546107d19061311b565b801561081e5780601f106107f35761010080835404028352916020019161081e565b820191906000526020600020905b81548152906001019060200180831161080157829003601f168201915b5050505050905090565b600061083382611a21565b50600090815260d060205260409020546001600160a01b031690565b600061085a82610f69565b9050806001600160a01b0316836001600160a01b0316036108cc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108e857506108e881336106db565b61095a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108c3565b6109648383611a80565b505050565b6109733382611aee565b61098f5760405162461bcd60e51b81526004016108c390613155565b610964838383611b6d565b60008281526098602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a0f5750604080518082019091526097546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a2e906001600160601b0316876131b9565b610a3891906131ee565b91519350909150505b9250929050565b6000610a5383610fc9565b8210610ab55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016108c3565b506001600160a01b0391909116600090815260fe60209081526040808320938352929052205490565b836000816001600160401b031611610b085760405162461bcd60e51b81526004016108c390613202565b60006101335411610b1a576001610b3e565b61013354610b3b826001600160401b0316610b356101005490565b90611d14565b11155b610b5a5760405162461bcd60e51b81526004016108c390613229565b61013454816001600160401b03161115610b865760405162461bcd60e51b81526004016108c390613256565b6000610bbb6001600160401b03871661013083335b6001600160a01b0316815260208101919091526040016000205490611d14565b6101375490915060ff16610c065760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b60448201526064016108c3565b61013154600003610c4b5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b60448201526064016108c3565b61013554811115610c6e5760405162461bcd60e51b81526004016108c390613285565b84811115610c8e5760405162461bcd60e51b81526004016108c390613285565b610d0c84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050610131546040516bffffffffffffffffffffffff193360601b166020820152603481018b905290925060540190505b60405160208183030381529060405280519060200120611d20565b610d4a5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b60448201526064016108c3565b610d548633611d36565b505050505050565b60004711610d985760405162461bcd60e51b8152602060048201526009602482015268302062616c616e636560b81b60448201526064016108c3565b60c954604051639af608c960e01b81523060048201526001600160a01b039091169047906000908390639af608c990602401602060405180830381865afa158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b91906132bc565b60405163b9bff4bb60e01b8152600481018290529091506001600160a01b0384169063b9bff4bb90602401600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b50505050610e728382611e49565b60ca54610964906001600160a01b0316610e8c8484611f62565b611e49565b61096483838360405180602001604052806000815250611378565b6000610eb86101005490565b8210610f1b5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016108c3565b6101008281548110610f2f57610f2f6132d5565b90600052602060002001549050919050565b610f4961190d565b6101326107928282613331565b610f5e61190d565b610964838383611f6e565b600081815260ce60205260408120546001600160a01b03168061077a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108c3565b60006001600160a01b0382166110335760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108c3565b506001600160a01b0316600090815260cf602052604090205490565b61105761190d565b6110616000612039565b565b61106b61190d565b610137805491151561ffff199092169190911761010017905561013393909355610134919091556101355561013655565b6110a461190d565b61013155565b806000816001600160401b0316116110d45760405162461bcd60e51b81526004016108c390613202565b600061013354116110e6576001611104565b61013354611101826001600160401b0316610b356101005490565b11155b6111205760405162461bcd60e51b81526004016108c390613229565b61013454816001600160401b0316111561114c5760405162461bcd60e51b81526004016108c390613256565b6101375460ff16156111915760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b60448201526064016108c3565b61013754610100900460ff166111db5760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b60448201526064016108c3565b610135546001600160a01b0384166000908152610130602052604090205461120c906001600160401b038516611d14565b111561122a5760405162461bcd60e51b81526004016108c390613285565b6109648284611d36565b606060cd80546107a59061311b565b61079233838361208b565b600054610100900460ff161580801561126e5750600054600160ff909116105b806112885750303b158015611288575060005460ff166001145b6112eb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c3565b6000805460ff19166001179055801561130e576000805461ff0019166101001790555b6113188686612159565b61132061218a565b61132b8484846121b1565b8015610d54576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b6113823383611aee565b61139e5760405162461bcd60e51b81526004016108c390613155565b6113aa8484848461221b565b50505050565b60606113bb82611a21565b60006113c561224e565b905060008151116113e55760405180602001604052806000815250611410565b806113ef8461225e565b6040516020016114009291906133f0565b6040516020818303038152906040525b9392505050565b61141f61190d565b808381146114635760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420417267756d656e747360781b60448201526064016108c3565b60005b81811015610d54576114c4868683818110611483576114836132d5565b90506020020160208101906114989190613092565b8585848181106114aa576114aa6132d5565b90506020020160208101906114bf9190612e3d565b61235e565b600101611466565b6114d461190d565b610137805461ffff19169055565b6114ea61190d565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6115158161239b565b50565b806000816001600160401b0316116115425760405162461bcd60e51b81526004016108c390613202565b60006101335411611554576001611572565b6101335461156f826001600160401b0316610b356101005490565b11155b61158e5760405162461bcd60e51b81526004016108c390613229565b61013454816001600160401b031611156115ba5760405162461bcd60e51b81526004016108c390613256565b6101375460ff16156115ff5760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b60448201526064016108c3565b61013754610100900460ff166116495760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b60448201526064016108c3565b610135546116656001600160401b038416610130600033610b9b565b11156116835760405162461bcd60e51b81526004016108c390613285565b6107928233611d36565b836000816001600160401b0316116116b75760405162461bcd60e51b81526004016108c390613202565b600061013354116116c95760016116e7565b610133546116e4826001600160401b0316610b356101005490565b11155b6117035760405162461bcd60e51b81526004016108c390613229565b61013454816001600160401b0316111561172f5760405162461bcd60e51b81526004016108c390613256565b6001600160a01b0386166000908152610130602052604081205461175c906001600160401b038816611d14565b6101375490915060ff166117a75760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b60448201526064016108c3565b610131546000036117ec5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b60448201526064016108c3565b6101355481111561180f5760405162461bcd60e51b81526004016108c390613285565b8481111561182f5760405162461bcd60e51b81526004016108c390613285565b61189784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050610131546040516bffffffffffffffffffffffff1960608e901b166020820152603481018b90529092506054019050610cf1565b6118d55760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b60448201526064016108c3565b6118df8688611d36565b50505050505050565b60006001600160e01b0319821663780e9d6360e01b148061077a575061077a82612411565b6033546001600160a01b031633146110615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c3565b6127106001600160601b03821611156119925760405162461bcd60e51b81526004016108c39061341f565b6001600160a01b0382166119e85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108c3565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217609755565b600081815260ce60205260409020546001600160a01b03166115155760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108c3565b600081815260d06020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ab582610f69565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611afa83610f69565b9050806001600160a01b0316846001600160a01b03161480611b4157506001600160a01b03808216600090815260d1602090815260408083209388168352929052205460ff165b80611b655750836001600160a01b0316611b5a84610828565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b8082610f69565b6001600160a01b031614611be45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108c3565b6001600160a01b038216611c465760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108c3565b611c51838383612451565b611c5c600082611a80565b6001600160a01b038316600090815260cf60205260408120805460019290611c85908490613469565b90915550506001600160a01b038216600090815260cf60205260408120805460019290611cb3908490613480565b9091555050600081815260ce602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006114108284613480565b600082611d2d858461245c565b14949350505050565b610136543490611d4f906001600160401b0385166124a9565b1115611d8f5760405162461bcd60e51b815260206004820152600f60248201526e15985b1d59481a5b98dbdc9c9958dd608a1b60448201526064016108c3565b60cb54611d9c9034611d14565b60cb556001600160a01b03811660009081526101306020526040902054611dcc906001600160401b038416611d14565b6001600160a01b0382811660009081526101306020526040908190209290925560c954915163107e9cf160e01b815234600482015291169063107e9cf190602401600060405180830381600087803b158015611e2757600080fd5b505af1158015611e3b573d6000803e3d6000fd5b50505050610792828261235e565b80471015611e995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108c3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ee6576040519150601f19603f3d011682016040523d82523d6000602084013e611eeb565b606091505b50509050806109645760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108c3565b60006114108284613469565b6127106001600160601b0382161115611f995760405162461bcd60e51b81526004016108c39061341f565b6001600160a01b038216611fef5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016108c3565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752609890529190942093519051909116600160a01b029116179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036120ec5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108c3565b6001600160a01b03838116600081815260d16020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff166121805760405162461bcd60e51b81526004016108c390613498565b61079282826124b5565b600054610100900460ff166110615760405162461bcd60e51b81526004016108c390613498565b600054610100900460ff166121d85760405162461bcd60e51b81526004016108c390613498565b6121e06124f5565b6121e861218a565b60c98054336001600160a01b03199182161790915560ca80549091166001600160a01b0385161790556109648282611967565b612226848484611b6d565b61223284848484612524565b6113aa5760405162461bcd60e51b81526004016108c3906134e3565b606061013280546107a59061311b565b6060816000036122855750506040805180820190915260018152600360fc1b602082015290565b8160005b81156122af578061229981613535565b91506122a89050600a836131ee565b9150612289565b6000816001600160401b038111156122c9576122c9612d22565b6040519080825280601f01601f1916602001820160405280156122f3576020820181803683370190505b5090505b8415611b6557612308600183613469565b9150612315600a8661354e565b612320906030613480565b60f81b818381518110612335576123356132d5565b60200101906001600160f81b031916908160001a905350612357600a866131ee565b94506122f7565b60005b826001600160401b0316816001600160401b03161015610964576123938261238e6001610b356101005490565b612625565b600101612361565b6123a361190d565b6001600160a01b0381166124085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c3565b61151581612039565b60006001600160e01b031982166380ac58cd60e01b148061244257506001600160e01b03198216635b5e139f60e01b145b8061077a575061077a8261263f565b610964838383612664565b600081815b84518110156124a15761248d82868381518110612480576124806132d5565b602002602001015161271e565b91508061249981613535565b915050612461565b509392505050565b600061141082846131b9565b600054610100900460ff166124dc5760405162461bcd60e51b81526004016108c390613498565b60cc6124e88382613331565b5060cd6109648282613331565b600054610100900460ff1661251c5760405162461bcd60e51b81526004016108c390613498565b61106161274d565b60006001600160a01b0384163b1561261a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612568903390899088908890600401613562565b6020604051808303816000875af19250505080156125a3575060408051601f3d908101601f191682019092526125a09181019061359f565b60015b612600573d8080156125d1576040519150601f19603f3d011682016040523d82523d6000602084013e6125d6565b606091505b5080516000036125f85760405162461bcd60e51b81526004016108c3906134e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b65565b506001949350505050565b61079282826040518060200160405280600081525061277d565b60006001600160e01b03198216635d129f8f60e01b148061077a575061077a826127b0565b6001600160a01b0383166126c1576126bc816101008054600083815261010160205260408120829055600182018355919091527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b0155565b6126e4565b816001600160a01b0316836001600160a01b0316146126e4576126e483826127e5565b6001600160a01b0382166126fb5761096481612882565b826001600160a01b0316826001600160a01b031614610964576109648282612937565b600081831061273a576000828152602084905260409020611410565b6000838152602083905260409020611410565b600054610100900460ff166127745760405162461bcd60e51b81526004016108c390613498565b61106133612039565b612787838361297b565b6127946000848484612524565b6109645760405162461bcd60e51b81526004016108c3906134e3565b60006001600160e01b0319821663152a902d60e11b148061077a57506301ffc9a760e01b6001600160e01b031983161461077a565b600060016127f284610fc9565b6127fc9190613469565b600083815260ff602052604090205490915080821461284f576001600160a01b038416600090815260fe60209081526040808320858452825280832054848452818420819055835260ff90915290208190555b50600091825260ff602090815260408084208490556001600160a01b03909416835260fe81528383209183525290812055565b6101005460009061289590600190613469565b6000838152610101602052604081205461010080549394509092849081106128bf576128bf6132d5565b906000526020600020015490508061010083815481106128e1576128e16132d5565b6000918252602080832090910192909255828152610101909152604080822084905585825281205561010080548061291b5761291b6135bc565b6001900381819060005260206000200160009055905550505050565b600061294283610fc9565b6001600160a01b03909316600090815260fe60209081526040808320868452825280832085905593825260ff9052919091209190915550565b6001600160a01b0382166129d15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108c3565b600081815260ce60205260409020546001600160a01b031615612a365760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108c3565b612a4260008383612451565b6001600160a01b038216600090815260cf60205260408120805460019290612a6b908490613480565b9091555050600081815260ce602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461151557600080fd5b600060208284031215612af157600080fd5b813561141081612ac9565b80356001600160a01b0381168114612b1357600080fd5b919050565b80356001600160601b0381168114612b1357600080fd5b60008060408385031215612b4257600080fd5b612b4b83612afc565b9150612b5960208401612b18565b90509250929050565b60005b83811015612b7d578181015183820152602001612b65565b838111156113aa5750506000910152565b60008151808452612ba6816020860160208601612b62565b601f01601f19169290920160200192915050565b6020815260006114106020830184612b8e565b600060208284031215612bdf57600080fd5b5035919050565b60008060408385031215612bf957600080fd5b612c0283612afc565b946020939093013593505050565b600080600060608486031215612c2557600080fd5b612c2e84612afc565b9250612c3c60208501612afc565b9150604084013590509250925092565b60008060408385031215612c5f57600080fd5b50508035926020909101359150565b80356001600160401b0381168114612b1357600080fd5b60008083601f840112612c9757600080fd5b5081356001600160401b03811115612cae57600080fd5b6020830191508360208260051b8501011115610a4157600080fd5b60008060008060608587031215612cdf57600080fd5b612ce885612c6e565b93506020850135925060408501356001600160401b03811115612d0a57600080fd5b612d1687828801612c85565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115612d5257612d52612d22565b604051601f8501601f19908116603f01168101908282118183101715612d7a57612d7a612d22565b81604052809350858152868686011115612d9357600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612dbe57600080fd5b61141083833560208501612d38565b600060208284031215612ddf57600080fd5b81356001600160401b03811115612df557600080fd5b611b6584828501612dad565b600080600060608486031215612e1657600080fd5b83359250612e2660208501612afc565b9150612e3460408501612b18565b90509250925092565b600060208284031215612e4f57600080fd5b61141082612afc565b80358015158114612b1357600080fd5b600080600080600060a08688031215612e8057600080fd5b85359450602086013593506040860135925060608601359150612ea560808701612e58565b90509295509295909350565b60008060408385031215612ec457600080fd5b612ecd83612afc565b9150612b5960208401612c6e565b60008060408385031215612eee57600080fd5b612ef783612afc565b9150612b5960208401612e58565b600080600080600060a08688031215612f1d57600080fd5b85356001600160401b0380821115612f3457600080fd5b612f4089838a01612dad565b96506020880135915080821115612f5657600080fd5b50612f6388828901612dad565b945050612f7260408701612afc565b9250612f8060608701612afc565b9150612ea560808701612b18565b60008060008060808587031215612fa457600080fd5b612fad85612afc565b9350612fbb60208601612afc565b92506040850135915060608501356001600160401b03811115612fdd57600080fd5b8501601f81018713612fee57600080fd5b612ffd87823560208401612d38565b91505092959194509250565b6000806000806040858703121561301f57600080fd5b84356001600160401b038082111561303657600080fd5b61304288838901612c85565b9096509450602087013591508082111561305b57600080fd5b50612d1687828801612c85565b6000806040838503121561307b57600080fd5b61308483612afc565b9150612b5960208401612afc565b6000602082840312156130a457600080fd5b61141082612c6e565b6000806000806000608086880312156130c557600080fd5b6130ce86612afc565b94506130dc60208701612c6e565b93506040860135925060608601356001600160401b038111156130fe57600080fd5b61310a88828901612c85565b969995985093965092949392505050565b600181811c9082168061312f57607f821691505b60208210810361314f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156131d3576131d36131a3565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826131fd576131fd6131d8565b500490565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252601390820152724578636565646564206d617820737570706c7960681b604082015260600190565b602080825260159082015274115e18d959591959081b585e081c195c881b5a5b9d605a1b604082015260600190565b60208082526017908201527f4578636565646564206d6178207065722077616c6c6574000000000000000000604082015260600190565b6000602082840312156132ce57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b601f82111561096457600081815260208120601f850160051c810160208610156133125750805b601f850160051c820191505b81811015610d545782815560010161331e565b81516001600160401b0381111561334a5761334a612d22565b61335e81613358845461311b565b846132eb565b602080601f831160018114613393576000841561337b5750858301515b600019600386901b1c1916600185901b178555610d54565b600085815260208120601f198616915b828110156133c2578886015182559484019460019091019084016133a3565b50858210156133e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351613402818460208801612b62565b835190830190613416818360208801612b62565b01949350505050565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008282101561347b5761347b6131a3565b500390565b60008219821115613493576134936131a3565b500190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060018201613547576135476131a3565b5060010190565b60008261355d5761355d6131d8565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061359590830184612b8e565b9695505050505050565b6000602082840312156135b157600080fd5b815161141081612ac9565b634e487b7160e01b600052603160045260246000fdfea26469706673582212207cb75c9171ea3e9c9ed8d7e161b7bee01ef66e49e4c6614f927531cb78308da864736f6c634300080f0033