[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "CurrencyTransferLibFailedNativeTransfer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "DropClaimExceedLimit", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "DropClaimExceedMaxSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "expectedCurrency", "type": "address" }, { "internalType": "uint256", "name": "expectedPricePerToken", "type": "uint256" }, { "internalType": "address", "name": "actualCurrency", "type": "address" }, { "internalType": "uint256", "name": "actualExpectedPricePerToken", "type": "uint256" } ], "name": "DropClaimInvalidTokenPrice", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "DropClaimNotStarted", "type": "error" }, { "inputs": [], "name": "DropDelayRevealUnsupported", "type": "error" }, { "inputs": [], "name": "DropExceedMaxSupply", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "DropInvalidMsgValue", "type": "error" }, { "inputs": [], "name": "DropNoActiveCondition", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "DropNotApprovedOrOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "DropTransferRestricted", "type": "error" }, { "inputs": [], "name": "DropUnauthorized", "type": "error" }, { "inputs": [], "name": "LazyMintInvalidAmount", "type": "error" }, { "inputs": [], "name": "LazyMintUnauthorized", "type": "error" }, { "inputs": [], "name": "OwnableUnauthorized", "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": "PlatformFeeExceededMaxFeeBps", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PlatformFeeInvalidRecipient", "type": "error" }, { "inputs": [], "name": "PlatformFeeUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PrimarySaleInvalidRecipient", "type": "error" }, { "inputs": [], "name": "PrimarySaleUnauthorized", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenMigrateAlreadyMigrated", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenMigrateInvalidProof", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenMigrateInvalidTokenId", "type": "error" }, { "inputs": [], "name": "TokenMigrateUnauthorized", "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": [ { "components": [ { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "maxClaimableSupply", "type": "uint256" }, { "internalType": "uint256", "name": "supplyClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "quantityLimitPerWallet", "type": "uint256" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "string", "name": "metadata", "type": "string" } ], "indexed": false, "internalType": "struct IClaimCondition.ClaimCondition[]", "name": "claimConditions", "type": "tuple[]" }, { "indexed": false, "internalType": "bool", "name": "resetEligibility", "type": "bool" } ], "name": "ClaimConditionsUpdated", "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": [ { "indexed": false, "internalType": "address", "name": "platformFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "flatFee", "type": "uint256" } ], "name": "FlatPlatformFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTotalSupply", "type": "uint256" } ], "name": "MaxTotalSupplyUpdated", "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": "address", "name": "platformFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "platformFeeBps", "type": "uint256" } ], "name": "PlatformFeeInfoUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum IPlatformFee.PlatformFeeType", "name": "feeType", "type": "uint8" } ], "name": "PlatformFeeTypeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PrimarySaleRecipientUpdated", "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": "uint256", "name": "claimConditionIndex", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "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": [ { "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" }, { "internalType": "address", "name": "_currency", "type": "address" }, { "internalType": "uint256", "name": "_pricePerToken", "type": "uint256" }, { "components": [ { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "quantityLimitPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct IDrop.AllowlistProof", "name": "_allowlistProof", "type": "tuple" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "claim", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimCondition", "outputs": [ { "internalType": "uint256", "name": "currentStartId", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractVersion", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "freezeBatchBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getActiveClaimConditionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "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": [ { "internalType": "uint256", "name": "_conditionId", "type": "uint256" } ], "name": "getClaimConditionById", "outputs": [ { "components": [ { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "maxClaimableSupply", "type": "uint256" }, { "internalType": "uint256", "name": "supplyClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "quantityLimitPerWallet", "type": "uint256" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "string", "name": "metadata", "type": "string" } ], "internalType": "struct IClaimCondition.ClaimCondition", "name": "condition", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFlatPlatformFeeInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPlatformFeeInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPlatformFeeType", "outputs": [ { "internalType": "enum IPlatformFee.PlatformFeeType", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "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": "uint256", "name": "_conditionId", "type": "uint256" }, { "internalType": "address", "name": "_claimer", "type": "address" } ], "name": "getSupplyClaimedByWallet", "outputs": [ { "internalType": "uint256", "name": "supplyClaimedByWallet", "type": "uint256" } ], "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": "_defaultAdmin", "type": "address" }, { "internalType": "address", "name": "__originalContract", "type": "address" }, { "internalType": "bytes32", "name": "_ownershipMerkleRoot", "type": "bytes32" }, { "internalType": "string", "name": "_contractURI", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": [], "name": "maxTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenOwner", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_proof", "type": "bytes32[]" } ], "name": "migrate", "outputs": [], "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": [], "name": "primarySaleRecipient", "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": [ { "components": [ { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "maxClaimableSupply", "type": "uint256" }, { "internalType": "uint256", "name": "supplyClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "quantityLimitPerWallet", "type": "uint256" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "string", "name": "metadata", "type": "string" } ], "internalType": "struct IClaimCondition.ClaimCondition[]", "name": "_conditions", "type": "tuple[]" }, { "internalType": "bool", "name": "_resetClaimEligibility", "type": "bool" } ], "name": "setClaimConditions", "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": "_platformFeeRecipient", "type": "address" }, { "internalType": "uint256", "name": "_flatFee", "type": "uint256" } ], "name": "setFlatPlatformFeeInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTotalSupply", "type": "uint256" } ], "name": "setMaxTotalSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_platformFeeRecipient", "type": "address" }, { "internalType": "uint256", "name": "_platformFeeBps", "type": "uint256" } ], "name": "setPlatformFeeInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum IPlatformFee.PlatformFeeType", "name": "_feeType", "type": "uint8" } ], "name": "setPlatformFeeType", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_saleRecipient", "type": "address" } ], "name": "setPrimarySaleRecipient", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "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": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "updateBatchBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_conditionId", "type": "uint256" }, { "internalType": "address", "name": "_claimer", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, { "internalType": "address", "name": "_currency", "type": "address" }, { "internalType": "uint256", "name": "_pricePerToken", "type": "uint256" }, { "components": [ { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "quantityLimitPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct IDrop.AllowlistProof", "name": "_allowlistProof", "type": "tuple" } ], "name": "verifyClaim", "outputs": [ { "internalType": "bool", "name": "isOverride", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50615bce80620001336000396000f3fe6080604052600436106103245760003560e01c806384bb1e42116101a8578063b24f2d39116100e8578063b24f2d39146109ae578063b6f10c79146109d9578063b88d4fde146109f9578063c68907de14610a19578063c87b56dd14610a2e578063ca15c87314610a4e578063cb2ef6f714610a6e578063d1959f4814610a8f578063d37c353b14610aaf578063d45573f614610acf578063d547741f14610ae4578063d637ed5914610b04578063de903ddd14610b2d578063e57553da14610b4d578063e8a3d48514610b71578063e985e9c514610b86578063f28083c314610ba657600080fd5b806384bb1e421461079d5780638da5cb5b146107b05780639010d07c146107ce57806391d14854146107ee57806392928e041461080e578063938e3d7b1461082e57806395d89b411461084e5780639bcf7a1514610863578063a07ced9e14610883578063a0a8e460146108a3578063a217fddf146108bf578063a22cb465146108d4578063a2309ff8146108f4578063a32fa5b314610909578063ac9650d814610929578063acd083f814610956578063ad1eefc51461096c57600080fd5b806336568abe1161027357806336568abe146105545780633b1475a7146105745780633f3e4c111461058957806342842e0e146105a957806342966c68146105c95780634cc157df146105e95780634f6ccce71461062b578063600dd5ea1461064b5780636352211e1461066b57806363b45e2d1461068b5780636f4f2837146106a05780636f8934f4146106c057806370a08231146106ed57806374bc7db71461070d5780637cb647591461072d5780637e54523c1461074d578063830405321461076d57600080fd5b806301ffc9a71461032957806306fdde031461035e578063079fe40e14610380578063081812fc146103a2578063095ea7b3146103c257806313af4035146103e457806318160ddd146104045780631e7ac4881461042357806323a2902b1461044357806323b872dd146104635780632419f51b14610483578063248a9ca3146104a35780632a55205a146104d05780632ab4d052146104fe5780632f2ff15d146105145780632f745c5914610534575b600080fd5b34801561033557600080fd5b506103496103443660046149ce565b610bcd565b60405190151581526020015b60405180910390f35b34801561036a57600080fd5b50610373610bf9565b6040516103559190614a3b565b34801561038c57600080fd5b50610395610c8b565b6040516103559190614a4e565b3480156103ae57600080fd5b506103956103bd366004614a62565b610c9a565b3480156103ce57600080fd5b506103e26103dd366004614a90565b610cc1565b005b3480156103f057600080fd5b506103e26103ff366004614abc565b610ddb565b34801561041057600080fd5b5060ab545b604051908152602001610355565b34801561042f57600080fd5b506103e261043e366004614a90565b610e0c565b34801561044f57600080fd5b5061034961045e366004614aeb565b610e3f565b34801561046f57600080fd5b506103e261047e366004614b68565b6111a5565b34801561048f57600080fd5b5061041561049e366004614a62565b6111d6565b3480156104af57600080fd5b506104156104be366004614a62565b6000908152600d602052604090205490565b3480156104dc57600080fd5b506104f06104eb366004614ba9565b611228565b604051610355929190614bcb565b34801561050a57600080fd5b5061041560de5481565b34801561052057600080fd5b506103e261052f366004614be4565b611265565b34801561054057600080fd5b5061041561054f366004614a90565b6112d0565b34801561056057600080fd5b506103e261056f366004614be4565b611366565b34801561058057600080fd5b50600b54610415565b34801561059557600080fd5b506103e26105a4366004614a62565b61139d565b3480156105b557600080fd5b506103e26105c4366004614b68565b6113e6565b3480156105d557600080fd5b506103e26105e4366004614a62565b611401565b3480156105f557600080fd5b50610609610604366004614a62565b611435565b604080516001600160a01b03909316835261ffff909116602083015201610355565b34801561063757600080fd5b50610415610646366004614a62565b611549565b34801561065757600080fd5b506103e2610666366004614a90565b6115ca565b34801561067757600080fd5b50610395610686366004614a62565b6115f9565b34801561069757600080fd5b50600854610415565b3480156106ac57600080fd5b506103e26106bb366004614abc565b61162d565b3480156106cc57600080fd5b506106e06106db366004614a62565b61165b565b6040516103559190614c14565b3480156106f957600080fd5b50610415610708366004614abc565b6117b8565b34801561071957600080fd5b506103e2610728366004614cda565b61183e565b34801561073957600080fd5b506103e2610748366004614a62565b611b3e565b34801561075957600080fd5b506103e2610768366004614a90565b611b6c565b34801561077957600080fd5b50610349610788366004614a62565b600a6020526000908152604090205460ff1681565b6103e26107ab366004614df3565b611b9b565b3480156107bc57600080fd5b506007546001600160a01b0316610395565b3480156107da57600080fd5b506103956107e9366004614ba9565b611c8c565b3480156107fa57600080fd5b50610349610809366004614be4565b611d7a565b34801561081a57600080fd5b506103e2610829366004614e80565b611da5565b34801561083a57600080fd5b506103e2610849366004614eeb565b612363565b34801561085a57600080fd5b50610373612391565b34801561086f57600080fd5b506103e261087e366004614f1f565b6123a0565b34801561088f57600080fd5b506103e261089e366004614a62565b6123d0565b3480156108af57600080fd5b5060405160048152602001610355565b3480156108cb57600080fd5b50610415600081565b3480156108e057600080fd5b506103e26108ef366004614f46565b6123ff565b34801561090057600080fd5b5060df54610415565b34801561091557600080fd5b50610349610924366004614be4565b61240a565b34801561093557600080fd5b50610949610944366004614f74565b612460565b6040516103559190614fb5565b34801561096257600080fd5b5061041560df5481565b34801561097857600080fd5b50610415610987366004614be4565b60009182526012602090815260408084206001600160a01b03909316845291905290205490565b3480156109ba57600080fd5b506004546001600160a01b03811690600160a01b900461ffff16610609565b3480156109e557600080fd5b506103e26109f4366004615019565b612549565b348015610a0557600080fd5b506103e2610a14366004614e80565b612577565b348015610a2557600080fd5b506104156125af565b348015610a3a57600080fd5b50610373610a49366004614a62565b612635565b348015610a5a57600080fd5b50610415610a69366004614a62565b6126f1565b348015610a7a57600080fd5b506a44726f704552433732314d60a81b610415565b348015610a9b57600080fd5b506103e2610aaa36600461503a565b61277a565b348015610abb57600080fd5b50610415610aca3660046150d6565b6128d6565b348015610adb57600080fd5b5061060961290e565b348015610af057600080fd5b506103e2610aff366004614be4565b61292b565b348015610b1057600080fd5b50600f54601054610b1f919082565b60405161035592919061514f565b348015610b3957600080fd5b506103e2610b4836600461515d565b612944565b348015610b5957600080fd5b506104f06002546003546001600160a01b0390911691565b348015610b7d57600080fd5b506103736129aa565b348015610b9257600080fd5b50610349610ba13660046151a8565b612a38565b348015610bb257600080fd5b50600254600160b01b900460ff1660405161035591906151ec565b6000610bd882612a66565b80610bf3575063152a902d60e11b6001600160e01b03198316145b92915050565b606060778054610c0890615214565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3490615214565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b5050505050905090565b6006546001600160a01b031690565b6000610ca582612a8b565b506000908152607b60205260409020546001600160a01b031690565b6000610ccc826115f9565b9050806001600160a01b0316836001600160a01b031603610d3e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610d5a5750610d5a8133612a38565b610dcc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610d35565b610dd68383612ab0565b505050565b610de3612b1e565b610e00576040516316ccb9cb60e11b815260040160405180910390fd5b610e0981612b2f565b50565b610e14612b1e565b610e31576040516387d20a6d60e01b815260040160405180910390fd5b610e3b8282612b81565b5050565b6000868152601160209081526040808320815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e0840191610ebe90615214565b80601f0160208091040260200160405190810160405280929190818152602001828054610eea90615214565b8015610f375780601f10610f0c57610100808354040283529160200191610f37565b820191906000526020600020905b815481529060010190602001808311610f1a57829003601f168201915b50505091909252505050606081015160a082015160c08301516080840151939450919290919015610fe657610fe2610f6f8780615248565b86608001518d8a602001358b604001358c6060016020810190610f929190614abc565b6040516001600160601b0319606095861b811660208301526034820194909452605481019290925290921b1660748201526088015b60405160208183030381529060405280519060200120612c3f565b5094505b841561106d578560200135600003610ffe5782611004565b85602001355b9250600019866040013503611019578161101f565b85604001355b9150600019866040013514158015611050575060006110446080880160608901614abc565b6001600160a01b031614155b61105a578061106a565b61106a6080870160608801614abc565b90505b60008b81526012602090815260408083206001600160a01b03808f168552925290912054908981169083161415806110a55750828814155b156110e45760405163f13474e960e01b81526001600160a01b03808b166004830152602482018a90528316604482015260648101849052608401610d35565b8915806110f95750836110f7828c6152a7565b115b156111245783611109828c6152a7565b604051639e7762db60e01b8152600401610d3592919061514f565b84602001518a866040015161113991906152a7565b111561116f5784602001518a866040015161115491906152a7565b60405163fe381cc960e01b8152600401610d3592919061514f565b84514210156111965784516040516322b1048f60e11b8152610d359190429060040161514f565b50505050509695505050505050565b6111af3382612cca565b6111cb5760405162461bcd60e51b8152600401610d35906152ba565b610dd6838383612d29565b60006111e160085490565b821061120357604051630793127760e11b815260048101839052602401610d35565b6008828154811061121657611216615307565b90600052602060002001549050919050565b60008060008061123786611435565b90945084925061ffff169050612710611250828761531d565b61125a9190615334565b925050509250929050565b6000828152600d602052604090205461127e9033612e88565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16156112c6578082604051636a4e0b3560e11b8152600401610d35929190614bcb565b610e3b8282612ecf565b60006112db836117b8565b821061133d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d35565b506001600160a01b0391909116600090815260a960209081526040808320938352929052205490565b336001600160a01b038216146113935733816040516320b4e31160e11b8152600401610d35929190615356565b610e3b8282612ee3565b60006113a98133612e88565b60de8290556040518281527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af906020015b60405180910390a15050565b610dd683838360405180602001604052806000815250612577565b61140b3382612cca565b61142c57338160405163feb80be360e01b8152600401610d35929190614bcb565b610e0981612f3a565b6000818152600560209081526040808320815180830190925280546001600160a01b03168252600101549181019190915260e05482919084108015611482575080516001600160a01b0316155b801561149057506020810151155b1561150b5760dc54604051634cc157df60e01b8152600481018690526001600160a01b0390911690634cc157df906024016040805180830381865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190615370565b9250925050915091565b80516001600160a01b0316156115275780516020820151611501565b50506004546001600160a01b03811693600160a01b90910461ffff1692509050565b600061155460ab5490565b82106115b75760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d35565b60ab828154811061121657611216615307565b6115d2612b1e565b6115ef57604051636fae358160e11b815260040160405180910390fd5b610e3b8282612fcb565b6000806116058361304f565b90506001600160a01b038116610bf35760405162461bcd60e51b8152600401610d35906153a6565b611635612b1e565b61165257604051631c98210f60e21b815260040160405180910390fd5b610e098161306a565b6116af60405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b600082815260116020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e08401919061172f90615214565b80601f016020809104026020016040519081016040528092919081815260200182805461175b90615214565b80156117a85780601f1061177d576101008083540402835291602001916117a8565b820191906000526020600020905b81548152906001019060200180831161178b57829003601f168201915b5050505050815250509050919050565b60006001600160a01b0382166118225760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d35565b506001600160a01b03166000908152607a602052604090205490565b611846612b1e565b611863576040516356c4ef5160e01b815260040160405180910390fd5b600f5460105481831561187d5761187a82846152a7565b90505b6010859055600f8190556000805b86811015611a01578015806118c357508787828181106118ad576118ad615307565b90506020028101906118bf91906153d8565b3582105b6118f45760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610d35565b600060118161190384876152a7565b815260200190815260200160002060020154905088888381811061192957611929615307565b905060200281019061193b91906153d8565b6020013581111561195f5760405163032b539f60e11b815260040160405180910390fd5b88888381811061197157611971615307565b905060200281019061198391906153d8565b6011600061199185886152a7565b815260200190815260200160002081816119ab9190615554565b50819050601160006119bd85886152a7565b81526020810191909152604001600020600201558888838181106119e3576119e3615307565b90506020028101906119f591906153d8565b3592505060010161188b565b508415611a7657835b82811015611a7057600081815260116020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611a66600783018261496a565b5050600101611a0a565b50611afa565b85831115611afa57855b83811015611af85760116000611a9683866152a7565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611aee600783018261496a565b5050600101611a80565b505b7fbf4016fceeaaa4ac5cf4be865b559ff85825ab4ca7aa7b661d16e2f544c03098878787604051611b2d93929190615640565b60405180910390a150505050505050565b611b466130dd565b611b63576040516327e8d25560e01b815260040160405180910390fd5b610e098160db55565b611b74612b1e565b611b91576040516387d20a6d60e01b815260040160405180910390fd5b610e3b82826130f7565b611ba9868686868686613149565b6000611bb36125af565b9050611bc3813388888888610e3f565b5060008181526011602052604081206002018054889290611be59084906152a7565b9091555050600081815260126020908152604080832033845290915281208054889290611c139084906152a7565b90915550611c26905060008787876131be565b6000611c3288886132eb565b90506001600160a01b038816336001600160a01b0316837ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e848b604051611c7a92919061514f565b60405180910390a45050505050505050565b6000828152600e602052604081205481805b82811015611d71576000868152600e602090815260408083208484526001019091529020546001600160a01b031615611d1a57848203611d08576000868152600e602090815260408083209383526001909301905220546001600160a01b03169250610bf3915050565b611d136001836152a7565b9150611d5f565b611d25866000611d7a565b8015611d4c57506000868152600e6020908152604080832083805260020190915290205481145b15611d5f57611d5c6001836152a7565b91505b611d6a6001826152a7565b9050611c9e565b50505092915050565b6000918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff1615808015611dc55750600054600160ff909116105b80611de65750611dd43061332e565b158015611de6575060005460ff166001145b611e495760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d35565b6000805460ff191660011790558015611e6c576000805461ff0019166101001790555b611f40846001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ed59190810190615728565b856001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f3b9190810190615728565b61333d565b60dc80546001600160a01b0319166001600160a01b038616179055611f648360db55565b60dc546040805163159a107f60e31b815290516000926001600160a01b03169163acd083f89160048083019260209291908290030181865afa158015611fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd2919061579e565b9050600060dc60009054906101000a90046001600160a01b03166001600160a01b0316633b1475a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d919061579e565b90508160df8190555080600b819055508060e081905550600080876001600160a01b031663b24f2d396040518163ffffffff1660e01b81526004016040805180830381865afa1580156120a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c89190615370565b91509150600080896001600160a01b031663d45573f66040518163ffffffff1660e01b81526004016040805180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190615370565b61ffff169150915060008a6001600160a01b031663079fe40e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219c91906157b7565b90506001600160a01b038316156121b7576121b78383612b81565b6001600160a01b038516156121d4576121d4858561ffff16612fcb565b6001600160a01b038116156121ec576121ec8161306a565b50505050505050836001600160a01b0316632ab4d0526040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561224d575060408051601f3d908101601f1916820190925261224a9181019061579e565b60015b156122565760de555b61225f8261336e565b61226885612b2f565b612273600086612ecf565b61229d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a686612ecf565b6122b6600080516020615af28339815191526000612ecf565b6122ce600080516020615b1283398151915286612ecf565b6122e6600080516020615b128339815191528061343e565b6122fe600080516020615b3283398151915286612ecf565b612316600080516020615b328339815191528061343e565b801561235c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61236b612b1e565b61238857604051639f7f092560e01b815260040160405180910390fd5b610e098161336e565b606060788054610c0890615214565b6123a8612b1e565b6123c557604051636fae358160e11b815260040160405180910390fd5b610dd6838383613486565b600080516020615b128339815191526123e98133612e88565b60006123f4836111d6565b9050610dd681613535565b610e3b338383613636565b6000828152600c6020908152604080832083805290915281205460ff1661245757506000828152600c602090815260408083206001600160a01b038516845290915290205460ff16610bf3565b50600192915050565b6060816001600160401b0381111561247a5761247a614d30565b6040519080825280602002602001820160405280156124ad57816020015b60608152602001906001900390816124985790505b50905060005b828110156125425761251d308585848181106124d1576124d1615307565b90506020028101906124e391906153f8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136f892505050565b82828151811061252f5761252f615307565b60209081029190910101526001016124b3565b5092915050565b612551612b1e565b61256e576040516387d20a6d60e01b815260040160405180910390fd5b610e0981613724565b6125813383612cca565b61259d5760405162461bcd60e51b8152600401610d35906152ba565b6125a984848484613788565b50505050565b601054600f5460009182916125c491906152a7565b90505b600f5481111561261b57601160006125e06001846157d4565b8152602001908152602001600020600001544210612609576126036001826157d4565b91505090565b80612613816157e7565b9150506125c7565b506040516303d03c7360e61b815260040160405180910390fd5b606060e0548210156126b25760dc5460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa15801561268a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf39190810190615728565b60006126bd836137bb565b9050806126c984613939565b6040516020016126da9291906157fe565b604051602081830303815290604052915050919050565b6000818152600e6020526040812054815b81811015612755576000848152600e602090815260408083208484526001019091529020546001600160a01b031615612743576127406001846152a7565b92505b61274e6001826152a7565b9050612702565b50612761836000611d7a565b15612774576127716001836152a7565b91505b50919050565b600083815260dd602052604090205460ff16156127ad57604051639eee288160e01b815260048101849052602401610d35565b60dc60009054906101000a90046001600160a01b03166001600160a01b0316633b1475a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612824919061579e565b831061284657604051634e369fbd60e11b815260048101849052602401610d35565b61284e6139cb565b156128b357600061288c838361286360db5490565b8789604051602001610fc792919091825260601b6001600160601b031916602082015260340190565b509050806128b1578484604051630b860e6360e11b8152600401610d35929190614bcb565b505b600083815260dd60205260409020805460ff191660011790556125a984846139eb565b600081156128f757604051631480d36b60e21b815260040160405180910390fd5b61290486868686866139f5565b9695505050505050565b6002546001600160a01b03811691600160a01b90910461ffff1690565b6000828152600d60205260409020546113939033612e88565b600080516020615b1283398151915261295d8133612e88565b6000612968856111d6565b905061235c8185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613aec92505050565b600180546129b790615214565b80601f01602080910402602001604051908101604052809291908181526020018280546129e390615214565b8015612a305780601f10612a0557610100808354040283529160200191612a30565b820191906000526020600020905b815481529060010190602001808311612a1357829003601f168201915b505050505081565b6001600160a01b039182166000908152607c6020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b1480610bf35750610bf382613b71565b612a9481613bc1565b610e095760405162461bcd60e51b8152600401610d35906153a6565b6000818152607b6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612ae5826115f9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612b2a8133611d7a565b905090565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b612710811115612baa5761271081604051631c1a1fe960e11b8152600401610d3592919061514f565b6001600160a01b038216612bd357816040516334c5763b60e21b8152600401610d359190614a4e565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b6000808281805b87811015612cbb57612c5960028361531d565b91506000898983818110612c6f57612c6f615307565b905060200201359050808411612c945760008481526020829052604090209350612cb2565b60008181526020859052604090209350612caf6001846152a7565b92505b50600101612c46565b50941496939550929350505050565b600080612cd6836115f9565b9050806001600160a01b0316846001600160a01b03161480612cfd5750612cfd8185612a38565b80612d215750836001600160a01b0316612d1684610c9a565b6001600160a01b0316145b949350505050565b826001600160a01b0316612d3c826115f9565b6001600160a01b031614612d625760405162461bcd60e51b8152600401610d359061582d565b6001600160a01b038216612dc45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d35565b612dd18383836001613bde565b826001600160a01b0316612de4826115f9565b6001600160a01b031614612e0a5760405162461bcd60e51b8152600401610d359061582d565b6000818152607b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652607a855283862080546000190190559087168086528386208054600101905586865260799094528285208054909216841790915590518493600080516020615b7983398151915291a4505050565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16610e3b57808260405163043c588360e11b8152600401610d35929190614bcb565b612ed98282613c8d565b610e3b8282613ce8565b612eed8282613d55565b6000828152600e602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b6000612f45826115f9565b9050612f55816000846001613bde565b612f5e826115f9565b6000838152607b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552607a84528285208054600019019055878552607990935281842080549091169055519293508492600080516020615b79833981519152908390a45050565b612710811115612ff45761271081604051630a4930ad60e31b8152600401610d3592919061514f565b600480546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001612c33565b6000908152607960205260409020546001600160a01b031690565b6001600160a01b0381166130935780604051630f7cac3760e21b8152600401610d359190614a4e565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6000612b2a600080516020615b3283398151915233611d7a565b6003819055600280546001600160a01b0319166001600160a01b0384161790556040517ff8086cee80709bd44c82f89dbca54115ebd05e840a88ab81df9cf5be9754eb63906113da9084908490614bcb565b600b548560df5461315a91906152a7565b11156131795760405163032b539f60e11b815260040160405180910390fd5b60de5415801590613198575060de548560df5461319691906152a7565b115b156131b65760405163032b539f60e11b815260040160405180910390fd5b505050505050565b806000036131ef5734156131ea57600034604051631d6e402560e21b8152600401610d3592919061514f565b6125a9565b6000806131fa61290e565b909250905060006001600160a01b03871615613216578661321e565b61321e610c8b565b9050600061322c858861531d565b9050600061271061324161ffff86168461531d565b61324b9190615334565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0388160161329b57813414613296578134604051631d6e402560e21b8152600401610d3592919061514f565b6132bf565b34156132bf57600034604051631d6e402560e21b8152600401610d3592919061514f565b6132cb87338784613db7565b6132e08733856132db85876157d4565b613db7565b505050505050505050565b60df5460005b82811015613322576133038483613df8565b61330e6001836152a7565b915061331b6001826152a7565b90506132f1565b5060df81905592915050565b6001600160a01b03163b151590565b600054610100900460ff166133645760405162461bcd60e51b8152600401610d3590615872565b610e3b8282613e12565b60006001805461337d90615214565b80601f01602080910402602001604051908101604052809291908181526020018280546133a990615214565b80156133f65780601f106133cb576101008083540402835291602001916133f6565b820191906000526020600020905b8154815290600101906020018083116133d957829003601f168201915b50505050509050816001908161340c91906158bd565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516113da929190615976565b6000828152600d6020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6127108111156134af5761271081604051630a4930ad60e31b8152600401610d3592919061514f565b6040805180820182526001600160a01b038481168083526020808401868152600089815260058352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d91015b60405180910390a3505050565b6000818152600960205260408120805461354e90615214565b80601f016020809104026020016040519081016040528092919081815260200182805461357a90615214565b80156135c75780601f1061359c576101008083540402835291602001916135c7565b820191906000526020600020905b8154815290600101906020018083116135aa57829003601f168201915b5050505050905080516000036135f357604051630793127760e11b815260048101839052602401610d35565b6000828152600a6020526040808220805460ff19166001179055517feef043febddf4e1d1cf1f72ff1407b84e036e805aa0934418cb82095da8d71649190a15050565b816001600160a01b0316836001600160a01b0316036136935760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610d35565b6001600160a01b038381166000818152607c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101613528565b606061371d8383604051806060016040528060278152602001615b5260279139613e52565b9392505050565b6002805482919060ff60b01b1916600160b01b836001811115613749576137496151d6565b02179055507fd246da9440709ce0dd3f4fd669abc85ada012ab9774b8ecdcc5059ba1486b9c18160405161377d91906151ec565b60405180910390a150565b613793848484612d29565b61379f84848484613ec0565b6125a95760405162461bcd60e51b8152600401610d359061599b565b606060006137c860085490565b90506000600880548060200260200160405190810160405280929190818152602001828054801561381857602002820191906000526020600020905b815481526020019060010190808311613804575b5050505050905060005b8281101561391c5781818151811061383c5761383c615307565b602002602001015185101561390a576009600083838151811061386157613861615307565b60200260200101518152602001908152602001600020805461388290615214565b80601f01602080910402602001604051908101604052809291908181526020018280546138ae90615214565b80156138fb5780601f106138d0576101008083540402835291602001916138fb565b820191906000526020600020905b8154815290600101906020018083116138de57829003601f168201915b50505050509350505050919050565b6139156001826152a7565b9050613822565b506040516309797f6960e21b815260048101859052602401610d35565b6060600061394683613fc8565b60010190506000816001600160401b0381111561396557613965614d30565b6040519080825280601f01601f19166020018201604052801561398f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461399957509392505050565b60006139e5600080516020615b3283398151915233611d7a565b15905090565b610e3b8282613df8565b60006139ff61409e565b613a1c5760405163f409ec7360e01b815260040160405180910390fd5b85600003613a3d57604051638fd36a9b60e01b815260040160405180910390fd5b6000600b549050613a85818888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140ca92505050565b600b919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001613abb8a846152a7565b613ac591906157d4565b88888888604051613ada9594939291906159ed565b60405180910390a25095945050505050565b6000828152600a602052604090205460ff1615613b1f57604051635d079ac960e11b815260048101839052602401610d35565b6000828152600960205260409020613b3782826158bd565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c613b628361412e565b836040516113da92919061514f565b60006001600160e01b031982166380ac58cd60e01b1480613ba257506001600160e01b03198216635b5e139f60e01b145b80610bf357506301ffc9a760e01b6001600160e01b0319831614610bf3565b600080613bcd8361304f565b6001600160a01b0316141592915050565b613bea84848484614220565b613c03600080516020615af28339815191526000611d7a565b158015613c1857506001600160a01b03841615155b8015613c2c57506001600160a01b03831615155b156125a957613c49600080516020615af283398151915285611d7a565b158015613c6b5750613c69600080516020615af283398151915284611d7a565b155b156125a95783836040516313d4381960e11b8152600401610d35929190615356565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600e6020526040812080549160019190613d0783856152a7565b90915550506000928352600e6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b613d5f8282612e88565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80156125a95773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601613dec576131ea828261434d565b6125a9848484846143c5565b610e3b828260405180602001604052806000815250614418565b600054610100900460ff16613e395760405162461bcd60e51b8152600401610d3590615872565b6077613e4583826158bd565b506078610dd682826158bd565b6060600080856001600160a01b031685604051613e6f9190615a26565b600060405180830381855af49150503d8060008114613eaa576040519150601f19603f3d011682016040523d82523d6000602084013e613eaf565b606091505b50915091506129048683838761444b565b6000613ed4846001600160a01b031661332e565b15613fbd57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613f0b903390899088908890600401615a38565b6020604051808303816000875af1925050508015613f46575060408051601f3d908101601f19168201909252613f4391810190615a6b565b60015b613fa3573d808015613f74576040519150601f19603f3d011682016040523d82523d6000602084013e613f79565b606091505b508051600003613f9b5760405162461bcd60e51b8152600401610d359061599b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612d21565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106140075772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614031576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061404f57662386f26fc10000830492506010015b6305f5e1008310614067576305f5e100830492506008015b612710831061407b57612710830492506004015b6064831061408d576064830492506002015b600a8310610bf35760010192915050565b6000612b2a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611d7a565b6000806140d784866152a7565b60088054600181019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301819055600081815260096020526040902090925082915061412584826158bd565b50935093915050565b60008061413a60085490565b90506000600880548060200260200160405190810160405280929190818152602001828054801561418a57602002820191906000526020600020905b815481526020019060010190808311614176575b5050505050905060005b82811015614203578181815181106141ae576141ae615307565b602002602001015185036141fb5780156141f057816141ce6001836157d4565b815181106141de576141de615307565b60200260200101519350505050919050565b506000949350505050565b600101614194565b50604051630793127760e11b815260048101859052602401610d35565b600181111561428f5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610d35565b816001600160a01b0385166142eb576142e68160ab8054600083815260ac60205260408120829055600182018355919091527ffc377260a69a39dd786235c89f4bcd5d9639157731cac38071a0508750eb115a0155565b61430e565b836001600160a01b0316856001600160a01b03161461430e5761430e85826144c2565b6001600160a01b03841661432a576143258161455f565b61235c565b846001600160a01b0316846001600160a01b03161461235c5761235c848261460e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461439a576040519150601f19603f3d011682016040523d82523d6000602084013e61439f565b606091505b5050905080610dd6578282604051635fdc4ec160e11b8152600401610d35929190614bcb565b816001600160a01b0316836001600160a01b031603156125a957306001600160a01b03841603614403576131ea6001600160a01b0385168383614652565b6125a96001600160a01b0385168484846146a8565b61442283836146e0565b61442f6000848484613ec0565b610dd65760405162461bcd60e51b8152600401610d359061599b565b606083156144b85782516000036144b1576144658561332e565b6144b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d35565b5081612d21565b612d2183836147e9565b600060016144cf846117b8565b6144d991906157d4565b600083815260aa602052604090205490915080821461452c576001600160a01b038416600090815260a960209081526040808320858452825280832054848452818420819055835260aa90915290208190555b50600091825260aa602090815260408084208490556001600160a01b03909416835260a981528383209183525290812055565b60ab54600090614571906001906157d4565b600083815260ac602052604081205460ab805493945090928490811061459957614599615307565b906000526020600020015490508060ab83815481106145ba576145ba615307565b600091825260208083209091019290925582815260ac909152604080822084905585825281205560ab8054806145f2576145f2615a88565b6001900381819060005260206000200160009055905550505050565b6000614619836117b8565b6001600160a01b03909316600090815260a960209081526040808320868452825280832085905593825260aa9052919091209190915550565b610dd68363a9059cbb60e01b8484604051602401614671929190614bcb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614813565b6040516001600160a01b03808516602483015283166044820152606481018290526125a99085906323b872dd60e01b90608401614671565b6001600160a01b0382166147365760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d35565b61473f81613bc1565b1561475c5760405162461bcd60e51b8152600401610d3590615a9e565b61476a600083836001613bde565b61477381613bc1565b156147905760405162461bcd60e51b8152600401610d3590615a9e565b6001600160a01b0382166000818152607a6020908152604080832080546001019055848352607990915280822080546001600160a01b031916841790555183929190600080516020615b79833981519152908290a45050565b8151156147f95781518083602001fd5b8060405162461bcd60e51b8152600401610d359190614a3b565b6000614868826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148e59092919063ffffffff16565b805190915015610dd657808060200190518101906148869190615ad4565b610dd65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d35565b6060612d21848460008585600080866001600160a01b0316858760405161490c9190615a26565b60006040518083038185875af1925050503d8060008114614949576040519150601f19603f3d011682016040523d82523d6000602084013e61494e565b606091505b509150915061495f8783838761444b565b979650505050505050565b50805461497690615214565b6000825580601f10614986575050565b601f016020900490600052602060002090810190610e0991905b808211156149b457600081556001016149a0565b5090565b6001600160e01b031981168114610e0957600080fd5b6000602082840312156149e057600080fd5b813561371d816149b8565b60005b83811015614a065781810151838201526020016149ee565b50506000910152565b60008151808452614a278160208601602086016149eb565b601f01601f19169290920160200192915050565b60208152600061371d6020830184614a0f565b6001600160a01b0391909116815260200190565b600060208284031215614a7457600080fd5b5035919050565b6001600160a01b0381168114610e0957600080fd5b60008060408385031215614aa357600080fd5b8235614aae81614a7b565b946020939093013593505050565b600060208284031215614ace57600080fd5b813561371d81614a7b565b60006080828403121561277457600080fd5b60008060008060008060c08789031215614b0457600080fd5b863595506020870135614b1681614a7b565b9450604087013593506060870135614b2d81614a7b565b92506080870135915060a08701356001600160401b03811115614b4f57600080fd5b614b5b89828a01614ad9565b9150509295509295509295565b600080600060608486031215614b7d57600080fd5b8335614b8881614a7b565b92506020840135614b9881614a7b565b929592945050506040919091013590565b60008060408385031215614bbc57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060408385031215614bf757600080fd5b823591506020830135614c0981614a7b565b809150509250929050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e0830151610100808185015250612d21610120840182614a0f565b60008083601f840112614c9357600080fd5b5081356001600160401b03811115614caa57600080fd5b6020830191508360208260051b8501011115614cc557600080fd5b9250929050565b8015158114610e0957600080fd5b600080600060408486031215614cef57600080fd5b83356001600160401b03811115614d0557600080fd5b614d1186828701614c81565b9094509250506020840135614d2581614ccc565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614d6e57614d6e614d30565b604052919050565b60006001600160401b03821115614d8f57614d8f614d30565b50601f01601f191660200190565b600082601f830112614dae57600080fd5b8135614dc1614dbc82614d76565b614d46565b818152846020838601011115614dd657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215614e0c57600080fd5b8635614e1781614a7b565b9550602087013594506040870135614e2e81614a7b565b93506060870135925060808701356001600160401b0380821115614e5157600080fd5b614e5d8a838b01614ad9565b935060a0890135915080821115614e7357600080fd5b50614b5b89828a01614d9d565b60008060008060808587031215614e9657600080fd5b8435614ea181614a7b565b93506020850135614eb181614a7b565b92506040850135915060608501356001600160401b03811115614ed357600080fd5b614edf87828801614d9d565b91505092959194509250565b600060208284031215614efd57600080fd5b81356001600160401b03811115614f1357600080fd5b612d2184828501614d9d565b600080600060608486031215614f3457600080fd5b833592506020840135614b9881614a7b565b60008060408385031215614f5957600080fd5b8235614f6481614a7b565b91506020830135614c0981614ccc565b60008060208385031215614f8757600080fd5b82356001600160401b03811115614f9d57600080fd5b614fa985828601614c81565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561500c57603f19888603018452614ffa858351614a0f565b94509285019290850190600101614fde565b5092979650505050505050565b60006020828403121561502b57600080fd5b81356002811061371d57600080fd5b6000806000806060858703121561505057600080fd5b843561505b81614a7b565b93506020850135925060408501356001600160401b0381111561507d57600080fd5b61508987828801614c81565b95989497509550505050565b60008083601f8401126150a757600080fd5b5081356001600160401b038111156150be57600080fd5b602083019150836020828501011115614cc557600080fd5b6000806000806000606086880312156150ee57600080fd5b8535945060208601356001600160401b038082111561510c57600080fd5b61511889838a01615095565b9096509450604088013591508082111561513157600080fd5b5061513e88828901615095565b969995985093965092949392505050565b918252602082015260400190565b60008060006040848603121561517257600080fd5b8335925060208401356001600160401b0381111561518f57600080fd5b61519b86828701615095565b9497909650939450505050565b600080604083850312156151bb57600080fd5b82356151c681614a7b565b91506020830135614c0981614a7b565b634e487b7160e01b600052602160045260246000fd5b602081016002831061520e57634e487b7160e01b600052602160045260246000fd5b91905290565b600181811c9082168061522857607f821691505b60208210810361277457634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261525f57600080fd5b8301803591506001600160401b0382111561527957600080fd5b6020019150600581901b3603821315614cc557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610bf357610bf3615291565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610bf357610bf3615291565b60008261535157634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0392831681529116602082015260400190565b6000806040838503121561538357600080fd5b825161538e81614a7b565b602084015190925061ffff81168114614c0957600080fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6000823560fe198336030181126153ee57600080fd5b9190910192915050565b6000808335601e1984360301811261540f57600080fd5b8301803591506001600160401b0382111561542957600080fd5b602001915036819003821315614cc557600080fd5b601f821115610dd6576000816000526020600020601f850160051c810160208610156154675750805b601f850160051c820191505b818110156131b657828155600101615473565b600019600383901b1c191660019190911b1790565b6001600160401b038311156154b2576154b2614d30565b6154c6836154c08354615214565b8361543e565b6000601f8411600181146154f457600085156154e25750838201355b6154ec8682615486565b84555061235c565b600083815260209020601f19861690835b828110156155255786850135825560209485019460019092019101615505565b50868210156155425760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c083013561559c81614a7b565b81546001600160a01b0319166001600160a01b03919091161790556155c460e08301836153f8565b6125a981836007860161549b565b6000808335601e198436030181126155e957600080fd5b83016020810192503590506001600160401b0381111561560857600080fd5b803603821315614cc557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a81101561571257888403605f190185528235368d900360fe19018112615685578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c0808401356156cc81614a7b565b6001600160a01b03169088015260e06156e7848201856155d2565b945083828a01526156fb848a018683615617565b998301999850505094909401935050600101615660565b50505086151560208701529350612d2192505050565b60006020828403121561573a57600080fd5b81516001600160401b0381111561575057600080fd5b8201601f8101841361576157600080fd5b805161576f614dbc82614d76565b81815285602083850101111561578457600080fd5b6157958260208301602086016149eb565b95945050505050565b6000602082840312156157b057600080fd5b5051919050565b6000602082840312156157c957600080fd5b815161371d81614a7b565b81810381811115610bf357610bf3615291565b6000816157f6576157f6615291565b506000190190565b600083516158108184602088016149eb565b8351908301906158248183602088016149eb565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81516001600160401b038111156158d6576158d6614d30565b6158ea816158e48454615214565b8461543e565b602080601f83116001811461591957600084156159075750858301515b6159118582615486565b8655506131b6565b600085815260208120601f198616915b8281101561594857888601518255948401946001909101908401615929565b50858210156159665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006159896040830185614a0f565b82810360208401526157958185614a0f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b858152606060208201526000615a07606083018688615617565b8281036040840152615a1a818587615617565b98975050505050505050565b600082516153ee8184602087016149eb565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061290490830184614a0f565b600060208284031215615a7d57600080fd5b815161371d816149b8565b634e487b7160e01b600052603160045260246000fd5b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b600060208284031215615ae657600080fd5b815161371d81614ccc56fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f809d7b1cf62e8376e2ef102e20d4e487b829ff44d58ddb1f416ee01cf2ed26829e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205d727bb001f7baa0b09758ff713007eedc52b3b49569b1afc45fb59af353425c64736f6c63430008170033