[ { "inputs": [], "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": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "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": [ { "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": "index", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "revealedURI", "type": "string" } ], "name": "TokenURIRevealed", "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": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "key", "type": "bytes" } ], "name": "encryptDecrypt", "outputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "encryptedData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "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": "uint256", "name": "_batchId", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "getRevealURI", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "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": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_contractURI", "type": "string" }, { "internalType": "address[]", "name": "_trustedForwarders", "type": "address[]" }, { "internalType": "address", "name": "_saleRecipient", "type": "address" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint128", "name": "_royaltyBps", "type": "uint128" }, { "internalType": "uint128", "name": "_platformFeeBps", "type": "uint128" }, { "internalType": "address", "name": "_platformFeeRecipient", "type": "address" } ], "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": "_batchId", "type": "uint256" } ], "name": "isEncryptedBatch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "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": "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": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "reveal", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "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": "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": "_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" } ]
60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50615fe680620001336000396000f3fe6080604052600436106103fa5760003560e01c80639010d07c11610213578063b6f10c7911610123578063d547741f116100ab578063e57553da1161007a578063e57553da14610c9c578063e715032214610cc0578063e8a3d48514610ce0578063e985e9c514610cf5578063f28083c314610d3e57600080fd5b8063d547741f14610c0c578063d637ed5914610c2c578063de903ddd14610c5c578063e159163414610c7c57600080fd5b8063ca15c873116100f2578063ca15c87314610b61578063cb2ef6f714610b81578063ce80564214610ba1578063d37c353b14610bc1578063d45573f614610be157600080fd5b8063b6f10c7914610aec578063b88d4fde14610b0c578063c68907de14610b2c578063c87b56dd14610b4157600080fd5b8063a0a8e460116101a6578063a32fa5b311610175578063a32fa5b314610a1d578063ac9650d814610a3d578063acd083f814610a6a578063ad1eefc514610a7f578063b24f2d3914610ac157600080fd5b8063a0a8e460146109b7578063a217fddf146109d3578063a22cb465146109e8578063a2309ff814610a0857600080fd5b80639bcf7a15116101e25780639bcf7a15146109375780639fc4d68f14610957578063a05112fc14610977578063a07ced9e1461099757600080fd5b80639010d07c146108c257806391d14854146108e2578063938e3d7b1461090257806395d89b411461092257600080fd5b80633f3e4c111161030e57806363b45e2d116102a157806374bc7db71161027057806374bc7db7146108215780637e54523c14610841578063830405321461086157806384bb1e42146108915780638da5cb5b146108a457600080fd5b806363b45e2d1461079f5780636f4f2837146107b45780636f8934f4146107d457806370a082311461080157600080fd5b80634cc157df116102dd5780634cc157df146106e4578063572b6c0514610726578063600dd5ea1461075f5780636352211e1461077f57600080fd5b80633f3e4c111461066457806342842e0e1461068457806342966c68146106a4578063492e224b146106c457600080fd5b806323a2902b116103915780632a55205a116103605780632a55205a146105ba5780632ab4d052146105f95780632f2ff15d1461060f57806336568abe1461062f5780633b1475a71461064f57600080fd5b806323a2902b1461052d57806323b872dd1461054d5780632419f51b1461056d578063248a9ca31461058d57600080fd5b8063095ea7b3116103cd578063095ea7b3146104a857806313af4035146104ca57806318160ddd146104ea5780631e7ac4881461050d57600080fd5b806301ffc9a7146103ff57806306fdde0314610434578063079fe40e14610456578063081812fc14610488575b600080fd5b34801561040b57600080fd5b5061041f61041a366004614d0c565b610d65565b60405190151581526020015b60405180910390f35b34801561044057600080fd5b50610449610d91565b60405161042b9190614d79565b34801561046257600080fd5b506006546001600160a01b03165b6040516001600160a01b03909116815260200161042b565b34801561049457600080fd5b506104706104a3366004614d8c565b610e23565b3480156104b457600080fd5b506104c86104c3366004614dca565b610e67565b005b3480156104d657600080fd5b506104c86104e5366004614df6565b610eff565b3480156104f657600080fd5b5060ab5460aa54035b60405190815260200161042b565b34801561051957600080fd5b506104c8610528366004614dca565b610f38565b34801561053957600080fd5b5061041f610548366004614e25565b610f6a565b34801561055957600080fd5b506104c8610568366004614ea2565b611332565b34801561057957600080fd5b506104ff610588366004614d8c565b61133d565b34801561059957600080fd5b506104ff6105a8366004614d8c565b6000908152600e602052604090205490565b3480156105c657600080fd5b506105da6105d5366004614ee3565b6113ab565b604080516001600160a01b03909316835260208301919091520161042b565b34801561060557600080fd5b506104ff60df5481565b34801561061b57600080fd5b506104c861062a366004614f05565b6113e8565b34801561063b57600080fd5b506104c861064a366004614f05565b61147e565b34801561065b57600080fd5b50600c546104ff565b34801561067057600080fd5b506104c861067f366004614d8c565b6114e0565b34801561069057600080fd5b506104c861069f366004614ea2565b611529565b3480156106b057600080fd5b506104c86106bf366004614d8c565b611544565b3480156106d057600080fd5b5061041f6106df366004614d8c565b61154f565b3480156106f057600080fd5b506107046106ff366004614d8c565b611575565b604080516001600160a01b03909316835261ffff90911660208301520161042b565b34801561073257600080fd5b5061041f610741366004614df6565b6001600160a01b031660009081526046602052604090205460ff1690565b34801561076b57600080fd5b506104c861077a366004614dca565b6115e0565b34801561078b57600080fd5b5061047061079a366004614d8c565b61160e565b3480156107ab57600080fd5b506009546104ff565b3480156107c057600080fd5b506104c86107cf366004614df6565b611620565b3480156107e057600080fd5b506107f46107ef366004614d8c565b61164d565b60405161042b9190614f35565b34801561080d57600080fd5b506104ff61081c366004614df6565b6117aa565b34801561082d57600080fd5b506104c861083c366004614ffb565b6117f8565b34801561084d57600080fd5b506104c861085c366004614dca565b611b3c565b34801561086d57600080fd5b5061041f61087c366004614d8c565b600b6020526000908152604090205460ff1681565b6104c861089f366004615114565b611b6a565b3480156108b057600080fd5b506007546001600160a01b0316610470565b3480156108ce57600080fd5b506104706108dd366004614ee3565b611c90565b3480156108ee57600080fd5b5061041f6108fd366004614f05565b611d7e565b34801561090e57600080fd5b506104c861091d3660046151a1565b611da9565b34801561092e57600080fd5b50610449611dd6565b34801561094357600080fd5b506104c86109523660046151d5565b611de5565b34801561096357600080fd5b5061044961097236600461523d565b611e14565b34801561098357600080fd5b50610449610992366004614d8c565b611f94565b3480156109a357600080fd5b506104c86109b2366004614d8c565b61202e565b3480156109c357600080fd5b506040516006815260200161042b565b3480156109df57600080fd5b506104ff600081565b3480156109f457600080fd5b506104c8610a03366004615288565b61209c565b348015610a1457600080fd5b506104ff61216e565b348015610a2957600080fd5b5061041f610a38366004614f05565b61217e565b348015610a4957600080fd5b50610a5d610a583660046152b6565b6121d4565b60405161042b91906152f7565b348015610a7657600080fd5b5060aa546104ff565b348015610a8b57600080fd5b506104ff610a9a366004614f05565b60009182526013602090815260408084206001600160a01b03909316845291905290205490565b348015610acd57600080fd5b506004546001600160a01b03811690600160a01b900461ffff16610704565b348015610af857600080fd5b506104c8610b07366004615359565b612351565b348015610b1857600080fd5b506104c8610b2736600461537a565b61237e565b348015610b3857600080fd5b506104ff6123c8565b348015610b4d57600080fd5b50610449610b5c366004614d8c565b61246b565b348015610b6d57600080fd5b506104ff610b7c366004614d8c565b6124da565b348015610b8d57600080fd5b506944726f7045524337323160b01b6104ff565b348015610bad57600080fd5b50610449610bbc36600461523d565b612563565b348015610bcd57600080fd5b506104ff610bdc3660046153e5565b6125f0565b348015610bed57600080fd5b506002546001600160a01b03811690600160a01b900461ffff16610704565b348015610c1857600080fd5b506104c8610c27366004614f05565b612688565b348015610c3857600080fd5b50601054601154610c47919082565b6040805192835260208301919091520161042b565b348015610c6857600080fd5b506104c8610c7736600461523d565b6126a1565b348015610c8857600080fd5b506104c8610c973660046154f2565b61274d565b348015610ca857600080fd5b506105da6002546003546001600160a01b0390911691565b348015610ccc57600080fd5b50610449610cdb366004615604565b612961565b348015610cec57600080fd5b506104496129d6565b348015610d0157600080fd5b5061041f610d1036600461565f565b6001600160a01b03918216600090815260b16020908152604080832093909416825291909152205460ff1690565b348015610d4a57600080fd5b50600254600160b01b900460ff1660405161042b91906156a3565b6000610d70826129e3565b80610d8b575063152a902d60e11b6001600160e01b03198316145b92915050565b606060ac8054610da0906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcc906156cb565b8015610e195780601f10610dee57610100808354040283529160200191610e19565b820191906000526020600020905b815481529060010190602001808311610dfc57829003601f168201915b5050505050905090565b6000610e2e82612a33565b610e4b576040516333d1c03960e21b815260040160405180910390fd5b50600090815260b060205260409020546001600160a01b031690565b6000610e728261160e565b9050806001600160a01b0316836001600160a01b031603610ea65760405163250fdee360e21b815260040160405180910390fd5b806001600160a01b0316610eb8612a5f565b6001600160a01b031614610eef57610ed281610d10612a5f565b610eef576040516367d9dca160e11b815260040160405180910390fd5b610efa838383612a69565b505050565b610f07612ac5565b610f2c5760405162461bcd60e51b8152600401610f23906156ff565b60405180910390fd5b610f3581612ad3565b50565b610f40612ac5565b610f5c5760405162461bcd60e51b8152600401610f23906156ff565b610f668282612b25565b5050565b6000868152601260209081526040808320815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e0840191610fe9906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054611015906156cb565b80156110625780601f1061103757610100808354040283529160200191611062565b820191906000526020600020905b81548152906001019060200180831161104557829003601f168201915b50505091909252505050606081015160a082015160c083015160808401519394509192909190156111475761114361109a8780615727565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508d9060208b01359060408c0135906110ef908d0160608e01614df6565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b16607482015260880160405160208183030381529060405280519060200120612bfd565b5094505b84156111ce57856020013560000361115f5782611165565b85602001355b925060001986604001350361117a5781611180565b85604001355b91506000198660400135141580156111b1575060006111a56080880160608901614df6565b6001600160a01b031614155b6111bb57806111cb565b6111cb6080870160608801614df6565b90505b60008b81526013602090815260408083206001600160a01b03808f168552925290912054908981169083161415806112065750828814155b156112465760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610f23565b89158061125b575083611259828c615786565b115b156112915760405162461bcd60e51b8152600401610f23906020808252600490820152632151747960e01b604082015260600190565b84602001518a86604001516112a69190615786565b11156112e15760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610f23565b84514210156113235760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610f23565b50505050509695505050505050565b610efa838383612ccb565b600061134860095490565b82106113865760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610f23565b6009828154811061139957611399615799565b90600052602060002001549050919050565b6000806000806113ba86611575565b90945084925061ffff1690506127106113d382876157af565b6113dd91906157c6565b925050509250929050565b6000828152600e60205260409020546114019033612ed3565b6000828152600d602090815260408083206001600160a01b038516845290915290205460ff16156114745760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610f23565b610f668282612f53565b336001600160a01b038216146114d65760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610f23565b610f668282612f67565b60006114ec8133612ed3565b60df8290556040518281527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af906020015b60405180910390a15050565b610efa8383836040518060200160405280600081525061237e565b610f35816001612fbe565b6000818152600860205260408120805482919061156b906156cb565b9050119050919050565b6000818152600560209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156115bc57805160208201516115d6565b6004546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b6115e8612ac5565b6116045760405162461bcd60e51b8152600401610f23906156ff565b610f6682826131a2565b60006116198261321f565b5192915050565b611628612ac5565b6116445760405162461bcd60e51b8152600401610f23906156ff565b610f3581613339565b6116a160405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b600082815260126020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e084019190611721906156cb565b80601f016020809104026020016040519081016040528092919081815260200182805461174d906156cb565b801561179a5780601f1061176f5761010080835404028352916020019161179a565b820191906000526020600020905b81548152906001019060200180831161177d57829003601f168201915b5050505050815250509050919050565b60006001600160a01b0382166117d3576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b0316600090815260af60205260409020546001600160401b031690565b611800612ac5565b61181c5760405162461bcd60e51b8152600401610f23906156ff565b601054601154818315611836576118338284615786565b90505b601185905560108190556000805b868110156119e95780158061187c575087878281811061186657611866615799565b905060200281019061187891906157e8565b3582105b6118ad5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610f23565b60006012816118bc8487615786565b81526020019081526020016000206002015490508888838181106118e2576118e2615799565b90506020028101906118f491906157e8565b6020013581111561193c5760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610f23565b88888381811061194e5761194e615799565b905060200281019061196091906157e8565b6012600061196e8588615786565b815260200190815260200160002081816119889190615953565b508190506012600061199a8588615786565b81526020810191909152604001600020600201558888838181106119c0576119c0615799565b90506020028101906119d291906157e8565b3592508190506119e1816159d1565b915050611844565b508415611a6957835b82811015611a6357600081815260126020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611a4e6007830182614ca8565b50508080611a5b906159d1565b9150506119f2565b50611af8565b85831115611af857855b83811015611af65760126000611a898386615786565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611ae16007830182614ca8565b50508080611aee906159d1565b915050611a73565b505b7fbf4016fceeaaa4ac5cf4be865b559ff85825ab4ca7aa7b661d16e2f544c03098878787604051611b2b93929190615a58565b60405180910390a150505050505050565b611b44612ac5565b611b605760405162461bcd60e51b8152600401610f23906156ff565b610f6682826133cd565b611b78868686868686613426565b6000611b826123c8565b9050611b9981611b906134cb565b88888888610f6a565b5060008181526012602052604081206002018054889290611bbb908490615786565b909155505060008181526013602052604081208791611bd86134cb565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611c079190615786565b90915550611c1a905060008787876134d5565b6000611c26888861361d565b9050876001600160a01b0316611c3a6134cb565b6001600160a01b0316837ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e848b604051611c7e929190918252602082015260400190565b60405180910390a45050505050505050565b6000828152600f602052604081205481805b82811015611d75576000868152600f602090815260408083208484526001019091529020546001600160a01b031615611d1e57848203611d0c576000868152600f602090815260408083209383526001909301905220546001600160a01b03169250610d8b915050565b611d17600183615786565b9150611d63565b611d29866000611d7e565b8015611d5057506000868152600f6020908152604080832083805260020190915290205481145b15611d6357611d60600183615786565b91505b611d6e600182615786565b9050611ca2565b50505092915050565b6000918252600d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611db1612ac5565b611dcd5760405162461bcd60e51b8152600401610f23906156ff565b610f358161362a565b606060ad8054610da0906156cb565b611ded612ac5565b611e095760405162461bcd60e51b8152600401610f23906156ff565b610efa8383836136fa565b600083815260086020526040812080546060929190611e32906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5e906156cb565b8015611eab5780601f10611e8057610100808354040283529160200191611eab565b820191906000526020600020905b815481529060010190602001808311611e8e57829003601f168201915b505050505090508051600003611ef75760405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81d1bc81c995d99585b607a1b6044820152606401610f23565b60008082806020019051810190611f0e9190615b40565b91509150611f1d828787612961565b93508084878746604051602001611f379493929190615bc0565b6040516020818303038152906040528051906020012014611f8a5760405162461bcd60e51b815260206004820152600d60248201526c496e636f7272656374206b657960981b6044820152606401610f23565b5050509392505050565b60086020526000908152604090208054611fad906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd9906156cb565b80156120265780601f10611ffb57610100808354040283529160200191612026565b820191906000526020600020905b81548152906001019060200180831161200957829003601f168201915b505050505081565b60de5461203b8133612ed3565b6120476106df8361133d565b156120865760405162461bcd60e51b815260206004820152600f60248201526e08adcc6e4f2e0e8cac840c4c2e8c6d608b1b6044820152606401610f23565b60006120918361133d565b9050610efa816137a1565b6120a4612a5f565b6001600160a01b0316826001600160a01b0316036120d55760405163b06307db60e01b815260040160405180910390fd5b8060b160006120e2612a5f565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155612126612a5f565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612162911515815260200190565b60405180910390a35050565b600061217960aa5490565b905090565b6000828152600d6020908152604080832083805290915281205460ff166121cb57506000828152600d602090815260408083206001600160a01b038516845290915290205460ff16610d8b565b50600192915050565b6060816001600160401b038111156121ee576121ee615051565b60405190808252806020026020018201604052801561222157816020015b606081526020019060019003908161220c5790505b509050600061222e612a5f565b9050336001600160a01b038216141560005b84811015611d755781156122bf5761229d3087878481811061226457612264615799565b90506020028101906122769190615808565b8660405160200161228993929190615be9565b6040516020818303038152906040526138be565b8482815181106122af576122af615799565b602002602001018190525061233f565b612321308787848181106122d5576122d5615799565b90506020028101906122e79190615808565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138be92505050565b84828151811061233357612333615799565b60200260200101819052505b80612349816159d1565b915050612240565b612359612ac5565b6123755760405162461bcd60e51b8152600401610f23906156ff565b610f35816138ea565b612389848484612ccb565b6001600160a01b0383163b156123c2576123a58484848461394e565b6123c2576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60115460105460009182916123dd9190615786565b90505b60105481111561243457601260006123f9600184615c0f565b81526020019081526020016000206000015442106124225761241c600182615c0f565b91505090565b8061242c81615c22565b9150506123e0565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610f23565b6060600061247883613a40565b509050600061248684613b45565b90506124918261154f565b156124bf57806040516020016124a79190615c39565b60405160208183030381529060405292505050919050565b806124c985613ca6565b6040516020016124a7929190615c5e565b6000818152600f6020526040812054815b8181101561253e576000848152600f602090815260408083208484526001019091529020546001600160a01b03161561252c57612529600184615786565b92505b612537600182615786565b90506124eb565b5061254a836000611d7e565b1561255d5761255a600183615786565b91505b50919050565b606060de546125728133612ed3565b600061257d8661133d565b905061258a818686611e14565b92506125a58160405180602001604052806000815250613d38565b6125af8184613d50565b857f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d846040516125df9190614d79565b60405180910390a250509392505050565b600081156126715760008061260784860186615c8d565b91509150815160001415801561261c57508015155b1561266e5761266e88600c546126329190615786565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d3892505050565b50505b61267e8686868686613df5565b9695505050505050565b6000828152600e60205260409020546114d69033612ed3565b60de546126ae8133612ed3565b6126ba6106df8561133d565b156126f95760405162461bcd60e51b815260206004820152600f60248201526e08adcc6e4f2e0e8cac840c4c2e8c6d608b1b6044820152606401610f23565b60006127048561133d565b90506127468185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d5092505050565b5050505050565b600054610100900460ff161580801561276d5750600054600160ff909116105b806127875750303b158015612787575060005460ff166001145b6127ea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f23565b6000805460ff19166001179055801561280d576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a67f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f806128798a613f02565b6128838d8d613f3a565b61288c8b61362a565b6128958e612ad3565b6128a060008f612f53565b6128aa828f612f53565b6128b4838f612f53565b6128bf836000612f53565b6128c9818f612f53565b6128d38182613f6b565b6128e685876001600160801b0316612b25565b6128f988886001600160801b03166131a2565b61290289613339565b60dc9290925560dd5560de558015612954576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b8251604080518083016020019091528181529060005b818110156129cd57600085858360405160200161299693929190615cd1565b60408051601f198184030181529190528051602091820120888401820151188584018201526129c6915082615786565b9050612977565b50509392505050565b60018054611fad906156cb565b60006001600160e01b031982166380ac58cd60e01b1480612a1457506001600160e01b03198216635b5e139f60e01b145b80610d8b57506301ffc9a760e01b6001600160e01b0319831614610d8b565b600060aa5482108015610d8b575050600090815260ae6020526040902054600160e01b900460ff161590565b6000612179613fb3565b600082815260b0602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000612179816108fd612a5f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b612710811115612b475760405162461bcd60e51b8152600401610f2390615ce3565b6001600160a01b038216612b915760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610f23565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b6000808281805b8751811015612cbf57612c186002836157af565b91506000888281518110612c2e57612c2e615799565b60200260200101519050808411612c70576040805160208101869052908101829052606001604051602081830303815290604052805190602001209350612cac565b6040805160208101839052908101859052606001604051602081830303815290604052805190602001209350600183612ca99190615786565b92505b5080612cb7816159d1565b915050612c04565b50941495939450505050565b6000612cd68261321f565b9050836001600160a01b031681600001516001600160a01b031614612d0d5760405162a1148160e81b815260040160405180910390fd5b6000846001600160a01b0316612d21612a5f565b6001600160a01b03161480612d3d5750612d3d85610d10612a5f565b80612d685750612d4b612a5f565b6001600160a01b0316612d5d84610e23565b6001600160a01b0316145b905080612d8857604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416612daf57604051633a954ecd60e21b815260040160405180910390fd5b612dbc8585856001613fdd565b612dc860008487612a69565b6001600160a01b03858116600090815260af60209081526040808320805467ffffffffffffffff198082166001600160401b039283166000190183161790925589861680865283862080549384169383166001908101841694909417905589865260ae90945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116612e9c5760aa548214612e9c57805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020615f9183398151915260405160405180910390a4612746565b6000828152600d602090815260408083206001600160a01b038516845290915290205460ff16610f6657612f11816001600160a01b03166014614078565b612f1c836020614078565b604051602001612f2d929190615d0c565b60408051601f198184030181529082905262461bcd60e51b8252610f2391600401614d79565b612f5d8282614213565b610f66828261426e565b612f7182826142db565b6000828152600f602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b6000612fc98361321f565b80519091508215613051576000816001600160a01b0316612fe8612a5f565b6001600160a01b03161480613004575061300482610d10612a5f565b8061302f5750613012612a5f565b6001600160a01b031661302486610e23565b6001600160a01b0316145b90508061304f57604051632ce44b5f60e11b815260040160405180910390fd5b505b61305f816000866001613fdd565b61306b60008583612a69565b6001600160a01b03808216600081815260af602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b865260ae909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b1785559189018084529220805491949091166131695760aa54821461316957805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020615f91833981519152908390a4505060ab805460010190555050565b6127108111156131c45760405162461bcd60e51b8152600401610f2390615ce3565b600480546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001612bf1565b60408051606081018252600080825260208201819052918101919091528160aa5481101561332057600081815260ae6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529061331e5780516001600160a01b0316156132b5579392505050565b5060001901600081815260ae6020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215613319579392505050565b6132b5565b505b604051636f96cda160e11b815260040160405180910390fd5b6001600160a01b0381166133835760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610f23565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6003819055600280546001600160a01b0319166001600160a01b03841690811790915560408051918252602082018390527ff8086cee80709bd44c82f89dbca54115ebd05e840a88ab81df9cf5be9754eb63910161151d565b600c548560aa546134379190615786565b111561346f5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606401610f23565b60df54158061348d575060df548560aa5461348a9190615786565b11155b6134c35760405162461bcd60e51b815260206004820152600760248201526621537570706c7960c81b6044820152606401610f23565b505050505050565b6000612179612a5f565b806000036135155734156135105760405162461bcd60e51b815260206004820152600260248201526110ab60f11b6044820152606401610f23565b6123c2565b6002546001600160a01b0380821691600160a01b900461ffff1690600090871615613540578661354d565b6006546001600160a01b03165b9050600061355b85886157af565b9050600061271061357061ffff8616846157af565b61357a91906157c6565b9050600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038916016135ac57503482146135b0565b5034155b806135e25760405162461bcd60e51b815260206004820152600260248201526110ab60f11b6044820152606401610f23565b6135f5886135ee612a5f565b888561433d565b61361188613601612a5f565b8661360c8688615c0f565b61433d565b50505050505050505050565b60aa54610d8b838361437e565b600060018054613639906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054613665906156cb565b80156136b25780601f10613687576101008083540402835291602001916136b2565b820191906000526020600020905b81548152906001019060200180831161369557829003601f168201915b5050505050905081600190816136c89190615d79565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818360405161151d929190615e38565b61271081111561371c5760405162461bcd60e51b8152600401610f2390615ce3565b6040805180820182526001600160a01b038481168083526020808401868152600089815260058352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b6000818152600a6020526040812080546137ba906156cb565b80601f01602080910402602001604051908101604052809291908181526020018280546137e6906156cb565b80156138335780601f1061380857610100808354040283529160200191613833565b820191906000526020600020905b81548152906001019060200180831161381657829003601f168201915b50505050509050600081511161387b5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840c4c2e8c6d609b1b6044820152606401610f23565b6000828152600b6020526040808220805460ff19166001179055517feef043febddf4e1d1cf1f72ff1407b84e036e805aa0934418cb82095da8d71649190a15050565b60606138e38383604051806060016040528060278152602001615f6a60279139614398565b9392505050565b6002805482919060ff60b01b1916600160b01b83600181111561390f5761390f61568d565b02179055507fd246da9440709ce0dd3f4fd669abc85ada012ab9774b8ecdcc5059ba1486b9c18160405161394391906156a3565b60405180910390a150565b6000836001600160a01b031663150b7a02613967612a5f565b8786866040518563ffffffff1660e01b81526004016139899493929190615e66565b6020604051808303816000875af19250505080156139c4575060408051601f3d908101601f191682019092526139c191810190615e99565b60015b613a22573d8080156139f2576040519150601f19603f3d011682016040523d82523d6000602084013e6139f7565b606091505b508051600003613a1a576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6000806000613a4e60095490565b905060006009805480602002602001604051908101604052809291908181526020018280548015613a9e57602002820191906000526020600020905b815481526020019060010190808311613a8a575b5050505050905060005b82811015613b0a57818181518110613ac257613ac2615799565b6020026020010151861015613af857809350818181518110613ae657613ae6615799565b60200260200101519450505050915091565b613b03600182615786565b9050613aa8565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610f23565b60606000613b5260095490565b905060006009805480602002602001604051908101604052809291908181526020018280548015613ba257602002820191906000526020600020905b815481526020019060010190808311613b8e575b5050505050905060005b82811015613b0a57818181518110613bc657613bc6615799565b6020026020010151851015613c9457600a6000838381518110613beb57613beb615799565b602002602001015181526020019081526020016000208054613c0c906156cb565b80601f0160208091040260200160405190810160405280929190818152602001828054613c38906156cb565b8015613c855780601f10613c5a57610100808354040283529160200191613c85565b820191906000526020600020905b815481529060010190602001808311613c6857829003601f168201915b50505050509350505050919050565b613c9f600182615786565b9050613bac565b60606000613cb383614406565b60010190506000816001600160401b03811115613cd257613cd2615051565b6040519080825280601f01601f191660200182016040528015613cfc576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613d0657509392505050565b6000828152600860205260409020610efa8282615d79565b6000828152600b602052604090205460ff1615613d9e5760405162461bcd60e51b815260206004820152600c60248201526b2130ba31b410333937bd32b760a11b6044820152606401610f23565b6000828152600a60205260409020613db68282615d79565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c613de1836144de565b60408051918252602082018590520161151d565b6000613dff6145f8565b613e1b5760405162461bcd60e51b8152600401610f23906156ff565b85600003613e535760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610f23565b6000600c549050613e9b818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061460892505050565b600c919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001613ed18a84615786565b613edb9190615c0f565b88888888604051613ef0959493929190615eb6565b60405180910390a25095945050505050565b600054610100900460ff16613f295760405162461bcd60e51b8152600401610f2390615eef565b613f3161466c565b610f3581614695565b600054610100900460ff16613f615760405162461bcd60e51b8152600401610f2390615eef565b610f668282614724565b6000828152600e6020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b3360009081526046602052604081205460ff1615613fd8575060131936013560601c90565b503390565b613fea60dc546000611d7e565b158015613fff57506001600160a01b03841615155b801561401357506001600160a01b03831615155b156123c25761402460dc5485611d7e565b15801561403a575061403860dc5484611d7e565b155b156123c25760405162461bcd60e51b815260206004820152600e60248201526d215472616e736665722d526f6c6560901b6044820152606401610f23565b606060006140878360026157af565b614092906002615786565b6001600160401b038111156140a9576140a9615051565b6040519080825280601f01601f1916602001820160405280156140d3576020820181803683370190505b509050600360fc1b816000815181106140ee576140ee615799565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061411d5761411d615799565b60200101906001600160f81b031916908160001a90535060006141418460026157af565b61414c906001615786565b90505b60018111156141c4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061418057614180615799565b1a60f81b82828151811061419657614196615799565b60200101906001600160f81b031916908160001a90535060049490941c936141bd81615c22565b905061414f565b5083156138e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610f23565b6000828152600d602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600f602052604081208054916001919061428d8385615786565b90915550506000928352600f6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b6142e58282612ed3565b6000828152600d602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80156123c25773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0385160161437257613510828261476e565b6123c284848484614811565b610f66828260405180602001604052806000815250614864565b6060600080856001600160a01b0316856040516143b59190615f3a565b600060405180830381855af49150503d80600081146143f0576040519150601f19603f3d011682016040523d82523d6000602084013e6143f5565b606091505b509150915061267e86838387614a13565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106144455772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614471576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061448f57662386f26fc10000830492506010015b6305f5e10083106144a7576305f5e100830492506008015b61271083106144bb57612710830492506004015b606483106144cd576064830492506002015b600a8310610d8b5760010192915050565b6000806144ea60095490565b90506000600980548060200260200160405190810160405280929190818152602001828054801561453a57602002820191906000526020600020905b815481526020019060010190808311614526575b5050505050905060005b828110156145bd5781818151811061455e5761455e615799565b602002602001015185036145ab5780156145a0578161457e600183615c0f565b8151811061458e5761458e615799565b60200260200101519350505050919050565b506000949350505050565b806145b5816159d1565b915050614544565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590818985d18da1259608a1b6044820152606401610f23565b600061217960dd546108fd612a5f565b6000806146158486615786565b60098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af018190556000818152600a602052604090209092508291506146638482615d79565b50935093915050565b600054610100900460ff166146935760405162461bcd60e51b8152600401610f2390615eef565b565b600054610100900460ff166146bc5760405162461bcd60e51b8152600401610f2390615eef565b60005b8151811015610f66576001604660008484815181106146e0576146e0615799565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061471c816159d1565b9150506146bf565b600054610100900460ff1661474b5760405162461bcd60e51b8152600401610f2390615eef565b60ac6147578382615d79565b5060ad6147648282615d79565b50600060aa555050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146147bb576040519150601f19603f3d011682016040523d82523d6000602084013e6147c0565b606091505b5050905080610efa5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610f23565b816001600160a01b0316836001600160a01b031603156123c257306001600160a01b0384160361484f576135106001600160a01b0385168383614a8c565b6123c26001600160a01b038516848484614aef565b60aa546001600160a01b03841661488d57604051622e076360e81b815260040160405180910390fd5b826000036148ae5760405163b562e8dd60e01b815260040160405180910390fd5b6148bb6000858386613fdd565b6001600160a01b038416600081815260af6020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b0181169092021790915585845260ae90925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156149d1575b60405182906001600160a01b03881690600090600080516020615f91833981519152908290a461499a600087848060010195508761394e565b6149b7576040516368d2bf6b60e11b815260040160405180910390fd5b808210614961578260aa54146149cc57600080fd5b614a04565b5b6040516001830192906001600160a01b03881690600090600080516020615f91833981519152908290a48082106149d2575b5060aa556123c2600085838684565b60608315614a82578251600003614a7b576001600160a01b0385163b614a7b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f23565b5081613a38565b613a388383614b27565b6040516001600160a01b038316602482015260448101829052610efa90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614b51565b6040516001600160a01b03808516602483015283166044820152606481018290526123c29085906323b872dd60e01b90608401614ab8565b815115614b375781518083602001fd5b8060405162461bcd60e51b8152600401610f239190614d79565b6000614ba6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c239092919063ffffffff16565b805190915015610efa5780806020019051810190614bc49190615f4c565b610efa5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610f23565b6060613a38848460008585600080866001600160a01b03168587604051614c4a9190615f3a565b60006040518083038185875af1925050503d8060008114614c87576040519150601f19603f3d011682016040523d82523d6000602084013e614c8c565b606091505b5091509150614c9d87838387614a13565b979650505050505050565b508054614cb4906156cb565b6000825580601f10614cc4575050565b601f016020900490600052602060002090810190610f3591905b80821115614cf25760008155600101614cde565b5090565b6001600160e01b031981168114610f3557600080fd5b600060208284031215614d1e57600080fd5b81356138e381614cf6565b60005b83811015614d44578181015183820152602001614d2c565b50506000910152565b60008151808452614d65816020860160208601614d29565b601f01601f19169290920160200192915050565b6020815260006138e36020830184614d4d565b600060208284031215614d9e57600080fd5b5035919050565b6001600160a01b0381168114610f3557600080fd5b8035614dc581614da5565b919050565b60008060408385031215614ddd57600080fd5b8235614de881614da5565b946020939093013593505050565b600060208284031215614e0857600080fd5b81356138e381614da5565b60006080828403121561255d57600080fd5b60008060008060008060c08789031215614e3e57600080fd5b863595506020870135614e5081614da5565b9450604087013593506060870135614e6781614da5565b92506080870135915060a08701356001600160401b03811115614e8957600080fd5b614e9589828a01614e13565b9150509295509295509295565b600080600060608486031215614eb757600080fd5b8335614ec281614da5565b92506020840135614ed281614da5565b929592945050506040919091013590565b60008060408385031215614ef657600080fd5b50508035926020909101359150565b60008060408385031215614f1857600080fd5b823591506020830135614f2a81614da5565b809150509250929050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e0830151610100808185015250613a38610120840182614d4d565b60008083601f840112614fb457600080fd5b5081356001600160401b03811115614fcb57600080fd5b6020830191508360208260051b8501011115614fe657600080fd5b9250929050565b8015158114610f3557600080fd5b60008060006040848603121561501057600080fd5b83356001600160401b0381111561502657600080fd5b61503286828701614fa2565b909450925050602084013561504681614fed565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561508f5761508f615051565b604052919050565b60006001600160401b038211156150b0576150b0615051565b50601f01601f191660200190565b600082601f8301126150cf57600080fd5b81356150e26150dd82615097565b615067565b8181528460208386010111156150f757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561512d57600080fd5b863561513881614da5565b955060208701359450604087013561514f81614da5565b93506060870135925060808701356001600160401b038082111561517257600080fd5b61517e8a838b01614e13565b935060a089013591508082111561519457600080fd5b50614e9589828a016150be565b6000602082840312156151b357600080fd5b81356001600160401b038111156151c957600080fd5b613a38848285016150be565b6000806000606084860312156151ea57600080fd5b833592506020840135614ed281614da5565b60008083601f84011261520e57600080fd5b5081356001600160401b0381111561522557600080fd5b602083019150836020828501011115614fe657600080fd5b60008060006040848603121561525257600080fd5b8335925060208401356001600160401b0381111561526f57600080fd5b61527b868287016151fc565b9497909650939450505050565b6000806040838503121561529b57600080fd5b82356152a681614da5565b91506020830135614f2a81614fed565b600080602083850312156152c957600080fd5b82356001600160401b038111156152df57600080fd5b6152eb85828601614fa2565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561534c57603f1988860301845261533a858351614d4d565b9450928501929085019060010161531e565b5092979650505050505050565b60006020828403121561536b57600080fd5b8135600281106138e357600080fd5b6000806000806080858703121561539057600080fd5b843561539b81614da5565b935060208501356153ab81614da5565b92506040850135915060608501356001600160401b038111156153cd57600080fd5b6153d9878288016150be565b91505092959194509250565b6000806000806000606086880312156153fd57600080fd5b8535945060208601356001600160401b038082111561541b57600080fd5b61542789838a016151fc565b9096509450604088013591508082111561544057600080fd5b5061544d888289016151fc565b969995985093965092949392505050565b600082601f83011261546f57600080fd5b813560206001600160401b0382111561548a5761548a615051565b8160051b615499828201615067565b92835284810182019282810190878511156154b357600080fd5b83870192505b84831015614c9d5782356154cc81614da5565b825291830191908301906154b9565b80356001600160801b0381168114614dc557600080fd5b6000806000806000806000806000806101408b8d03121561551257600080fd5b61551b8b614dba565b995060208b01356001600160401b038082111561553757600080fd5b6155438e838f016150be565b9a5060408d013591508082111561555957600080fd5b6155658e838f016150be565b995060608d013591508082111561557b57600080fd5b6155878e838f016150be565b985060808d013591508082111561559d57600080fd5b506155aa8d828e0161545e565b9650506155b960a08c01614dba565b94506155c760c08c01614dba565b93506155d560e08c016154db565b92506155e46101008c016154db565b91506155f36101208c01614dba565b90509295989b9194979a5092959850565b60008060006040848603121561561957600080fd5b83356001600160401b038082111561563057600080fd5b61563c878388016150be565b9450602086013591508082111561565257600080fd5b5061527b868287016151fc565b6000806040838503121561567257600080fd5b823561567d81614da5565b91506020830135614f2a81614da5565b634e487b7160e01b600052602160045260246000fd5b60208101600283106156c557634e487b7160e01b600052602160045260246000fd5b91905290565b600181811c908216806156df57607f821691505b60208210810361255d57634e487b7160e01b600052602260045260246000fd5b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000808335601e1984360301811261573e57600080fd5b8301803591506001600160401b0382111561575857600080fd5b6020019150600581901b3603821315614fe657600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610d8b57610d8b615770565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610d8b57610d8b615770565b6000826157e357634e487b7160e01b600052601260045260246000fd5b500490565b6000823560fe198336030181126157fe57600080fd5b9190910192915050565b6000808335601e1984360301811261581f57600080fd5b8301803591506001600160401b0382111561583957600080fd5b602001915036819003821315614fe657600080fd5b601f821115610efa57600081815260208120601f850160051c810160208610156158755750805b601f850160051c820191505b818110156134c357828155600101615881565b6001600160401b038311156158ab576158ab615051565b6158bf836158b983546156cb565b8361584e565b6000601f8411600181146158f357600085156158db5750838201355b600019600387901b1c1916600186901b178355612746565b600083815260209020601f19861690835b828110156159245786850135825560209485019460019092019101615904565b50868210156159415760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c083013561599b81614da5565b81546001600160a01b0319166001600160a01b03919091161790556159c360e0830183615808565b6123c2818360078601615894565b6000600182016159e3576159e3615770565b5060010190565b6000808335601e19843603018112615a0157600080fd5b83016020810192503590506001600160401b03811115615a2057600080fd5b803603821315614fe657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a811015615b2a57888403605f190185528235368d900360fe19018112615a9d578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c080840135615ae481614da5565b6001600160a01b03169088015260e0615aff848201856159ea565b945083828a0152615b13848a018683615a2f565b998301999850505094909401935050600101615a78565b50505086151560208701529350613a3892505050565b60008060408385031215615b5357600080fd5b82516001600160401b03811115615b6957600080fd5b8301601f81018513615b7a57600080fd5b8051615b886150dd82615097565b818152866020838501011115615b9d57600080fd5b615bae826020830160208601614d29565b60209590950151949694955050505050565b60008551615bd2818460208a01614d29565b820184868237909301918252506020019392505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b81810381811115610d8b57610d8b615770565b600081615c3157615c31615770565b506000190190565b60008251615c4b818460208701614d29565b600360fc1b920191825250600101919050565b60008351615c70818460208801614d29565b835190830190615c84818360208801614d29565b01949350505050565b60008060408385031215615ca057600080fd5b82356001600160401b03811115615cb657600080fd5b615cc2858286016150be565b95602094909401359450505050565b82848237909101908152602001919050565b6020808252600f908201526e45786365656473206d61782062707360881b604082015260600190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615d3c816015850160208801614d29565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615d6d816026840160208801614d29565b01602601949350505050565b81516001600160401b03811115615d9257615d92615051565b615da681615da084546156cb565b8461584e565b602080601f831160018114615ddb5760008415615dc35750858301515b600019600386901b1c1916600185901b1785556134c3565b600085815260208120601f198616915b82811015615e0a57888601518255948401946001909101908401615deb565b5085821015615e285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000615e4b6040830185614d4d565b8281036020840152615e5d8185614d4d565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061267e90830184614d4d565b600060208284031215615eab57600080fd5b81516138e381614cf6565b858152606060208201526000615ed0606083018688615a2f565b8281036040840152615ee3818587615a2f565b98975050505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516157fe818460208701614d29565b600060208284031215615f5e57600080fd5b81516138e381614fed56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122084b74a8e07ee0fa832a073d257352b3190251fc5fdab2ddd3e90fd2a255c562864736f6c63430008150033