[ { "inputs": [ { "internalType": "address", "name": "_defaultAdmin", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint128", "name": "_royaltyBps", "type": "uint128" }, { "internalType": "address", "name": "_primarySaleRecipient", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BatchMintInvalidBatchId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BatchMintInvalidTokenId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "name": "BatchMintMetadataFrozen", "type": "error" }, { "inputs": [], "name": "ContractMetadataUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "CurrencyTransferLibFailedNativeTransfer", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnableUnauthorized", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PrimarySaleInvalidRecipient", "type": "error" }, { "inputs": [], "name": "PrimarySaleUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "RoyaltyExceededMaxFeeBps", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "RoyaltyInvalidRecipient", "type": "error" }, { "inputs": [], "name": "RoyaltyUnauthorized", "type": "error" }, { "inputs": [], "name": "SignatureMintInvalidQuantity", "type": "error" }, { "inputs": [], "name": "SignatureMintInvalidRecipient", "type": "error" }, { "inputs": [], "name": "SignatureMintInvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "actualTime", "type": "uint256" } ], "name": "SignatureMintInvalidTime", "type": "error" }, { "inputs": [], "name": "SignatureMintUnauthorized", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "prevURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newRoyaltyBps", "type": "uint256" } ], "name": "DefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PrimarySaleRecipientUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "royaltyBps", "type": "uint256" } ], "name": "RoyaltyForToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "mintedTo", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenIdMinted", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "indexed": false, "internalType": "struct ISignatureMintERC721.MintRequest", "name": "mintRequest", "type": "tuple" } ], "name": "TokensMintedWithSignature", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "batchFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, { "internalType": "string", "name": "_baseURI", "type": "string" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "batchMintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": "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": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseURICount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getBatchIdAtIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRoyaltyInfoForToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": "_operator", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "isApprovedOrOwner", "outputs": [ { "internalType": "bool", "name": "isApprovedOrOwnerOf", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "internalType": "struct ISignatureMintERC721.MintRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "mintWithSignature", "outputs": [ { "internalType": "address", "name": "signer", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "primarySaleRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "_royaltyBps", "type": "uint256" } ], "name": "setDefaultRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_saleRecipient", "type": "address" } ], "name": "setPrimarySaleRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_bps", "type": "uint256" } ], "name": "setRoyaltyInfoForToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "internalType": "struct ISignatureMintERC721.MintRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "address", "name": "signer", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
6101406040523480156200001257600080fd5b5060405162004672380380620046728339810160408190526200003591620003f9565b8585858585856040518060400160405280601381526020017f5369676e61747572654d696e7445524337323100000000000000000000000000815250604051806040016040528060018152602001603160f81b815250878787878783838160029081620000a391906200054c565b506003620000b282826200054c565b50506000805550620000c485620001ae565b620000d9826001600160801b03831662000200565b5050845160209586012084519486019490942060e08590526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818b01819052818301999099526060810194909452608080850193909352308483018190528151808603909301835260c0948501909152815191909801209052949094525050610120525060017f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b00556200019c8162000296565b50505050505050505050505062000618565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6127108111156200023457604051630a4930ad60e31b81526127106004820152602481018290526044015b60405180910390fd5b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b6001600160a01b038116620002ca57604051630f7cac3760e21b81526001600160a01b03821660048201526024016200022b565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b80516001600160a01b03811681146200032c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200035957600080fd5b81516001600160401b038082111562000376576200037662000331565b604051601f8301601f19908116603f01168101908282118183101715620003a157620003a162000331565b8160405283815260209250866020858801011115620003bf57600080fd5b600091505b83821015620003e35785820183015181830184015290820190620003c4565b6000602085830101528094505050505092915050565b60008060008060008060c087890312156200041357600080fd5b6200041e8762000314565b60208801519096506001600160401b03808211156200043c57600080fd5b6200044a8a838b0162000347565b965060408901519150808211156200046157600080fd5b506200047089828a0162000347565b945050620004816060880162000314565b60808801519093506001600160801b03811681146200049f57600080fd5b9150620004af60a0880162000314565b90509295509295509295565b600181811c90821680620004d057607f821691505b602082108103620004f157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000547576000816000526020600020601f850160051c81016020861015620005225750805b601f850160051c820191505b8181101562000543578281556001016200052e565b5050505b505050565b81516001600160401b0381111562000568576200056862000331565b6200058081620005798454620004bb565b84620004f7565b602080601f831160018114620005b857600084156200059f5750858301515b600019600386901b1c1916600185901b17855562000543565b600085815260208120601f198616915b82811015620005e957888601518255948401946001909101908401620005c8565b5085821015620006085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161400a620006686000396000612cad01526000612cfc01526000612cd701526000612c3001526000612c5a01526000612c84015261400a6000f3fe60806040526004361061023a5760003560e01c80636352211e1161012e57806399a2557a116100ab578063b88d4fde1161006f578063b88d4fde1461073f578063c23dc68f1461075f578063c87b56dd1461078c578063e8a3d485146107ac578063e985e9c5146107c157600080fd5b806399a2557a146106875780639bcf7a15146106a7578063a22cb465146106c7578063ac9650d8146106e7578063b24f2d391461071457600080fd5b806383040532116100f257806383040532146105d75780638462151c146106075780638da5cb5b14610634578063938e3d7b1461065257806395d89b411461067257600080fd5b80636352211e1461054257806363b45e2d146105625780636f4f28371461057757806370a0823114610597578063754a81d9146105b757600080fd5b8063252e82e8116101bc578063430c208111610180578063430c208114610480578063439c7be5146104a05780634cc157df146104b35780635bbb2177146104f5578063600dd5ea1461052257600080fd5b8063252e82e8146103ad5780632a55205a146103ec5780633b1475a71461042b57806342842e0e1461044057806342966c681461046057600080fd5b8063095ea7b311610203578063095ea7b31461030a57806313af40351461032a57806318160ddd1461034a57806323b872dd1461036d5780632419f51b1461038d57600080fd5b806275a3171461023f57806301ffc9a71461026157806306fdde0314610296578063079fe40e146102b8578063081812fc146102ea575b600080fd5b34801561024b57600080fd5b5061025f61025a3660046133dc565b61080a565b005b34801561026d57600080fd5b5061028161027c36600461343f565b61088e565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b506102ab6108fb565b60405161028d91906134ac565b3480156102c457600080fd5b506010546001600160a01b03165b6040516001600160a01b03909116815260200161028d565b3480156102f657600080fd5b506102d26103053660046134bf565b61098d565b34801561031657600080fd5b5061025f6103253660046134d8565b6109d1565b34801561033657600080fd5b5061025f610345366004613502565b610a57565b34801561035657600080fd5b50600154600054035b60405190815260200161028d565b34801561037957600080fd5b5061025f61038836600461351d565b610a88565b34801561039957600080fd5b5061035f6103a83660046134bf565b610a93565b3480156103b957600080fd5b506103cd6103c8366004613559565b610ae5565b6040805192151583526001600160a01b0390911660208301520161028d565b3480156103f857600080fd5b5061040c6104073660046135f8565b610b29565b604080516001600160a01b03909316835260208301919091520161028d565b34801561043757600080fd5b5060005461035f565b34801561044c57600080fd5b5061025f61045b36600461351d565b610b66565b34801561046c57600080fd5b5061025f61047b3660046134bf565b610b81565b34801561048c57600080fd5b5061028161049b3660046134d8565b610b8c565b6102d26104ae366004613559565b610c0b565b3480156104bf57600080fd5b506104d36104ce3660046134bf565b610e65565b604080516001600160a01b03909316835261ffff90911660208301520161028d565b34801561050157600080fd5b5061051561051036600461361a565b610ed0565b60405161028d91906136bf565b34801561052e57600080fd5b5061025f61053d3660046134d8565b610f96565b34801561054e57600080fd5b506102d261055d3660046134bf565b610fc5565b34801561056e57600080fd5b50600c5461035f565b34801561058357600080fd5b5061025f610592366004613502565b610fd7565b3480156105a357600080fd5b5061035f6105b2366004613502565b611005565b3480156105c357600080fd5b5061025f6105d2366004613729565b611053565b3480156105e357600080fd5b506102816105f23660046134bf565b600e6020526000908152604090205460ff1681565b34801561061357600080fd5b50610627610622366004613502565b6110c7565b60405161028d91906137a6565b34801561064057600080fd5b506009546001600160a01b03166102d2565b34801561065e57600080fd5b5061025f61066d3660046137de565b61120c565b34801561067e57600080fd5b506102ab61123a565b34801561069357600080fd5b506106276106a2366004613812565b611249565b3480156106b357600080fd5b5061025f6106c2366004613845565b6113fc565b3480156106d357600080fd5b5061025f6106e2366004613878565b61142c565b3480156106f357600080fd5b506107076107023660046138af565b6114c1565b60405161028d9190613923565b34801561072057600080fd5b50600a546001600160a01b03811690600160a01b900461ffff166104d3565b34801561074b57600080fd5b5061025f61075a366004613987565b611626565b34801561076b57600080fd5b5061077f61077a3660046134bf565b61166a565b60405161028d91906139e2565b34801561079857600080fd5b506102ab6107a73660046134bf565b611718565b3480156107b857600080fd5b506102ab611806565b3480156107cd57600080fd5b506102816107dc366004613a17565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610812611894565b61085d5760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b60448201526064015b60405180910390fd5b61086f61086960005490565b826118c1565b61088a82600160405180602001604052806000815250611933565b5050565b60006301ffc9a760e01b6001600160e01b0319831614806108bf57506380ac58cd60e01b6001600160e01b03198316145b806108da5750635b5e139f60e01b6001600160e01b03198316145b806108f557506001600160e01b0319821663152a902d60e11b145b92915050565b60606002805461090a90613a4a565b80601f016020809104026020016040519081016040528092919081815260200182805461093690613a4a565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b600061099882611ad6565b6109b5576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006109dc82610fc5565b9050806001600160a01b0316836001600160a01b031603610a105760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614610a4757610a2a81336107dc565b610a47576040516367d9dca160e11b815260040160405180910390fd5b610a52838383611b01565b505050565b610a5f611894565b610a7c576040516316ccb9cb60e11b815260040160405180910390fd5b610a8581611b5d565b50565b610a52838383611baf565b6000610a9e600c5490565b8210610ac057604051630793127760e11b815260048101839052602401610854565b600c8281548110610ad357610ad3613a84565b90600052602060002001549050919050565b600080610af3858585611d8a565b61014086013560009081526011602052604090205490915060ff16158015610b1f5750610b1f81611de6565b9150935093915050565b600080600080610b3886610e65565b90945084925061ffff169050612710610b518287613ab0565b610b5b9190613add565b925050509250929050565b610a5283838360405180602001604052806000815250611626565b610a85816001611e15565b600080610b9883610fc5565b9050806001600160a01b0316846001600160a01b03161480610bdf57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610c035750836001600160a01b0316610bf88461098d565b6001600160a01b0316145b949350505050565b600060027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b005403610c7e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610854565b60027f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0055600160a085013514610cea5760405162461bcd60e51b81526020600482015260116024820152707175616e746979206d757374206265203160781b6044820152606401610854565b600054610cf8858585611fc8565b91506000610d096020870187613502565b9050610d3e610d1e6080880160608901613502565b60a0880135610d346101008a0160e08b01613502565b8960c00135612117565b6000610d506040880160208901613502565b6001600160a01b031614158015610d6a5750604086013515155b15610d8d57610d8d82610d836040890160208a01613502565b8860400135612219565b610dd882610d9e6080890189613af1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118c192505050565b610de6818760a001356122cc565b81816001600160a01b0316846001600160a01b03167fee0cf9c3e87795b1932d13f80f892f620f567b4465e768ced5d64aa44ca1d64c89604051610e2a9190613bbc565b60405180910390a450506001610e5d7f1d281c488dae143b6ea4122e80c65059929950b9c32f17fc57be22089d9c3b0090565b559392505050565b6000818152600b60209081526040808320815180830190925280546001600160a01b031680835260019091015492820192909252829115610eac5780516020820151610ec6565b600a546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b80516060906000816001600160401b03811115610eef57610eef613327565b604051908082528060200260200182016040528015610f3a57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610f0d5790505b50905060005b828114610f8e57610f69858281518110610f5c57610f5c613a84565b602002602001015161166a565b828281518110610f7b57610f7b613a84565b6020908102919091010152600101610f40565b509392505050565b610f9e611894565b610fbb57604051636fae358160e11b815260040160405180910390fd5b61088a82826122e6565b6000610fd082612376565b5192915050565b610fdf611894565b610ffc57604051631c98210f60e21b815260040160405180910390fd5b610a8581612490565b60006001600160a01b03821661102e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b61105b611894565b6110a15760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b6044820152606401610854565b6110b46110ad60005490565b848461250c565b50506110c1848483611933565b50505050565b606060008060006110d785611005565b90506000816001600160401b038111156110f3576110f3613327565b60405190808252806020026020018201604052801561111c578160200160208202803683370190505b509050611142604080516060810182526000808252602082018190529181019190915290565b60005b83861461120057600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905292506111f85781516001600160a01b0316156111b957815194505b876001600160a01b0316856001600160a01b0316036111f857808387806001019850815181106111eb576111eb613a84565b6020026020010181815250505b600101611145565b50909695505050505050565b611214611894565b61123157604051639f7f092560e01b815260040160405180910390fd5b610a8581612570565b60606003805461090a90613a4a565b606081831061126b57604051631960ccad60e11b815260040160405180910390fd5b600080548084111561127b578093505b600061128687611005565b9050848610156112a5578585038181101561129f578091505b506112a9565b5060005b6000816001600160401b038111156112c3576112c3613327565b6040519080825280602002602001820160405280156112ec578160200160208202803683370190505b509050816000036113025793506113f592505050565b600061130d8861166a565b90506000816040015161131e575080515b885b8881141580156113305750848714155b156113e957600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905293506113e15782516001600160a01b0316156113a257825191505b8a6001600160a01b0316826001600160a01b0316036113e157808488806001019950815181106113d4576113d4613a84565b6020026020010181815250505b600101611320565b50505092835250909150505b9392505050565b611404611894565b61142157604051636fae358160e11b815260040160405180910390fd5b610a52838383612219565b336001600160a01b038316036114555760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6060816001600160401b038111156114db576114db613327565b60405190808252806020026020018201604052801561150e57816020015b60608152602001906001900390816114f95790505b509050336000805b8481101561161d578115611595576115733087878481811061153a5761153a613a84565b905060200281019061154c9190613af1565b8660405160200161155f93929190613cde565b60405160208183030381529060405261264c565b84828151811061158557611585613a84565b6020026020010181905250611615565b6115f7308787848181106115ab576115ab613a84565b90506020028101906115bd9190613af1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061264c92505050565b84828151811061160957611609613a84565b60200260200101819052505b600101611516565b50505092915050565b611631848484611baf565b6001600160a01b0383163b156110c15761164d84848484612671565b6110c1576040516368d2bf6b60e11b815260040160405180910390fd5b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810183905290915060005483106116af5792915050565b50600082815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16158015928201929092529061170f5792915050565b6113f583612376565b6000818152600f602052604081208054606092919061173690613a4a565b80601f016020809104026020016040519081016040528092919081815260200182805461176290613a4a565b80156117af5780601f10611784576101008083540402835291602001916117af565b820191906000526020600020905b81548152906001019060200180831161179257829003601f168201915b505050505090506000815111156117c65792915050565b60006117d18461275c565b9050806117dd856128da565b6040516020016117ee929190613d04565b60405160208183030381529060405292505050919050565b6008805461181390613a4a565b80601f016020809104026020016040519081016040528092919081815260200182805461183f90613a4a565b801561188c5780601f106118615761010080835404028352916020019161188c565b820191906000526020600020905b81548152906001019060200180831161186f57829003601f168201915b505050505081565b60006118a86009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b6000828152600f6020526040902080546118da90613a4a565b15905061191b5760405162461bcd60e51b815260206004820152600f60248201526e15549248185b1c9958591e481cd95d608a1b6044820152606401610854565b6000828152600f60205260409020610a528282613d83565b6000546001600160a01b03841661195c57604051622e076360e81b815260040160405180910390fd5b8260000361197d5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15611a93575b60405182906001600160a01b03881690600090600080516020613fb5833981519152908290a4611a5c6000878480600101955087612671565b611a79576040516368d2bf6b60e11b815260040160405180910390fd5b808210611a23578260005414611a8e57600080fd5b611ac6565b5b6040516001830192906001600160a01b03881690600090600080516020613fb5833981519152908290a4808210611a94575b5060009081556110c19085838684565b60008054821080156108f5575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6000611bba82612376565b9050836001600160a01b031681600001516001600160a01b031614611bf15760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480611c0f5750611c0f85336107dc565b80611c2a575033611c1f8461098d565b6001600160a01b0316145b905080611c4a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416611c7157604051633a954ecd60e21b815260040160405180910390fd5b611c7d60008487611b01565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116611d51576000548214611d5157805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020613fb583398151915260405160405180910390a45050505050565b6000610c0383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611de09250611dd491508890506129da565b80519060200120612b21565b90612b4e565b6000611dfa6009546001600160a01b031690565b6001600160a01b0316826001600160a01b0316149050919050565b6000611e2083612376565b80519091508215611e86576000336001600160a01b0383161480611e495750611e4982336107dc565b80611e64575033611e598661098d565b6001600160a01b0316145b905080611e8457604051632ce44b5f60e11b815260040160405180910390fd5b505b611e9260008583611b01565b6001600160a01b0380821660008181526005602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526004909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b178555918901808452922080549194909116611f90576000548214611f9057805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020613fb5833981519152908390a4505060018054810190555050565b600080611fd6858585610ae5565b9250905080611ff8576040516313caa65360e01b815260040160405180910390fd5b4261200b61012087016101008801613e42565b6001600160801b03161180612039575061202d61014086016101208701613e42565b6001600160801b031642115b156120945761205061012086016101008701613e42565b61206261014087016101208801613e42565b604051634da1c72f60e11b81526001600160801b03928316600482015291166024820152426044820152606401610854565b60006120a36020870187613502565b6001600160a01b0316036120ca576040516347587b6b60e11b815260040160405180910390fd5b8460a001356000036120ef57604051630f66273360e21b815260040160405180910390fd5b50610140909301356000908152601160205260409020805460ff191660011790555090919050565b8060000361215b5734156121565760405162461bcd60e51b81526020600482015260066024820152652156616c756560d01b6044820152606401610854565b6110c1565b60006121678285613ab0565b9050600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601612199575034811461219d565b5034155b806121de5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672076616c756560781b6044820152606401610854565b60006001600160a01b038716156121f55786612202565b6010546001600160a01b03165b905061221085338386612b6a565b50505050505050565b61271081111561224757604051630a4930ad60e31b8152612710600482015260248101829052604401610854565b6040805180820182526001600160a01b0384811680835260208084018681526000898152600b8352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b61088a828260405180602001604052806000815250611933565b61271081111561231457604051630a4930ad60e31b8152612710600482015260248101829052604401610854565b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b60408051606081018252600080825260208201819052918101919091528160005481101561247757600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906124755780516001600160a01b03161561240c579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215612470579392505050565b61240c565b505b604051636f96cda160e11b815260040160405180910390fd5b6001600160a01b0381166124c257604051630f7cac3760e21b81526001600160a01b0382166004820152602401610854565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6000806125198486613e5d565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7018190556000818152600d602052604090209092508291506125678482613d83565b50935093915050565b60006008805461257f90613a4a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ab90613a4a565b80156125f85780601f106125cd576101008083540402835291602001916125f8565b820191906000526020600020905b8154815290600101906020018083116125db57829003601f168201915b50505050509050816008908161260e9190613d83565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051612640929190613e70565b60405180910390a15050565b60606113f58383604051806060016040528060278152602001613f8e60279139612bab565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906126a6903390899088908890600401613e9e565b6020604051808303816000875af19250505080156126e1575060408051601f3d908101601f191682019092526126de91810190613ed1565b60015b61273f573d80801561270f576040519150601f19603f3d011682016040523d82523d6000602084013e612714565b606091505b508051600003612737576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b60606000612769600c5490565b90506000600c8054806020026020016040519081016040528092919081815260200182805480156127b957602002820191906000526020600020905b8154815260200190600101908083116127a5575b5050505050905060005b828110156128bd578181815181106127dd576127dd613a84565b60200260200101518510156128ab57600d600083838151811061280257612802613a84565b60200260200101518152602001908152602001600020805461282390613a4a565b80601f016020809104026020016040519081016040528092919081815260200182805461284f90613a4a565b801561289c5780601f106128715761010080835404028352916020019161289c565b820191906000526020600020905b81548152906001019060200180831161287f57829003601f168201915b50505050509350505050919050565b6128b6600182613e5d565b90506127c3565b506040516309797f6960e21b815260048101859052602401610854565b6060816000036129015750506040805180820190915260018152600360fc1b602082015290565b8160005b811561292b578061291581613eee565b91506129249050600a83613add565b9150612905565b6000816001600160401b0381111561294557612945613327565b6040519080825280601f01601f19166020018201604052801561296f576020820181803683370190505b5090505b8415610c0357612984600183613f07565b9150612991600a86613f1a565b61299c906030613e5d565b60f81b8183815181106129b1576129b1613a84565b60200101906001600160f81b031916908160001a9053506129d3600a86613add565b9450612973565b60607fef2a0374db4a48b74209fd1a525c32d62e54c4185cbabd807193b07a40081d44612a0a6020840184613502565b612a1a6040850160208601613502565b6040850135612a2f6080870160608801613502565b612a3c6080880188613af1565b604051612a4a929190613f2e565b60405190819003902060a088013560c0890135612a6e6101008b0160e08c01613502565b612a806101208c016101008d01613e42565b612a926101408d016101208e01613e42565b60408051602081019c909c526001600160a01b039a8b16908c015297891660608b015260808a019690965293871660a089015260c088019290925260e08701526101008601529092166101208401526001600160801b039182166101408085019190915291166101608301528301356101808201526101a0016040516020818303038152906040529050919050565b60006108f5612b2e612c23565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b5d8585612d4a565b91509150610f8e81612d8f565b80156110c15773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601612b9f576121568282612ed9565b6110c184848484612f5f565b6060600080856001600160a01b031685604051612bc89190613f3e565b600060405180830381855af49150503d8060008114612c03576040519150601f19603f3d011682016040523d82523d6000602084013e612c08565b606091505b5091509150612c1986838387612fb2565b9695505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612c7c57507f000000000000000000000000000000000000000000000000000000000000000046145b15612ca657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604103612d805760208301516040840151606085015160001a612d748782858561302b565b94509450505050612d88565b506000905060025b9250929050565b6000816004811115612da357612da3613f5a565b03612dab5750565b6001816004811115612dbf57612dbf613f5a565b03612e0c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610854565b6002816004811115612e2057612e20613f5a565b03612e6d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610854565b6003816004811115612e8157612e81613f5a565b03610a855760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610854565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f26576040519150601f19603f3d011682016040523d82523d6000602084013e612f2b565b606091505b5050905080610a5257604051635fdc4ec160e11b81526001600160a01b038416600482015260248101839052604401610854565b816001600160a01b0316836001600160a01b031603156110c157306001600160a01b03841603612f9d576121566001600160a01b03851683836130ef565b6110c16001600160a01b038516848484613152565b6060831561302157825160000361301a576001600160a01b0385163b61301a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610854565b5081610c03565b610c03838361318a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561306257506000905060036130e6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156130b6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130df576000600192509250506130e6565b9150600090505b94509492505050565b6040516001600160a01b038316602482015260448101829052610a5290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131b4565b6040516001600160a01b03808516602483015283166044820152606481018290526110c19085906323b872dd60e01b9060840161311b565b81511561319a5781518083602001fd5b8060405162461bcd60e51b815260040161085491906134ac565b6000613209826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166132869092919063ffffffff16565b805190915015610a5257808060200190518101906132279190613f70565b610a525760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610854565b6060610c03848460008585600080866001600160a01b031685876040516132ad9190613f3e565b60006040518083038185875af1925050503d80600081146132ea576040519150601f19603f3d011682016040523d82523d6000602084013e6132ef565b606091505b509150915061330087838387612fb2565b979650505050505050565b80356001600160a01b038116811461332257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561336557613365613327565b604052919050565b600082601f83011261337e57600080fd5b81356001600160401b0381111561339757613397613327565b6133aa601f8201601f191660200161333d565b8181528460208386010111156133bf57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156133ef57600080fd5b6133f88361330b565b915060208301356001600160401b0381111561341357600080fd5b61341f8582860161336d565b9150509250929050565b6001600160e01b031981168114610a8557600080fd5b60006020828403121561345157600080fd5b81356113f581613429565b60005b8381101561347757818101518382015260200161345f565b50506000910152565b6000815180845261349881602086016020860161345c565b601f01601f19169290920160200192915050565b6020815260006113f56020830184613480565b6000602082840312156134d157600080fd5b5035919050565b600080604083850312156134eb57600080fd5b6134f48361330b565b946020939093013593505050565b60006020828403121561351457600080fd5b6113f58261330b565b60008060006060848603121561353257600080fd5b61353b8461330b565b92506135496020850161330b565b9150604084013590509250925092565b60008060006040848603121561356e57600080fd5b83356001600160401b038082111561358557600080fd5b90850190610160828803121561359a57600080fd5b909350602085013590808211156135b057600080fd5b818601915086601f8301126135c457600080fd5b8135818111156135d357600080fd5b8760208285010111156135e557600080fd5b6020830194508093505050509250925092565b6000806040838503121561360b57600080fd5b50508035926020909101359150565b6000602080838503121561362d57600080fd5b82356001600160401b038082111561364457600080fd5b818501915085601f83011261365857600080fd5b81358181111561366a5761366a613327565b8060051b915061367b84830161333d565b818152918301840191848101908884111561369557600080fd5b938501935b838510156136b35784358252938501939085019061369a565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156112005761371683855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b92840192606092909201916001016136db565b6000806000806080858703121561373f57600080fd5b6137488561330b565b93506020850135925060408501356001600160401b038082111561376b57600080fd5b6137778883890161336d565b9350606087013591508082111561378d57600080fd5b5061379a8782880161336d565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015611200578351835292840192918401916001016137c2565b6000602082840312156137f057600080fd5b81356001600160401b0381111561380657600080fd5b610c038482850161336d565b60008060006060848603121561382757600080fd5b6138308461330b565b95602085013595506040909401359392505050565b60008060006060848603121561385a57600080fd5b833592506135496020850161330b565b8015158114610a8557600080fd5b6000806040838503121561388b57600080fd5b6138948361330b565b915060208301356138a48161386a565b809150509250929050565b600080602083850312156138c257600080fd5b82356001600160401b03808211156138d957600080fd5b818501915085601f8301126138ed57600080fd5b8135818111156138fc57600080fd5b8660208260051b850101111561391157600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561397a57603f19888603018452613968858351613480565b9450928501929085019060010161394c565b5092979650505050505050565b6000806000806080858703121561399d57600080fd5b6139a68561330b565b93506139b46020860161330b565b92506040850135915060608501356001600160401b038111156139d657600080fd5b61379a8782880161336d565b81516001600160a01b031681526020808301516001600160401b031690820152604080830151151590820152606081016108f5565b60008060408385031215613a2a57600080fd5b613a338361330b565b9150613a416020840161330b565b90509250929050565b600181811c90821680613a5e57607f821691505b602082108103613a7e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108f5576108f5613a9a565b634e487b7160e01b600052601260045260246000fd5b600082613aec57613aec613ac7565b500490565b6000808335601e19843603018112613b0857600080fd5b8301803591506001600160401b03821115613b2257600080fd5b602001915036819003821315612d8857600080fd5b6000808335601e19843603018112613b4e57600080fd5b83016020810192503590506001600160401b03811115613b6d57600080fd5b803603821315612d8857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b80356001600160801b038116811461332257600080fd5b60208152613bdd60208201613bd08461330b565b6001600160a01b03169052565b6000613beb6020840161330b565b6001600160a01b03811660408401525060408301356060830152613c116060840161330b565b6001600160a01b038116608084015250613c2e6080840184613b37565b6101608060a0860152613c4661018086018385613b7c565b925060a086013560c086015260c086013560e0860152613c6860e0870161330b565b9150610100613c81818701846001600160a01b03169052565b613c8c818801613ba5565b925050610120613ca6818701846001600160801b03169052565b613cb1818801613ba5565b925050610140613ccb818701846001600160801b03169052565b9590950135939094019290925250919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008351613d1681846020880161345c565b835190830190613d2a81836020880161345c565b01949350505050565b601f821115610a52576000816000526020600020601f850160051c81016020861015613d5c5750805b601f850160051c820191505b81811015613d7b57828155600101613d68565b505050505050565b81516001600160401b03811115613d9c57613d9c613327565b613db081613daa8454613a4a565b84613d33565b602080601f831160018114613de55760008415613dcd5750858301515b600019600386901b1c1916600185901b178555613d7b565b600085815260208120601f198616915b82811015613e1457888601518255948401946001909101908401613df5565b5085821015613e325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613e5457600080fd5b6113f582613ba5565b808201808211156108f5576108f5613a9a565b604081526000613e836040830185613480565b8281036020840152613e958185613480565b95945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612c1990830184613480565b600060208284031215613ee357600080fd5b81516113f581613429565b600060018201613f0057613f00613a9a565b5060010190565b818103818111156108f5576108f5613a9a565b600082613f2957613f29613ac7565b500690565b8183823760009101908152919050565b60008251613f5081846020870161345c565b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613f8257600080fd5b81516113f58161386a56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c5bc2df5cf7eccbcbe6a7c92b736084d332215d10a009b56e5ac12368b11195c64736f6c63430008160033000000000000000000000000f9d353a2420f611bff2e503a3f316eaa536a49cf00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000f9d353a2420f611bff2e503a3f316eaa536a49cf0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000f9d353a2420f611bff2e503a3f316eaa536a49cf000000000000000000000000000000000000000000000000000000000000000d5a65656b47656e6573697323320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a47320000000000000000000000000000000000000000000000000000000000