[ { "inputs": [ { "internalType": "address", "name": "_defaultAdmin", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint128", "name": "_royaltyBps", "type": "uint128" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BatchMintInvalidBatchId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BatchMintInvalidTokenId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "name": "BatchMintMetadataFrozen", "type": "error" }, { "inputs": [], "name": "ContractMetadataUnauthorized", "type": "error" }, { "inputs": [], "name": "LazyMintInvalidAmount", "type": "error" }, { "inputs": [], "name": "LazyMintUnauthorized", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnableUnauthorized", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "PermissionsAlreadyGranted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "expected", "type": "address" }, { "internalType": "address", "name": "actual", "type": "address" } ], "name": "PermissionsInvalidPermission", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "PermissionsUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "RoyaltyExceededMaxFeeBps", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "RoyaltyInvalidRecipient", "type": "error" }, { "inputs": [], "name": "RoyaltyUnauthorized", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "prevURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newRoyaltyBps", "type": "uint256" } ], "name": "DefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "royaltyBps", "type": "uint256" } ], "name": "RoyaltyForToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quantityClaimed", "type": "uint256" } ], "name": "TokensClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "encryptedBaseURI", "type": "bytes" } ], "name": "TokensLazyMinted", "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": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "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": "", "type": "uint256" } ], "name": "batchFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "claim", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseURICount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getBatchIdAtIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRoyaltyInfoForToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRoleWithSwitch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "_amount", "type": "uint256" }, { "internalType": "string", "name": "_baseURIForTokens", "type": "string" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "lazyMint", "outputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToClaim", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "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": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "_royaltyBps", "type": "uint256" } ], "name": "setDefaultRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_bps", "type": "uint256" } ], "name": "setRoyaltyInfoForToken", "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": "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": "_claimer", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "verifyClaim", "outputs": [], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162003377380380620033778339810160408190526200003491620002ed565b84848484848383600262000049838262000431565b50600362000058828262000431565b5060008055505060016010556200006f85620000c6565b62000084826001600160801b03831662000118565b5050505050620000bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001ad60201b60201c565b5050505050620004fd565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6127108111156200014b57604051630a4930ad60e31b815261271060048201526024810182905260440160405180910390fd5b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b60008281526011602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b80516001600160a01b03811681146200022057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200024d57600080fd5b81516001600160401b03808211156200026a576200026a62000225565b604051601f8301601f19908116603f0116810190828211818310171562000295576200029562000225565b8160405283815260209250866020858801011115620002b357600080fd5b600091505b83821015620002d75785820183015181830184015290820190620002b8565b6000602085830101528094505050505092915050565b600080600080600060a086880312156200030657600080fd5b620003118662000208565b60208701519095506001600160401b03808211156200032f57600080fd5b6200033d89838a016200023b565b955060408801519150808211156200035457600080fd5b5062000363888289016200023b565b935050620003746060870162000208565b60808701519092506001600160801b03811681146200039257600080fd5b809150509295509295909350565b600181811c90821680620003b557607f821691505b602082108103620003d657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200042c576000816000526020600020601f850160051c81016020861015620004075750805b601f850160051c820191505b81811015620004285782815560010162000413565b5050505b505050565b81516001600160401b038111156200044d576200044d62000225565b62000465816200045e8454620003a0565b84620003dc565b602080601f8311600181146200049d5760008415620004845750858301515b600019600386901b1c1916600185901b17855562000428565b600085815260208120601f198616915b82811015620004ce57888601518255948401946001909101908401620004ad565b5085821015620004ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612e6a806200050d6000396000f3fe6080604052600436106102515760003560e01c80638304053211610139578063ac9650d8116100b6578063d37c353b1161007a578063d37c353b14610739578063d539139314610759578063d547741f1461078d578063e8a3d485146107ad578063e985e9c5146107c2578063f83c8d141461080b57600080fd5b8063ac9650d81461068c578063acd083f8146106b9578063b24f2d39146106ce578063b88d4fde146106f9578063c87b56dd1461071957600080fd5b80639bcf7a15116100fd5780639bcf7a1514610604578063a217fddf14610624578063a22cb46514610639578063a32fa5b314610659578063aad3ec961461067957600080fd5b806383040532146105615780638da5cb5b1461059157806391d14854146105af578063938e3d7b146105cf57806395d89b41146105ef57600080fd5b80632f2ff15d116101d257806342966c681161019657806342966c681461048a5780634cc157df146104aa578063600dd5ea146104ec5780636352211e1461050c57806363b45e2d1461052c57806370a082311461054157600080fd5b80632f2ff15d146103f65780632f92023a1461041657806336568abe146104355780633b1475a71461045557806342842e0e1461046a57600080fd5b806318160ddd1161021957806318160ddd1461032757806323b872dd1461034a5780632419f51b1461036a578063248a9ca31461038a5780632a55205a146103b757600080fd5b806301ffc9a71461025657806306fdde031461028b578063081812fc146102ad578063095ea7b3146102e557806313af403514610307575b600080fd5b34801561026257600080fd5b506102766102713660046124d3565b61082b565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a0610898565b6040516102829190612540565b3480156102b957600080fd5b506102cd6102c8366004612553565b61092a565b6040516001600160a01b039091168152602001610282565b3480156102f157600080fd5b50610305610300366004612588565b61096e565b005b34801561031357600080fd5b506103056103223660046125b2565b6109f4565b34801561033357600080fd5b50600154600054035b604051908152602001610282565b34801561035657600080fd5b506103056103653660046125cd565b610a25565b34801561037657600080fd5b5061033c610385366004612553565b610a30565b34801561039657600080fd5b5061033c6103a5366004612553565b60009081526012602052604090205490565b3480156103c357600080fd5b506103d76103d2366004612609565b610a87565b604080516001600160a01b039093168352602083019190915201610282565b34801561040257600080fd5b5061030561041136600461262b565b610ac4565b34801561042257600080fd5b50610305610431366004612588565b5050565b34801561044157600080fd5b5061030561045036600461262b565b610b3d565b34801561046157600080fd5b50600f5461033c565b34801561047657600080fd5b506103056104853660046125cd565b610b81565b34801561049657600080fd5b506103056104a5366004612553565b610b9c565b3480156104b657600080fd5b506104ca6104c5366004612553565b610ba7565b604080516001600160a01b03909316835261ffff909116602083015201610282565b3480156104f857600080fd5b50610305610507366004612588565b610c12565b34801561051857600080fd5b506102cd610527366004612553565b610c41565b34801561053857600080fd5b50600c5461033c565b34801561054d57600080fd5b5061033c61055c3660046125b2565b610c53565b34801561056d57600080fd5b5061027661057c366004612553565b600e6020526000908152604090205460ff1681565b34801561059d57600080fd5b506009546001600160a01b03166102cd565b3480156105bb57600080fd5b506102766105ca36600461262b565b610ca1565b3480156105db57600080fd5b506103056105ea366004612702565b610ccc565b3480156105fb57600080fd5b506102a0610cfa565b34801561061057600080fd5b5061030561061f366004612736565b610d09565b34801561063057600080fd5b5061033c600081565b34801561064557600080fd5b5061030561065436600461275b565b610d39565b34801561066557600080fd5b5061027661067436600461262b565b610dce565b610305610687366004612588565b610e24565b34801561069857600080fd5b506106ac6106a7366004612797565b610f40565b604051610282919061280b565b3480156106c557600080fd5b5060005461033c565b3480156106da57600080fd5b50600a546001600160a01b03811690600160a01b900461ffff166104ca565b34801561070557600080fd5b5061030561071436600461286f565b6110a5565b34801561072557600080fd5b506102a0610734366004612553565b6110ef565b34801561074557600080fd5b5061033c610754366004612932565b61124b565b34801561076557600080fd5b5061033c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561079957600080fd5b506103056107a836600461262b565b611342565b3480156107b957600080fd5b506102a061135b565b3480156107ce57600080fd5b506102766107dd3660046129ab565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561081757600080fd5b5061033c6108263660046129d5565b6113e9565b60006301ffc9a760e01b6001600160e01b03198316148061085c57506380ac58cd60e01b6001600160e01b03198316145b806108775750635b5e139f60e01b6001600160e01b03198316145b8061089257506001600160e01b0319821663152a902d60e11b145b92915050565b6060600280546108a790612a4d565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612a4d565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b5050505050905090565b6000610935826114af565b610952576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061097982610c41565b9050806001600160a01b0316836001600160a01b0316036109ad5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b038216146109e4576109c781336107dd565b6109e4576040516367d9dca160e11b815260040160405180910390fd5b6109ef8383836114da565b505050565b6109fc611536565b610a19576040516316ccb9cb60e11b815260040160405180910390fd5b610a2281611563565b50565b6109ef8383836115b5565b6000610a3b600c5490565b8210610a6257604051630793127760e11b8152600481018390526024015b60405180910390fd5b600c8281548110610a7557610a75612a87565b90600052602060002001549050919050565b600080600080610a9686610ba7565b90945084925061ffff169050612710610aaf8287612ab3565b610ab99190612ae0565b925050509250929050565b600082815260126020526040902054610add9033611790565b60008281526011602090815260408083206001600160a01b038516845290915290205460ff1615610b3357604051636a4e0b3560e11b81526001600160a01b038216600482015260248101839052604401610a59565b61043182826117e5565b336001600160a01b03821614610b77576040516320b4e31160e11b81523360048201526001600160a01b0382166024820152604401610a59565b6104318282611840565b6109ef838383604051806020016040528060008152506110a5565b610a228160016118a2565b6000818152600b60209081526040808320815180830190925280546001600160a01b031680835260019091015492820192909252829115610bee5780516020820151610c08565b600a546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b610c1a611536565b610c3757604051636fae358160e11b815260040160405180910390fd5b6104318282611a55565b6000610c4c82611ae5565b5192915050565b60006001600160a01b038216610c7c576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b60009182526011602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610cd4611536565b610cf157604051639f7f092560e01b815260040160405180910390fd5b610a2281611bff565b6060600380546108a790612a4d565b610d11611536565b610d2e57604051636fae358160e11b815260040160405180910390fd5b6109ef838383611cdb565b336001600160a01b03831603610d625760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600082815260116020908152604080832083805290915281205460ff16610e1b575060008281526011602090815260408083206001600160a01b038516845290915290205460ff16610892565b50600192915050565b600260105403610e765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a59565b6002601055600f54600054610e8c908390612af4565b1115610eda5760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f756768206c617a79206d696e74656420746f6b656e732e00006044820152606401610a59565b6000610ee68383611d8e565b905080836001600160a01b0316336001600160a01b03167fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de685604051610f2e91815260200190565b60405180910390a45050600160105550565b6060816001600160401b03811115610f5a57610f5a612657565b604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b509050336000805b8481101561109c57811561101457610ff230878784818110610fb957610fb9612a87565b9050602002810190610fcb9190612b07565b86604051602001610fde93929190612b4d565b604051602081830303815290604052611d9b565b84828151811061100457611004612a87565b6020026020010181905250611094565b6110763087878481811061102a5761102a612a87565b905060200281019061103c9190612b07565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9b92505050565b84828151811061108857611088612a87565b60200260200101819052505b600101610f95565b50505092915050565b6110b08484846115b5565b6001600160a01b0383163b156110e9576110cc84848484611dc7565b6110e9576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606110fa826114af565b6111465760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610a59565b6000828152601360205260408120805461115f90612a4d565b80601f016020809104026020016040519081016040528092919081815260200182805461118b90612a4d565b80156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b5050505050905060006111f660408051602081019091526000815290565b90508051600003611208575092915050565b81511561123a578082604051602001611222929190612b73565b60405160208183030381529060405292505050919050565b61124384611eaf565b949350505050565b6000611255611536565b6112725760405163f409ec7360e01b815260040160405180910390fd5b8560000361129357604051638fd36a9b60e01b815260040160405180910390fd5b6000600f5490506112db818888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ef092505050565b600f919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d60016113118a84612af4565b61131b9190612ba2565b88888888604051611330959493929190612bde565b60405180910390a25095945050505050565b600082815260126020526040902054610b779033611790565b6008805461136890612a4d565b80601f016020809104026020016040519081016040528092919081815260200182805461139490612a4d565b80156113e15780601f106113b6576101008083540402835291602001916113e1565b820191906000526020600020905b8154815290600101906020018083116113c457829003601f168201915b505050505081565b60006114157f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610ca1565b806114265750611426600033610ca1565b6114725760405162461bcd60e51b815260206004820152601c60248201527f43414c4c45525f4d5553545f484156455f4d494e5445525f524f4c45000000006044820152606401610a59565b61147c8583611f54565b60005461148a906001612af4565b90506114968185611f6e565b6112438186856bffffffffffffffffffffffff16611cdb565b6000805482108015610892575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061154a6009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b60006115c082611ae5565b9050836001600160a01b031681600001516001600160a01b0316146115f75760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480611615575061161585336107dd565b806116305750336116258461092a565b6001600160a01b0316145b90508061165057604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661167757604051633a954ecd60e21b815260040160405180910390fd5b611683600084876114da565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661175757600054821461175757805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020612e1583398151915260405160405180910390a45050505050565b60008281526011602090815260408083206001600160a01b038516845290915290205460ff166104315760405163043c588360e11b81526001600160a01b038216600482015260248101839052604401610a59565b60008281526011602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b61184a8282611790565b60008281526011602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006118ad83611ae5565b80519091508215611913576000336001600160a01b03831614806118d657506118d682336107dd565b806118f15750336118e68661092a565b6001600160a01b0316145b90508061191157604051632ce44b5f60e11b815260040160405180910390fd5b505b61191f600085836114da565b6001600160a01b0380821660008181526005602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526004909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b178555918901808452922080549194909116611a1d576000548214611a1d57805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020612e15833981519152908390a4505060018054810190555050565b612710811115611a8357604051630a4930ad60e31b8152612710600482015260248101829052604401610a59565b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b604080516060810182526000808252602082018190529181019190915281600054811015611be657600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905290611be45780516001600160a01b031615611b7b579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215611bdf579392505050565b611b7b565b505b604051636f96cda160e11b815260040160405180910390fd5b600060088054611c0e90612a4d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3a90612a4d565b8015611c875780601f10611c5c57610100808354040283529160200191611c87565b820191906000526020600020905b815481529060010190602001808311611c6a57829003601f168201915b505050505090508160089081611c9d9190612c67565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051611ccf929190612d26565b60405180910390a15050565b612710811115611d0957604051630a4930ad60e31b8152612710600482015260248101829052604401610a59565b6040805180820182526001600160a01b0384811680835260208084018681526000898152600b8352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b6000546108928383611f54565b6060611dc08383604051806060016040528060278152602001612dee60279139611f86565b9392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611dfc903390899088908890600401612d54565b6020604051808303816000875af1925050508015611e37575060408051601f3d908101601f19168201909252611e3491810190612d87565b60015b611e95573d808015611e65576040519150601f19603f3d011682016040523d82523d6000602084013e611e6a565b606091505b508051600003611e8d576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611243565b60606000611ebc83611ffe565b905080611ec88461217c565b604051602001611ed9929190612b73565b604051602081830303815290604052915050919050565b600080611efd8486612af4565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7018190556000818152600d60205260409020909250829150611f4b8482612c67565b50935093915050565b61043182826040518060200160405280600081525061227c565b60008281526013602052604090206109ef8282612c67565b6060600080856001600160a01b031685604051611fa39190612da4565b600060405180830381855af49150503d8060008114611fde576040519150601f19603f3d011682016040523d82523d6000602084013e611fe3565b606091505b5091509150611ff48683838761241f565b9695505050505050565b6060600061200b600c5490565b90506000600c80548060200260200160405190810160405280929190818152602001828054801561205b57602002820191906000526020600020905b815481526020019060010190808311612047575b5050505050905060005b8281101561215f5781818151811061207f5761207f612a87565b602002602001015185101561214d57600d60008383815181106120a4576120a4612a87565b6020026020010151815260200190815260200160002080546120c590612a4d565b80601f01602080910402602001604051908101604052809291908181526020018280546120f190612a4d565b801561213e5780601f106121135761010080835404028352916020019161213e565b820191906000526020600020905b81548152906001019060200180831161212157829003601f168201915b50505050509350505050919050565b612158600182612af4565b9050612065565b506040516309797f6960e21b815260048101859052602401610a59565b6060816000036121a35750506040805180820190915260018152600360fc1b602082015290565b8160005b81156121cd57806121b781612dc0565b91506121c69050600a83612ae0565b91506121a7565b6000816001600160401b038111156121e7576121e7612657565b6040519080825280601f01601f191660200182016040528015612211576020820181803683370190505b5090505b841561124357612226600183612ba2565b9150612233600a86612dd9565b61223e906030612af4565b60f81b81838151811061225357612253612a87565b60200101906001600160f81b031916908160001a905350612275600a86612ae0565b9450612215565b6000546001600160a01b0384166122a557604051622e076360e81b815260040160405180910390fd5b826000036122c65760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156123dc575b60405182906001600160a01b03881690600090600080516020612e15833981519152908290a46123a56000878480600101955087611dc7565b6123c2576040516368d2bf6b60e11b815260040160405180910390fd5b80821061236c5782600054146123d757600080fd5b61240f565b5b6040516001830192906001600160a01b03881690600090600080516020612e15833981519152908290a48082106123dd575b5060009081556110e99085838684565b6060831561248e578251600003612487576001600160a01b0385163b6124875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a59565b5081611243565b61124383838151156124a35781518083602001fd5b8060405162461bcd60e51b8152600401610a599190612540565b6001600160e01b031981168114610a2257600080fd5b6000602082840312156124e557600080fd5b8135611dc0816124bd565b60005b8381101561250b5781810151838201526020016124f3565b50506000910152565b6000815180845261252c8160208601602086016124f0565b601f01601f19169290920160200192915050565b602081526000611dc06020830184612514565b60006020828403121561256557600080fd5b5035919050565b80356001600160a01b038116811461258357600080fd5b919050565b6000806040838503121561259b57600080fd5b6125a48361256c565b946020939093013593505050565b6000602082840312156125c457600080fd5b611dc08261256c565b6000806000606084860312156125e257600080fd5b6125eb8461256c565b92506125f96020850161256c565b9150604084013590509250925092565b6000806040838503121561261c57600080fd5b50508035926020909101359150565b6000806040838503121561263e57600080fd5b8235915061264e6020840161256c565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561268757612687612657565b604051601f8501601f19908116603f011681019082821181831017156126af576126af612657565b816040528093508581528686860111156126c857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126126f357600080fd5b611dc08383356020850161266d565b60006020828403121561271457600080fd5b81356001600160401b0381111561272a57600080fd5b611243848285016126e2565b60008060006060848603121561274b57600080fd5b833592506125f96020850161256c565b6000806040838503121561276e57600080fd5b6127778361256c565b91506020830135801515811461278c57600080fd5b809150509250929050565b600080602083850312156127aa57600080fd5b82356001600160401b03808211156127c157600080fd5b818501915085601f8301126127d557600080fd5b8135818111156127e457600080fd5b8660208260051b85010111156127f957600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561286257603f19888603018452612850858351612514565b94509285019290850190600101612834565b5092979650505050505050565b6000806000806080858703121561288557600080fd5b61288e8561256c565b935061289c6020860161256c565b92506040850135915060608501356001600160401b038111156128be57600080fd5b8501601f810187136128cf57600080fd5b6128de8782356020840161266d565b91505092959194509250565b60008083601f8401126128fc57600080fd5b5081356001600160401b0381111561291357600080fd5b60208301915083602082850101111561292b57600080fd5b9250929050565b60008060008060006060868803121561294a57600080fd5b8535945060208601356001600160401b038082111561296857600080fd5b61297489838a016128ea565b9096509450604088013591508082111561298d57600080fd5b5061299a888289016128ea565b969995985093965092949392505050565b600080604083850312156129be57600080fd5b6129c78361256c565b915061264e6020840161256c565b600080600080608085870312156129eb57600080fd5b6129f48561256c565b935060208501356001600160401b03811115612a0f57600080fd5b612a1b878288016126e2565b93505060408501356bffffffffffffffffffffffff81168114612a3d57600080fd5b9396929550929360600135925050565b600181811c90821680612a6157607f821691505b602082108103612a8157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761089257610892612a9d565b634e487b7160e01b600052601260045260246000fd5b600082612aef57612aef612aca565b500490565b8082018082111561089257610892612a9d565b6000808335601e19843603018112612b1e57600080fd5b8301803591506001600160401b03821115612b3857600080fd5b60200191503681900382131561292b57600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008351612b858184602088016124f0565b835190830190612b998183602088016124f0565b01949350505050565b8181038181111561089257610892612a9d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000612bf8606083018688612bb5565b8281036040840152612c0b818587612bb5565b98975050505050505050565b601f8211156109ef576000816000526020600020601f850160051c81016020861015612c405750805b601f850160051c820191505b81811015612c5f57828155600101612c4c565b505050505050565b81516001600160401b03811115612c8057612c80612657565b612c9481612c8e8454612a4d565b84612c17565b602080601f831160018114612cc95760008415612cb15750858301515b600019600386901b1c1916600185901b178555612c5f565b600085815260208120601f198616915b82811015612cf857888601518255948401946001909101908401612cd9565b5085821015612d165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612d396040830185612514565b8281036020840152612d4b8185612514565b95945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611ff490830184612514565b600060208284031215612d9957600080fd5b8151611dc0816124bd565b60008251612db68184602087016124f0565b9190910192915050565b600060018201612dd257612dd2612a9d565b5060010190565b600082612de857612de8612aca565b50069056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220433c709dfb7a4ee1d89bc69599649e520e9a1a33341ddede00c50b26adf9e6d964736f6c63430008180033000000000000000000000000bd734a1b3558f4303916e3d7c2ca9b6323f2ac3e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000bd734a1b3558f4303916e3d7c2ca9b6323f2ac3e000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000074d79546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d544b0000000000000000000000000000000000000000000000000000000000000000000000000000000000bd734a1b3558f4303916e3d7c2ca9b6323f2ac3e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000bd734a1b3558f4303916e3d7c2ca9b6323f2ac3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000843616c69624e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008544553542d373231000000000000000000000000000000000000000000000000