[ { "inputs": [ { "internalType": "string", "name": "_initUnrevealedURI", "type": "string" }, { "internalType": "address", "name": "_initCommunityAddress", "type": "address" }, { "internalType": "address", "name": "_initDonationAddress", "type": "address" } ], "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": true, "internalType": "address", "name": "wallet", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "uint8", "name": "rewardType", "type": "uint8" } ], "name": "ClaimedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DisbursedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "NewListing", "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": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "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": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "WithdrawnListing", "type": "event" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint8[]", "name": "amounts", "type": "uint8[]" } ], "name": "airDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allowListings", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "claimMintRewardOfToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimMintRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "claimSalesRewardOfToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimSalesRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "collectSalesRewardsFromThirdParty", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "createListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disburseRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "dust", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "flipAllowListingsState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "flipCollectSalesRewardsFromThirdParty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "flipPausedState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "fulfillListing", "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": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "getListingByTokenID", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct VendingMachinesNFT.Listing", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getListings", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct VendingMachinesNFT.Listing[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "getMintRewardsOfAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "getMintRewardsOfToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "getSalesRewardsOfAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "getSalesRewardsOfToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "isTokenListed", "outputs": [ { "internalType": "bool", "name": "isListed", "type": "bool" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMintAmountPerTX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintRewardsIndex", "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": "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reservedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_initBaseURI", "type": "string" } ], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royalties", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "salesRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "salesRewardsIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "newCost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setDust", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setMaxMintAmountPerTX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setMintRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setMintRewardsIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setReservedSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setSalesRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setSalesRewardsIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newSuffix", "type": "string" } ], "name": "setURIsuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newUnrevealedURI", "type": "string" } ], "name": "setUnrevealedURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newCommunityAddress", "type": "address" }, { "internalType": "address", "name": "newDonationAddress", "type": "address" } ], "name": "setWithdrawAddresses", "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": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMintRewardsVault", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSalesRewardsVault", "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": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "walletOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "withdrawListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162004b8b38038062004b8b833981016040819052620000349162000370565b604080518082018252601481527f56656e64696e67204d616368696e6573204e46540000000000000000000000006020808301918252835180850190945260038452622b26a760e91b908401528151919291620000949160009162000297565b508051620000aa90600190602084019062000297565b5050600160065550620000bd3362000182565b60078054630101000160a01b63ffffffff60a01b19909116179055671bc16d674ec80000600b5561115c600c55610190600d55600a600e556096600f8190556103e86011556012556305f5e10060105560006013819055601455601980546001600160a01b038085166001600160a01b031992831617909255601a805492841692909116919091179055604080518082019091526005815264173539b7b760d91b60208201526200016e90620001d4565b62000179836200023c565b505050620004b0565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620002235760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064015b60405180910390fd5b80516200023890600a90602084019062000297565b5050565b6007546001600160a01b03163314620002875760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064016200021a565b8051620002389060089060208401905b828054620002a59062000473565b90600052602060002090601f016020900481019282620002c9576000855562000314565b82601f10620002e457805160ff191683800117855562000314565b8280016001018555821562000314579182015b8281111562000314578251825591602001919060010190620002f7565b506200032292915062000326565b5090565b5b8082111562000322576000815560010162000327565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200036b57600080fd5b919050565b6000806000606084860312156200038657600080fd5b83516001600160401b03808211156200039e57600080fd5b818601915086601f830112620003b357600080fd5b815181811115620003c857620003c86200033d565b604051601f8201601f19908116603f01168101908382118183101715620003f357620003f36200033d565b816040528281526020935089848487010111156200041057600080fd5b600091505b8282101562000434578482018401518183018501529083019062000415565b82821115620004465760008484830101525b96506200045891505086820162000353565b935050506200046a6040850162000353565b90509250925092565b600181811c908216806200048857607f821691505b60208210811415620004aa57634e487b7160e01b600052602260045260246000fd5b50919050565b6146ab80620004c06000396000f3fe6080604052600436106104145760003560e01c80637ef6f6561161021e578063b5350ebf11610123578063e02f3993116100ab578063f1b2d6a31161007a578063f1b2d6a314610c56578063f2fde38b14610c78578063f9daade414610c98578063fad9aba314610cb8578063fe2c7fee14610cce57600080fd5b8063e02f399314610bf7578063e985e9c514610c0d578063f053dc5c14610c2d578063f1629d1314610c4357600080fd5b8063d5abeb01116100f2578063d5abeb0114610b8d578063d6fb650c14610ba3578063db2e21bc14610bc3578063dceb262914610bcb578063dd76cba314610be157600080fd5b8063b5350ebf14610b2f578063b88d4fde14610b37578063bf72daad14610b57578063c87b56dd14610b6d57600080fd5b80639b83cddc116101a6578063a22cb46511610175578063a22cb46514610a8f578063a79123a914610aaf578063aec6e27314610acf578063aff7214114610aef578063b36a206414610b0f57600080fd5b80639b83cddc14610a0f578063a0712d6814610a46578063a0ba1bbf14610a59578063a17bd78314610a7a57600080fd5b80638d5190d9116101ed5780638d5190d9146109875780638da5cb5b146109a75780638e6fe1a3146109c557806393eff851146109e557806395d89b41146109fa57600080fd5b80637ef6f65614610912578063825875741461093257806384917f4a1461095257806389ac1fa81461097f57600080fd5b80633ccfd60b116103245780634c261247116102ac57806356fcf95b1161027b57806356fcf95b146108715780635c975abb146108915780636352211e146108b25780636f8b44b0146108d257806370a08231146108f257600080fd5b80634c261247146107ef5780634f8a1db51461080f578063518302271461083057806355f804b31461085157600080fd5b8063437552c0116102f3578063437552c01461074c578063438b63001461076c57806344a0d68a1461079957806344d19d2b146107b957806347d616bc146107cf57600080fd5b80633ccfd60b146106fc5780633e57bb141461071157806342842e0e1461071957806342bba11a1461073957600080fd5b806318160ddd116103a757806328e3a0b21161037657806328e3a0b21461065e5780632a55205a146106745780632b80183f146106b35780632dfa9d00146106d35780633912fc85146106e957600080fd5b806318160ddd146105f35780631e13f86b14610608578063234cb0511461062857806323b872dd1461063e57600080fd5b80630798e5c9116103e35780630798e5c91461056e578063081812fc14610585578063095ea7b3146105bd57806313faede6146105dd57600080fd5b806301ffc9a7146104c9578063048d228b146104fe57806305e79db21461052c57806306fdde031461054c57600080fd5b366104c4576000610424601c5490565b600754909150600160b81b900460ff16151560011480156104455750600081115b156104c157600081601254600f546012546104609190613ccf565b61046a9034613cfd565b6104749190613d11565b61047e9190613cfd565b9050600061048c8383613d11565b905081601460008282546104a09190613ccf565b9250508190555080601660008282546104b99190613ccf565b909155505050505b50005b600080fd5b3480156104d557600080fd5b506104e96104e4366004613d46565b610cee565b60405190151581526020015b60405180910390f35b34801561050a57600080fd5b5061051e610519366004613d7f565b610d19565b6040519081526020016104f5565b34801561053857600080fd5b5061051e610547366004613d9a565b610d7c565b34801561055857600080fd5b50610561610df7565b6040516104f59190613e0b565b34801561057a57600080fd5b50610583610e89565b005b34801561059157600080fd5b506105a56105a0366004613d9a565b610ed4565b6040516001600160a01b0390911681526020016104f5565b3480156105c957600080fd5b506105836105d8366004613e1e565b610f69565b3480156105e957600080fd5b5061051e600b5481565b3480156105ff57600080fd5b5061051e61107f565b34801561061457600080fd5b50610583610623366004613d9a565b61108f565b34801561063457600080fd5b5061051e60115481565b34801561064a57600080fd5b50610583610659366004613e48565b6110be565b34801561066a57600080fd5b5061051e60135481565b34801561068057600080fd5b5061069461068f366004613e84565b6110ef565b604080516001600160a01b0390931683526020830191909152016104f5565b3480156106bf57600080fd5b506105836106ce366004613d9a565b611124565b3480156106df57600080fd5b5061051e600e5481565b6105836106f7366004613d9a565b611153565b34801561070857600080fd5b506105836115c6565b610583611883565b34801561072557600080fd5b50610583610734366004613e48565b611a06565b610583610747366004613d9a565b611a21565b34801561075857600080fd5b50610583610767366004613d9a565b611b95565b34801561077857600080fd5b5061078c610787366004613d7f565b611bc4565b6040516104f59190613ea6565b3480156107a557600080fd5b506105836107b4366004613d9a565b611ca5565b3480156107c557600080fd5b5061051e600d5481565b3480156107db57600080fd5b506105836107ea366004613d9a565b611cd4565b3480156107fb57600080fd5b5061058361080a366004613f76565b611d03565b34801561081b57600080fd5b506007546104e990600160b81b900460ff1681565b34801561083c57600080fd5b506007546104e990600160a81b900460ff1681565b34801561085d57600080fd5b5061058361086c366004613f76565b611d4c565b34801561087d57600080fd5b5061058361088c366004613d9a565b611d8d565b34801561089d57600080fd5b506007546104e990600160a01b900460ff1681565b3480156108be57600080fd5b506105a56108cd366004613d9a565b611dbc565b3480156108de57600080fd5b506105836108ed366004613d9a565b611e33565b3480156108fe57600080fd5b5061051e61090d366004613d7f565b611e62565b34801561091e57600080fd5b5061058361092d366004613fbf565b611ee9565b34801561093e57600080fd5b5061051e61094d366004613d9a565b611f41565b34801561095e57600080fd5b5061097261096d366004613d9a565b611fb7565b6040516104f59190613fe9565b61058361207d565b34801561099357600080fd5b506105836109a2366004613d9a565b6121b8565b3480156109b357600080fd5b506007546001600160a01b03166105a5565b3480156109d157600080fd5b506105836109e0366004613d9a565b6121e7565b3480156109f157600080fd5b50610583612216565b348015610a0657600080fd5b50610561612261565b348015610a1b57600080fd5b50610a2f610a2a366004613d9a565b612270565b6040805192151583526020830191909152016104f5565b610583610a54366004613d9a565b6122d4565b348015610a6557600080fd5b506007546104e990600160b01b900460ff1681565b348015610a8657600080fd5b50610583612596565b348015610a9b57600080fd5b50610583610aaa36600461401d565b6125e1565b348015610abb57600080fd5b50610583610aca366004613e84565b6125ec565b348015610adb57600080fd5b50610583610aea366004613d9a565b6128c6565b348015610afb57600080fd5b50610583610b0a366004613f76565b612a7d565b348015610b1b57600080fd5b5061051e610b2a366004613d7f565b612aba565b610583612b15565b348015610b4357600080fd5b50610583610b52366004614059565b612bd0565b348015610b6357600080fd5b5061051e60145481565b348015610b7957600080fd5b50610561610b88366004613d9a565b612c08565b348015610b9957600080fd5b5061051e600c5481565b348015610baf57600080fd5b50610583610bbe366004613d9a565b612d89565b610583612db8565b348015610bd757600080fd5b5061051e60155481565b348015610bed57600080fd5b5061051e60165481565b348015610c0357600080fd5b5061051e60125481565b348015610c1957600080fd5b506104e9610c28366004613fbf565b612e66565b348015610c3957600080fd5b5061051e600f5481565b610583610c51366004613d9a565b612e94565b348015610c6257600080fd5b50610c6b612ff5565b6040516104f591906140d5565b348015610c8457600080fd5b50610583610c93366004613d7f565b61307f565b348015610ca457600080fd5b50610583610cb336600461418a565b613117565b348015610cc457600080fd5b5061051e60105481565b348015610cda57600080fd5b50610583610ce9366004613f76565b6132f1565b60006001600160e01b0319821663152a902d60e11b1480610d135750610d138261332e565b92915050565b600080610d2583611bc4565b90506000805b8251811015610d7457610d56838281518110610d4957610d496141f6565b6020026020010151610d7c565b610d609083613ccf565b915080610d6c8161420c565b915050610d2b565b509392505050565b600081610d88601c5490565b1015610ddb5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e000000000060448201526064015b60405180910390fd5b600082815260186020526040902054601454610d139190614227565b606060008054610e069061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e329061423e565b8015610e7f5780601f10610e5457610100808354040283529160200191610e7f565b820191906000526020600020905b815481529060010190602001808311610e6257829003601f168201915b5050505050905090565b6007546001600160a01b03163314610eb35760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610f4d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b506000908152600460205260409020546001600160a01b031690565b6000610f7482611dbc565b9050806001600160a01b0316836001600160a01b03161415610fe25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dd2565b336001600160a01b0382161480610ffe5750610ffe8133612e66565b6110705760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dd2565b61107a838361337e565b505050565b600061108a601c5490565b905090565b6007546001600160a01b031633146110b95760405162461bcd60e51b8152600401610dd290614279565b600d55565b6110c833826133ec565b6110e45760405162461bcd60e51b8152600401610dd2906142ae565b61107a8383836134c3565b601254600f5430916000916127109161110791613ccf565b6111119085613d11565b61111b9190613cfd565b90509250929050565b6007546001600160a01b0316331461114e5760405162461bcd60e51b8152600401610dd290614279565b600f55565b600260065414156111765760405162461bcd60e51b8152600401610dd2906142ff565b600260065560008061118783612270565b91509150816111a85760405162461bcd60e51b8152600401610dd290614336565b6000601b82815481106111bd576111bd6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506112103390565b6001600160a01b031681604001516001600160a01b031614156112a75760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dd2565b806020015134101561130a5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dd2565b6000612710600f543461131d9190613d11565b6113279190613cfd565b905060006001611336601c5490565b6113409190614227565b612710601254346113519190613d11565b61135b9190613cfd565b6113659190613cfd565b905060006001611374601c5490565b61137e9190614227565b6113889083613d11565b601b80549192509061139c90600190614227565b815481106113ac576113ac6141f6565b9060005260206000209060040201601b86815481106113cd576113cd6141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b80548061142c5761142c61437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560148054849290611477908490613ccf565b90915550506000878152601860205260408120805484929061149a908490613ccf565b9250508190555080601660008282546114b39190613ccf565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161150391815260200190565b60405180910390a4611530846040015161151a3390565b896040518060200160405280600081525061366a565b60408401516000906001600160a01b031661154b8386613ccf565b6115559034614227565b604051600081818185875af1925050503d8060008114611591576040519150601f19603f3d011682016040523d82523d6000602084013e611596565b606091505b50509050806115b75760405162461bcd60e51b8152600401610dd290614393565b50506001600655505050505050565b6007546001600160a01b031633146115f05760405162461bcd60e51b8152600401610dd290614279565b60006016546015546116029190613ccf565b9050600060646116128347614227565b61161d90600a613d11565b6116279190613cfd565b6019549091506000906001600160a01b0316611644836003613d11565b604051600081818185875af1925050503d8060008114611680576040519150601f19603f3d011682016040523d82523d6000602084013e611685565b606091505b50509050806116ea5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dd2565b601a546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611737576040519150601f19603f3d011682016040523d82523d6000602084013e61173c565b606091505b50509050806117a15760405162461bcd60e51b815260206004820152603e602482015260008051602061465683398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dd2565b60006117b56007546001600160a01b031690565b6001600160a01b0316601054866117cc9190613ccf565b6117d69047614227565b604051600081818185875af1925050503d8060008114611812576040519150601f19603f3d011682016040523d82523d6000602084013e611817565b606091505b505090508061187c5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dd2565b5050505050565b600260065414156118a65760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006118b633610d19565b9050600081116118d85760405162461bcd60e51b8152600401610dd2906143cb565b60006118e333611bc4565b905060005b8151811015611936576000828281518110611905576119056141f6565b602090810291909101810151601454600091825260189092526040902055508061192e8161420c565b9150506118e8565b5081601660008282546119499190614227565b9091555050604051600090339084908381818185875af1925050503d8060008114611990576040519150601f19603f3d011682016040523d82523d6000602084013e611995565b606091505b50509050806119b65760405162461bcd60e51b8152600401610dd290614393565b6002335b6001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba9856040516119f491815260200190565b60405180910390a35050600160065550565b61107a83838360405180602001604052806000815250612bd0565b60026006541415611a445760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000611a5482611dbc565b9050336001600160a01b03821614611a7e5760405162461bcd60e51b8152600401610dd290614402565b6000611a8983610d7c565b905060008111611aab5760405162461bcd60e51b8152600401610dd2906143cb565b8060166000828254611abd9190614227565b90915550506014546000848152601860205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5050905080611b455760405162461bcd60e51b8152600401610dd290614393565b6002836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b60405180910390a3505060016006555050565b6007546001600160a01b03163314611bbf5760405162461bcd60e51b8152600401610dd290614279565b601055565b60606000611bd183611e62565b905060008167ffffffffffffffff811115611bee57611bee613eea565b604051908082528060200260200182016040528015611c17578160200160208202803683370190505b509050600160005b8381108015611c305750600c548211155b15611c9b576000611c4083611dbc565b9050866001600160a01b0316816001600160a01b03161415611c885782848381518110611c6f57611c6f6141f6565b602090810291909101015281611c848161420c565b9250505b82611c928161420c565b93505050611c1f565b5090949350505050565b6007546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610dd290614279565b600b55565b6007546001600160a01b03163314611cfe5760405162461bcd60e51b8152600401610dd290614279565b601355565b6007546001600160a01b03163314611d2d5760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a81b1916600160a81b179055611d4981611d4c565b50565b6007546001600160a01b03163314611d765760405162461bcd60e51b8152600401610dd290614279565b8051611d89906009906020840190613c20565b5050565b6007546001600160a01b03163314611db75760405162461bcd60e51b8152600401610dd290614279565b601255565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dd2565b6007546001600160a01b03163314611e5d5760405162461bcd60e51b8152600401610dd290614279565b600c55565b60006001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dd2565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b03163314611f135760405162461bcd60e51b8152600401610dd290614279565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b600081611f4d601c5490565b1015611f9b5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dd2565b600082815260176020526040902054601354610d139190614227565b611feb6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611ff784612270565b91509150816120185760405162461bcd60e51b8152600401610dd290614336565b601b818154811061202b5761202b6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600260065414156120a05760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006120b033612aba565b9050600081116120d25760405162461bcd60e51b8152600401610dd2906143cb565b60006120dd33611bc4565b905060005b81518110156121305760008282815181106120ff576120ff6141f6565b60209081029190910181015160135460009182526017909252604090205550806121288161420c565b9150506120e2565b5081601560008282546121439190614227565b9091555050604051600090339084908381818185875af1925050503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b50509050806121b05760405162461bcd60e51b8152600401610dd290614393565b6001336119ba565b6007546001600160a01b031633146121e25760405162461bcd60e51b8152600401610dd290614279565b601455565b6007546001600160a01b031633146122115760405162461bcd60e51b8152600401610dd290614279565b600e55565b6007546001600160a01b031633146122405760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610e069061423e565b60008060005b601b548110156122ce5783601b8281548110612294576122946141f6565b906000526020600020906004020160000154146122b0576122bc565b600192508091506122ce565b806122c68161420c565b915050612276565b50915091565b600260065414156122f75760405162461bcd60e51b8152600401610dd2906142ff565b6002600655801580159061230d5750600e548111155b61234f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dd2565b60008161235b601c5490565b6123659190613ccf565b9050600c548111156123b55760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b600d54600c546123c59190614227565b8111156124145760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dd2565b600754600160a01b900460ff16156124625760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dd2565b81600b546124709190613d11565b3410156124b45760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dd2565b6000806124c0601c5490565b90506124cc338561369d565b60005b848110156125735781156125415760008286612710601154346124f29190613d11565b6124fc9190613cfd565b6125069190613cfd565b6125109190613cfd565b905061251c8382613d11565b6125269085613ccf565b9350806013600082825461253a9190613ccf565b9091555050505b8161254b8161420c565b601354600082815260176020526040902055925081905061256b8161420c565b9150506124cf565b5081601560008282546125869190613ccf565b9091555050600160065550505050565b6007546001600160a01b031633146125c05760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d893383836136da565b6002600654141561260f5760405162461bcd60e51b8152600401610dd2906142ff565b6002600655600754600160b01b900460ff166126895760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dd2565b600081116126eb5760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dd2565b336126f583611dbc565b6001600160a01b03161461271b5760405162461bcd60e51b8152600401610dd29061444d565b600061272683612270565b509050801561278b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dd2565b600060405180608001604052808581526020018481526020016127ab3390565b6001600160a01b03908116825242602092830152601b805460018101825560009190915283517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1600490920291820155918301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc283015560408301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc3830180546001600160a01b0319169190921617905560608201517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc4909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa85604051611b8291815260200190565b600260065414156128e95760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000806128fa83612270565b915091508161291b5760405162461bcd60e51b8152600401610dd290614336565b336001600160a01b0316601b8281548110612938576129386141f6565b60009182526020909120600260049092020101546001600160a01b0316146129725760405162461bcd60e51b8152600401610dd29061444d565b601b805461298290600190614227565b81548110612992576129926141f6565b9060005260206000209060040201601b82815481106129b3576129b36141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b805480612a1257612a1261437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a25050600160065550565b6007546001600160a01b03163314612aa75760405162461bcd60e51b8152600401610dd290614279565b8051611d8990600a906020840190613c20565b600080612ac683611bc4565b90506000805b8251811015610d7457612af7838281518110612aea57612aea6141f6565b6020026020010151611f41565b612b019083613ccf565b915080612b0d8161420c565b915050612acc565b6007546001600160a01b03163314612b3f5760405162461bcd60e51b8152600401610dd290614279565b6000612b4a601c5490565b90506000612b588234613cfd565b90506000612b668383613d11565b90508160136000828254612b7a9190613ccf565b925050819055508060156000828254612b939190613ccf565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612bda33836133ec565b612bf65760405162461bcd60e51b8152600401610dd2906142ae565b612c028484848461366a565b50505050565b6000818152600260205260409020546060906001600160a01b0316612c875760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dd2565b600754600160a81b900460ff16612d2a5760088054612ca59061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cd19061423e565b8015612d1e5780601f10612cf357610100808354040283529160200191612d1e565b820191906000526020600020905b815481529060010190602001808311612d0157829003601f168201915b50505050509050919050565b6000612d346137a9565b90506000815111612d545760405180602001604052806000815250612d82565b80612d5e846137b8565b600a604051602001612d7293929190614498565b6040516020818303038152906040525b9392505050565b6007546001600160a01b03163314612db35760405162461bcd60e51b8152600401610dd290614279565b601155565b6007546001600160a01b03163314612de25760405162461bcd60e51b8152600401610dd290614279565b6000612df66007546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e40576040519150601f19603f3d011682016040523d82523d6000602084013e612e45565b606091505b5050905080611d495760405162461bcd60e51b8152600401610dd290614393565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60026006541415612eb75760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000612ec782611dbc565b9050336001600160a01b03821614612ef15760405162461bcd60e51b8152600401610dd290614402565b6000612efc83611f41565b905060008111612f1e5760405162461bcd60e51b8152600401610dd2906143cb565b8060156000828254612f309190614227565b90915550506013546000848152601760205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612f92576040519150601f19603f3d011682016040523d82523d6000602084013e612f97565b606091505b5050905080612fb85760405162461bcd60e51b8152600401610dd290614393565b6001836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156130765760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101613019565b50505050905090565b6007546001600160a01b031633146130a95760405162461bcd60e51b8152600401610dd290614279565b6001600160a01b03811661310e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611d49816138b6565b6007546001600160a01b031633146131415760405162461bcd60e51b8152600401610dd290614279565b8281146131505761315061455c565b821580159061315e57508015155b61316a5761316a61455c565b6000805b828110156131be57838382818110613188576131886141f6565b905060200201602081019061319d9190614572565b6131aa9060ff1683613ccf565b9150806131b68161420c565b91505061316e565b50600c54816131cc601c5490565b6131d69190613ccf565b11156132205760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b60005b848110156132e957600084848381811061323f5761323f6141f6565b90506020020160208101906132549190614572565b905060005b8160ff168110156132d457613272601c80546001019055565b600061327d601c5490565b90506132af898986818110613294576132946141f6565b90506020020160208101906132a99190613d7f565b82613908565b60135460009182526017602052604090912055806132cc8161420c565b915050613259565b505080806132e19061420c565b915050613223565b505050505050565b6007546001600160a01b0316331461331b5760405162461bcd60e51b8152600401610dd290614279565b8051611d89906008906020840190613c20565b60006001600160e01b031982166380ac58cd60e01b148061335f57506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133b382611dbc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166134655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b600061347083611dbc565b9050806001600160a01b0316846001600160a01b031614806134ab5750836001600160a01b03166134a084610ed4565b6001600160a01b0316145b806134bb57506134bb8185612e66565b949350505050565b826001600160a01b03166134d682611dbc565b6001600160a01b03161461353a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dd2565b6001600160a01b03821661359c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd2565b6135a7838383613922565b6135b260008261337e565b6001600160a01b03831660009081526003602052604081208054600192906135db908490614227565b90915550506001600160a01b0382166000908152600360205260408120805460019290613609908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6136758484846134c3565b613681848484846139a1565b612c025760405162461bcd60e51b8152600401610dd290614595565b60005b8181101561107a576136b6601c80546001019055565b6136c8836136c3601c5490565b613908565b806136d28161420c565b9150506136a0565b816001600160a01b0316836001600160a01b0316141561373c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dd2565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060098054610e069061423e565b6060816137dc5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561380657806137f08161420c565b91506137ff9050600a83613cfd565b91506137e0565b60008167ffffffffffffffff81111561382157613821613eea565b6040519080825280601f01601f19166020018201604052801561384b576020820181803683370190505b5090505b84156134bb57613860600183614227565b915061386d600a866145e7565b613878906030613ccf565b60f81b81838151811061388d5761388d6141f6565b60200101906001600160f81b031916908160001a9053506138af600a86613cfd565b945061384f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d89828260405180602001604052806000815250613a9f565b600061392d82612270565b509050801561399c5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dd2565b612c02565b60006001600160a01b0384163b15613a9457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906139e59033908990889088906004016145fb565b6020604051808303816000875af1925050508015613a20575060408051601f3d908101601f19168201909252613a1d91810190614638565b60015b613a7a573d808015613a4e576040519150601f19603f3d011682016040523d82523d6000602084013e613a53565b606091505b508051613a725760405162461bcd60e51b8152600401610dd290614595565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506134bb565b506001949350505050565b613aa98383613ad2565b613ab660008484846139a1565b61107a5760405162461bcd60e51b8152600401610dd290614595565b6001600160a01b038216613b285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dd2565b6000818152600260205260409020546001600160a01b031615613b8d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dd2565b613b9960008383613922565b6001600160a01b0382166000908152600360205260408120805460019290613bc2908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054613c2c9061423e565b90600052602060002090601f016020900481019282613c4e5760008555613c94565b82601f10613c6757805160ff1916838001178555613c94565b82800160010185558215613c94579182015b82811115613c94578251825591602001919060010190613c79565b50613ca0929150613ca4565b5090565b5b80821115613ca05760008155600101613ca5565b634e487b7160e01b600052601160045260246000fd5b60008219821115613ce257613ce2613cb9565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613d0c57613d0c613ce7565b500490565b6000816000190483118215151615613d2b57613d2b613cb9565b500290565b6001600160e01b031981168114611d4957600080fd5b600060208284031215613d5857600080fd5b8135612d8281613d30565b80356001600160a01b0381168114613d7a57600080fd5b919050565b600060208284031215613d9157600080fd5b612d8282613d63565b600060208284031215613dac57600080fd5b5035919050565b60005b83811015613dce578181015183820152602001613db6565b83811115612c025750506000910152565b60008151808452613df7816020860160208601613db3565b601f01601f19169290920160200192915050565b602081526000612d826020830184613ddf565b60008060408385031215613e3157600080fd5b613e3a83613d63565b946020939093013593505050565b600080600060608486031215613e5d57600080fd5b613e6684613d63565b9250613e7460208501613d63565b9150604084013590509250925092565b60008060408385031215613e9757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ede57835183529284019291840191600101613ec2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115613f1b57613f1b613eea565b604051601f8501601f19908116603f01168101908282118183101715613f4357613f43613eea565b81604052809350858152868686011115613f5c57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613f8857600080fd5b813567ffffffffffffffff811115613f9f57600080fd5b8201601f81018413613fb057600080fd5b6134bb84823560208401613f00565b60008060408385031215613fd257600080fd5b613fdb83613d63565b915061111b60208401613d63565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d13565b6000806040838503121561403057600080fd5b61403983613d63565b91506020830135801515811461404e57600080fd5b809150509250929050565b6000806000806080858703121561406f57600080fd5b61407885613d63565b935061408660208601613d63565b925060408501359150606085013567ffffffffffffffff8111156140a957600080fd5b8501601f810187136140ba57600080fd5b6140c987823560208401613f00565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015613ede5761412b83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b92840192608092909201916001016140f1565b60008083601f84011261415057600080fd5b50813567ffffffffffffffff81111561416857600080fd5b6020830191508360208260051b850101111561418357600080fd5b9250929050565b600080600080604085870312156141a057600080fd5b843567ffffffffffffffff808211156141b857600080fd5b6141c48883890161413e565b909650945060208701359150808211156141dd57600080fd5b506141ea8782880161413e565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561422057614220613cb9565b5060010190565b60008282101561423957614239613cb9565b500390565b600181811c9082168061425257607f821691505b6020821081141561427357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602a90820152600080516020614656833981519152604082015269736665722066756e647360b01b606082015260800190565b6020808252601a908201527f596f7520646f6e2774206861766520616e792072657761726473000000000000604082015260600190565b6020808252602b908201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60408201526a61696d207265776172647360a81b606082015260800190565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206144ab8285838a01613db3565b8551918401916144be8184848a01613db3565b8554920191600090600181811c90808316806144db57607f831692505b8583108114156144f957634e487b7160e01b85526022600452602485fd5b80801561450d576001811461451e5761454b565b60ff1985168852838801955061454b565b60008b81526020902060005b858110156145435781548a82015290840190880161452a565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561458457600080fd5b813560ff81168114612d8257600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826145f6576145f6613ce7565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061462e90830184613ddf565b9695505050505050565b60006020828403121561464a57600080fd5b8151612d8281613d3056fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e60464736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000