[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "address", "name": "royaltyReceiver_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator_", "type": "uint96" }, { "internalType": "address", "name": "_minter", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyReservedTokens", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "FunctionLocked", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "ProvenanceHashAlreadySet", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "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" }, { "inputs": [], "name": "WithdrawFailed", "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": 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" }, { "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": "RESERVED", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "assignMinterRole", "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": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quan", "type": "uint256" } ], "name": "cardMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enable", "type": "bool" } ], "name": "enableMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "functionLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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": [], "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": "bytes4", "name": "id", "type": "bytes4" } ], "name": "lockFunction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numberMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorFilteringEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "provenanceHash", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "publicMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "reserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "revokeMinterRole", "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": "amount", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "quan", "type": "uint256" } ], "name": "secondaryReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "setBaseURI", "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": "_price", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setOperatorFilteringEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_provenanceHash", "type": "string" } ], "name": "setProvenanceHash", "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": "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "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" } ]
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250601090816100489190610792565b5066f8b0a10e47000060115534801561005f575f80fd5b5060405161661438038061661483398181016040528101906100819190610900565b8383836040518060400160405280600781526020017f42727569736572000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4272756973657200000000000000000000000000000000000000000000000000815250818181600290816101019190610792565b5080600390816101119190610792565b5061012061025260201b60201c565b5f8190555061013361025260201b60201c565b61014161025a60201b60201c565b101561015e5761015d63fed8210f60e01b61028160201b60201c565b5b50505050610172828261028960201b60201c565b50505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101e4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101db9190610973565b60405180910390fd5b6101f3816102eb60201b60201c565b50600160155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050505050610a1a565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b805f5260045ffd5b61029982826103ae60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef826040516102df919061099b565b60405180910390a25050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6103bd61054f60201b60201c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156104225781816040517f6f483d090000000000000000000000000000000000000000000000000000000081526004016104199291906109f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610492575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016104899190610973565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f612710905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105d357607f821691505b6020821081036105e6576105e561058f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261060d565b610652868361060d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61069661069161068c8461066a565b610673565b61066a565b9050919050565b5f819050919050565b6106af8361067c565b6106c36106bb8261069d565b848454610619565b825550505050565b5f90565b6106d76106cb565b6106e28184846106a6565b505050565b5b81811015610705576106fa5f826106cf565b6001810190506106e8565b5050565b601f82111561074a5761071b816105ec565b610724846105fe565b81016020851015610733578190505b61074761073f856105fe565b8301826106e7565b50505b505050565b5f82821c905092915050565b5f61076a5f198460080261074f565b1980831691505092915050565b5f610782838361075b565b9150826002028217905092915050565b61079b82610558565b67ffffffffffffffff8111156107b4576107b3610562565b5b6107be82546105bc565b6107c9828285610709565b5f60209050601f8311600181146107fa575f84156107e8578287015190505b6107f28582610777565b865550610859565b601f198416610808866105ec565b5f5b8281101561082f5784890151825560018201915060208501945060208101905061080a565b8683101561084c5784890151610848601f89168261075b565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61088e82610865565b9050919050565b61089e81610884565b81146108a8575f80fd5b50565b5f815190506108b981610895565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6108df816108bf565b81146108e9575f80fd5b50565b5f815190506108fa816108d6565b92915050565b5f805f806080858703121561091857610917610861565b5b5f610925878288016108ab565b9450506020610936878288016108ab565b9350506040610947878288016108ec565b9250506060610958878288016108ab565b91505092959194509250565b61096d81610884565b82525050565b5f6020820190506109865f830184610964565b92915050565b610995816108bf565b82525050565b5f6020820190506109ae5f83018461098c565b92915050565b5f6109ce6109c96109c4846108bf565b610673565b61066a565b9050919050565b6109de816109b4565b82525050565b6109ed8161066a565b82525050565b5f604082019050610a065f8301856109d5565b610a1360208301846109e4565b9392505050565b615bed80610a275f395ff3fe60806040526004361061034f575f3560e01c80636c3b8699116101c5578063be537f43116100f6578063dc33e68111610094578063f2fde38b1161006e578063f2fde38b14610bfc578063f4a0a52814610c24578063fb796e6c14610c4c578063fd762d9214610c765761034f565b8063dc33e68114610b5c578063e75179a414610b98578063e985e9c514610bc05761034f565b8063c6ab67a3116100d0578063c6ab67a314610ab0578063c87b56dd14610ada578063ce6df2b914610b16578063d007af5c14610b325761034f565b8063be537f4314610a34578063c668286214610a5e578063c68b330514610a885761034f565b8063a22cb46511610163578063b366d6131161013d578063b366d6131461098c578063b7c0b8e8146109b4578063b88d4fde146109dc578063bbadfe76146109f85761034f565b8063a22cb46514610912578063a9fc664e1461093a578063aa592f25146109625761034f565b806374d0101d1161019f57806374d0101d1461085a5780638da5cb5b1461088257806395d89b41146108ac5780639d645a44146108d65761034f565b80636c3b8699146107f257806370a0823114610808578063715018a6146108445761034f565b80632e8da8291161029f57806355f804b31161023d5780636134716211610217578063613471621461073c5780636352211e146107645780636817c76c146107a057806369e2f0fb146107ca5761034f565b806355f804b3146106c25780635944c753146106ea5780635d4c1d46146107125761034f565b80633dd08c38116102795780633dd08c381461061857806342842e0e14610654578063495c8bf9146106705780634f9d2c0c1461069a5761034f565b80632e8da8291461059e57806334531828146105da5780633ccfd60b146106025761034f565b8063098144d41161030c5780631b25b077116102e65780631b25b077146104df5780631c33b3281461051b57806323b872dd146105455780632a55205a146105615761034f565b8063098144d414610463578063109695231461048d57806318160ddd146104b55761034f565b8063014635461461035357806301ffc9a71461037d57806304634d8d146103b957806306fdde03146103e1578063081812fc1461040b578063095ea7b314610447575b5f80fd5b34801561035e575f80fd5b50610367610c9e565b60405161037491906144fa565b60405180910390f35b348015610388575f80fd5b506103a3600480360381019061039e9190614579565b610cb4565b6040516103b091906145be565b60405180910390f35b3480156103c4575f80fd5b506103df60048036038101906103da9190614642565b610cc5565b005b3480156103ec575f80fd5b506103f5610ce3565b60405161040291906146f0565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190614743565b610d73565b60405161043e91906144fa565b60405180910390f35b610461600480360381019061045c919061476e565b610dcc565b005b34801561046e575f80fd5b50610477610dda565b6040516104849190614807565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae9190614881565b610e02565b005b3480156104c0575f80fd5b506104c9610f1d565b6040516104d691906148db565b60405180910390f35b3480156104ea575f80fd5b50610505600480360381019061050091906148f4565b610f68565b60405161051291906145be565b60405180910390f35b348015610526575f80fd5b5061052f611063565b60405161053c91906149b7565b60405180910390f35b61055f600480360381019061055a91906149d0565b611068565b005b34801561056c575f80fd5b5061058760048036038101906105829190614a20565b611078565b604051610595929190614a5e565b60405180910390f35b3480156105a9575f80fd5b506105c460048036038101906105bf9190614a85565b61119a565b6040516105d191906145be565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190614579565b611336565b005b34801561060d575f80fd5b506106166113a8565b005b348015610623575f80fd5b5061063e60048036038101906106399190614a85565b611452565b60405161064b91906145be565b60405180910390f35b61066e600480360381019061066991906149d0565b61146f565b005b34801561067b575f80fd5b5061068461147f565b6040516106919190614b67565b60405180910390f35b3480156106a5575f80fd5b506106c060048036038101906106bb919061476e565b611663565b005b3480156106cd575f80fd5b506106e860048036038101906106e39190614881565b6117a9565b005b3480156106f5575f80fd5b50610710600480360381019061070b9190614b87565b61187d565b005b34801561071d575f80fd5b5061072661189d565b6040516107339190614c00565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190614c66565b6118a2565b005b34801561076f575f80fd5b5061078a60048036038101906107859190614743565b611a58565b60405161079791906144fa565b60405180910390f35b3480156107ab575f80fd5b506107b4611a69565b6040516107c191906148db565b60405180910390f35b3480156107d5575f80fd5b506107f060048036038101906107eb9190614a85565b611a6f565b005b3480156107fd575f80fd5b50610806611ace565b005b348015610813575f80fd5b5061082e60048036038101906108299190614a85565b611be9565b60405161083b91906148db565b60405180910390f35b34801561084f575f80fd5b50610858611c7d565b005b348015610865575f80fd5b50610880600480360381019061087b919061476e565b611c90565b005b34801561088d575f80fd5b50610896611ca6565b6040516108a391906144fa565b60405180910390f35b3480156108b7575f80fd5b506108c0611cce565b6040516108cd91906146f0565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f79190614a85565b611d5e565b60405161090991906145be565b60405180910390f35b34801561091d575f80fd5b5061093860048036038101906109339190614ce0565b611efa565b005b348015610945575f80fd5b50610960600480360381019061095b9190614a85565b611f08565b005b34801561096d575f80fd5b506109766120bd565b60405161098391906148db565b60405180910390f35b348015610997575f80fd5b506109b260048036038101906109ad9190614a85565b6120c2565b005b3480156109bf575f80fd5b506109da60048036038101906109d59190614d1e565b612122565b005b6109f660048036038101906109f19190614e71565b6121fc565b005b348015610a03575f80fd5b50610a1e6004803603810190610a199190614579565b61220e565b604051610a2b91906145be565b60405180910390f35b348015610a3f575f80fd5b50610a4861222b565b604051610a559190614f4f565b60405180910390f35b348015610a69575f80fd5b50610a7261237c565b604051610a7f91906146f0565b60405180910390f35b348015610a93575f80fd5b50610aae6004803603810190610aa99190614d1e565b612408565b005b348015610abb575f80fd5b50610ac4612433565b604051610ad191906146f0565b60405180910390f35b348015610ae5575f80fd5b50610b006004803603810190610afb9190614743565b6124bf565b604051610b0d91906146f0565b60405180910390f35b610b306004803603810190610b2b919061476e565b612563565b005b348015610b3d575f80fd5b50610b466126c6565b604051610b539190614b67565b60405180910390f35b348015610b67575f80fd5b50610b826004803603810190610b7d9190614a85565b6128aa565b604051610b8f91906148db565b60405180910390f35b348015610ba3575f80fd5b50610bbe6004803603810190610bb99190614a85565b6128bb565b005b348015610bcb575f80fd5b50610be66004803603810190610be19190614f68565b6129c8565b604051610bf391906145be565b60405180910390f35b348015610c07575f80fd5b50610c226004803603810190610c1d9190614a85565b612a56565b005b348015610c2f575f80fd5b50610c4a6004803603810190610c459190614743565b612ada565b005b348015610c57575f80fd5b50610c60612aec565b604051610c6d91906145be565b60405180910390f35b348015610c81575f80fd5b50610c9c6004803603810190610c979190614fa6565b612afe565b005b71721c310194ccfc01e523fc93c9cccfa2a0ac81565b5f610cbe82612c4d565b9050919050565b610ccd612cc6565b610cd5612d4d565b610cdf8282612d57565b5050565b606060028054610cf290615037565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1e90615037565b8015610d695780601f10610d4057610100808354040283529160200191610d69565b820191905f5260205f20905b815481529060010190602001808311610d4c57829003601f168201915b5050505050905090565b5f610d7d82612db3565b610d9257610d9163cf4700e460e01b612e56565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610dd68282612e5e565b5050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff1615610eb8576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec0612cc6565b5f600e8054610ece90615037565b905014610f07576040517f19e24c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600e9182610f18929190615205565b505050565b5f610f26612e6e565b6001545f54030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f58612e76565b14610f6557600854810190505b90565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110575760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88585856040518463ffffffff1660e01b815260040161101b939291906152d2565b5f6040518083038186803b158015611031575f80fd5b505afa925050508015611042575060015b61104e575f905061105c565b6001905061105c565b600190505b9392505050565b600181565b611073838383612e9d565b505050565b5f805f600b5f8681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f825f0160149054906101000a90046bffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361114c57600a5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600a5f0160149054906101000a90046bffffffffffffffffffffffff1690505b5f611155613148565b6bffffffffffffffffffffffff16826bffffffffffffffffffffffff168861117d9190615334565b61118791906153a2565b9050828195509550505050509250929050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132d5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d72dde5e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161128691906144fa565b606060405180830381865afa1580156112a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c5919061545f565b60200151846040518363ffffffff1660e01b81526004016112e792919061548a565b602060405180830381865afa158015611302573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132691906154c5565b9050611331565b5f90505b919050565b61133e612cc6565b600160145f837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6113b0612cc6565b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516113d59061551d565b5f6040518083038185875af1925050503d805f811461140f576040519150601f19603f3d011682016040523d82523d5f602084013e611414565b606091505b505090508061144f576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6015602052805f5260405f205f915054906101000a900460ff1681565b61147a838383613151565b505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116145760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fe5df9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161156c91906144fa565b606060405180830381865afa158015611587573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ab919061545f565b602001516040518263ffffffff1660e01b81526004016115cb9190614c00565b5f60405180830381865afa1580156115e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061160d9190615605565b9050611660565b5f67ffffffffffffffff81111561162e5761162d614d4d565b5b60405190808252806020026020018201604052801561165c5781602001602082028036833780820191505090505b5090505b90565b6001151560155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90615696565b60405180910390fd5b6001151560135f9054906101000a900460ff16151514611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f906156fe565b60405180910390fd5b6203f480601254611759919061571c565b42111561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290615799565b60405180910390fd5b6117a58282613170565b5050565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff161561185f576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611867612cc6565b8181600d9182611878929190615205565b505050565b611885612cc6565b61188d612d4d565b6118988383836132e4565b505050565b600181565b6118aa612d4d565b5f6118b3610dda565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361191a576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663da0194c030866040518363ffffffff1660e01b81526004016119559291906157b7565b5f604051808303815f87803b15801561196c575f80fd5b505af115801561197e573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632304aa0230856040518363ffffffff1660e01b81526004016119bd9291906157de565b5f604051808303815f87803b1580156119d4575f80fd5b505af11580156119e6573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16638d74431430846040518363ffffffff1660e01b8152600401611a259291906157de565b5f604051808303815f87803b158015611a3c575f80fd5b505af1158015611a4e573d5f803e3d5ffd5b5050505050505050565b5f611a6282613343565b9050919050565b60115481565b611a77612cc6565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611ad6612d4d565b611af171721c310194ccfc01e523fc93c9cccfa2a0ac611f08565b71721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff1663da0194c03060016040518363ffffffff1660e01b8152600401611b3f9291906157b7565b5f604051808303815f87803b158015611b56575f80fd5b505af1158015611b68573d5f803e3d5ffd5b5050505071721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff16632304aa023060016040518363ffffffff1660e01b8152600401611bba9291906157de565b5f604051808303815f87803b158015611bd1575f80fd5b505af1158015611be3573d5f803e3d5ffd5b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2e57611c2d638f4eb60460e01b612e56565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611c85612cc6565b611c8e5f613452565b565b611c98612cc6565b611ca28282613170565b5050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611cdd90615037565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0990615037565b8015611d545780601f10611d2b57610100808354040283529160200191611d54565b820191905f5260205f20905b815481529060010190602001808311611d3757829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef15760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639445f53060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401611e4a91906144fa565b606060405180830381865afa158015611e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e89919061545f565b60400151846040518363ffffffff1660e01b8152600401611eab92919061548a565b602060405180830381865afa158015611ec6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eea91906154c5565b9050611ef5565b5f90505b919050565b611f048282613515565b5050565b611f10612d4d565b5f808273ffffffffffffffffffffffffffffffffffffffff163b1115611fae578173ffffffffffffffffffffffffffffffffffffffff166301ffc9a75f6040518263ffffffff1660e01b8152600401611f699190615814565b602060405180830381865afa925050508015611fa357506040513d601f19601f82011682018060405250810190611fa091906154c5565b60015b15611fad57809150505b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611fe8575080155b1561201f576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161207192919061582d565b60405180910390a18160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c81565b6120ca612cc6565b600160155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff16156121d8576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121e0612cc6565b80600f5f6101000a81548160ff02191690831515021790555050565b6122088484848461361b565b50505050565b6014602052805f5260405f205f915054906101000a900460ff1681565b612233614469565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123275760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016122e191906144fa565b606060405180830381865afa1580156122fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612320919061545f565b9050612379565b60405180606001604052805f600681111561234557612344614944565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090505b90565b6010805461238990615037565b80601f01602080910402602001604051908101604052809291908181526020018280546123b590615037565b80156124005780601f106123d757610100808354040283529160200191612400565b820191905f5260205f20905b8154815290600101906020018083116123e357829003601f168201915b505050505081565b612410612cc6565b8060135f6101000a81548160ff0219169083151502179055504260128190555050565b600e805461244090615037565b80601f016020809104026020016040519081016040528092919081815260200182805461246c90615037565b80156124b75780601f1061248e576101008083540402835291602001916124b7565b820191905f5260205f20905b81548152906001019060200180831161249a57829003601f168201915b505050505081565b60606124ca82612db3565b612509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612500906158c4565b60405180910390fd5b5f61251261366c565b90505f8151116125305760405180602001604052805f81525061255b565b8061253a846136fc565b60405160200161254b92919061591c565b6040516020818303038152906040525b915050919050565b6001151560135f9054906101000a900460ff161515146125b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125af906156fe565b60405180910390fd5b6203f4806012546125c9919061571c565b42111561260b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260290615799565b60405180910390fd5b5f6011548261261a9190615334565b90508034101561265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265690615989565b60405180910390fd5b6126698383613170565b803411156126c1573373ffffffffffffffffffffffffffffffffffffffff166108fc823461269791906159a7565b90811502906040515f60405180830381858888f193505050501580156126bf573d5f803e3d5ffd5b505b505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461285b5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e94a6c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016127b391906144fa565b606060405180830381865afa1580156127ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f2919061545f565b604001516040518263ffffffff1660e01b81526004016128129190614c00565b5f60405180830381865afa15801561282c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906128549190615605565b90506128a7565b5f67ffffffffffffffff81111561287557612874614d4d565b5b6040519080825280602002602001820160405280156128a35781602001602082028036833780820191505090505b5090505b90565b5f6128b4826137c6565b9050919050565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff1615612971576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612979612cc6565b600c61298361381a565b106129ba576040517f1f0f14ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129c581600c613170565b50565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b612a5e612cc6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ace575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612ac591906144fa565b60405180910390fd5b612ad781613452565b50565b612ae2612cc6565b8060118190555050565b600f5f9054906101000a900460ff1681565b612b06612d4d565b612b0f84611f08565b8373ffffffffffffffffffffffffffffffffffffffff1663da0194c030856040518363ffffffff1660e01b8152600401612b4a9291906157b7565b5f604051808303815f87803b158015612b61575f80fd5b505af1158015612b73573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16632304aa0230846040518363ffffffff1660e01b8152600401612bb29291906157de565b5f604051808303815f87803b158015612bc9575f80fd5b505af1158015612bdb573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16638d74431430836040518363ffffffff1660e01b8152600401612c1a9291906157de565b5f604051808303815f87803b158015612c31575f80fd5b505af1158015612c43573d5f803e3d5ffd5b5050505050505050565b5f7f86455d28000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612cbf5750612cbe82613861565b5b9050919050565b612cce6138f2565b73ffffffffffffffffffffffffffffffffffffffff16612cec611ca6565b73ffffffffffffffffffffffffffffffffffffffff1614612d4b57612d0f6138f2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612d4291906144fa565b60405180910390fd5b565b612d55612cc6565b565b612d6182826138f9565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef82604051612da791906159e9565b60405180910390a25050565b5f81612dbd612e6e565b11612e5057612dca612e76565b821115612df257612deb60045f8481526020019081526020015f2054613a94565b9050612e51565b5f54821015612e4f575f5b5f60045f8581526020019081526020015f205491508103612e295782612e2290615a02565b9250612dfd565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b612e6a82826001613ad4565b5050565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f612ea782613343565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f1c57612f1b63a114810060e01b612e56565b5b5f80612f2784613bfe565b91509150612f3d8187612f38613c21565b613c2f565b612f6857612f5286612f4d613c21565b6129c8565b612f6757612f666359c896be60e01b612e56565b5b5b612f758686866001613c72565b8015612f7f575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81546001019190508190555061304785613023888887613ca4565b7c020000000000000000000000000000000000000000000000000000000017613ccb565b60045f8681526020019081526020015f20819055505f7c02000000000000000000000000000000000000000000000000000000008416036130c3575f6001850190505f60045f8381526020019081526020015f2054036130c1575f5481146130c0578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f81036131325761313163ea553b3460e01b612e56565b5b61313f8787876001613cf5565b50505050505050565b5f612710905090565b61316b83838360405180602001604052805f8152506121fc565b505050565b5f805490505f820361318d5761318c63b562e8dd60e01b612e56565b5b6131995f848385613c72565b6131b7836131a85f865f613ca4565b6131b185613d27565b17613ccb565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f810361326857613267632e07630060e01b612e56565b5b5f83830190505f83905061327a612e76565b600183031115613295576132946381647e3a60e01b612e56565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a481816001019150810361329657815f819055505050506132df5f848385613cf5565b505050565b6132ef838383613d36565b8173ffffffffffffffffffffffffffffffffffffffff16837f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c8360405161333691906159e9565b60405180910390a3505050565b5f8161334d612e6e565b1161343c5760045f8381526020019081526020015f2054905061336e612e76565b8211156133935761337e81613a94565b61344d5761339263df2d9b4260e01b612e56565b5b5f8103613414575f5482106133b3576133b263df2d9b4260e01b612e56565b5b5b60045f836001900393508381526020019081526020015f205490505f81031561340f575f7c01000000000000000000000000000000000000000000000000000000008216031561344d5761340e63df2d9b4260e01b612e56565b5b6133b4565b5f7c01000000000000000000000000000000000000000000000000000000008216031561344d575b61344c63df2d9b4260e01b612e56565b5b919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060075f613521613c21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166135ca613c21565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161360f91906145be565b60405180910390a35050565b613626848484611068565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146136665761365084848484613ee5565b6136655761366463d1a57ed660e01b612e56565b5b5b50505050565b6060600d805461367b90615037565b80601f01602080910402602001604051908101604052809291908181526020018280546136a790615037565b80156136f25780601f106136c9576101008083540402835291602001916136f2565b820191905f5260205f20905b8154815290600101906020018083116136d557829003601f168201915b5050505050905090565b60605f600161370a8461400f565b0190505f8167ffffffffffffffff81111561372857613727614d4d565b5b6040519080825280601f01601f19166020018201604052801561375a5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156137bb578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816137b0576137af615375565b5b0494505f8503613767575b819350505050919050565b5f67ffffffffffffffff604060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c169050919050565b5f613823612e6e565b5f540390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613851612e76565b1461385e57600854810190505b90565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806138bb57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806138eb5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f33905090565b5f613902613148565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156139675781816040517f6f483d0900000000000000000000000000000000000000000000000000000000815260040161395e929190615a59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036139d7575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016139ce91906144fa565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f613ade83611a58565b9050818015613b2057508073ffffffffffffffffffffffffffffffffffffffff16613b07613c21565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613b4c57613b3681613b31613c21565b6129c8565b613b4b57613b4a63cfb3b94260e01b612e56565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f613c2a6138f2565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b5f5b81811015613c9d57613c9285858386613c8d919061571c565b614160565b806001019050613c74565b5050505050565b5f8060e883901c905060e8613cba86868461425e565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b5f5b81811015613d2057613d1585858386613d10919061571c565b614266565b806001019050613cf7565b5050505050565b5f6001821460e11b9050919050565b5f613d3f613148565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115613da6578382826040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600401613d9d93929190615a80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e1857835f6040517f969f0852000000000000000000000000000000000000000000000000000000008152600401613e0f929190615ab5565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600b5f8681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505050505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613f0a613c21565b8786866040518563ffffffff1660e01b8152600401613f2c9493929190615b2e565b6020604051808303815f875af1925050508015613f6757506040513d601f19601f82011682018060405250810190613f649190615b8c565b60015b613fbc573d805f8114613f95576040519150601f19603f3d011682016040523d82523d5f602084013e613f9a565b606091505b505f815103613fb457613fb363d1a57ed660e01b612e56565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061406b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161406157614060615375565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106140a8576d04ee2d6d415b85acef8100000000838161409e5761409d615375565b5b0492506020810190505b662386f26fc1000083106140d757662386f26fc1000083816140cd576140cc615375565b5b0492506010810190505b6305f5e1008310614100576305f5e10083816140f6576140f5615375565b5b0492506008810190505b612710831061412557612710838161411b5761411a615375565b5b0492506004810190505b60648310614148576064838161413e5761413d615375565b5b0492506002810190505b600a8310614157576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156141ce5750805b15614205576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156142235761421e6142166138f2565b858534614364565b614257565b80156142415761423c6142346138f2565b86853461436a565b614256565b61425561424c6138f2565b86868634614370565b5b5b5050505050565b5f9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156142d45750805b1561430b576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156143295761432461431c6138f2565b858534614456565b61435d565b80156143475761434261433a6138f2565b86853461445c565b61435c565b61435b6143526138f2565b86868634614462565b5b5b5050505050565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461444f5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88686866040518463ffffffff1660e01b8152600401614422939291906152d2565b5f6040518083038186803b158015614438575f80fd5b505afa15801561444a573d5f803e3d5ffd5b505050505b5050505050565b50505050565b50505050565b5050505050565b60405180606001604052805f600681111561448757614486614944565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6144e4826144bb565b9050919050565b6144f4816144da565b82525050565b5f60208201905061450d5f8301846144eb565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61455881614524565b8114614562575f80fd5b50565b5f813590506145738161454f565b92915050565b5f6020828403121561458e5761458d61451c565b5b5f61459b84828501614565565b91505092915050565b5f8115159050919050565b6145b8816145a4565b82525050565b5f6020820190506145d15f8301846145af565b92915050565b6145e0816144da565b81146145ea575f80fd5b50565b5f813590506145fb816145d7565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61462181614601565b811461462b575f80fd5b50565b5f8135905061463c81614618565b92915050565b5f80604083850312156146585761465761451c565b5b5f614665858286016145ed565b92505060206146768582860161462e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6146c282614680565b6146cc818561468a565b93506146dc81856020860161469a565b6146e5816146a8565b840191505092915050565b5f6020820190508181035f83015261470881846146b8565b905092915050565b5f819050919050565b61472281614710565b811461472c575f80fd5b50565b5f8135905061473d81614719565b92915050565b5f602082840312156147585761475761451c565b5b5f6147658482850161472f565b91505092915050565b5f80604083850312156147845761478361451c565b5b5f614791858286016145ed565b92505060206147a28582860161472f565b9150509250929050565b5f819050919050565b5f6147cf6147ca6147c5846144bb565b6147ac565b6144bb565b9050919050565b5f6147e0826147b5565b9050919050565b5f6147f1826147d6565b9050919050565b614801816147e7565b82525050565b5f60208201905061481a5f8301846147f8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261484157614840614820565b5b8235905067ffffffffffffffff81111561485e5761485d614824565b5b60208301915083600182028301111561487a57614879614828565b5b9250929050565b5f80602083850312156148975761489661451c565b5b5f83013567ffffffffffffffff8111156148b4576148b3614520565b5b6148c08582860161482c565b92509250509250929050565b6148d581614710565b82525050565b5f6020820190506148ee5f8301846148cc565b92915050565b5f805f6060848603121561490b5761490a61451c565b5b5f614918868287016145ed565b9350506020614929868287016145ed565b925050604061493a868287016145ed565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6007811061498257614981614944565b5b50565b5f81905061499282614971565b919050565b5f6149a182614985565b9050919050565b6149b181614997565b82525050565b5f6020820190506149ca5f8301846149a8565b92915050565b5f805f606084860312156149e7576149e661451c565b5b5f6149f4868287016145ed565b9350506020614a05868287016145ed565b9250506040614a168682870161472f565b9150509250925092565b5f8060408385031215614a3657614a3561451c565b5b5f614a438582860161472f565b9250506020614a548582860161472f565b9150509250929050565b5f604082019050614a715f8301856144eb565b614a7e60208301846148cc565b9392505050565b5f60208284031215614a9a57614a9961451c565b5b5f614aa7848285016145ed565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614ae2816144da565b82525050565b5f614af38383614ad9565b60208301905092915050565b5f602082019050919050565b5f614b1582614ab0565b614b1f8185614aba565b9350614b2a83614aca565b805f5b83811015614b5a578151614b418882614ae8565b9750614b4c83614aff565b925050600181019050614b2d565b5085935050505092915050565b5f6020820190508181035f830152614b7f8184614b0b565b905092915050565b5f805f60608486031215614b9e57614b9d61451c565b5b5f614bab8682870161472f565b9350506020614bbc868287016145ed565b9250506040614bcd8682870161462e565b9150509250925092565b5f6effffffffffffffffffffffffffffff82169050919050565b614bfa81614bd7565b82525050565b5f602082019050614c135f830184614bf1565b92915050565b60078110614c25575f80fd5b50565b5f81359050614c3681614c19565b92915050565b614c4581614bd7565b8114614c4f575f80fd5b50565b5f81359050614c6081614c3c565b92915050565b5f805f60608486031215614c7d57614c7c61451c565b5b5f614c8a86828701614c28565b9350506020614c9b86828701614c52565b9250506040614cac86828701614c52565b9150509250925092565b614cbf816145a4565b8114614cc9575f80fd5b50565b5f81359050614cda81614cb6565b92915050565b5f8060408385031215614cf657614cf561451c565b5b5f614d03858286016145ed565b9250506020614d1485828601614ccc565b9150509250929050565b5f60208284031215614d3357614d3261451c565b5b5f614d4084828501614ccc565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614d83826146a8565b810181811067ffffffffffffffff82111715614da257614da1614d4d565b5b80604052505050565b5f614db4614513565b9050614dc08282614d7a565b919050565b5f67ffffffffffffffff821115614ddf57614dde614d4d565b5b614de8826146a8565b9050602081019050919050565b828183375f83830152505050565b5f614e15614e1084614dc5565b614dab565b905082815260208101848484011115614e3157614e30614d49565b5b614e3c848285614df5565b509392505050565b5f82601f830112614e5857614e57614820565b5b8135614e68848260208601614e03565b91505092915050565b5f805f8060808587031215614e8957614e8861451c565b5b5f614e96878288016145ed565b9450506020614ea7878288016145ed565b9350506040614eb88782880161472f565b925050606085013567ffffffffffffffff811115614ed957614ed8614520565b5b614ee587828801614e44565b91505092959194509250565b614efa81614997565b82525050565b614f0981614bd7565b82525050565b606082015f820151614f235f850182614ef1565b506020820151614f366020850182614f00565b506040820151614f496040850182614f00565b50505050565b5f606082019050614f625f830184614f0f565b92915050565b5f8060408385031215614f7e57614f7d61451c565b5b5f614f8b858286016145ed565b9250506020614f9c858286016145ed565b9150509250929050565b5f805f8060808587031215614fbe57614fbd61451c565b5b5f614fcb878288016145ed565b9450506020614fdc87828801614c28565b9350506040614fed87828801614c52565b9250506060614ffe87828801614c52565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061504e57607f821691505b6020821081036150615761506061500a565b5b50919050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026150cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615092565b6150d78683615092565b95508019841693508086168417925050509392505050565b5f6151096151046150ff84614710565b6147ac565b614710565b9050919050565b5f819050919050565b615122836150ef565b61513661512e82615110565b84845461509e565b825550505050565b5f90565b61514a61513e565b615155818484615119565b505050565b5b818110156151785761516d5f82615142565b60018101905061515b565b5050565b601f8211156151bd5761518e81615071565b61519784615083565b810160208510156151a6578190505b6151ba6151b285615083565b83018261515a565b50505b505050565b5f82821c905092915050565b5f6151dd5f19846008026151c2565b1980831691505092915050565b5f6151f583836151ce565b9150826002028217905092915050565b61520f8383615067565b67ffffffffffffffff81111561522857615227614d4d565b5b6152328254615037565b61523d82828561517c565b5f601f83116001811461526a575f8415615258578287013590505b61526285826151ea565b8655506152c9565b601f19841661527886615071565b5f5b8281101561529f5784890135825560018201915060208501945060208101905061527a565b868310156152bc57848901356152b8601f8916826151ce565b8355505b6001600288020188555050505b50505050505050565b5f6060820190506152e55f8301866144eb565b6152f260208301856144eb565b6152ff60408301846144eb565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61533e82614710565b915061534983614710565b925082820261535781614710565b9150828204841483151761536e5761536d615307565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6153ac82614710565b91506153b783614710565b9250826153c7576153c6615375565b5b828204905092915050565b5f80fd5b5f815190506153e481614c19565b92915050565b5f815190506153f881614c3c565b92915050565b5f60608284031215615413576154126153d2565b5b61541d6060614dab565b90505f61542c848285016153d6565b5f83015250602061543f848285016153ea565b6020830152506040615453848285016153ea565b60408301525092915050565b5f606082840312156154745761547361451c565b5b5f615481848285016153fe565b91505092915050565b5f60408201905061549d5f830185614bf1565b6154aa60208301846144eb565b9392505050565b5f815190506154bf81614cb6565b92915050565b5f602082840312156154da576154d961451c565b5b5f6154e7848285016154b1565b91505092915050565b5f81905092915050565b50565b5f6155085f836154f0565b9150615513826154fa565b5f82019050919050565b5f615527826154fd565b9150819050919050565b5f67ffffffffffffffff82111561554b5761554a614d4d565b5b602082029050602081019050919050565b5f8151905061556a816145d7565b92915050565b5f61558261557d84615531565b614dab565b905080838252602082019050602084028301858111156155a5576155a4614828565b5b835b818110156155ce57806155ba888261555c565b8452602084019350506020810190506155a7565b5050509392505050565b5f82601f8301126155ec576155eb614820565b5b81516155fc848260208601615570565b91505092915050565b5f6020828403121561561a5761561961451c565b5b5f82015167ffffffffffffffff81111561563757615636614520565b5b615643848285016155d8565b91505092915050565b7f596f75277265206e6f742061206d696e746572000000000000000000000000005f82015250565b5f61568060138361468a565b915061568b8261564c565b602082019050919050565b5f6020820190508181035f8301526156ad81615674565b9050919050565b7f4d696e74696e67206973206e6f742073746172746564207965740000000000005f82015250565b5f6156e8601a8361468a565b91506156f3826156b4565b602082019050919050565b5f6020820190508181035f830152615715816156dc565b9050919050565b5f61572682614710565b915061573183614710565b925082820190508082111561574957615748615307565b5b92915050565b7f4d696e74696e672054696d6573207570000000000000000000000000000000005f82015250565b5f61578360108361468a565b915061578e8261574f565b602082019050919050565b5f6020820190508181035f8301526157b081615777565b9050919050565b5f6040820190506157ca5f8301856144eb565b6157d760208301846149a8565b9392505050565b5f6040820190506157f15f8301856144eb565b6157fe6020830184614bf1565b9392505050565b61580e81614524565b82525050565b5f6020820190506158275f830184615805565b92915050565b5f6040820190506158405f8301856144eb565b61584d60208301846144eb565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6158ae602f8361468a565b91506158b982615854565b604082019050919050565b5f6020820190508181035f8301526158db816158a2565b9050919050565b5f81905092915050565b5f6158f682614680565b61590081856158e2565b935061591081856020860161469a565b80840191505092915050565b5f61592782856158ec565b915061593382846158ec565b91508190509392505050565b7f45746865722073656e74206973206e6f7420636f72726563742e0000000000005f82015250565b5f615973601a8361468a565b915061597e8261593f565b602082019050919050565b5f6020820190508181035f8301526159a081615967565b9050919050565b5f6159b182614710565b91506159bc83614710565b92508282039050818111156159d4576159d3615307565b5b92915050565b6159e381614601565b82525050565b5f6020820190506159fc5f8301846159da565b92915050565b5f615a0c82614710565b91505f8203615a1e57615a1d615307565b5b600182039050919050565b5f615a43615a3e615a3984614601565b6147ac565b614710565b9050919050565b615a5381615a29565b82525050565b5f604082019050615a6c5f830185615a4a565b615a7960208301846148cc565b9392505050565b5f606082019050615a935f8301866148cc565b615aa06020830185615a4a565b615aad60408301846148cc565b949350505050565b5f604082019050615ac85f8301856148cc565b615ad560208301846144eb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f615b0082615adc565b615b0a8185615ae6565b9350615b1a81856020860161469a565b615b23816146a8565b840191505092915050565b5f608082019050615b415f8301876144eb565b615b4e60208301866144eb565b615b5b60408301856148cc565b8181036060830152615b6d8184615af6565b905095945050505050565b5f81519050615b868161454f565b92915050565b5f60208284031215615ba157615ba061451c565b5b5f615bae84828501615b78565b9150509291505056fea2646970667358221220a3a1b43c38efa8d75ff9019a44c19fe687dd278e6a1faef7bfa1281bca6f66b764736f6c634300081a003300000000000000000000000059de7273191e6bf1907d614e94ecfbe8e5fb73180000000000000000000000000116991b4edf3d88a9db4850b2c9fc5a326b14b500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000003bdc72443bd7fe4ab1ecbbfe04389e3b4197941b
0x00000000000000000000000059de7273191e6bf1907d614e94ecfbe8e5fb73180000000000000000000000000116991b4edf3d88a9db4850b2c9fc5a326b14b500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000003bdc72443bd7fe4ab1ecbbfe04389e3b4197941b
----Decoded View------------Arg [0] : initialOwner (address): 0x59dE7273191E6bf1907d614e94eCFbe8e5FB7318Arg [1] : royaltyReceiver_ (address): 0x0116991B4eDF3D88a9Db4850b2C9FC5a326b14b5Arg [2] : royaltyFeeNumerator_ (uint96): 500Arg [3] : _minter (address): 0x3bDC72443bD7fE4Ab1EcbBFE04389e3B4197941B
----Encoded View------------Arg [0] : 0x00000000000000000000000059de7273191e6bf1907d614e94ecfbe8e5fb7318Arg [1] : 0x0000000000000000000000000116991b4edf3d88a9db4850b2c9fc5a326b14b5Arg [2] : 0x00000000000000000000000000000000000000000000000000000000000001f4Arg [3] : 0x0000000000000000000000003bdc72443bd7fe4ab1ecbbfe04389e3b4197941b