[ { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "_safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "_safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "owners", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "batchBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "batchMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "batchMintFromBlank", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "batchMintNFTWithPaymentToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnToBlank", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "dan", "outputs": [ { "internalType": "contract IDan", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDanAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_paymentToken", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getMintNFTPriceFromUniV3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "uint256", "name": "tokenUnit_", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dan_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "uint256", "name": "tokenUnit_", "type": "uint256" }, { "internalType": "uint256", "name": "maxTokensPerIdPerUser_", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "isOwned", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokensPerIdPerUser", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintFromBlank", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintNFTWithPaymentToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ownedBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "uint256", "name": "_maxTokensPerIdPerUser", "type": "uint256" } ], "name": "setMaxTokensPerIdPerUser", "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": "address", "name": "", "type": "address" } ], "name": "tokenBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenUnit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalNFTSupply", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "unit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60c060405234801561001057600080fd5b50604080518082018252600780825266444e343230363960c81b6020808401829052845180860190955291845290830152906012600061005084826101c0565b50600161005d83826101c0565b506002805460ff191660ff831617905546608052610079610085565b60a052506102f5915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516100b7919061027f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061014957607f821691505b60208210810361016957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101bb576000816000526020600020601f850160051c810160208610156101985750805b601f850160051c820191505b818110156101b7578281556001016101a4565b5050505b505050565b81516001600160401b038111156101d9576101d961011f565b6101ed816101e78454610135565b8461016f565b602080601f831160018114610222576000841561020a5750858301515b600019600386901b1c1916600185901b1785556101b7565b600085815260208120601f198616915b8281101561025157888601518255948401946001909101908401610232565b508582101561026f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080835461028d81610135565b600182811680156102a557600181146102ba576102e9565b60ff19841687528215158302870194506102e9565b8760005260208060002060005b858110156102e05781548a8201529084019082016102c7565b50505082870194505b50929695505050505050565b60805160a05161475a61031a6000396000611321015260006112ec015261475a6000f3fe6080604052600436106103a05760003560e01c80637f5181b0116101e7578063b48ab8b61161010d578063e64d6fd0116100a0578063f242432a1161006f578063f242432a14610a8c578063f2fde38b14610aac578063fe91764d14610abf578063fee81cf414610adf57600080fd5b8063e64d6fd0146109f0578063e93c980d14610a28578063e985e9c514610a3e578063f04e283e14610a7957600080fd5b8063d505accf116100dc578063d505accf14610956578063dd62ed3e14610976578063e2c79281146109ae578063e42c08f2146109c357600080fd5b8063b48ab8b6146108d7578063bbc65600146108f7578063c77eceb514610917578063cb7125351461093657600080fd5b806391ba317a11610185578063a88b68c611610154578063a88b68c61461084b578063a9059cbb14610877578063ae307da614610897578063b390c0ab146108b757600080fd5b806391ba317a1461082057806395d89b4114610836578063963859fa1461084b578063a22cb4651461085757600080fd5b80638da5cb5b116101c15780638da5cb5b146107b45780638e8a7590146107cd578063907af6c0146107ed57806390e60bfa1461080257600080fd5b80637f5181b0146107475780638456cb591461077f57806385d581d61461079457600080fd5b8063313ce567116102cc5780634e1273f41161026a57806370a082311161023957806370a08231146106bc578063715018a6146106f2578063731133e9146106fa5780637ecebe001461071a57600080fd5b80634e1273f4146106525780634f2999a71461067f57806354d1f13d1461069f5780636c0360eb146106a757600080fd5b80633f4ba83a116102a65780633f4ba83a146105dd57806340c10f19146105f257806342966c68146106125780634847a79c1461063257600080fd5b8063313ce5671461057c5780633644e515146105a857806337d9d58d146105bd57600080fd5b806318160ddd116103445780632539790011610313578063253979001461052b578063256929621461053e5780632b9cb499146105465780632eb2c2d61461055c57600080fd5b806318160ddd146104b55780631cc509fd146104cb57806320ec271b146104eb57806323b872dd1461050b57600080fd5b8063032fe0df11610380578063032fe0df1461041d57806306fdde0314610453578063095ea7b3146104755780630e89341c1461049557600080fd5b8062ee9f73146103a5578062fdd58e146103ba57806301ffc9a7146103ed575b600080fd5b6103b86103b3366004613774565b610b12565b005b3480156103c657600080fd5b506103da6103d536600461383e565b610bd6565b6040519081526020015b60405180910390f35b3480156103f957600080fd5b5061040d61040836600461387e565b610c01565b60405190151581526020016103e4565b34801561042957600080fd5b506103da61043836600461389b565b6001600160a01b03166000908152600d602052604090205490565b34801561045f57600080fd5b50610468610c4f565b6040516103e49190613906565b34801561048157600080fd5b5061040d61049036600461383e565b610cdd565b3480156104a157600080fd5b506104686104b0366004613919565b610d49565b3480156104c157600080fd5b506103da60035481565b3480156104d757600080fd5b506103b86104e6366004613932565b610dbb565b3480156104f757600080fd5b506103b8610506366004613a2a565b610e66565b34801561051757600080fd5b5061040d610526366004613a8d565b610f69565b6103b8610539366004613ac9565b610f8b565b6103b8611080565b34801561055257600080fd5b506103da600f5481565b34801561056857600080fd5b506103b8610577366004613bda565b6110cf565b34801561058857600080fd5b506002546105969060ff1681565b60405160ff90911681526020016103e4565b3480156105b457600080fd5b506103da6112e8565b3480156105c957600080fd5b5061040d6105d836600461383e565b611343565b3480156105e957600080fd5b506103b861137b565b3480156105fe57600080fd5b506103b861060d36600461383e565b61138f565b34801561061e57600080fd5b506103b861062d366004613919565b6113a1565b34801561063e57600080fd5b5061040d61064d36600461383e565b6113b9565b34801561065e57600080fd5b5061067261066d366004613c94565b61141f565b6040516103e49190613d3b565b34801561068b57600080fd5b506103b861069a366004613bda565b611532565b6103b86117b7565b3480156106b357600080fd5b506104686117f3565b3480156106c857600080fd5b506103da6106d736600461389b565b6001600160a01b031660009081526004602052604090205490565b6103b8611800565b34801561070657600080fd5b506103b8610715366004613dcb565b611814565b34801561072657600080fd5b506103da61073536600461389b565b60066020526000908152604090205481565b34801561075357600080fd5b50600e54610767906001600160a01b031681565b6040516001600160a01b0390911681526020016103e4565b34801561078b57600080fd5b506103b861197b565b3480156107a057600080fd5b506103b86107af366004613e2b565b611992565b3480156107c057600080fd5b50638b78c6d81954610767565b3480156107d957600080fd5b506103b86107e8366004613eb7565b611b8b565b3480156107f957600080fd5b506103da611d81565b34801561080e57600080fd5b50600e546001600160a01b0316610767565b34801561082c57600080fd5b506103da60095481565b34801561084257600080fd5b50610468611da2565b3480156103b857600080fd5b34801561086357600080fd5b506103b8610872366004613f3c565b611daf565b34801561088357600080fd5b5061040d61089236600461383e565b611e1c565b3480156108a357600080fd5b506103b86108b2366004613f73565b611e7c565b3480156108c357600080fd5b506103b86108d2366004613f73565b611f18565b3480156108e357600080fd5b506103b86108f2366004613e2b565b611f8e565b34801561090357600080fd5b506103b8610912366004613919565b61217a565b34801561092357600080fd5b506103b861093236600461383e565b5050565b34801561094257600080fd5b5061040d610951366004613a8d565b612187565b34801561096257600080fd5b506103b8610971366004613f95565b612267565b34801561098257600080fd5b506103da610991366004613fff565b600560209081526000928352604080842090915290825290205481565b3480156109ba57600080fd5b506103da6124ab565b3480156109cf57600080fd5b506103da6109de36600461389b565b60046020526000908152604090205481565b3480156109fc57600080fd5b506103da610a0b36600461383e565b600760209081526000928352604080842090915290825290205481565b348015610a3457600080fd5b506103da600a5481565b348015610a4a57600080fd5b5061040d610a59366004613fff565b600860209081526000928352604080842090915290825290205460ff1681565b6103b8610a8736600461389b565b6124c2565b348015610a9857600080fd5b506103b8610aa7366004613eb7565b6124ff565b6103b8610aba36600461389b565b6125e4565b348015610acb57600080fd5b506103b8610ada366004613dcb565b61260b565b348015610aeb57600080fd5b506103da610afa36600461389b565b63389a75e1600c908152600091909152602090205490565b63409feecd198054600382558015610b495760018160011c14303b10610b405763f92ee8a96000526004601cfd5b818160ff1b1b91505b50610b5333612762565b6000610b60898b836140b4565b506001610b6e8789836140b4565b50600b610b7c8587836140b4565b506002805460ff191660ff8516179055600a82905560016009558015610bcb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050505050505050565b6001600160a01b03821660009081526007602090815260408083208484529091529020545b92915050565b60006301ffc9a760e01b6001600160e01b031983161480610c325750636cdb3d1360e11b6001600160e01b03198316145b80610bfb5750506001600160e01b0319166303a24d0760e21b1490565b60008054610c5c90614032565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614032565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d389086815260200190565b60405180910390a350600192915050565b600e54604051633bb3a24d60e01b8152600481018390526060916001600160a01b031690633bb3a24d90602401600060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfb9190810190614173565b600e5460405163284f6eb760e21b81526004810184905283916001600160a01b03169063a13dbadc90602401602060405180830381865afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906141e9565b610e4d5760405162461bcd60e51b8152600401610e4490614206565b60405180910390fd5b610e5561279e565b610e608484846127b9565b50505050565b610e71338383612852565b815160005b81811015610f56573360009081526007602052604081208551909190869084908110610ea457610ea4614230565b6020026020010151815260200190815260200160002054600003610f4e57828181518110610ed457610ed4614230565b6020026020010151600d6000336001600160a01b03166001600160a01b031681526020019081526020016000206000828254610f10919061425c565b92505081905550610f4e848281518110610f2c57610f2c614230565b602090810291909101810151336000908152600c909252604090912090612963565b600101610e76565b50610f64336000858561298d565b505050565b6000610f76848484612187565b50610f818484612a95565b5060019392505050565b63409feecd198054600382558015610fc25760018160011c14303b10610fb95763f92ee8a96000526004601cfd5b818160ff1b1b91505b50610fcc33612762565b600e80546001600160a01b0319166001600160a01b038d161790556000610ff48a8c836140b4565b506001611002888a836140b4565b50600b6110108688836140b4565b506002805460ff861660ff1991821617909155600a849055600f83905560016009819055601080549092161790558015611073576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050505050505050565b60006202a3006001600160401b03164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6110df8888888888888888611532565b8460005b81811015611278578585828181106110fd576110fd614230565b90506020020135600d60008c6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611138919061425c565b90915550869050858281811061115057611150614230565b90506020020135600d60008b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461118b919061426f565b909155506111ec90508888838181106111a6576111a6614230565b6001600160a01b038d166000908152600c6020908152604080832093820290950135600881901c8352929052929092208054600160ff9094169390931b90921790915550565b6001600160a01b038a1660009081526007602052604081209089898481811061121757611217614230565b905060200201358152602001908152602001600020546000036112705761127088888381811061124957611249614230565b6001600160a01b038e166000908152600c6020908152604090912093910201359050612963565b6001016110e3565b50610bcb898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061298d92505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461131e57611319612d79565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0382166000908152600c60209081526040808320600885901c845290915281205460ff83161c6001165b9392505050565b61138361279e565b6010805460ff19169055565b61139761279e565b6109328282612e13565b6113ab3382612e30565b6113b6336000612a95565b50565b336000908152600460205260408120805483919083906113da90849061425c565b90915550506001600160a01b0383166000818152600460205260409081902080548501905551339060008051602061470583398151915290610d389086815260200190565b60608382146114405760405162461bcd60e51b8152600401610e4490614282565b836001600160401b0381111561145857611458613965565b604051908082528060200260200182016040528015611481578160200160208202803683370190505b50905060005b8481101561152957600760008787848181106114a5576114a5614230565b90506020020160208101906114ba919061389b565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008585848181106114ee576114ee614230565b9050602002013581526020019081526020016000205482828151811061151657611516614230565b6020908102919091010152600101611487565b50949350505050565b8483146115515760405162461bcd60e51b8152600401610e4490614282565b336001600160a01b038916148061158b57506001600160a01b038816600090815260086020908152604080832033845290915290205460ff165b6115c85760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610e44565b60008060005b87811015611687578888828181106115e8576115e8614230565b90506020020135925086868281811061160357611603614230565b6001600160a01b038e1660009081526007602090815260408083208984528252822080549390910294909401359550859392509061164290849061425c565b90915550506001600160a01b038a1660009081526007602090815260408083208684529091528120805484929061167a90849061426f565b90915550506001016115ce565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516116db94939291906142dd565b60405180910390a46001600160a01b0389163b156117825760405163bc197c8160e01b808252906001600160a01b038b169063bc197c819061172f9033908f908e908e908e908e908e908e9060040161432d565b6020604051808303816000875af115801561174e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117729190614391565b6001600160e01b0319161461178f565b6001600160a01b03891615155b6117ab5760405162461bcd60e51b8152600401610e44906143ae565b50505050505050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600b8054610c5c90614032565b61180861279e565b6118126000612e92565b565b61181c61279e565b600e5460405163284f6eb760e21b81526004810185905284916001600160a01b03169063a13dbadc90602401602060405180830381865afa158015611865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188991906141e9565b6118a55760405162461bcd60e51b8152600401610e4490614206565b600e546040516313710b4360e21b81526004810186905285916001600160a01b031690634dc42d0c90602401602060405180830381865afa1580156118ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191291906143d8565b4211156119315760405162461bcd60e51b8152600401610e44906143f1565b600f548461193f8888610bd6565b611949919061426f565b11156119675760405162461bcd60e51b8152600401610e4490614428565b61197386868686612ed0565b505050505050565b61198361279e565b6010805460ff19166001179055565b825160005b81811015611973578481815181106119b1576119b1614230565b6020026020010151600003611a085760405162461bcd60e51b815260206004820152601b60248201527f444e34323036393a2069642073686f756c64206e6f74206265203000000000006044820152606401610e44565b600954858281518110611a1d57611a1d614230565b602002602001015111611a3257600954611a4d565b848181518110611a4457611a44614230565b60200260200101515b6009558351849082908110611a6457611a64614230565b602090810291909101810151336000908152600783526040808220828052909352918220805491929091611a9990849061425c565b92505081905550838181518110611ab257611ab2614230565b6020026020010151600d6000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611aee919061426f565b92505081905550611b45858281518110611b0a57611b0a614230565b6020026020010151600c6000896001600160a01b03166001600160a01b03168152602001908152602001600020612d5090919063ffffffff16565b611b8386868381518110611b5b57611b5b614230565b6020026020010151868481518110611b7557611b75614230565b602002602001015186612f67565b600101611997565b336001600160a01b0387161480611bc557506001600160a01b038616600090815260086020908152604080832033845290915290205460ff165b611c025760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610e44565b6001600160a01b038616600090815260076020908152604080832087845290915281208054859290611c3590849061425c565b90915550506001600160a01b038516600090815260076020908152604080832087845290915281208054859290611c6d90849061426f565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15611d585760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e6190611d059033908b908a908a908a908a9060040161446a565b6020604051808303816000875af1158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190614391565b6001600160e01b03191614611d65565b6001600160a01b03851615155b6119735760405162461bcd60e51b8152600401610e44906143ae565b600254600090611d959060ff16600a614595565b600a5461131991906145a4565b60018054610c5c90614032565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a35050565b60105460009060ff1615611e725760405162461bcd60e51b815260206004820152601860248201527f436f6d6d756e6974794375726174696f6e2070617573656400000000000000006044820152606401610e44565b61137483836130ab565b611e873383836130cb565b336000908152600d602052604081208054839290611ea690849061425c565b90915550503360009081526007602090815260408083208584529091528120549003611ee557336000908152600c60205260409020611ee59083612963565b33600090815260076020908152604080832083805290915281208054839290611f0f90849061426f565b90915550505050565b611f233383836130cb565b336000908152600d602052604081208054839290611f4290849061425c565b90915550503360009081526007602090815260408083208584529091528120549003611f8157336000908152600c60205260409020611f819083612963565b6109323360008484613151565b611f9661279e565b60005b835181101561216d57600e5484516001600160a01b039091169063a13dbadc90869084908110611fcb57611fcb614230565b60200260200101516040518263ffffffff1660e01b8152600401611ff191815260200190565b602060405180830381865afa15801561200e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203291906141e9565b61204e5760405162461bcd60e51b8152600401610e4490614206565b600e5484516001600160a01b0390911690634dc42d0c9086908490811061207757612077614230565b60200260200101516040518263ffffffff1660e01b815260040161209d91815260200190565b602060405180830381865afa1580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de91906143d8565b4211156120fd5760405162461bcd60e51b8152600401610e44906143f1565b600f5483828151811061211257612112614230565b602002602001015161213d8787858151811061213057612130614230565b6020026020010151610bd6565b612147919061426f565b11156121655760405162461bcd60e51b8152600401610e4490614428565b600101611f99565b50610e6084848484613219565b61218261279e565b600f55565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001981146121e3576121be838261425c565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b0385166000908152600460205260408120805485929061220b90849061425c565b90915550506001600160a01b0380851660008181526004602052604090819020805487019055519091871690600080516020614705833981519152906122549087815260200190565b60405180910390a3506001949350505050565b428410156122b75760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610e44565b600060016122c36112e8565b6001600160a01b038a811660008181526006602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156123cf573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906124055750876001600160a01b0316816001600160a01b0316145b6124425760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610e44565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60006124b5611d81565b60035461131991906145bb565b6124ca61279e565b63389a75e1600c52806000526020600c2080544211156124f257636f5e88186000526004601cfd5b600090556113b681612e92565b61250d868686868686611b8b565b6001600160a01b0386166000908152600d60205260408120805485929061253590849061425c565b90915550506001600160a01b0385166000908152600d60205260408120805485929061256290849061426f565b90915550506001600160a01b038581166000908152600c60209081526040808320600889901c845282528083208054600160ff8b161b17905592891682526007815282822087835290529081205490036125d8576001600160a01b0386166000908152600c602052604090206125d89085612963565b61197386868686613151565b6125ec61279e565b8060601b61260257637448fbae6000526004601cfd5b6113b681612e92565b600e5460405163284f6eb760e21b81526004810185905284916001600160a01b03169063a13dbadc90602401602060405180830381865afa158015612654573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267891906141e9565b6126945760405162461bcd60e51b8152600401610e4490614206565b600e546040516313710b4360e21b81526004810186905285916001600160a01b031690634dc42d0c90602401602060405180830381865afa1580156126dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270191906143d8565b4211156127205760405162461bcd60e51b8152600401610e44906143f1565b600f548461272e8888610bd6565b612738919061426f565b11156127565760405162461bcd60e51b8152600401610e4490614428565b61197386868686613304565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819543314611812576382b429006000526004601cfd5b6127c161279e565b6127cc8383836130cb565b6001600160a01b0383166000908152600d6020526040812080548392906127f490849061425c565b90915550506001600160a01b03831660009081526007602090815260408083208584529091528120549003612845576001600160a01b0383166000908152600c602052604090206128459083612963565b610f648360008484613151565b8151815181146128745760405162461bcd60e51b8152600401610e4490614282565b60005b818110156129045782818151811061289157612891614230565b602002602001015160076000876001600160a01b03166001600160a01b0316815260200190815260200160002060008684815181106128d2576128d2614230565b6020026020010151815260200190815260200160002060008282546128f7919061425c565b9091555050600101612877565b5060006001600160a01b0316846001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516129559291906145dd565b60405180910390a450505050565b600881901c600090815260209290925260409091208054600160ff9093169290921b199091169055565b8151600090815b818110156129e15760006129a6611d81565b8583815181106129b8576129b8614230565b60200260200101516129ca91906145a4565b90506129d6818561426f565b935050600101612994565b506001600160a01b03861615612a38576001600160a01b03861660009081526004602052604081208054849290612a1990849061425c565b925050819055508160036000828254612a32919061425c565b90915550505b6001600160a01b03851615611973576001600160a01b03851660009081526004602052604081208054849290612a6f90849061426f565b925050819055508160036000828254612a88919061426f565b9091555050505050505050565b6001600160a01b03811615612b20576001600160a01b038116600090815260046020908152604080832054600d9092528220549091612ad2611d81565b612ada611d81565b612ae490846145a4565b612aee908561425c565b612af891906145bb565b6001600160a01b03851660009081526007602090815260408083208380529091529020555050505b6001600160a01b03821615610932576001600160a01b038216600090815260046020908152604080832054600d9092528220549091612b5d611d81565b612b6790846145bb565b905081811115612ba457612b7b828261425c565b6001600160a01b0386166000908152600760209081526040808320838052909152902055612d49565b6001600160a01b03851660009081526007602090815260408083208380529091528120819055612bd4828461425c565b6009549091505b600082118015612beb5750600081115b15612d46576001600160a01b0387166000908152600c60205260408120612c129083613405565b90506000198103612c235750612d46565b6001600160a01b038816600090815260076020908152604080832084845290915290205483811115612cbe576001600160a01b038916600090815260076020908152604080832085845290915281208054869290612c8290849061425c565b90915550506001600160a01b0389166000908152600d602052604081208054869290612caf90849061425c565b9091555060009450612d3f9050565b612cc8818561425c565b6001600160a01b038a1660008181526007602090815260408083208784528252808320839055928252600c905220909450612d039083612963565b6001600160a01b0389166000908152600d602052604081208054839290612d2b90849061425c565b90915550612d3c905060018361425c565b92505b5050612bdb565b50505b5050505050565b600881901c600090815260209290925260409091208054600160ff9093169290921b9091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051612dab9190614602565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b612e1b61279e565b612e2582826134f6565b610932600083612a95565b6001600160a01b03821660009081526004602052604081208054839290612e5890849061425c565b90915550506003805482900390556040518181526000906001600160a01b0384169060008051602061470583398151915290602001611e10565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b612ed861279e565b6009548311612ee957600954612eeb565b825b600955612efa84848484612f67565b6001600160a01b0384166000908152600d602052604081208054849290612f2290849061426f565b90915550506001600160a01b0384166000908152600c60209081526040808320600887901c845290915290208054600160ff86161b179055610e606000858585613151565b6001600160a01b038416600090815260076020908152604080832086845290915281208054849290612f9a90849061426f565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156130825760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061302f903390600090899089908990600401614678565b6020604051808303816000875af115801561304e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130729190614391565b6001600160e01b0319161461308f565b6001600160a01b03841615155b610e605760405162461bcd60e51b8152600401610e44906143ae565b60006130b783836113b9565b506130c23384612a95565b50600192915050565b6001600160a01b0383166000908152600760209081526040808320858452909152812080548392906130fe90849061425c565b909155505060408051838152602081018390526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b600061315b611d81565b61316590836145a4565b90506001600160a01b038516156131bd576001600160a01b0385166000908152600460205260408120805483929061319e90849061425c565b9250508190555080600360008282546131b7919061425c565b90915550505b6001600160a01b03841615612d49576001600160a01b038416600090815260046020526040812080548392906131f490849061426f565b92505081905550806003600082825461320d919061426f565b90915550505050505050565b61322161279e565b61322d84848484613548565b825160005b818110156132f65760095485828151811061324f5761324f614230565b6020026020010151116132645760095461327f565b84818151811061327657613276614230565b60200260200101515b600955835184908290811061329657613296614230565b6020026020010151600d6000886001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132d2919061426f565b925050819055506132ee858281518110611b0a57611b0a614230565b600101613232565b50612d49600086868661298d565b826000036133545760405162461bcd60e51b815260206004820152601b60248201527f444e34323036393a2069642073686f756c64206e6f74206265203000000000006044820152606401610e44565b600954831161336557600954613367565b825b6009553360009081526007602090815260408083208380529091528120805484929061339490849061425c565b90915550506001600160a01b0384166000908152600d6020526040812080548492906133c190849061426f565b90915550506001600160a01b0384166000908152600c60209081526040808320600887901c845290915290208054600160ff86161b179055610e6084848484612f67565b600881901c600081815260208490526040902054600019919060ff84191690811b901c81158117613448575b508101600081815260409020548115811715613431575b80156134ee576134de817f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6fffffffffffffffffffffffffffffffff851160071b1784811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b600883901b178481116000031792505b505092915050565b8060036000828254613508919061426f565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481526000805160206147058339815191529101611e10565b82518251811461356a5760405162461bcd60e51b8152600401610e4490614282565b60005b818110156135fa5783818151811061358757613587614230565b602002602001015160076000886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106135c8576135c8614230565b6020026020010151815260200190815260200160002060008282546135ed919061426f565b909155505060010161356d565b50846001600160a01b031660006001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161364b9291906145dd565b60405180910390a46001600160a01b0385163b156136ed5760405163bc197c8160e01b808252906001600160a01b0387169063bc197c819061369a9033906000908a908a908a906004016146b2565b6020604051808303816000875af11580156136b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136dd9190614391565b6001600160e01b031916146136fa565b6001600160a01b03851615155b612d495760405162461bcd60e51b8152600401610e44906143ae565b60008083601f84011261372857600080fd5b5081356001600160401b0381111561373f57600080fd5b60208301915083602082850101111561375757600080fd5b9250929050565b803560ff8116811461376f57600080fd5b919050565b60008060008060008060008060a0898b03121561379057600080fd5b88356001600160401b03808211156137a757600080fd5b6137b38c838d01613716565b909a50985060208b01359150808211156137cc57600080fd5b6137d88c838d01613716565b909850965060408b01359150808211156137f157600080fd5b506137fe8b828c01613716565b9095509350613811905060608a0161375e565b9150608089013590509295985092959890939650565b80356001600160a01b038116811461376f57600080fd5b6000806040838503121561385157600080fd5b61385a83613827565b946020939093013593505050565b6001600160e01b0319811681146113b657600080fd5b60006020828403121561389057600080fd5b813561137481613868565b6000602082840312156138ad57600080fd5b61137482613827565b60005b838110156138d15781810151838201526020016138b9565b50506000910152565b600081518084526138f28160208601602086016138b6565b601f01601f19169290920160200192915050565b60208152600061137460208301846138da565b60006020828403121561392b57600080fd5b5035919050565b60008060006060848603121561394757600080fd5b61395084613827565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156139a3576139a3613965565b604052919050565b600082601f8301126139bc57600080fd5b813560206001600160401b038211156139d7576139d7613965565b8160051b6139e682820161397b565b9283528481018201928281019087851115613a0057600080fd5b83870192505b84831015613a1f57823582529183019190830190613a06565b979650505050505050565b60008060408385031215613a3d57600080fd5b82356001600160401b0380821115613a5457600080fd5b613a60868387016139ab565b93506020850135915080821115613a7657600080fd5b50613a83858286016139ab565b9150509250929050565b600080600060608486031215613aa257600080fd5b613aab84613827565b9250613ab960208501613827565b9150604084013590509250925092565b60008060008060008060008060008060e08b8d031215613ae857600080fd5b613af18b613827565b995060208b01356001600160401b0380821115613b0d57600080fd5b613b198e838f01613716565b909b50995060408d0135915080821115613b3257600080fd5b613b3e8e838f01613716565b909950975060608d0135915080821115613b5757600080fd5b50613b648d828e01613716565b9096509450613b77905060808c0161375e565b925060a08b0135915060c08b013590509295989b9194979a5092959850565b60008083601f840112613ba857600080fd5b5081356001600160401b03811115613bbf57600080fd5b6020830191508360208260051b850101111561375757600080fd5b60008060008060008060008060a0898b031215613bf657600080fd5b613bff89613827565b9750613c0d60208a01613827565b965060408901356001600160401b0380821115613c2957600080fd5b613c358c838d01613b96565b909850965060608b0135915080821115613c4e57600080fd5b613c5a8c838d01613b96565b909650945060808b0135915080821115613c7357600080fd5b50613c808b828c01613716565b999c989b5096995094979396929594505050565b60008060008060408587031215613caa57600080fd5b84356001600160401b0380821115613cc157600080fd5b613ccd88838901613b96565b90965094506020870135915080821115613ce657600080fd5b50613cf387828801613b96565b95989497509550505050565b60008151808452602080850194506020840160005b83811015613d3057815187529582019590820190600101613d14565b509495945050505050565b6020815260006113746020830184613cff565b60006001600160401b03821115613d6757613d67613965565b50601f01601f191660200190565b600082601f830112613d8657600080fd5b8135613d99613d9482613d4e565b61397b565b818152846020838601011115613dae57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215613de157600080fd5b613dea85613827565b9350602085013592506040850135915060608501356001600160401b03811115613e1357600080fd5b613e1f87828801613d75565b91505092959194509250565b60008060008060808587031215613e4157600080fd5b613e4a85613827565b935060208501356001600160401b0380821115613e6657600080fd5b613e72888389016139ab565b94506040870135915080821115613e8857600080fd5b613e94888389016139ab565b93506060870135915080821115613eaa57600080fd5b50613e1f87828801613d75565b60008060008060008060a08789031215613ed057600080fd5b613ed987613827565b9550613ee760208801613827565b9450604087013593506060870135925060808701356001600160401b03811115613f1057600080fd5b613f1c89828a01613716565b979a9699509497509295939492505050565b80151581146113b657600080fd5b60008060408385031215613f4f57600080fd5b613f5883613827565b91506020830135613f6881613f2e565b809150509250929050565b60008060408385031215613f8657600080fd5b50508035926020909101359150565b600080600080600080600060e0888a031215613fb057600080fd5b613fb988613827565b9650613fc760208901613827565b95506040880135945060608801359350613fe36080890161375e565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561401257600080fd5b61401b83613827565b915061402960208401613827565b90509250929050565b600181811c9082168061404657607f821691505b60208210810361406657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f64576000816000526020600020601f850160051c810160208610156140955750805b601f850160051c820191505b81811015611973578281556001016140a1565b6001600160401b038311156140cb576140cb613965565b6140df836140d98354614032565b8361406c565b6000601f84116001811461411357600085156140fb5750838201355b600019600387901b1c1916600186901b178355612d49565b600083815260209020601f19861690835b828110156141445786850135825560209485019460019092019101614124565b50868210156141615760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561418557600080fd5b81516001600160401b0381111561419b57600080fd5b8201601f810184136141ac57600080fd5b80516141ba613d9482613d4e565b8181528560208385010111156141cf57600080fd5b6141e08260208301602086016138b6565b95945050505050565b6000602082840312156141fb57600080fd5b815161137481613f2e565b60208082526010908201526f125b9d985b1a59081d1bdad95b88125160821b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610bfb57610bfb614246565b80820180821115610bfb57610bfb614246565b6020808252600f908201526e0988a9c8ea890be9a92a69a82a8869608b1b604082015260600190565b81835260006001600160fb1b038311156142c457600080fd5b8260051b80836020870137939093016020019392505050565b6040815260006142f16040830186886142ab565b8281036020840152613a1f8185876142ab565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682528816602082015260a06040820181905260009061435a908301888a6142ab565b828103606084015261436d8187896142ab565b90508281036080840152614382818587614304565b9b9a5050505050505050505050565b6000602082840312156143a357600080fd5b815161137481613868565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6000602082840312156143ea57600080fd5b5051919050565b6020808252601b908201527f4d696e74696e6720646561646c696e6520686173207061737365640000000000604082015260600190565b60208082526022908201527f45786365656473206d617820746f6b656e73207065722049442070657220757360408201526132b960f11b606082015260800190565b6001600160a01b03878116825286166020820152604081018590526060810184905260a0608082018190526000906144a59083018486614304565b98975050505050505050565b600181815b808511156144ec5781600019048211156144d2576144d2614246565b808516156144df57918102915b93841c93908002906144b6565b509250929050565b60008261450357506001610bfb565b8161451057506000610bfb565b816001811461452657600281146145305761454c565b6001915050610bfb565b60ff84111561454157614541614246565b50506001821b610bfb565b5060208310610133831016604e8410600b841016171561456f575081810a610bfb565b61457983836144b1565b806000190482111561458d5761458d614246565b029392505050565b600061137460ff8416836144f4565b8082028115828204841417610bfb57610bfb614246565b6000826145d857634e487b7160e01b600052601260045260246000fd5b500490565b6040815260006145f06040830185613cff565b82810360208401526141e08185613cff565b600080835461461081614032565b60018281168015614628576001811461463d5761466c565b60ff198416875282151583028701945061466c565b8760005260208060002060005b858110156146635781548a82015290840190820161464a565b50505082870194505b50929695505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090613a1f908301846138da565b6001600160a01b0386811682528516602082015260a0604082018190526000906146de90830186613cff565b82810360608401526146f08186613cff565b905082810360808401526144a581856138da56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c73227ea87b506a625f846034bdb28366ec94e7257c47dd41e83303df83abf7364736f6c63430008190033