[ { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "EmptyString", "type": "error" }, { "inputs": [], "name": "FileAlreadyRegistered", "type": "error" }, { "inputs": [], "name": "FileNotRegistered", "type": "error" }, { "inputs": [], "name": "InvalidManager", "type": "error" }, { "inputs": [], "name": "ManagerDoesNotExist", "type": "error" }, { "inputs": [], "name": "ManagerRemoveBlocked", "type": "error" }, { "inputs": [], "name": "ManagerSwapBlocked", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintFrozen", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "MinterRegistrationInvalid", "type": "error" }, { "inputs": [], "name": "MismatchedArrayLengths", "type": "error" }, { "inputs": [], "name": "NotMinter", "type": "error" }, { "inputs": [], "name": "OverLimitSupply", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "RoyaltyBPSInvalid", "type": "error" }, { "inputs": [], "name": "RoyaltySetBlocked", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TokenNotInRange", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "Unauthorized", "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": "string", "name": "oldBaseUri", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "BaseURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipientAddress", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newDefaultTokenManager", "type": "address" } ], "name": "DefaultTokenManagerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "indexed": false, "internalType": "struct IRoyaltyManager.Royalty[]", "name": "_newRoyalties", "type": "tuple[]" } ], "name": "GranularRoyaltiesSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } ], "name": "GranularTokenManagersRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "indexed": false, "internalType": "address[]", "name": "_tokenManagers", "type": "address[]" } ], "name": "GranularTokenManagersSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "newLimitSupply", "type": "uint256" } ], "name": "LimitSupplySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "registered", "type": "bool" } ], "name": "MinterRegistrationChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintsFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyManager", "type": "address" } ], "name": "RoyaltyManagerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "string[]", "name": "uris", "type": "string[]" } ], "name": "TokenURIsSet", "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": "string", "name": "fileName", "type": "string" }, { "internalType": "address[]", "name": "fileStorageAddresses", "type": "address[]" } ], "name": "addFile", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": [], "name": "defaultManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "fileName", "type": "string" } ], "name": "fileContents", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "fileName", "type": "string" } ], "name": "fileStorage", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "files", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeMints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "generativeCodeUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "address", "name": "_observability", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintAmountToOneRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "mintOneToMultipleRecipients", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "mintOneToOneRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintSameAmountToMultipleRecipients", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mintSpecificTokenToOneRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "mintSpecificTokensToOneRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minters", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "observability", "outputs": [ { "internalType": "contract IObservability", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "registerMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "fileName", "type": "string" } ], "name": "removeFile", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } ], "name": "removeGranularTokenManagers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeRoyaltyManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenGroupingId", "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": [], "name": "royaltyManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newName", "type": "string" }, { "internalType": "string", "name": "newSymbol", "type": "string" }, { "internalType": "string", "name": "newContractUri", "type": "string" } ], "name": "setContractMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "_royalty", "type": "tuple" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_defaultTokenManager", "type": "address" } ], "name": "setDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty[]", "name": "_newRoyalties", "type": "tuple[]" } ], "name": "setGranularRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "address[]", "name": "_tokenManagers", "type": "address[]" } ], "name": "setGranularTokenManagers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_limitSupply", "type": "uint256" } ], "name": "setLimitSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyManager", "type": "address" } ], "name": "setRoyaltyManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "string[]", "name": "uris", "type": "string[]" } ], "name": "setTokenURIs", "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": "id", "type": "uint256" } ], "name": "tokenManager", "outputs": [ { "internalType": "address", "name": "manager", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "unregisterMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5061598c80620000216000396000f3fe60806040526004361061027b5760003560e01c806301ffc9a71461028057806302ee1211146102b5578063063a7502146102e257806306fdde03146102f9578063081812fc1461031b578063095ea7b3146103485780630d640e811461035b57806318160ddd1461037a578063184a94d51461039d57806318bae6c8146103bd57806323b872dd146103dd5780632a55205a146103f05780632a5ac7641461041e5780632b566c2a1461043e5780632ddcb21f1461045e5780632fc3a8d9146104755780633113cca0146104955780633713c1a1146104b557806342842e0e146104d557806342966c68146104e857806347230dcb146105085780634f58122a1461052857806350cf5a311461054857806355f804b314610568578063572b6c05146105885780635be95448146105a85780636352211e146105c85780636371fbe7146105e85780636502abea146106085780636c0360eb146106285780636f33f1451461063d57806370a0823114610652578063715018a6146106725780637c39601d14610687578063834a20df146106a95780638da5cb5b146106c957806395d89b41146106de578063a22cb465146106f3578063a305f5b214610713578063b5c5801e14610733578063b88d4fde14610748578063bfb2995c1461075b578063c2f507011461077b578063c87b56dd14610790578063cce2df03146107b0578063db3e4c84146107d0578063e8a3d485146107f0578063e985e9c514610805578063eb87215014610825578063ee295d6214610845578063eeab058914610865578063ef60ceaf14610885578063f1afe04d146108a5578063f2fde38b146108c5578063f7441c3a146108e5578063f97b57ec14610905575b600080fd5b34801561028c57600080fd5b506102a061029b366004614816565b61091a565b60405190151581526020015b60405180910390f35b3480156102c157600080fd5b506102d56102d036600461487b565b61092b565b6040516102ac91906148bc565b3480156102ee57600080fd5b506102f7610a1b565b005b34801561030557600080fd5b5061030e610adb565b6040516102ac9190614961565b34801561032757600080fd5b5061033b610336366004614974565b610b76565b6040516102ac919061498d565b6102f76103563660046149b6565b610bba565b34801561036757600080fd5b506102f76103763660046149b6565b5050565b34801561038657600080fd5b5061038f610bc6565b6040519081526020016102ac565b3480156103a957600080fd5b5061038f6103b83660046149e2565b610be6565b3480156103c957600080fd5b5060cb5461033b906001600160a01b031681565b6102f76103eb3660046149ff565b610c6d565b3480156103fc57600080fd5b5061041061040b366004614a40565b610e11565b6040516102ac929190614a62565b34801561042a57600080fd5b506102f7610439366004614a7b565b610eac565b34801561044a57600080fd5b5061030e61045936600461487b565b610f42565b34801561046a57600080fd5b5061038f6101085481565b34801561048157600080fd5b506102f7610490366004614b58565b6110e6565b3480156104a157600080fd5b506102f76104b0366004614ba3565b6111c1565b3480156104c157600080fd5b506102f76104d0366004614974565b6112b5565b6102f76104e33660046149ff565b611361565b3480156104f457600080fd5b506102f7610503366004614974565b61137c565b34801561051457600080fd5b506102f76105233660046149e2565b611538565b34801561053457600080fd5b506102f7610543366004614c0e565b6115ec565b34801561055457600080fd5b506102f76105633660046149e2565b61180a565b34801561057457600080fd5b506102f761058336600461487b565b61196c565b34801561059457600080fd5b506102a06105a33660046149e2565b611b13565b3480156105b457600080fd5b506102f76105c33660046149b6565b611b27565b3480156105d457600080fd5b5061033b6105e3366004614974565b611bad565b3480156105f457600080fd5b506102f7610603366004614c43565b505050565b34801561061457600080fd5b5061033b610623366004614974565b611bb8565b34801561063457600080fd5b5061030e611be7565b34801561064957600080fd5b5061030e611c75565b34801561065e57600080fd5b5061038f61066d3660046149e2565b611c85565b34801561067e57600080fd5b506102f7611ce4565b34801561069357600080fd5b5061069c611cf6565b6040516102ac9190614c97565b3480156106b557600080fd5b506102f76106c43660046149e2565b611e7d565b3480156106d557600080fd5b5061033b611efb565b3480156106ea57600080fd5b5061030e611f0a565b3480156106ff57600080fd5b506102f761070e366004614d12565b611f22565b34801561071f57600080fd5b506102f761072e3660046149e2565b611f9f565b34801561073f57600080fd5b506102f7612103565b6102f7610756366004614dd6565b612257565b34801561076757600080fd5b506102f7610776366004614e55565b612298565b34801561078757600080fd5b506102f76125b8565b34801561079c57600080fd5b5061030e6107ab366004614974565b6126c9565b3480156107bc57600080fd5b506102f76107cb366004614eee565b6126d4565b3480156107dc57600080fd5b506102f76107eb366004614f44565b61292a565b3480156107fc57600080fd5b5061030e612a5d565b34801561081157600080fd5b506102a0610820366004614f7d565b612a6b565b34801561083157600080fd5b5060d05461033b906001600160a01b031681565b34801561085157600080fd5b5060cf5461033b906001600160a01b031681565b34801561087157600080fd5b506102f7610880366004614f44565b612aa8565b34801561089157600080fd5b506102f76108a0366004614fab565b612d72565b3480156108b157600080fd5b506102f76108c036600461487b565b612f80565b3480156108d157600080fd5b506102f76108e03660046149e2565b61320b565b3480156108f157600080fd5b506102f7610900366004614c0e565b613281565b34801561091157600080fd5b506102d561334e565b60006109258261335f565b92915050565b6060600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040519293506101099261097a9250849150614fbd565b9081526040519081900360200190205461099e5761099e63098f417360e21b6133ad565b61010984846040516109b1929190614fd9565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610a0d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109ef575b505050505091505092915050565b610a236133b6565b610a2b613425565b60cf805460ff60a01b1916600160a01b1790556040517f9d4b38394dff663b46f53f52ced584161b5021180321b381f6104325eecebf4990600090a160d060009054906101000a90046001600160a01b03166001600160a01b031663fd120bd26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ab757600080fd5b505af1158015610acb573d6000803e3d6000fd5b50505050610ad96001609755565b565b6060610ae5613486565b6002018054610af390614fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1f90614fe9565b8015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b5050505050905090565b6000610b81826134aa565b610b9557610b956333d1c03960e21b6133ad565b610b9d613486565b60009283526006016020525060409020546001600160a01b031690565b61037682826001613506565b60006001610bd2613486565b60010154610bde613486565b540303919050565b6000610bfb610bf36135b7565b60c9906135c1565b610c0f57610c0f633e34a41b60e21b6133ad565b610c17613425565b60cf54600160a01b900460ff1660011415610c3c57610c3c6345a9661760e01b6133ad565b6000610c466135dd565b9050610c51816135ed565b610c5c836001613614565b9050610c686001609755565b919050565b6000610c78826136e5565b6001600160a01b039485169490915081168414610c9e57610c9e62a1148160e81b6133ad565b600080610caa846137a3565b91509150610cbf8187610cba3390565b6137cb565b610ce157610ccd8633612a6b565b610ce157610ce1632ce44b5f60e11b6133ad565b8015610cec57600082555b610cf4613486565b6001600160a01b0387166000908152600591909101602052604090208054600019019055610d20613486565b6001600160a01b03861660009081526005919091016020526040902080546001019055610d5185600160e11b6137e0565b610d59613486565b60008681526004919091016020526040902055600160e11b8316610dc85760018401610d83613486565b60008281526004919091016020526040902054610dc657610da2613486565b548114610dc65783610db2613486565b600083815260049190910160205260409020555b505b6001600160a01b038516848188600080516020615940833981519152600080a480610dfd57610dfd633a954ecd60e21b6133ad565b610e088787876137f5565b50505050505050565b600082815260ce602090815260408083208151808301909252546001600160a01b038116808352600160a01b90910461ffff16928201929092528291610e7c57506040805180820190915260cd546001600160a01b0381168252600160a01b900461ffff1660208201525b8051602082015190935061271090610e989061ffff1686615034565b610ea29190615053565b9150509250929050565b610eb46133b6565b610ec086868686613990565b610ecd61010783836145d6565b5060d054604051635bf57bc360e01b81526001600160a01b0390911690635bf57bc390610f089089908990899089908990899060040161509e565b600060405180830381600087803b158015610f2257600080fd5b505af1158015610f36573d6000803e3d6000fd5b50505050505050505050565b6060600083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060405192935061010992610f919250849150614fbd565b90815260405190819003602001902054610fb557610fb563098f417360e21b6133ad565b60006101098585604051610fca929190614fd9565b908152604080519182900360209081018320805480830285018301909352828452919083018282801561102657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611008575b50505050509050600081519050600060405180602001604052806000815250905060005b828110156110db57816110a6858381518110611068576110686150e7565b6020026020010151600180888681518110611085576110856150e7565b60200260200101516001600160a01b03163b6110a191906150fd565b6139c5565b6040516020016110b7929190615114565b604051602081830303815290604052915080806110d390615143565b91505061104a565b509695505050505050565b6110f1610bf36135b7565b61110557611105633e34a41b60e21b6133ad565b61110d613425565b60cf54600160a01b900460ff1660011415611132576111326345a9661760e01b6133ad565b816000600161113f6135dd565b61114991906150fd565b905060005b828110156111985761118686868381811061116b5761116b6150e7565b905060200201602081019061118091906149e2565b85613614565b8061119081615143565b91505061114e565b506111b56111a68484615034565b6111b0908361515e565b6135ed565b50506106036001609755565b6111c96133b6565b600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051929350610109926112169250849150614fbd565b908152604051908190036020019020541561123b5761123b63aa2fa7cb60e01b6133ad565b61010a8054600181018255600091909152815161127f917fc588bd85af64879c0999911852d2549e38c750e7e4e194eb8891b0913e93b12c0190602084019061465a565b508282610109836040516112939190614fbd565b9081526040519081900360200190206112ad9290916146ce565b505050505050565b6112bd6133b6565b6112c5613425565b61010881905560405181907fad7735a1decc3db45c1eab757cc4a1cb4bff8e332877b55f6db4ea11d82320c690600090a260d054604051630941255b60e21b8152600481018390526001600160a01b0390911690632504956c90602401600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b5050505061135e6001609755565b50565b61060383838360405180602001604052806000815250612257565b611384613425565b600061138f82611bb8565b9050600061139b6135b7565b90506001600160a01b0382161580159061142457506040516301ffc9a760e01b81526001600160a01b038316906301ffc9a7906113e39063129dae8b60e01b90600401615176565b602060405180830381865afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061518b565b1561149f57600061143484611bad565b60405163129dae8b60e01b81529091506001600160a01b0384169063129dae8b90611467908590859089906004016151a8565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b50505050506114bc565b6114a981846139e8565b6114bc576114bc6282b42960e81b6133ad565b6114c583613a21565b60d0546040516323de665160e01b81526001600160a01b03909116906323de6651906114fa90849060009088906004016151a8565b600060405180830381600087803b15801561151457600080fd5b505af1158015611528573d6000803e3d6000fd5b50505050505061135e6001609755565b6115406133b6565b61154b60c982613a61565b61155f5761155f63ea6eb5c360e01b6133ad565b6040516001906001600160a01b0383169060008051602061592083398151915290600090a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f906115b79084906001906004016151cc565b600060405180830381600087803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b5050505050565b6115f4613425565b60006115fe6135b7565b90508160005b8181101561176057600060cc6000878785818110611624576116246150e7565b60209081029290920135835250810191909152604001600020546001600160a01b031690508061165e5761165e635f98be1560e11b6133ad565b806001600160a01b031663ce2003a585888886818110611680576116806150e7565b905060200201356040518363ffffffff1660e01b81526004016116a4929190614a62565b6020604051808303816000875af11580156116c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e7919061518b565b6116fb576116fb63251c48e160e11b6133ad565b600060cc6000888886818110611713576117136150e7565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050808061175890615143565b915050611604565b507f4d30c2588339a383e2c3092b5383924cf202ae9c377b76c5fe5208cd41d8d2aa848460405161179292919061521d565b60405180910390a160d0546040516320364dcd60e21b81526001600160a01b03909116906380d93734906117cc908790879060040161521d565b600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b5050505050506103766001609755565b611812613425565b61181b81613a76565b61182f5761182f631a7387bd60e11b6133ad565b60006118396135b7565b60cf549091506001600160a01b03168061188157611855611efb565b6001600160a01b0316826001600160a01b03161461187c5761187c6282b42960e81b6133ad565b611907565b60405163bcdbc94760e01b81526001600160a01b038481166004830152838116602483015282169063bcdbc94790604401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f3919061518b565b6119075761190763e10a050560e01b6133ad565b60cf80546001600160a01b0319166001600160a01b03851690811790915560405160008051602061596083398151915290600090a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab422906114fa90869060040161498d565b611974613425565b806119895761198963ecd7b0d160e01b6133ad565b60cb546001600160a01b0316806119d5576119a2611efb565b6001600160a01b03166119b36135b7565b6001600160a01b0316146119d0576119d06282b42960e81b6133ad565b611a65565b806001600160a01b0316633d820a4d6119ec6135b7565b600086866040518563ffffffff1660e01b8152600401611a0f9493929190615231565b6020604051808303816000875af1158015611a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a52919061518b565b611a6557611a656282b42960e81b6133ad565b611aa483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a9292505050565b60d054604051632cfd654b60e11b81526001600160a01b03909116906359faca9690611ad69086908690600401615263565b600060405180830381600087803b158015611af057600080fd5b505af1158015611b04573d6000803e3d6000fd5b50505050506103766001609755565b6065546001600160a01b0391821691161490565b611b32610bf36135b7565b611b4657611b46633e34a41b60e21b6133ad565b611b4e613425565b60cf54600160a01b900460ff1660011415611b7357611b736345a9661760e01b6133ad565b60006001611b7f6135dd565b611b8991906150fd565b9050611b958383613614565b611ba26111b0838361515e565b506103766001609755565b6000610925826136e5565b60cb54600082815260cc60205260409020546001600160a01b0391821691168015611be1578091505b50919050565b60d58054611bf490614fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2090614fe9565b8015611c6d5780601f10611c4257610100808354040283529160200191611c6d565b820191906000526020600020905b815481529060010190602001808311611c5057829003601f168201915b505050505081565b606061010b8054610af390614fe9565b60006001600160a01b038216611ca557611ca56323d3ad8160e21b6133ad565b6001600160401b03611cb5613486565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b611cec6133b6565b610ad96000613adf565b6060600061010a805480602002602001604051908101604052809291908181526020016000905b82821015611dc9578382906000526020600020018054611d3c90614fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6890614fe9565b8015611db55780601f10611d8a57610100808354040283529160200191611db5565b820191906000526020600020905b815481529060010190602001808311611d9857829003601f168201915b505050505081526020019060010190611d1d565b505050509050600081516001600160401b03811115611dea57611dea614d4b565b604051908082528060200260200182016040528015611e1d57816020015b6060815260200190600190039081611e085790505b50905060005b8251811015611e7657828181518110611e3e57611e3e6150e7565b6020026020010151828281518110611e5857611e586150e7565b60200260200101819052508080611e6e90615143565b915050611e23565b5092915050565b611e856133b6565b611e9060c982613b31565b611ea457611ea463ea6eb5c360e01b6133ad565b6040516000906001600160a01b03831690600080516020615920833981519152908390a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f906115b79084906000906004016151cc565b6033546001600160a01b031690565b6060611f14613486565b6003018054610af390614fe9565b80611f2b613486565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611fa7613425565b611fb081613b46565b611fc457611fc4631a7387bd60e11b6133ad565b6000611fce6135b7565b60cb549091506001600160a01b03168061201657611fea611efb565b6001600160a01b0316826001600160a01b031614612011576120116282b42960e81b6133ad565b61209e565b6040516342f19adb60e11b81526001600160a01b038216906385e335b6906120479085906000908890600401615277565b6020604051808303816000875af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a919061518b565b61209e5761209e63e10a050560e01b6133ad565b60cb80546001600160a01b0319166001600160a01b03851690811790915560405160008051602061590083398151915290600090a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd906114fa90869060040161498d565b61210b613425565b60006121156135b7565b60cb549091506001600160a01b03168061213957612139635f98be1560e11b6133ad565b60405163ce2003a560e01b81526001600160a01b0382169063ce2003a590612168908590600090600401614a62565b6020604051808303816000875af1158015612187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ab919061518b565b6121bf576121bf63251c48e160e11b6133ad565b60cb80546001600160a01b0319169055604051600090600080516020615900833981519152908290a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd906122199060009060040161498d565b600060405180830381600087803b15801561223357600080fd5b505af1158015612247573d6000803e3d6000fd5b505050505050610ad96001609755565b612262848484610c6d565b6001600160a01b0383163b156122925761227e84848484613b62565b612292576122926368d2bf6b60e11b6133ad565b50505050565b6122a0613425565b60006122aa6135b7565b905060006122b6611efb565b60cf549091506001600160a01b031685816123b757826001600160a01b0316846001600160a01b0316146122f3576122f36282b42960e81b6133ad565b60005b818110156123b157612339878783818110612313576123136150e7565b905060400201602001602081019061232b91906152aa565b61271061ffff909116111590565b61234d5761234d633daf741f60e21b6133ad565b86868281811061235f5761235f6150e7565b90506040020160ce60008b8b8581811061237b5761237b6150e7565b905060200201358152602001908152602001600020818161239c91906152c7565b508190506123a981615143565b9150506122f6565b50612505565b60005b81811015612503576123d7878783818110612313576123136150e7565b6123eb576123eb633daf741f60e21b6133ad565b826001600160a01b031663ad6e40c78a8a8481811061240c5761240c6150e7565b90506020020135898985818110612425576124256150e7565b905060400201886040518463ffffffff1660e01b815260040161244a93929190615354565b602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b919061518b565b61249f5761249f63270e710760e21b6133ad565b8686828181106124b1576124b16150e7565b90506040020160ce60008b8b858181106124cd576124cd6150e7565b90506020020135815260200190815260200160002081816124ee91906152c7565b508190506124fb81615143565b9150506123ba565b505b7feaf422d1ab2d8f38856ab6be8378c08d2886463a33667e896ba3a6ebf2c6260c8888888860405161253a9493929190615381565b60405180910390a160d054604051632be18fef60e11b81526001600160a01b03909116906357c31fde90612578908b908b908b908b90600401615381565b600060405180830381600087803b15801561259257600080fd5b505af11580156125a6573d6000803e3d6000fd5b50505050505050506122926001609755565b6125c0613425565b60006125ca6135b7565b60cf549091506001600160a01b0316806125ee576125ee635f98be1560e11b6133ad565b60405163680c607d60e11b81526001600160a01b0382169063d018c0fa9061261a90859060040161498d565b602060405180830381865afa158015612637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265b919061518b565b61266f5761266f63251c48e160e11b6133ad565b60cf80546001600160a01b0319169055604051600090600080516020615960833981519152908290a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab422906122199060009060040161498d565b606061092582613c41565b600054610100900460ff16158080156126f45750600054600160ff909116105b8061270e5750303b15801561270e575060005460ff166001145b6127765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612799576000805461ff0019166101001790555b6000806000806000806000806000806000808f8f8101906127ba9190615466565b9b509b509b509b509b509b509b509b509b509b509b509b506127da613d0c565b6127e58c8b8b613d33565b6127ee86613e0f565b6127f88888613e58565b61280360c986613a61565b508a51612818906101079060208e019061465a565b50835161282d9061010b90602087019061465a565b5060405163332a79b160e01b81526001600160a01b038f169063332a79b19061285a90309060040161498d565b600060405180830381600087803b15801561287457600080fd5b505af1158015612888573d6000803e3d6000fd5b505050508d60d060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000835111156128c6576128c683613a92565b81156128d3576101088290555b5050505050505050505050508015612292576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b612932613425565b8281811461294a5761294a632b477e7160e11b6133ad565b60005b818110156129ac5761299a86868381811061296a5761296a6150e7565b90506020020135858584818110612983576129836150e7565b905060200281019061299591906155cb565b613e89565b806129a481615143565b91505061294d565b507f2df7dd608aac5806395769062aca937bf08722cb45659d38c0cce82f5cd0cde3858585856040516129e29493929190615611565b60405180910390a160d0546040516374c1ace160e01b81526001600160a01b03909116906374c1ace190612a20908890889088908890600401615611565b600060405180830381600087803b158015612a3a57600080fd5b505af1158015612a4e573d6000803e3d6000fd5b50505050506122926001609755565b6101078054611bf490614fe9565b6000612a75613486565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b612ab0613425565b6000612aba6135b7565b90506000612ac6611efb565b90508460005b81811015612cbf57612b03868683818110612ae957612ae96150e7565b9050602002016020810190612afe91906149e2565b613b46565b612b1757612b17631a7387bd60e11b6133ad565b6000612b3a898984818110612b2e57612b2e6150e7565b90506020020135611bb8565b90506001600160a01b038116612b7757836001600160a01b0316856001600160a01b031614612b7257612b726282b42960e81b6133ad565b612c35565b806001600160a01b03166385e335b6868b8b86818110612b9957612b996150e7565b600088815260cc60209081526040918290205491516001600160e01b031960e089901b168152612bde969591909302013592506001600160a01b031690600401615277565b6020604051808303816000875af1158015612bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c21919061518b565b612c3557612c3563e10a050560e01b6133ad565b868683818110612c4757612c476150e7565b9050602002016020810190612c5c91906149e2565b60cc60008b8b86818110612c7257612c726150e7565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550508080612cb790615143565b915050612acc565b507facc0f6922d8ccd133dbdaee1908d4d734f25a540223d55145e9fad2898471a4e87878787604051612cf594939291906156c1565b60405180910390a160d0546040516315bd85bf60e01b81526001600160a01b03909116906315bd85bf90612d33908a908a908a908a906004016156c1565b600060405180830381600087803b158015612d4d57600080fd5b505af1158015612d61573d6000803e3d6000fd5b505050505050506122926001609755565b612d7a613425565b612d8a60408201602083016152aa565b61271061ffff82161115612da857612da8633daf741f60e21b6133ad565b6000612db26135b7565b60cf549091506001600160a01b031680612dfa57612dce611efb565b6001600160a01b0316826001600160a01b031614612df557612df56282b42960e81b6133ad565b612e7d565b60405163049a5c0f60e41b81526001600160a01b038216906349a5c0f090612e289087908690600401615719565b602060405180830381865afa158015612e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e69919061518b565b612e7d57612e7d63270e710760e21b6133ad565b8360cd612e8a82826152c7565b50612e9d905060408501602086016152aa565b61ffff16612eae60208601866149e2565b6001600160a01b03167f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4160405160405180910390a360d0546001600160a01b031663d10072c0612f0160208701876149e2565b612f1160408801602089016152aa565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015261ffff166024820152604401600060405180830381600087803b158015612f5b57600080fd5b505af1158015612f6f573d6000803e3d6000fd5b5050505050505061135e6001609755565b612f886133b6565b600082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060405192935061010992612fd59250849150614fbd565b90815260405190819003602001902054612ff957612ff963098f417360e21b6133ad565b600061010a805480602002602001604051908101604052809291908181526020016000905b828210156130ca57838290600052602060002001805461303d90614fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461306990614fe9565b80156130b65780601f1061308b576101008083540402835291602001916130b6565b820191906000526020600020905b81548152906001019060200180831161309957829003601f168201915b50505050508152602001906001019061301e565b5050505090506000600182516130e091906150fd565b6001600160401b038111156130f7576130f7614d4b565b60405190808252806020026020018201604052801561312a57816020015b60608152602001906001900390816131155790505b508251909150600090815b818110156131ca578580519060200120858281518110613157576131576150e7565b602002602001015180519060200120141561317557600192506131b8565b848181518110613187576131876150e7565b602002602001015184848361319c91906150fd565b815181106131ac576131ac6150e7565b60200260200101819052505b806131c281615143565b915050613135565b5082516131df9061010a906020860190614721565b50610109856040516131f19190614fbd565b90815260200160405180910390206000610e08919061477a565b6132136133b6565b6001600160a01b0381166132785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161276d565b61135e81613adf565b61328c610bf36135b7565b6132a0576132a0633e34a41b60e21b6133ad565b6132a8613425565b60cf54600160a01b900460ff16600114156132cd576132cd6345a9661760e01b6133ad565b80600060016132da6135dd565b6132e491906150fd565b905060005b8281101561333457613322858583818110613306576133066150e7565b905060200201602081019061331b91906149e2565b6001613614565b8061332c81615143565b9150506132e9565b506133426111b0838361515e565b50506103766001609755565b606061335a60c9613f8a565b905090565b60006301ffc9a760e01b6001600160e01b03198316148061339057506380ac58cd60e01b6001600160e01b03198316145b806109255750506001600160e01b031916635b5e139f60e01b1490565b61135e81613f97565b6133be6135b7565b6001600160a01b03166133cf611efb565b6001600160a01b031614610ad95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161276d565b600260975414156134785760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161276d565b6002609755565b6001609755565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111610c68576134bc613486565b54821015610c685760005b6134cf613486565b600084815260049190910160205260409020549050806134f9576134f28361573f565b92506134c7565b600160e01b161592915050565b600061351183611bad565b90508180156135295750336001600160a01b03821614155b1561354c576135388133612a6b565b61354c5761354c6367d9dca160e11b6133ad565b83613555613486565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b600061335a613fa0565b60006135d6836001600160a01b038416613faa565b9392505050565b60006135e7613486565b54919050565b6101085480158015906135ff57508082115b156103765761037663be1a657d60e01b6133ad565b600061361e613486565b549050816136365761363663b562e8dd60e01b6133ad565b613646836001841460e11b6137e0565b61364e613486565b600083815260049190910160205260409020556001600160401b018202613673613486565b6001600160a01b038516600081815260059290920160205260409091208054909201909155806136ac576136ac622e076360e81b6133ad565b818301825b80836000600080516020615940833981519152600080a4600101808214156136b157816136dc613486565b55505050505050565b600081600111613793576136f7613486565b6000838152600491909101602052604090205490508061378357613719613486565b54821061373057613730636f96cda160e11b6133ad565b613738613486565b600019909201600081815260049390930160205260409092205490508061375e57613730565b600160e01b811661376e57919050565b61377e636f96cda160e11b6133ad565b613730565b600160e01b811661379357919050565b610c68636f96cda160e11b6133ad565b60008060006137b0613486565b60009485526006016020525050604090912080549092909150565b6001600160a01b039081169116811491141790565b4260a01b176001600160a01b03919091161790565b600061380082611bb8565b90506001600160a01b0381161580159061388957506040516301ffc9a760e01b81526001600160a01b038216906301ffc9a79061384890637af46b4f60e11b90600401615176565b602060405180830381865afa158015613865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613889919061518b565b1561392457806001600160a01b0316638af6791b6138a56135b7565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152818816602482015290861660448201526064810185905260a06084820152600060a482015260c401600060405180830381600087803b15801561390b57600080fd5b505af115801561391f573d6000803e3d6000fd5b505050505b60d0546040516323de665160e01b81526001600160a01b03909116906323de665190613958908790879087906004016151a8565b600060405180830381600087803b15801561397257600080fd5b505af1158015613986573d6000803e3d6000fd5b5050505050505050565b838361399a613486565b60020191906139aa9291906145d6565b5081816139b5613486565b60030191906115e59291906145d6565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b6000806139f483611bad565b9050613a008185612a6b565b80613a195750613a19613a1284610b76565b82866137cb565b949350505050565b613a2a81613fc2565b600081815260d1602052604090208054613a4390614fe9565b15905061135e57600081815260d16020526040812061135e91614798565b60006135d6836001600160a01b038416613fcd565b60006109256001600160a01b03831663440444c560e11b614017565b7f2e0a5b969d96a99aee0b35787d9a60516a02ca6f528a5f66d3f936468d8f038260d582604051613ac4929190615756565b60405180910390a180516103769060d590602084019061465a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006135d6836001600160a01b038416614033565b60006109256001600160a01b038316633b209e2f60e11b614017565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613b97903390899088908890600401615812565b6020604051808303816000875af1925050508015613bd2575060408051601f3d908101601f19168201909252613bcf91810190615845565b60015b613c24573d808015613c00576040519150601f19603f3d011682016040523d82523d6000602084013e613c05565b606091505b508051613c1c57613c1c6368d2bf6b60e11b6133ad565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060613c4c826134aa565b613c6057613c6063677510db60e11b6133ad565b600082815260d1602052604081208054613c7990614fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054613ca590614fe9565b8015613cf25780601f10613cc757610100808354040283529160200191613cf2565b820191906000526020600020905b815481529060010190602001808311613cd557829003601f168201915b50505050509050805160001415610925576135d683614126565b600054610100900460ff16610ad95760405162461bcd60e51b815260040161276d90615862565b600054610100900460ff16613d5a5760405162461bcd60e51b815260040161276d90615862565b602082015161271061ffff82161115613d7d57613d7d633daf741f60e21b6133ad565b613d856141a1565b613d8d6141d0565b613d9684613adf565b82516001600160a01b031615613ddd57825160cd8054602086015161ffff16600160a01b026001600160b01b03199091166001600160a01b03909316929092179190911790555b6001600160a01b038216156122925760cb80546001600160a01b0384166001600160a01b031990911617905550505050565b600054610100900460ff16613e365760405162461bcd60e51b815260040161276d90615862565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16613e7f5760405162461bcd60e51b815260040161276d90615862565b61037682826141ff565b6000613e9484611bb8565b90506000613ea06135b7565b90506000613eac611efb565b90506001600160a01b038316613ee957806001600160a01b0316826001600160a01b031614613ee457613ee46282b42960e81b6133ad565b613f71565b604051633d820a4d60e01b81526001600160a01b03841690633d820a4d90613f1b9085908a908a908a90600401615231565b6020604051808303816000875af1158015613f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5e919061518b565b613f7157613f716282b42960e81b6133ad565b600086815260d160205260409020610e089086866145d6565b606060006135d683614275565b61135e816142d1565b600061335a6142db565b60009081526001919091016020526040902054151590565b61135e8160006142fd565b6000613fd98383613faa565b61400f57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610925565b506000610925565b600061402283614454565b80156135d657506135d68383614487565b6000818152600183016020526040812054801561411c5760006140576001836150fd565b855490915060009061406b906001906150fd565b90508181146140d057600086600001828154811061408b5761408b6150e7565b90600052602060002001549050808760000184815481106140ae576140ae6150e7565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140e1576140e16158ad565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610925565b6000915050610925565b6060614131826134aa565b61414557614145630a14c4b560e41b6133ad565b600061414f61451b565b905080516000141561417057604051806020016040528060008152506135d6565b8061417a8461452a565b60405160200161418b9291906158c3565b6040516020818303038152906040529392505050565b600054610100900460ff166141c85760405162461bcd60e51b815260040161276d90615862565b610ad9614578565b600054610100900460ff166141f75760405162461bcd60e51b815260040161276d90615862565b610ad96145af565b600054610100900460ff166142265760405162461bcd60e51b815260040161276d90615862565b8161422f613486565b600201908051906020019061424592919061465a565b508061424f613486565b600301908051906020019061426592919061465a565b506001614270613486565b555050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156142c557602002820191906000526020600020905b8154815260200190600101908083116142b1575b50505050509050919050565b8060005260046000fd5b60006142e633611b13565b156142f8575060131936013560601c90565b503390565b6000614308836136e5565b905080600080614317866137a3565b91509150841561434e5761432c8184336137cb565b61434e5761433a8333612a6b565b61434e5761434e632ce44b5f60e11b6133ad565b801561435957600082555b6001600160801b03614369613486565b6001600160a01b038516600090815260059190910160205260409020805491909101905561439b83600360e01b6137e0565b6143a3613486565b60008881526004919091016020526040902055600160e11b841661441257600186016143cd613486565b60008281526004919091016020526040902054614410576143ec613486565b54811461441057846143fc613486565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b03861690600080516020615940833981519152908390a4614440613486565b600190810180549091019055505050505050565b6000614467826301ffc9a760e01b614487565b80156109255750614480826001600160e01b0319614487565b1592915050565b6000806301ffc9a760e01b836040516024016144a39190615176565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614504575060208210155b80156145105750600081115b979650505050505050565b606060d58054610af390614fe9565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061456157614566565b614544565b50819003601f19909101908152919050565b600054610100900460ff1661459f5760405162461bcd60e51b815260040161276d90615862565b610ad96145aa6135b7565b613adf565b600054610100900460ff1661347f5760405162461bcd60e51b815260040161276d90615862565b8280546145e290614fe9565b90600052602060002090601f016020900481019282614604576000855561464a565b82601f1061461d5782800160ff1982351617855561464a565b8280016001018555821561464a579182015b8281111561464a57823582559160200191906001019061462f565b506146569291506147ce565b5090565b82805461466690614fe9565b90600052602060002090601f016020900481019282614688576000855561464a565b82601f106146a157805160ff191683800117855561464a565b8280016001018555821561464a579182015b8281111561464a5782518255916020019190600101906146b3565b82805482825590600052602060002090810192821561464a579160200282015b8281111561464a5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906146ee565b82805482825590600052602060002090810192821561476e579160200282015b8281111561476e578251805161475e91849160209091019061465a565b5091602001919060010190614741565b506146569291506147e3565b508054600082559060005260206000209081019061135e91906147ce565b5080546147a490614fe9565b6000825580601f106147b4575050565b601f01602090049060005260206000209081019061135e91905b5b8082111561465657600081556001016147cf565b808211156146565760006147f78282614798565b506001016147e3565b6001600160e01b03198116811461135e57600080fd5b60006020828403121561482857600080fd5b81356135d681614800565b60008083601f84011261484557600080fd5b5081356001600160401b0381111561485c57600080fd5b60208301915083602082850101111561487457600080fd5b9250929050565b6000806020838503121561488e57600080fd5b82356001600160401b038111156148a457600080fd5b6148b085828601614833565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156148fd5783516001600160a01b0316835292840192918401916001016148d8565b50909695505050505050565b60005b8381101561492457818101518382015260200161490c565b838111156122925750506000910152565b6000815180845261494d816020860160208601614909565b601f01601f19169290920160200192915050565b6020815260006135d66020830184614935565b60006020828403121561498657600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461135e57600080fd5b600080604083850312156149c957600080fd5b82356149d4816149a1565b946020939093013593505050565b6000602082840312156149f457600080fd5b81356135d6816149a1565b600080600060608486031215614a1457600080fd5b8335614a1f816149a1565b92506020840135614a2f816149a1565b929592945050506040919091013590565b60008060408385031215614a5357600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060008060008060608789031215614a9457600080fd5b86356001600160401b0380821115614aab57600080fd5b614ab78a838b01614833565b90985096506020890135915080821115614ad057600080fd5b614adc8a838b01614833565b90965094506040890135915080821115614af557600080fd5b50614b0289828a01614833565b979a9699509497509295939492505050565b60008083601f840112614b2657600080fd5b5081356001600160401b03811115614b3d57600080fd5b6020830191508360208260051b850101111561487457600080fd5b600080600060408486031215614b6d57600080fd5b83356001600160401b03811115614b8357600080fd5b614b8f86828701614b14565b909790965060209590950135949350505050565b60008060008060408587031215614bb957600080fd5b84356001600160401b0380821115614bd057600080fd5b614bdc88838901614833565b90965094506020870135915080821115614bf557600080fd5b50614c0287828801614b14565b95989497509550505050565b60008060208385031215614c2157600080fd5b82356001600160401b03811115614c3757600080fd5b6148b085828601614b14565b600080600060408486031215614c5857600080fd5b8335614c63816149a1565b925060208401356001600160401b03811115614c7e57600080fd5b614c8a86828701614b14565b9497909650939450505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614cec57603f19888603018452614cda858351614935565b94509285019290850190600101614cbe565b5092979650505050505050565b801515811461135e57600080fd5b8035610c6881614cf9565b60008060408385031215614d2557600080fd5b8235614d30816149a1565b91506020830135614d4081614cf9565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115614d7b57614d7b614d4b565b604051601f8501601f19908116603f01168101908282118183101715614da357614da3614d4b565b81604052809350858152868686011115614dbc57600080fd5b858560208301376000602087830101525050509392505050565b60008060008060808587031215614dec57600080fd5b8435614df7816149a1565b93506020850135614e07816149a1565b92506040850135915060608501356001600160401b03811115614e2957600080fd5b8501601f81018713614e3a57600080fd5b614e4987823560208401614d61565b91505092959194509250565b60008060008060408587031215614e6b57600080fd5b84356001600160401b0380821115614e8257600080fd5b614e8e88838901614b14565b90965094506020870135915080821115614ea757600080fd5b818701915087601f830112614ebb57600080fd5b813581811115614eca57600080fd5b8860208260061b8501011115614edf57600080fd5b95989497505060200194505050565b600080600060408486031215614f0357600080fd5b83356001600160401b03811115614f1957600080fd5b614f2586828701614833565b9094509250506020840135614f39816149a1565b809150509250925092565b60008060008060408587031215614f5a57600080fd5b84356001600160401b0380821115614f7157600080fd5b614bdc88838901614b14565b60008060408385031215614f9057600080fd5b8235614f9b816149a1565b91506020830135614d40816149a1565b600060408284031215611be157600080fd5b60008251614fcf818460208701614909565b9190910192915050565b8183823760009101908152919050565b600181811c90821680614ffd57607f821691505b60208210811415611be157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561504e5761504e61501e565b500290565b60008261507057634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006150b260608301888a615075565b82810360208401526150c5818789615075565b905082810360408401526150da818587615075565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b60008282101561510f5761510f61501e565b500390565b60008351615126818460208801614909565b83519083019061513a818360208801614909565b01949350505050565b60006000198214156151575761515761501e565b5060010190565b600082198211156151715761517161501e565b500190565b6001600160e01b031991909116815260200190565b60006020828403121561519d57600080fd5b81516135d681614cf9565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039290921682521515602082015260400190565b81835260006001600160fb1b0383111561520057600080fd5b8260051b8083602087013760009401602001938452509192915050565b602081526000613a196020830184866151e7565b60018060a01b0385168152836020820152606060408201526000615259606083018486615075565b9695505050505050565b602081526000613a19602083018486615075565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff8116811461135e57600080fd5b6000602082840312156152bc57600080fd5b81356135d68161529a565b81356152d2816149a1565b81546001600160a01b031981166001600160a01b0392909216918217835560208401356152fe8161529a565b6001600160b01b03199190911690911760a09190911b61ffff60a01b1617905550565b803561532c816149a1565b6001600160a01b0316825260208101356153458161529a565b61ffff81166020840152505050565b838152608081016153686020830185615321565b6001600160a01b03929092166060919091015292915050565b6000604080835261539581840187896151e7565b83810360208086019190915285825286910160005b868110156153cc576153bc8284615321565b91830191908301906001016153aa565b5098975050505050505050565b8035610c68816149a1565b600082601f8301126153f557600080fd5b6135d683833560208501614d61565b60006040828403121561541657600080fd5b604080519081016001600160401b038111828210171561543857615438614d4b565b6040529050808235615449816149a1565b815260208301356154598161529a565b6020919091015292915050565b6000806000806000806000806000806000806101a08d8f03121561548957600080fd5b6154928d6153d9565b9b506001600160401b0360208e013511156154ac57600080fd5b6154bc8e60208f01358f016153e4565b9a506154cb8e60408f01615404565b99506154d960808e016153d9565b98506001600160401b0360a08e013511156154f357600080fd5b6155038e60a08f01358f016153e4565b97506001600160401b0360c08e0135111561551d57600080fd5b61552d8e60c08f01358f016153e4565b965061553b60e08e016153d9565b955061554a6101008e016153d9565b94506001600160401b036101208e0135111561556557600080fd5b6155768e6101208f01358f016153e4565b93506001600160401b036101408e0135111561559157600080fd5b6155a28e6101408f01358f016153e4565b92506101608d013591506155b96101808e01614d07565b90509295989b509295989b509295989b565b6000808335601e198436030181126155e257600080fd5b8301803591506001600160401b038211156155fc57600080fd5b60200191503681900382131561487457600080fd5b6040815260006156256040830186886151e7565b602083820381850152818583528183019050818660051b8401018760005b888110156156b157858303601f190184528135368b9003601e1901811261566957600080fd5b8a0180356001600160401b0381111561568157600080fd5b8036038c131561569057600080fd5b61569d8582898501615075565b958701959450505090840190600101615643565b50909a9950505050505050505050565b6040815260006156d56040830186886151e7565b8281036020848101919091528482528591810160005b868110156153cc5783356156fe816149a1565b6001600160a01b0316825292820192908201906001016156eb565b606081016157278285615321565b6001600160a01b039290921660409190910152919050565b60008161574e5761574e61501e565b506000190190565b60408152600080845481600182811c91508083168061577657607f831692505b602080841082141561579657634e487b7160e01b86526022600452602486fd5b60408801849052606088018280156157b557600181146157c6576157f1565b60ff198716825282820197506157f1565b60008c81526020902060005b878110156157eb578154848201529086019084016157d2565b83019850505b50508786038189015250505050506158098185614935565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061525990830184614935565b60006020828403121561585757600080fd5b81516135d681614800565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b600083516158d5818460208801614909565b602f60f81b90830190815283516158f3816001840160208801614909565b0160010194935050505056fec407dfe559ca4a63d7cf8439b9fce2965d7a4c8c92eb5d5047f53bb9eec295fd73e05f4c0a27cbf60841afa4a2f8577f5e99db3e3e9c293800d6e6b1f7b8a7abddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe236d251e7da4ac8a3c275f80aebc9b74cbf356425fa04864da5043511a81219a164736f6c634300080a000a