[ { "inputs": [ { "internalType": "string", "name": "collectionName", "type": "string" }, { "internalType": "string", "name": "collectionSymbol", "type": "string" }, { "internalType": "string", "name": "tokenURISuffix", "type": "string" }, { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" }, { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" }, { "internalType": "address", "name": "cosigner", "type": "address" }, { "internalType": "uint64", "name": "timestampExpirySeconds", "type": "uint64" }, { "internalType": "address", "name": "mintCurrency", "type": "address" }, { "internalType": "address", "name": "fundReceiver", "type": "address" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator", "type": "uint96" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CannotIncreaseMaxMintableSupply", "type": "error" }, { "inputs": [], "name": "CosignerNotSet", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [], "name": "CrossmintAddressNotSet", "type": "error" }, { "inputs": [], "name": "CrossmintOnly", "type": "error" }, { "inputs": [], "name": "GlobalWalletLimitOverflow", "type": "error" }, { "inputs": [], "name": "InsufficientStageTimeGap", "type": "error" }, { "inputs": [], "name": "InvalidCosignSignature", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "InvalidStage", "type": "error" }, { "inputs": [], "name": "InvalidStageArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidStartAndEndTimestamp", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "Mintable", "type": "error" }, { "inputs": [], "name": "NoSupplyLeft", "type": "error" }, { "inputs": [], "name": "NotEnoughValue", "type": "error" }, { "inputs": [], "name": "NotMintable", "type": "error" }, { "inputs": [], "name": "NotSupported", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [], "name": "StageSupplyExceeded", "type": "error" }, { "inputs": [], "name": "TimestampExpired", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "WalletGlobalLimitExceeded", "type": "error" }, { "inputs": [], "name": "WalletStageLimitExceeded", "type": "error" }, { "inputs": [], "name": "WithdrawFailed", "type": "error" }, { "inputs": [], "name": "WrongMintCurrency", "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": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "activeStage", "type": "uint256" } ], "name": "SetActiveStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "SetBaseURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "SetCosigner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "crossmintAddress", "type": "address" } ], "name": "SetCrossmintAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "SetGlobalWalletLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "SetMaxMintableSupply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" } ], "name": "SetMintCurrency", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "SetMintable", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "expiry", "type": "uint64" } ], "name": "SetTimestampExpirySeconds", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "stage", "type": "uint256" }, { "indexed": false, "internalType": "uint80", "name": "price", "type": "uint80" }, { "indexed": false, "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "indexed": false, "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "indexed": false, "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "indexed": false, "internalType": "uint64", "name": "startTimeUnixSeconds", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "endTimeUnixSeconds", "type": "uint64" } ], "name": "UpdateStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "WithdrawERC20", "type": "event" }, { "inputs": [], "name": "DEFAULT_OPERATOR_WHITELIST_ID", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_SECURITY_LEVEL", "outputs": [ { "internalType": "enum TransferSecurityLevels", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FUND_RECEIVER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "assertValidCosign", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "crossmint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "getActiveStageFromTimestamp", "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": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "getCosignDigest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "getCosignNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getGlobalWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxMintableSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintCurrency", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNumberStages", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPermittedContractReceivers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSecurityPolicy", "outputs": [ { "components": [ { "internalType": "enum TransferSecurityLevels", "name": "transferSecurityLevel", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversId", "type": "uint120" } ], "internalType": "struct CollectionSecurityPolicy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getStageInfo", "outputs": [ { "components": [ { "internalType": "uint80", "name": "price", "type": "uint80" }, { "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "internalType": "uint64", "name": "startTimeUnixSeconds", "type": "uint64" }, { "internalType": "uint64", "name": "endTimeUnixSeconds", "type": "uint64" } ], "internalType": "struct IERC721M.MintStageInfo", "name": "", "type": "tuple" }, { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "contract ICreatorTokenTransferValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "isContractReceiverPermitted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isOperatorWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mintWithLimit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "ownerMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "setCosigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "crossmintAddress", "type": "address" } ], "name": "setCrossmintAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "setGlobalWalletLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "setMaxMintableSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "setMintable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint80", "name": "price", "type": "uint80" }, { "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "internalType": "uint64", "name": "startTimeUnixSeconds", "type": "uint64" }, { "internalType": "uint64", "name": "endTimeUnixSeconds", "type": "uint64" } ], "internalType": "struct IERC721M.MintStageInfo[]", "name": "newStages", "type": "tuple[]" } ], "name": "setStages", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "expiry", "type": "uint64" } ], "name": "setTimestampExpirySeconds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomValidatorAndSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setToDefaultSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "suffix", "type": "string" } ], "name": "setTokenURISuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "totalMintedByAddress", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162005d1d38038062005d1d8339810160408190526200003491620003bb565b81818c8c8c8c8c8c8c8c8c88888181600262000051838262000570565b50600362000060828262000570565b5050600080555062000076915033905062000152565b6001600c55858511156200009d57604051630590c51360e01b815260040160405180910390fd5b600d805460ff19166001179055600f86905560108590556012620000c2888262000570565b50600d8054610100600160e81b03191669010000000000000000006001600160a01b0396871602610100600160481b031916176101006001600160401b03959095169490940293909317909255601780546001600160a01b03191691841691909117905516608052506200013f9350859250849150620001a49050565b505050505050505050505050506200063c565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127106001600160601b0382161115620002185760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002705760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200020f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002d157600080fd5b81516001600160401b0380821115620002ee57620002ee620002a9565b604051601f8301601f19908116603f01168101908282118183101715620003195762000319620002a9565b816040528381526020925086838588010111156200033657600080fd5b600091505b838210156200035a57858201830151818301840152908201906200033b565b600093810190920192909252949350505050565b80516001600160a01b03811681146200038657600080fd5b919050565b80516001600160401b03811681146200038657600080fd5b80516001600160601b03811681146200038657600080fd5b60008060008060008060008060008060006101608c8e031215620003de57600080fd5b8b516001600160401b03811115620003f557600080fd5b620004038e828f01620002bf565b60208e0151909c5090506001600160401b038111156200042257600080fd5b620004308e828f01620002bf565b60408e0151909b5090506001600160401b038111156200044f57600080fd5b6200045d8e828f01620002bf565b99505060608c0151975060808c015196506200047c60a08d016200036e565b95506200048c60c08d016200038b565b94506200049c60e08d016200036e565b9350620004ad6101008d016200036e565b9250620004be6101208d016200036e565b9150620004cf6101408d01620003a3565b90509295989b509295989b9093969950565b600181811c90821680620004f657607f821691505b6020821081036200051757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056b57600081815260208120601f850160051c81016020861015620005465750805b601f850160051c820191505b81811015620005675782815560010162000552565b5050505b505050565b81516001600160401b038111156200058c576200058c620002a9565b620005a4816200059d8454620004e1565b846200051d565b602080601f831160018114620005dc5760008415620005c35750858301515b600019600386901b1c1916600185901b17855562000567565b600085815260208120601f198616915b828110156200060d57888601518255948401946001909101908401620005ec565b50858210156200062c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516156b76200066660003960008181610823015281816114f6015261166c01526156b76000f3fe6080604052600436106103e45760003560e01c8063700d19f211610208578063aac5ab1f11610118578063e8a3d485116100ab578063f2fde38b1161007a578063f2fde38b14610b9b578063f698bceb14610bbb578063f830e8b814610bd3578063f8d0969614610bf3578063fd762d9214610c1357600080fd5b8063e8a3d48514610b15578063e985e9c514610b2a578063efb6b11f14610b73578063efdaa2ec14610b8657600080fd5b8063c23dc68f116100e7578063c23dc68f14610a93578063c87b56dd14610ac0578063ce2b0ec014610ae0578063d007af5c14610b0057600080fd5b8063aac5ab1f14610a1e578063b50248e714610a3e578063b88d4fde14610a5e578063be537f4314610a7157600080fd5b806397cf84fc1161019b578063a06c492f1161016a578063a06c492f1461090f578063a22cb4651461098f578063a3759f60146109af578063a9852bfb146109de578063a9fc664e146109fe57600080fd5b806397cf84fc1461090f578063997556241461092f57806399a2557a1461094f5780639d645a441461096f57600080fd5b80638462151c116101d75780638462151c1461088f5780638da5cb5b146108bc578063938e3d7b146108da57806395d89b41146108fa57600080fd5b8063700d19f21461081157806370a082311461084557806370da24ee14610865578063715018a61461087a57600080fd5b80632ed6d5e81161030357806355f804b3116102965780636134716211610265578063613471621461078957806362acbd9a146107a95780636352211e146107bc57806367808a34146107dc5780636c3b8699146107fc57600080fd5b806355f804b3146106ef5780635944c7531461070f5780635bbb21771461072f5780635d4c1d461461075c57600080fd5b8063424aa884116102d2578063424aa8841461068757806342842e0e146106a5578063495c8bf9146106b85780634b1c53b4146106da57600080fd5b80632ed6d5e81461062a578063372992e41461063f5780633ccfd60b1461065f5780633d6375b21461067457600080fd5b806318160ddd1161037b57806323b872dd1161034a57806323b872dd14610598578063285d70d4146105ab5780632a55205a146105cb5780632e8da8291461060a57600080fd5b806318160ddd146105135780631b25b077146105365780631c33b328146105565780631ce03eed1461057857600080fd5b806306fdde03116103b757806306fdde03146104a0578063081812fc146104c2578063095ea7b3146104e2578063098144d4146104f557600080fd5b806301463546146103e957806301ffc9a71461042e578063020451381461045e57806304634d8d14610480575b600080fd5b3480156103f557600080fd5b5061041173721c00182a990771244d7a71b9fa2ea789a3b43381565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043a57600080fd5b5061044e6104493660046145a2565b610c33565b6040519015158152602001610425565b34801561046a57600080fd5b5061047e6104793660046145d4565b610c53565b005b34801561048c57600080fd5b5061047e61049b36600461460d565b610cd1565b3480156104ac57600080fd5b506104b5610d2e565b6040516104259190614692565b3480156104ce57600080fd5b506104116104dd3660046146a5565b610dc0565b61047e6104f03660046146be565b610e04565b34801561050157600080fd5b50600a546001600160a01b0316610411565b34801561051f57600080fd5b50600154600054035b604051908152602001610425565b34801561054257600080fd5b5061044e6105513660046146ea565b610ea4565b34801561056257600080fd5b5061056b600281565b604051610425919061476d565b34801561058457600080fd5b506105286105933660046147a6565b610f3d565b61047e6105a63660046147eb565b61105d565b3480156105b757600080fd5b5061047e6105c636600461483a565b61120f565b3480156105d757600080fd5b506105eb6105e6366004614857565b611258565b604080516001600160a01b039093168352602083019190915201610425565b34801561061657600080fd5b5061044e6106253660046145d4565b611306565b34801561063657600080fd5b5061047e611412565b34801561064b57600080fd5b5061047e61065a3660046146a5565b611577565b34801561066b57600080fd5b5061047e6115d7565b61047e6106823660046148fe565b611736565b34801561069357600080fd5b506017546001600160a01b0316610411565b61047e6106b33660046147eb565b611761565b3480156106c457600080fd5b506106cd611781565b60405161042591906149a2565b3480156106e657600080fd5b50600f54610528565b3480156106fb57600080fd5b5061047e61070a3660046149e3565b611892565b34801561071b57600080fd5b5061047e61072a366004614a24565b6118d9565b34801561073b57600080fd5b5061074f61074a366004614a59565b61193a565b6040516104259190614aca565b34801561076857600080fd5b50610771600181565b6040516001600160781b039091168152602001610425565b34801561079557600080fd5b5061047e6107a4366004614b2e565b611a05565b61047e6107b7366004614b6e565b611b70565b3480156107c857600080fd5b506104116107d73660046146a5565b611bdd565b3480156107e857600080fd5b506105286107f7366004614ba2565b611be8565b34801561080857600080fd5b5061047e611ca6565b34801561081d57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b34801561085157600080fd5b506105286108603660046145d4565b611da5565b34801561087157600080fd5b50601454610528565b34801561088657600080fd5b5061047e611df3565b34801561089b57600080fd5b506108af6108aa3660046145d4565b611e07565b6040516104259190614bbd565b3480156108c857600080fd5b50600b546001600160a01b0316610411565b3480156108e657600080fd5b5061047e6108f53660046149e3565b611f0f565b34801561090657600080fd5b506104b5611f24565b34801561091b57600080fd5b5061052861092a3660046145d4565b611f33565b34801561093b57600080fd5b5061047e61094a3660046145d4565b611f5d565b34801561095b57600080fd5b506108af61096a366004614bf5565b611fb3565b34801561097b57600080fd5b5061044e61098a3660046145d4565b61212a565b34801561099b57600080fd5b5061047e6109aa366004614c2a565b6121f2565b3480156109bb57600080fd5b506109cf6109ca3660046146a5565b61226b565b60405161042593929190614c63565b3480156109ea57600080fd5b5061047e6109f93660046149e3565b6123ca565b348015610a0a57600080fd5b5061047e610a193660046145d4565b6123df565b348015610a2a57600080fd5b5061047e610a39366004614cf6565b612500565b348015610a4a57600080fd5b5061047e610a59366004614dd7565b612559565b61047e610a6c366004614e47565b61259d565b348015610a7d57600080fd5b50610a866125e1565b6040516104259190614e9a565b348015610a9f57600080fd5b50610ab3610aae3660046146a5565b61269c565b6040516104259190614ed6565b348015610acc57600080fd5b506104b5610adb3660046146a5565b612714565b348015610aec57600080fd5b5061047e610afb366004614ba2565b61281d565b348015610b0c57600080fd5b506106cd61287c565b348015610b2157600080fd5b506104b5612935565b348015610b3657600080fd5b5061044e610b45366004614ee4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b61047e610b81366004614f02565b612944565b348015610b9257600080fd5b50601054610528565b348015610ba757600080fd5b5061047e610bb63660046145d4565b612967565b348015610bc757600080fd5b50600d5460ff1661044e565b348015610bdf57600080fd5b5061047e610bee366004614f95565b6129e0565b348015610bff57600080fd5b5061047e610c0e3660046146a5565b612ef9565b348015610c1f57600080fd5b5061047e610c2e366004615009565b612f59565b6000610c3e82613058565b80610c4d5750610c4d8261307d565b92915050565b610c5b6130b2565b600d80547fffffff0000000000000000000000000000000000000000ffffffffffffffffff16600160481b6001600160a01b038416908102919091179091556040519081527faea1573caf7b4fdd079b947d86c1be6c725642c47582f8f9bd2c7d2a30bf0bd9906020015b60405180910390a150565b610cd96130b2565b610ce3828261310c565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b606060028054610d3d90615065565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6990615065565b8015610db65780601f10610d8b57610100808354040283529160200191610db6565b820191906000526020600020905b815481529060010190602001808311610d9957829003601f168201915b5050505050905090565b6000610dcb826131c6565b610de8576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610e0f82611bdd565b9050336001600160a01b03821614610e4857610e2b8133610b45565b610e48576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600a546000906001600160a01b031615610f3257600a5460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b158015610f0d57600080fd5b505afa925050508015610f1e575060015b610f2a57506000610f36565b506001610f36565b5060015b9392505050565b600d54600090600160481b90046001600160a01b0316610f70576040516353bd4fb360e11b815260040160405180910390fd5b611055308585600d60099054906101000a90046001600160a01b031686610f944690565b610f9d8b611f33565b604051606097881b6bffffffffffffffffffffffff19908116602083015296881b8716603482015260e09590951b6001600160e01b031916604886015292861b909416604c84015260c01b6001600160c01b031916938201939093526068810191909152608881019190915260a801604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b949350505050565b6000611068826131ed565b9050836001600160a01b0316816001600160a01b03161461109b5760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b038816909114176110e8576110cb8633610b45565b6110e857604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661110f57604051633a954ecd60e21b815260040160405180910390fd5b61111c8686866001613254565b801561112757600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b841690036111b9576001840160008181526004602052604081205490036111b75760005481146111b75760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46112078686866001613282565b505050505050565b6112176130b2565b600d805460ff19168215159081179091556040519081527fe717a2bfc51e250b028aaac5eb448e76f4df26b9609956782bff49097bb792cf90602001610cc6565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916112cd5750604080518082019091526008546001600160a01b0381168252600160a01b90046001600160601b031660208201525b6020810151600090612710906112ec906001600160601b0316876150b5565b6112f691906150d4565b91519350909150505b9250929050565b600a546000906001600160a01b03161561140a57600a54604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e91906150f6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190615167565b506000919050565b61141a6130b2565b6017546001600160a01b03166114435760405163a47ca0b760e01b815260040160405180910390fd5b601854601754611474916001600160a01b0390911690730b98151bedee73f9ba5f2c7b72dea02d38ce49fc906132a9565b6017546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e19190615184565b60175490915061151b906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000836132a9565b6017546018547fbe7426aee8a34d0263892b55ce65ce81d8f4c806eb4719e59015ea49feb92d22916001600160a01b03169061155890849061519d565b604080516001600160a01b039093168352602083019190915201610cc6565b61157f6130b2565b600f548111156115a257604051630590c51360e01b815260040160405180910390fd5b60108190556040518181527f5307de8ad7d34d5ddfd5171435c143bdc645493980f453eb5d7cdb3e494a1b3590602001610cc6565b6115df6130b2565b601854604051600091730b98151bedee73f9ba5f2c7b72dea02d38ce49fc918381818185875af1925050503d8060008114611636576040519150601f19603f3d011682016040523d82523d6000602084013e61163b565b606091505b505090508061165d576040516312171d8360e31b815260040160405180910390fd5b60405147906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908290600081818185875af1925050503d80600081146116c8576040519150601f19603f3d011682016040523d82523d6000602084013e6116cd565b606091505b505080925050816116f157604051631d42c86760e21b815260040160405180910390fd5b7f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d81601854611720919061519d565b6040519081526020015b60405180910390a15050565b61173e61330c565b61174e8733888888888888613365565b6117586001600c55565b50505050505050565b61177c8383836040518060200160405280600081525061259d565b505050565b600a546060906001600160a01b03161561187f57600a54604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa1580156117e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180991906150f6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b600060405180830381865afa158015611852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261187a91908101906151b0565b905090565b5060408051600081526020810190915290565b61189a6130b2565b60116118a78284836152a7565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa828260405161172a929190615366565b6118e16130b2565b6118ec83838361393d565b6040516001600160601b03821681526001600160a01b0383169084907f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c9060200160405180910390a3505050565b6060816000816001600160401b0381111561195757611957614d22565b6040519080825280602002602001820160405280156119a957816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816119755790505b50905060005b8281146119fc576119d78686838181106119cb576119cb615395565b9050602002013561269c565b8282815181106119e9576119e9615395565b60209081029190910101526001016119af565b50949350505050565b611a0d613a08565b6000611a21600a546001600160a01b031690565b90506001600160a01b038116611a4a57604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c090611a7890309088906004016153ab565b600060405180830381600087803b158015611a9257600080fd5b505af1158015611aa6573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa029150611ad890309087906004016153c8565b600060405180830381600087803b158015611af257600080fd5b505af1158015611b06573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0384169250638d7443149150611b3890309086906004016153c8565b600060405180830381600087803b158015611b5257600080fd5b505af1158015611b66573d6000803e3d6000fd5b5050505050505050565b611b7861330c565b600e546001600160a01b0316611ba157604051637e9f68eb60e11b815260040160405180910390fd5b600e546001600160a01b03163314611bcc5760405163f46fd68360e01b815260040160405180910390fd5b61174e878760008888888888613365565b6000610c4d826131ed565b6000805b601454811015611c8c5760148181548110611c0957611c09615395565b60009182526020909120600260039092020101546001600160401b036301000000909104811690841610801590611c79575060148181548110611c4e57611c4e615395565b60009182526020909120600260039092020101546001600160401b03600160581b9091048116908416105b15611c845792915050565b600101611bec565b5060405163e82a532960e01b815260040160405180910390fd5b611cae613a08565b611ccb73721c00182a990771244d7a71b9fa2ea789a3b4336123df565b604051630368065360e61b815273721c00182a990771244d7a71b9fa2ea789a3b4339063da0194c090611d059030906002906004016153ab565b600060405180830381600087803b158015611d1f57600080fd5b505af1158015611d33573d6000803e3d6000fd5b5050604051631182550160e11b815273721c00182a990771244d7a71b9fa2ea789a3b4339250632304aa029150611d719030906001906004016153c8565b600060405180830381600087803b158015611d8b57600080fd5b505af1158015611d9f573d6000803e3d6000fd5b50505050565b60006001600160a01b038216611dce576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b611dfb6130b2565b611e056000613a10565b565b60606000806000611e1785611da5565b90506000816001600160401b03811115611e3357611e33614d22565b604051908082528060200260200182016040528015611e5c578160200160208202803683370190505b509050611e8960408051608081018252600080825260208201819052918101829052606081019190915290565b60005b838614611f0357611e9c81613a62565b91508160400151611efb5781516001600160a01b031615611ebc57815194505b876001600160a01b0316856001600160a01b031603611efb5780838780600101985081518110611eee57611eee615395565b6020026020010181815250505b600101611e8c565b50909695505050505050565b611f176130b2565b601361177c8284836152a7565b606060038054610d3d90615065565b6001600160a01b038116600090815260056020526040808220546001600160401b03911c16610c4d565b611f656130b2565b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527ff477d93c015f2a73c2ccc5ed37078d12123b80fc5d12e0014c60b913bc1a1ec490602001610cc6565b6060818310611fd557604051631960ccad60e11b815260040160405180910390fd5b600080611fe160005490565b905080841115611fef578093505b6000611ffa87611da5565b9050848610156120195785850381811015612013578091505b5061201d565b5060005b6000816001600160401b0381111561203757612037614d22565b604051908082528060200260200182016040528015612060578160200160208202803683370190505b50905081600003612076579350610f3692505050565b60006120818861269c565b905060008160400151612092575080515b885b8881141580156120a45750848714155b15612119576120b281613a62565b925082604001516121115782516001600160a01b0316156120d257825191505b8a6001600160a01b0316826001600160a01b031603612111578084888060010199508151811061210457612104615395565b6020026020010181815250505b600101612094565b505050928352509095945050505050565b600a546000906001600160a01b03161561140a57600a54604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa15801561218e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b291906150f6565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044016113c9565b3360008181526007602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161225f911515815260200190565b60405180910390a35050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152601454600090819084106122ee5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964537461676560a01b60448201526064015b60405180910390fd5b60008481526015602090815260408083203384528252808320548784526016909252909120546014805463ffffffff909316928790811061233157612331615395565b60009182526020918290206040805160e08101825260039390930290910180546001600160501b038082168552600160501b82041694840194909452600160a01b90930463ffffffff16908201526001820154606082015260029091015462ffffff81166080830152630100000081046001600160401b0390811660a0840152600160581b9091041660c0820152969195509350915050565b6123d26130b2565b601261177c8284836152a7565b6123e7613a08565b60006001600160a01b0382163b15612462576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa92505050801561245a575060408051601f3d908101601f1916820190925261245791810190615167565b60015b156124625790505b6001600160a01b03821615801590612478575080155b15612496576040516332483afb60e01b815260040160405180910390fd5b600a54604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6125086130b2565b8163ffffffff16600f54816125206001546000540390565b61252a919061519d565b11156125495760405163800113cb60e01b815260040160405180910390fd5b61177c828463ffffffff16613a9e565b600d5461258190600160481b90046001600160a01b031661257b868686610f3d565b83613abc565b611d9f5760405162b7fad960e11b815260040160405180910390fd5b6125a884848461105d565b6001600160a01b0383163b15611d9f576125c484848484613b1d565b611d9f576040516368d2bf6b60e11b815260040160405180910390fd5b6040805160608101825260008082526020820181905291810191909152600a546001600160a01b03161561267b57600a54604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187a91906150f6565b50604080516060810182526000808252602082018190529181019190915290565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845290830182905293820181905292810183905290915060005483106126f05792915050565b6126f983613a62565b905080604001511561270b5792915050565b610f3683613c08565b606061271f826131c6565b61273c57604051630a14c4b560e41b815260040160405180910390fd5b60006011805461274b90615065565b80601f016020809104026020016040519081016040528092919081815260200182805461277790615065565b80156127c45780601f10612799576101008083540402835291602001916127c4565b820191906000526020600020905b8154815290600101906020018083116127a757829003601f168201915b5050505050905080516000036127e95760405180602001604052806000815250610f36565b806127f384613c3d565b6012604051602001612807939291906153ea565b6040516020818303038152906040529392505050565b6128256130b2565b600d805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f41b9126ccd8cb4505310c40a376055b5ef246bd4c9214de02af31ef4f26b1b5f90602001610cc6565b600a546060906001600160a01b03161561187f57600a54604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa1580156128e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290491906150f6565b60409081015190516001600160e01b031960e084901b1681526001600160781b039091166004820152602401611835565b606060138054610d3d90615065565b61294c61330c565b61295d863360008888888888613365565b6112076001600c55565b61296f6130b2565b6001600160a01b0381166129d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016122e5565b6129dd81613a10565b50565b6129e86130b2565b6129f460146000614528565b60005b8181101561177c5760018110612ab157600d5461010090046001600160401b03168383612a2560018561548a565b818110612a3457612a34615395565b905060e0020160c0016020810190612a4c9190614ba2565b612a56919061549d565b6001600160401b0316838383818110612a7157612a71615395565b905060e0020160a0016020810190612a899190614ba2565b6001600160401b03161015612ab157604051636bc1af9360e01b815260040160405180910390fd5b612b0d838383818110612ac657612ac6615395565b905060e0020160a0016020810190612ade9190614ba2565b848484818110612af057612af0615395565b905060e0020160c0016020810190612b089190614ba2565b613c81565b60146040518060e00160405280858585818110612b2c57612b2c615395565b612b4292602060e09092020190810191506154c4565b6001600160501b03168152602001858585818110612b6257612b62615395565b905060e002016020016020810190612b7a91906154c4565b6001600160501b03168152602001858585818110612b9a57612b9a615395565b905060e002016040016020810190612bb291906154ed565b63ffffffff168152602001858585818110612bcf57612bcf615395565b905060e00201606001358152602001858585818110612bf057612bf0615395565b905060e002016080016020810190612c089190615508565b62ffffff168152602001858585818110612c2457612c24615395565b905060e0020160a0016020810190612c3c9190614ba2565b6001600160401b03168152602001858585818110612c5c57612c5c615395565b905060e0020160c0016020810190612c749190614ba2565b6001600160401b0390811690915282546001818101855560009485526020948590208451600390930201805495850151604086015163ffffffff16600160a01b0263ffffffff60a01b196001600160501b03928316600160501b026001600160a01b03199099169290951691909117969096179290921694909417815560608301519381019390935560808201516002909301805460a084015160c0909401518316600160581b0267ffffffffffffffff60581b19949093166301000000026affffffffffffffffffffff1990911662ffffff9095169490941793909317919091161790557fc4737822c84fe15fce8213ef237bb06d7d6c1603adfa65bf6d3a65319597909281848482818110612d8d57612d8d615395565b612da392602060e09092020190810191506154c4565b858585818110612db557612db5615395565b905060e002016020016020810190612dcd91906154c4565b868686818110612ddf57612ddf615395565b905060e002016040016020810190612df791906154ed565b878787818110612e0957612e09615395565b905060e0020160600135888888818110612e2557612e25615395565b905060e002016080016020810190612e3d9190615508565b898989818110612e4f57612e4f615395565b905060e0020160a0016020810190612e679190614ba2565b8a8a8a818110612e7957612e79615395565b905060e0020160c0016020810190612e919190614ba2565b604080519889526001600160501b0397881660208a0152969095169587019590955263ffffffff9092166060860152608085015262ffffff1660a08401526001600160401b0391821660c08401521660e08201526101000160405180910390a16001016129f7565b612f016130b2565b600f54811115612f245760405163430b83b160e11b815260040160405180910390fd5b600f8190556040518181527fc7bbc2b288fc13314546ea4aa51f6bcf71b7ba4740beeb3d32e9acef57b6668a90602001610cc6565b612f61613a08565b612f6a846123df565b604051630368065360e61b81526001600160a01b0385169063da0194c090612f9890309087906004016153ab565b600060405180830381600087803b158015612fb257600080fd5b505af1158015612fc6573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa029150612ff890309086906004016153c8565b600060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0387169250638d7443149150611b3890309085906004016153c8565b60006001600160e01b031982166310c8aba560e31b1480610c4d5750610c4d82613cb3565b60006001600160e01b0319821663152a902d60e11b1480610c4d57506301ffc9a760e01b6001600160e01b0319831614610c4d565b600b546001600160a01b03163314611e055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016122e5565b6127106001600160601b03821611156131375760405162461bcd60e51b81526004016122e59061552d565b6001600160a01b03821661318d5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016122e5565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b6000805482108015610c4d575050600090815260046020526040902054600160e01b161590565b60008160005481101561323b5760008181526004602052604081205490600160e01b82169003613239575b80600003610f36575060001901600081815260046020526040902054613218565b505b604051636f96cda160e11b815260040160405180910390fd5b60005b8181101561327b57613273858561326e848761519d565b613d01565b600101613257565b5050505050565b60005b8181101561327b576132a1858561329c848761519d565b613d57565b600101613285565b6040516001600160a01b03831660248201526044810182905261177c90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d9e565b6002600c540361335e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016122e5565b6002600c55565b600d5460ff1661338857604051630952c8a960e11b815260040160405180910390fd5b8763ffffffff16600f54816133a06001546000540390565b6133aa919061519d565b11156133c95760405163800113cb60e01b815260040160405180910390fd5b426134096040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b600d54600160481b90046001600160a01b03161561347057613463338c8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061255992505050565b61346c86613e73565b8591505b600061347b83611be8565b90506014818154811061349057613490615395565b60009182526020918290206040805160e08101825260039390930290910180546001600160501b038082168552600160501b82041694840194909452600160a01b90930463ffffffff16908201526001820154606082015260029091015462ffffff81166080830152630100000081046001600160401b0390811660a0840152600160581b9091041660c08201526017549092506001600160a01b031615801561356357506020820151825163ffffffff8e169161354d91615577565b6135579190615597565b6001600160501b031634105b1561358157604051630717c22560e51b815260040160405180910390fd5b608082015162ffffff16156135db57608082015160008281526016602052604090205462ffffff909116906135bd9063ffffffff8f169061519d565b11156135db5760405162d0844960e21b815260040160405180910390fd5b60105415613642576010548c63ffffffff166136198d6001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b613623919061519d565b11156136425760405163751304ed60e11b815260040160405180910390fd5b604082015163ffffffff16156136d457816040015163ffffffff168c6015600084815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900463ffffffff166136af91906155c6565b63ffffffff1611156136d45760405163b4f3729b60e01b815260040160405180910390fd5b60608201511561380d5781606001516137808a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d60405160200161376592919060609290921b6bffffffffffffffffffffffff1916825260e01b6001600160e01b031916601482015260180190565b60405160208183030381529060405280519060200120613eb7565b1461379e576040516309bde33960e01b815260040160405180910390fd5b60008a63ffffffff161180156137ef575060008181526015602090815260408083206001600160a01b038f16845290915290205463ffffffff808c16916137e7918f91166155c6565b63ffffffff16115b1561380d5760405163b4f3729b60e01b815260040160405180910390fd5b6017546001600160a01b0316156138655761386533308e63ffffffff168560200151866000015161383e9190615577565b6138489190615597565b6017546001600160a01b03169291906001600160501b0316613f04565b8b63ffffffff16826020015161387b9190615597565b6001600160501b031660186000828254613895919061519d565b909155505060008181526015602090815260408083206001600160a01b038f168452909152812080548e92906138d290849063ffffffff166155c6565b92506101000a81548163ffffffff021916908363ffffffff1602179055508b63ffffffff16601660008381526020019081526020016000206000828254613919919061519d565b9091555061392f90508b63ffffffff8e16613a9e565b505050505050505050505050565b6127106001600160601b03821611156139685760405162461bcd60e51b81526004016122e59061552d565b6001600160a01b0382166139be5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016122e5565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600990529190942093519051909116600160a01b029116179055565b611e056130b2565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260046020526040902054610c4d90613f3c565b613ab8828260405180602001604052806000815250613f83565b5050565b6000806000613acb8585613fe9565b90925090506000816004811115613ae457613ae4614735565b148015613b025750856001600160a01b0316826001600160a01b0316145b80613b135750613b1386868661402b565b9695505050505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613b529033908990889088906004016155e3565b6020604051808303816000875af1925050508015613b8d575060408051601f3d908101601f19168201909252613b8a91810190615616565b60015b613beb573d808015613bbb576040519150601f19603f3d011682016040523d82523d6000602084013e613bc0565b606091505b508051600003613be3576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b604080516080810182526000808252602082018190529181018290526060810191909152610c4d613c38836131ed565b613f3c565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480613c575750819003601f19909101908152919050565b806001600160401b0316826001600160401b031610613ab857604051631750215560e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b031983161480613ce457506380ac58cd60e01b6001600160e01b03198316145b80610c4d5750506001600160e01b031916635b5e139f60e01b1490565b6001600160a01b038381161590831615818015613d1b5750805b15613d3957604051635cbd944160e01b815260040160405180910390fd5b8115613d45575b61327b565b80613d405761327b3386868634614117565b6001600160a01b038381161590831615818015613d715750805b15613d8f57604051635cbd944160e01b815260040160405180910390fd5b81613d405780613d405761327b565b6000613df3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661419c9092919063ffffffff16565b9050805160001480613e14575080806020019051810190613e149190615167565b61177c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016122e5565b600d54613e8e9061010090046001600160401b03164261548a565b816001600160401b031610156129dd576040516313634e8d60e11b815260040160405180910390fd5b600081815b8451811015613efc57613ee882868381518110613edb57613edb615395565b60200260200101516141ab565b915080613ef481615633565b915050613ebc565b509392505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611d9f9085906323b872dd60e01b906084016132d5565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b613f8d83836141d7565b6001600160a01b0383163b1561177c576000548281035b613fb76000868380600101945086613b1d565b613fd4576040516368d2bf6b60e11b815260040160405180910390fd5b818110613fa457816000541461327b57600080fd5b600080825160410361401f5760208301516040840151606085015160001a614013878285856142eb565b945094505050506112ff565b506000905060026112ff565b6000806000856001600160a01b0316631626ba7e60e01b868660405160240161405592919061564c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516140939190615665565b600060405180830381855afa9150503d80600081146140ce576040519150601f19603f3d011682016040523d82523d6000602084013e6140d3565b606091505b50915091508180156140e757506020815110155b8015613b1357508051630b135d3f60e11b9061410c9083016020908101908401615184565b149695505050505050565b600a546001600160a01b03161561327b57600a5460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b15801561417d57600080fd5b505afa158015614191573d6000803e3d6000fd5b505050505050505050565b606061105584846000856143af565b60008183106141c7576000828152602084905260409020610f36565b5060009182526020526040902090565b60008054908290036141fc5760405163b562e8dd60e01b815260040160405180910390fd5b6142096000848385613254565b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146142b857808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101614280565b50816000036142d957604051622e076360e81b815260040160405180910390fd5b600090815561177c9150848385613282565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561432257506000905060036143a6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614376573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661439f576000600192509250506143a6565b9150600090505b94509492505050565b6060824710156144105760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016122e5565b600080866001600160a01b0316858760405161442c9190615665565b60006040518083038185875af1925050503d8060008114614469576040519150601f19603f3d011682016040523d82523d6000602084013e61446e565b606091505b509150915061447f8783838761448a565b979650505050505050565b606083156144f95782516000036144f2576001600160a01b0385163b6144f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016122e5565b5081611055565b611055838381511561450e5781518083602001fd5b8060405162461bcd60e51b81526004016122e59190614692565b50805460008255600302906000526020600020908101906129dd91905b808211156145885780546001600160c01b03191681556000600182015560028101805472ffffffffffffffffffffffffffffffffffffff19169055600301614545565b5090565b6001600160e01b0319811681146129dd57600080fd5b6000602082840312156145b457600080fd5b8135610f368161458c565b6001600160a01b03811681146129dd57600080fd5b6000602082840312156145e657600080fd5b8135610f36816145bf565b80356001600160601b038116811461460857600080fd5b919050565b6000806040838503121561462057600080fd5b823561462b816145bf565b9150614639602084016145f1565b90509250929050565b60005b8381101561465d578181015183820152602001614645565b50506000910152565b6000815180845261467e816020860160208601614642565b601f01601f19169290920160200192915050565b602081526000610f366020830184614666565b6000602082840312156146b757600080fd5b5035919050565b600080604083850312156146d157600080fd5b82356146dc816145bf565b946020939093013593505050565b6000806000606084860312156146ff57600080fd5b833561470a816145bf565b9250602084013561471a816145bf565b9150604084013561472a816145bf565b809150509250925092565b634e487b7160e01b600052602160045260246000fd5b6009811061476957634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c4d828461474b565b803563ffffffff8116811461460857600080fd5b80356001600160401b038116811461460857600080fd5b6000806000606084860312156147bb57600080fd5b83356147c6816145bf565b92506147d46020850161477b565b91506147e26040850161478f565b90509250925092565b60008060006060848603121561480057600080fd5b833561480b816145bf565b9250602084013561481b816145bf565b929592945050506040919091013590565b80151581146129dd57600080fd5b60006020828403121561484c57600080fd5b8135610f368161482c565b6000806040838503121561486a57600080fd5b50508035926020909101359150565b60008083601f84011261488b57600080fd5b5081356001600160401b038111156148a257600080fd5b6020830191508360208260051b85010111156112ff57600080fd5b60008083601f8401126148cf57600080fd5b5081356001600160401b038111156148e657600080fd5b6020830191508360208285010111156112ff57600080fd5b600080600080600080600060a0888a03121561491957600080fd5b6149228861477b565b96506149306020890161477b565b955060408801356001600160401b038082111561494c57600080fd5b6149588b838c01614879565b909750955085915061496c60608b0161478f565b945060808a013591508082111561498257600080fd5b5061498f8a828b016148bd565b989b979a50959850939692959293505050565b6020808252825182820181905260009190848201906040850190845b81811015611f035783516001600160a01b0316835292840192918401916001016149be565b600080602083850312156149f657600080fd5b82356001600160401b03811115614a0c57600080fd5b614a18858286016148bd565b90969095509350505050565b600080600060608486031215614a3957600080fd5b833592506020840135614a4b816145bf565b91506147e2604085016145f1565b60008060208385031215614a6c57600080fd5b82356001600160401b03811115614a8257600080fd5b614a1885828601614879565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611f0357614af9838551614a8e565b9284019260809290920191600101614ae6565b600981106129dd57600080fd5b6001600160781b03811681146129dd57600080fd5b600080600060608486031215614b4357600080fd5b8335614b4e81614b0c565b92506020840135614b5e81614b19565b9150604084013561472a81614b19565b600080600080600080600060a0888a031215614b8957600080fd5b614b928861477b565b96506020880135614930816145bf565b600060208284031215614bb457600080fd5b610f368261478f565b6020808252825182820181905260009190848201906040850190845b81811015611f0357835183529284019291840191600101614bd9565b600080600060608486031215614c0a57600080fd5b8335614c15816145bf565b95602085013595506040909401359392505050565b60008060408385031215614c3d57600080fd5b8235614c48816145bf565b91506020830135614c588161482c565b809150509250929050565b6000610120820190506001600160501b038086511683528060208701511660208401525063ffffffff60408601511660408301526060850151606083015262ffffff60808601511660808301526001600160401b0360a08601511660a083015260c0850151614cdd60c08401826001600160401b03169052565b5063ffffffff9390931660e08201526101000152919050565b60008060408385031215614d0957600080fd5b614d128361477b565b91506020830135614c58816145bf565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614d6057614d60614d22565b604052919050565b600082601f830112614d7957600080fd5b81356001600160401b03811115614d9257614d92614d22565b614da5601f8201601f1916602001614d38565b818152846020838601011115614dba57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614ded57600080fd5b8435614df8816145bf565b9350614e066020860161477b565b9250614e146040860161478f565b915060608501356001600160401b03811115614e2f57600080fd5b614e3b87828801614d68565b91505092959194509250565b60008060008060808587031215614e5d57600080fd5b8435614e68816145bf565b93506020850135614e78816145bf565b92506040850135915060608501356001600160401b03811115614e2f57600080fd5b6000606082019050614ead82845161474b565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b60808101610c4d8284614a8e565b60008060408385031215614ef757600080fd5b8235614d12816145bf565b60008060008060008060808789031215614f1b57600080fd5b614f248761477b565b955060208701356001600160401b0380821115614f4057600080fd5b614f4c8a838b01614879565b9097509550859150614f6060408a0161478f565b94506060890135915080821115614f7657600080fd5b50614f8389828a016148bd565b979a9699509497509295939492505050565b60008060208385031215614fa857600080fd5b82356001600160401b0380821115614fbf57600080fd5b818501915085601f830112614fd357600080fd5b813581811115614fe257600080fd5b86602060e083028501011115614ff757600080fd5b60209290920196919550909350505050565b6000806000806080858703121561501f57600080fd5b843561502a816145bf565b9350602085013561503a81614b0c565b9250604085013561504a81614b19565b9150606085013561505a81614b19565b939692955090935050565b600181811c9082168061507957607f821691505b60208210810361509957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156150cf576150cf61509f565b500290565b6000826150f157634e487b7160e01b600052601260045260246000fd5b500490565b60006060828403121561510857600080fd5b604051606081018181106001600160401b038211171561512a5761512a614d22565b604052825161513881614b0c565b8152602083015161514881614b19565b6020820152604083015161515b81614b19565b60408201529392505050565b60006020828403121561517957600080fd5b8151610f368161482c565b60006020828403121561519657600080fd5b5051919050565b80820180821115610c4d57610c4d61509f565b600060208083850312156151c357600080fd5b82516001600160401b03808211156151da57600080fd5b818501915085601f8301126151ee57600080fd5b81518181111561520057615200614d22565b8060051b9150615211848301614d38565b818152918301840191848101908884111561522b57600080fd5b938501935b838510156152555784519250615245836145bf565b8282529385019390850190615230565b98975050505050505050565b601f82111561177c57600081815260208120601f850160051c810160208610156152885750805b601f850160051c820191505b8181101561120757828155600101615294565b6001600160401b038311156152be576152be614d22565b6152d2836152cc8354615065565b83615261565b6000601f84116001811461530657600085156152ee5750838201355b600019600387901b1c1916600186901b17835561327b565b600083815260209020601f19861690835b828110156153375786850135825560209485019460019092019101615317565b50868210156153545760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038316815260408101610f36602083018461474b565b6001600160a01b039290921682526001600160781b0316602082015260400190565b6000845160206153fd8285838a01614642565b8551918401916154108184848a01614642565b855492019160009061542181615065565b60018281168015615439576001811461544e5761547a565b60ff198416875282151583028701945061547a565b896000528560002060005b8481101561547257815489820152908301908701615459565b505082870194505b50929a9950505050505050505050565b81810381811115610c4d57610c4d61509f565b6001600160401b038181168382160190808211156154bd576154bd61509f565b5092915050565b6000602082840312156154d657600080fd5b81356001600160501b0381168114610f3657600080fd5b6000602082840312156154ff57600080fd5b610f368261477b565b60006020828403121561551a57600080fd5b813562ffffff81168114610f3657600080fd5b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b6001600160501b038181168382160190808211156154bd576154bd61509f565b60006001600160501b03808316818516818304811182151516156155bd576155bd61509f565b02949350505050565b63ffffffff8181168382160190808211156154bd576154bd61509f565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613b1390830184614666565b60006020828403121561562857600080fd5b8151610f368161458c565b6000600182016156455761564561509f565b5060010190565b8281526040602082015260006110556040830184614666565b60008251615677818460208701614642565b919091019291505056fea26469706673582212202ae938bec84889ba8c98e1bfa4c5b3f43ce70e2530f59320000b42b9876e74f064736f6c63430008100033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbee7f40281f64f943e62096fc562cb73a4cdef80000000000000000000000002795033f658e8e2a8deb1a28c7c65d743aa3154c00000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000008466c6f636b65727a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008666c6f636b65727a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052e6a736f6e000000000000000000000000000000000000000000000000000000