[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "_lzEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidDelegate", "type": "error" }, { "inputs": [], "name": "InvalidEndpointCall", "type": "error" }, { "inputs": [], "name": "InvalidLocalDecimals", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "options", "type": "bytes" } ], "name": "InvalidOptions", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "LzTokenUnavailable", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "NoPeer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "NotEnoughNative", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "OnlyEndpoint", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" } ], "name": "OnlyPeer", "type": "error" }, { "inputs": [], "name": "OnlySelf", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "name": "SimulationResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" } ], "name": "SlippageExceeded", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "indexed": false, "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "EnforcedOptionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "inspector", "type": "address" } ], "name": "MsgInspectorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "fromAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "eid", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "name": "PeerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "preCrimeAddress", "type": "address" } ], "name": "PreCrimeSet", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND_AND_CALL", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" } ], "name": "allowInitializePath", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvalRequired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blacklist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "uint16", "name": "_msgType", "type": "uint16" }, { "internalType": "bytes", "name": "_extraOptions", "type": "bytes" } ], "name": "combineOptions", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimalConversionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpointV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" } ], "name": "enforcedOptions", "outputs": [ { "internalType": "bytes", "name": "enforcedOption", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "", "type": "tuple" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "isComposeMsgSender", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "isPeer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" }, { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "address", "name": "executor", "type": "address" }, { "internalType": "bytes", "name": "message", "type": "bytes" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "internalType": "struct InboundPacket[]", "name": "_packets", "type": "tuple[]" } ], "name": "lzReceiveAndRevert", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceiveSimulate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "msgInspector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "nextNonce", "outputs": [ { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oApp", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oAppVersion", "outputs": [ { "internalType": "uint64", "name": "senderVersion", "type": "uint64" }, { "internalType": "uint64", "name": "receiverVersion", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "oftVersion", "outputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }, { "internalType": "uint64", "name": "version", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "peers", "outputs": [ { "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "stateMutability": "view", "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": "preCrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" } ], "name": "quoteOFT", "outputs": [ { "components": [ { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmountLD", "type": "uint256" } ], "internalType": "struct OFTLimit", "name": "oftLimit", "type": "tuple" }, { "components": [ { "internalType": "int256", "name": "feeAmountLD", "type": "int256" }, { "internalType": "string", "name": "description", "type": "string" } ], "internalType": "struct OFTFeeDetail[]", "name": "oftFeeDetails", "type": "tuple[]" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "internalType": "bool", "name": "_payInLzToken", "type": "bool" } ], "name": "quoteSend", "outputs": [ { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "msgFee", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "_fee", "type": "tuple" }, { "internalType": "address", "name": "_refundAddress", "type": "address" } ], "name": "send", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "fee", "type": "tuple" } ], "internalType": "struct MessagingReceipt", "name": "msgReceipt", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" } ], "name": "setDelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "setEnforcedOptions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_msgInspector", "type": "address" } ], "name": "setMsgInspector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "setPeer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_preCrime", "type": "address" } ], "name": "setPreCrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who", "type": "address" }, { "internalType": "bool", "name": "what", "type": "bool" } ], "name": "toggleBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "what", "type": "bool" } ], "name": "togglePause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "value", "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": "value", "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": "nonpayable", "type": "function" } ]
6101a06040523480156200001257600080fd5b5060405162004a8938038062004a898339810160408190526200003591620006ef565b8180604051806040016040528060018152602001603160f81b815250858585338383620000676200029f60201b60201c565b84848181818133806200009557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000a081620002a4565b506001600160a01b038083166080528116620000cf57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156200011757600080fd5b505af11580156200012c573d6000803e3d6000fd5b505050505050505062000144620002f460201b60201c565b60ff168360ff1610156200016b576040516301e9714b60e41b815260040160405180910390fd5b6200017860068462000792565b6200018590600a620008ab565b60a05250600891506200019b9050838262000951565b506009620001aa828262000951565b50620001c29550879450600a935050620002f9915050565b61016052620001d381600b620002f9565b61018052815160208084019190912061012052815190820120610140524660e052620002636101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c05250503061010052506200028233670de0b6b3a764000062000332565b6200029633670de0b6b3a764000062000370565b50505062000a8d565b601290565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b600060208351101562000319576200031183620003aa565b90506200032c565b8162000326848262000951565b5060ff90505b92915050565b6001600160a01b0382166200035e5760405163ec442f0560e01b8152600060048201526024016200008c565b6200036c60008383620003ed565b5050565b6001600160a01b0382166200039c57604051634b637e8f60e11b8152600060048201526024016200008c565b6200036c82600083620003ed565b600080829050601f81511115620003d8578260405163305a27a960e01b81526004016200008c919062000a1d565b8051620003e58262000a52565b179392505050565b6001600160a01b0383166000908152600d602052604090205460ff1615620004465760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016200008c565b6001600160a01b0382166000908152600d602052604090205460ff16156200049f5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016200008c565b600e5460ff1615620004dd5760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b60448201526064016200008c565b620004ea838383620004ef565b505050565b6001600160a01b0383166200051e57806007600082825462000512919062000a77565b90915550620005929050565b6001600160a01b03831660009081526005602052604090205481811015620005735760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200008c565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216620005b057600780548290039055620005cf565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200061591815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006555781810151838201526020016200063b565b50506000910152565b600082601f8301126200067057600080fd5b81516001600160401b03808211156200068d576200068d62000622565b604051601f8301601f19908116603f01168101908282118183101715620006b857620006b862000622565b81604052838152866020858801011115620006d257600080fd5b620006e584602083016020890162000638565b9695505050505050565b6000806000606084860312156200070557600080fd5b83516001600160401b03808211156200071d57600080fd5b6200072b878388016200065e565b945060208601519150808211156200074257600080fd5b5062000751868287016200065e565b604086015190935090506001600160a01b03811681146200077157600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156200032c576200032c6200077c565b600181815b80851115620007ef578160001904821115620007d357620007d36200077c565b80851615620007e157918102915b93841c9390800290620007b3565b509250929050565b60008262000808575060016200032c565b8162000817575060006200032c565b81600181146200083057600281146200083b576200085b565b60019150506200032c565b60ff8411156200084f576200084f6200077c565b50506001821b6200032c565b5060208310610133831016604e8410600b841016171562000880575081810a6200032c565b6200088c8383620007ae565b8060001904821115620008a357620008a36200077c565b029392505050565b6000620008bc60ff841683620007f7565b9392505050565b600181811c90821680620008d857607f821691505b602082108103620008f957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ea57600081815260208120601f850160051c81016020861015620009285750805b601f850160051c820191505b81811015620009495782815560010162000934565b505050505050565b81516001600160401b038111156200096d576200096d62000622565b62000985816200097e8454620008c3565b84620008ff565b602080601f831160018114620009bd5760008415620009a45750858301515b600019600386901b1c1916600185901b17855562000949565b600085815260208120601f198616915b82811015620009ee57888601518255948401946001909101908401620009cd565b508582101562000a0d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000a3e81604085016020870162000638565b601f01601f19169190910160400192915050565b80516020808301519190811015620008f95760001960209190910360031b1b16919050565b808201808211156200032c576200032c6200077c565b60805160a05160c05160e0516101005161012051610140516101605161018051613f4562000b446000396000611ea901526000611e7c01526000611ba901526000611b8101526000611adc01526000611b0601526000611b300152600081816107a8015281816122be01528181612333015261251a01526000818161061e01528181610b88015281816113c40152818161186c01528181611d4d01528181612065015281816126df01526127b10152613f456000f3fe6080604052600436106103295760003560e01c80637ecebe00116101a5578063bc70b354116100ec578063d505accf11610095578063f9f92be41161006f578063f9f92be414610998578063fc03b68a146109c8578063fc0c546a14610568578063ff7bd03d146109e857600080fd5b8063d505accf14610912578063dd62ed3e14610932578063f2fde38b1461097857600080fd5b8063ca5eb5e1116100c6578063ca5eb5e1146108bf578063d045a0dc146108df578063d4243885146108f257600080fd5b8063bc70b3541461086b578063bd815db01461088b578063c7c7f5b31461089e57600080fd5b8063963efcaa1161014e578063b731ea0a11610128578063b731ea0a146107fe578063b98bd0701461081e578063bb0b6a531461083e57600080fd5b8063963efcaa146107965780639f68b964146107ca578063a9059cbb146107de57600080fd5b8063857749b01161017f578063857749b01461074f5780638da5cb5b1461076357806395d89b411461078157600080fd5b80637ecebe00146106e757806382413eac1461070757806384b0196e1461072757600080fd5b80633400288b116102745780635a0dfe4d1161021d5780636fc1b31e116101f75780636fc1b31e1461064057806370a0823114610660578063715018a6146106965780637d25a05e146106ab57600080fd5b80635a0dfe4d146105bb5780635c975abb146105f25780635e280f111461060c57600080fd5b806352ae28791161024e57806352ae2879146105685780635535d4611461057b57806357d159c61461059b57600080fd5b80633400288b146105065780633644e515146105265780633b6f743b1461053b57600080fd5b8063156a0d0f116102d65780631f5e1334116102b05780631f5e1334146104af57806323b872dd146104c4578063313ce567146104e457600080fd5b8063156a0d0f1461042d57806317442b701461046e57806318160ddd1461049057600080fd5b8063111ecdad11610307578063111ecdad146103b857806313137d65146103f0578063134d4f251461040557600080fd5b806306fdde031461032e578063095ea7b3146103595780630d35b41514610389575b600080fd5b34801561033a57600080fd5b50610343610a08565b6040516103509190612e68565b60405180910390f35b34801561036557600080fd5b50610379610374366004612e90565b610a9a565b6040519015158152602001610350565b34801561039557600080fd5b506103a96103a4366004612ed4565b610ab4565b60405161035093929190612f09565b3480156103c457600080fd5b506004546103d8906001600160a01b031681565b6040516001600160a01b039091168152602001610350565b6104036103fe366004612ffc565b610b86565b005b34801561041157600080fd5b5061041a600281565b60405161ffff9091168152602001610350565b34801561043957600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526001602082015201610350565b34801561047a57600080fd5b5060408051600181526002602082015201610350565b34801561049c57600080fd5b506007545b604051908152602001610350565b3480156104bb57600080fd5b5061041a600181565b3480156104d057600080fd5b506103796104df36600461309c565b610c78565b3480156104f057600080fd5b5060125b60405160ff9091168152602001610350565b34801561051257600080fd5b506104036105213660046130f6565b610c9e565b34801561053257600080fd5b506104a1610cb4565b34801561054757600080fd5b5061055b610556366004613120565b610cc3565b6040516103509190613172565b34801561057457600080fd5b50306103d8565b34801561058757600080fd5b5061034361059636600461319b565b610d2a565b3480156105a757600080fd5b506104036105b63660046131ce565b610dcf565b3480156105c757600080fd5b506103796105d63660046130f6565b63ffffffff919091166000908152600160205260409020541490565b3480156105fe57600080fd5b50600e546103799060ff1681565b34801561061857600080fd5b506103d87f000000000000000000000000000000000000000000000000000000000000000081565b34801561064c57600080fd5b5061040361065b3660046131eb565b610dea565b34801561066c57600080fd5b506104a161067b3660046131eb565b6001600160a01b031660009081526005602052604090205490565b3480156106a257600080fd5b50610403610e54565b3480156106b757600080fd5b506106ce6106c63660046130f6565b600092915050565b60405167ffffffffffffffff9091168152602001610350565b3480156106f357600080fd5b506104a16107023660046131eb565b610e68565b34801561071357600080fd5b50610379610722366004613208565b610e86565b34801561073357600080fd5b5061073c610e9b565b604051610350979695949392919061326f565b34801561075b57600080fd5b5060066104f4565b34801561076f57600080fd5b506000546001600160a01b03166103d8565b34801561078d57600080fd5b50610343610efd565b3480156107a257600080fd5b506104a17f000000000000000000000000000000000000000000000000000000000000000081565b3480156107d657600080fd5b506000610379565b3480156107ea57600080fd5b506103796107f9366004612e90565b610f0c565b34801561080a57600080fd5b506002546103d8906001600160a01b031681565b34801561082a57600080fd5b50610403610839366004613366565b610f1a565b34801561084a57600080fd5b506104a16108593660046133a8565b60016020526000908152604090205481565b34801561087757600080fd5b506103436108863660046133c3565b610f34565b610403610899366004613366565b6110dc565b6108b16108ac366004613424565b611289565b604051610350929190613492565b3480156108cb57600080fd5b506104036108da3660046131eb565b611384565b6104036108ed366004612ffc565b611423565b3480156108fe57600080fd5b5061040361090d3660046131eb565b61146b565b34801561091e57600080fd5b5061040361092d3660046134e5565b6114ce565b34801561093e57600080fd5b506104a161094d36600461355c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561098457600080fd5b506104036109933660046131eb565b61163a565b3480156109a457600080fd5b506103796109b33660046131eb565b600d6020526000908152604090205460ff1681565b3480156109d457600080fd5b506104036109e336600461358a565b611691565b3480156109f457600080fd5b50610379610a033660046135b8565b6116c4565b606060088054610a17906135d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a43906135d4565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b5050505050905090565b600033610aa88185856116fa565b60019150505b92915050565b60408051808201909152600080825260208201526060610ae7604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182610b43565b604080518082019091526000815260606020820152815260200190600190039081610b1b5790505b509350600080610b68604089013560608a0135610b6360208c018c6133a8565b61170c565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610bef576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610c0990610c04908a6133a8565b611769565b14610c6057610c1b60208801886133a8565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610be6565b610c6f878787878787876117be565b50505050505050565b600033610c8685828561193e565b610c918585856119d5565b60019150505b9392505050565b610ca6611a34565b610cb08282611a7a565b5050565b6000610cbe611acf565b905090565b60408051808201909152600080825260208201526000610cf360408501356060860135610b6360208801886133a8565b915050600080610d038684611bfa565b9092509050610d20610d1860208801886133a8565b838388611d37565b9695505050505050565b600360209081526000928352604080842090915290825290208054610d4e906135d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7a906135d4565b8015610dc75780601f10610d9c57610100808354040283529160200191610dc7565b820191906000526020600020905b815481529060010190602001808311610daa57829003601f168201915b505050505081565b610dd7611a34565b600e805460ff1916911515919091179055565b610df2611a34565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610e5c611a34565b610e666000611e18565b565b6001600160a01b0381166000908152600c6020526040812054610aae565b6001600160a01b03811630145b949350505050565b600060608060008060006060610eaf611e75565b610eb7611ea2565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606060098054610a17906135d4565b600033610aa88185856119d5565b610f22611a34565b610cb0610f2f82846136c3565b611ecf565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610f68906135d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610f94906135d4565b8015610fe15780601f10610fb657610100808354040283529160200191610fe1565b820191906000526020600020905b815481529060010190602001808311610fc457829003601f168201915b5050505050905080516000036110315783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610e939350505050565b6000839003611041579050610e93565b600283106110bf5761108884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fe092505050565b8061109684600281886137d9565b6040516020016110a893929190613803565b604051602081830303815290604052915050610e93565b8383604051639a6d49cd60e01b8152600401610be6929190613854565b60005b818110156111ef57368383838181106110fa576110fa613868565b905060200281019061110c919061387e565b905061113f61111e60208301836133a8565b602083013563ffffffff919091166000908152600160205260409020541490565b61114957506111dd565b3063d045a0dc60c08301358360a081013561116861010083018361389f565b611179610100890160e08a016131eb565b6111876101208a018a61389f565b6040518963ffffffff1660e01b81526004016111a997969594939291906138fc565b6000604051808303818588803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b5050505050505b806111e781613999565b9150506110df565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa15801561122e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261125691908101906139b2565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610be69190612e68565b611291612dd0565b60408051808201909152600080825260208201526000806112c833604089013560608a01356112c360208c018c6133a8565b61200c565b915091506000806112d98984611bfa565b90925090506113056112ee60208b018b6133a8565b83836112ff368d90038d018d613a20565b8b612032565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611353908d018d6133a8565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b61138c611a34565b6040517fca5eb5e10000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561140857600080fd5b505af115801561141c573d6000803e3d6000fd5b5050505050565b33301461145c576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6f87878787878787610c60565b611473611a34565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610e49565b8342111561150b576040517f6279130200000000000000000000000000000000000000000000000000000000815260048101859052602401610be6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886115588c6001600160a01b03166000908152600c6020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006115b38261213d565b905060006115c382878787612185565b9050896001600160a01b0316816001600160a01b031614611623576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b166024820152604401610be6565b61162e8a8a8a6116fa565b50505050505050505050565b611642611a34565b6001600160a01b038116611685576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610be6565b61168e81611e18565b50565b611699611a34565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60006020820180359060019083906116dc90866133a8565b63ffffffff1681526020810191909152604001600020541492915050565b61170783838360016121b3565b505050565b600080611718856122ba565b915081905083811015611761576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401610be6565b935093915050565b63ffffffff811660009081526001602052604081205480610aae576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610be6565b60006117d06117cd87876122f1565b90565b905060006117fc826117ea6117e58a8a612309565b61232c565b6117f760208d018d6133a8565b612362565b905060288611156118dc57600061183961181c60608c0160408d01613a52565b61182960208d018d6133a8565b846118348c8c61238a565b6123d5565b6040517f7cb590120000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906118a89086908d906000908790600401613a6f565b600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61191560208d018d6133a8565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981146119cf57818110156119c0576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610be6565b6119cf848484840360006121b3565b50505050565b6001600160a01b0383166119ff57604051634b637e8f60e11b815260006004820152602401610be6565b6001600160a01b038216611a295760405163ec442f0560e01b815260006004820152602401610be6565b611707838383612407565b6000546001600160a01b03163314610e66576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610be6565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611b2857507f000000000000000000000000000000000000000000000000000000000000000046145b15611b5257507f000000000000000000000000000000000000000000000000000000000000000090565b610cbe604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6060806000611c578560200135611c1086612513565b611c1d60a089018961389f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253f92505050565b9093509050600081611c6a576001611c6d565b60025b9050611c8d611c7f60208801886133a8565b8261088660808a018a61389f565b6004549093506001600160a01b031615611d2e57600480546040517f043a78eb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163043a78eb91611ceb918891889101613aa1565b602060405180830381865afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190613ac6565b505b50509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611d9a89611769565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611dcf929190613ae3565b6040805180830381865afa158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f9190613b8c565b95945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610cbe7f0000000000000000000000000000000000000000000000000000000000000000600a6125b9565b6060610cbe7f0000000000000000000000000000000000000000000000000000000000000000600b6125b9565b60005b8151811015611fb057611f01828281518110611ef057611ef0613868565b602002602001015160400151611fe0565b818181518110611f1357611f13613868565b60200260200101516040015160036000848481518110611f3557611f35613868565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110611f6f57611f6f613868565b60200260200101516020015161ffff1661ffff1681526020019081526020016000209081611f9d9190613bf6565b5080611fa881613999565b915050611ed2565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610e499190613cb6565b600281015161ffff8116600314610cb05781604051639a6d49cd60e01b8152600401610be69190612e68565b60008061201a85858561170c565b90925090506120298683612664565b94509492505050565b61203a612dd0565b6000612049846000015161269a565b6020850151909150156120635761206384602001516126db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016120b38c611769565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016120ef929190613ae3565b60806040518083038185885af115801561210d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121329190613d3f565b979650505050505050565b6000610aae61214a611acf565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600080612197888888886127d6565b9250925092506121a782826128a5565b50909695505050505050565b6001600160a01b0384166121f6576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610be6565b6001600160a01b038316612239576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610be6565b6001600160a01b03808516600090815260066020908152604080832093871683529290522082905580156119cf57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516122ac91815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006122e78184613d89565b610aae9190613dab565b600061230060208284866137d9565b610c9791613dc2565b60006123196028602084866137d9565b61232291613de0565b60c01c9392505050565b6000610aae7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613dab565b60006001600160a01b0384166123785761dead93505b61238284846129a9565b509092915050565b606061239982602881866137d9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b6060848484846040516020016123ee9493929190613e10565b6040516020818303038152906040529050949350505050565b6001600160a01b0383166000908152600d602052604090205460ff161561245e5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610be6565b6001600160a01b0382166000908152600d602052604090205460ff16156124b55760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610be6565b600e5460ff16156125085760405162461bcd60e51b815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610be6565b6117078383836129df565b6000610aae7f000000000000000000000000000000000000000000000000000000000000000083613d89565b805160609015158061258857848460405160200161257492919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040526125af565b8484338560405160200161259f9493929190613e76565b6040516020818303038152906040525b9150935093915050565b606060ff83146125d3576125cc83612b22565b9050610aae565b8180546125df906135d4565b80601f016020809104026020016040519081016040528092919081815260200182805461260b906135d4565b80156126585780601f1061262d57610100808354040283529160200191612658565b820191906000526020600020905b81548152906001019060200180831161263b57829003601f168201915b50505050509050610aae565b6001600160a01b03821661268e57604051634b637e8f60e11b815260006004820152602401610be6565b610cb082600083612407565b60008134146126d7576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610be6565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275f9190613eb7565b90506001600160a01b0381166127a1576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb06001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085612b61565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612811575060009150600390508261289b565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612865573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128915750600092506001915082905061289b565b9250600091508190505b9450945094915050565b60008260038111156128b9576128b9613ed4565b036128c2575050565b60018260038111156128d6576128d6613ed4565b0361290d576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561292157612921613ed4565b0361295b576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610be6565b600382600381111561296f5761296f613ed4565b03610cb0576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610be6565b6001600160a01b0382166129d35760405163ec442f0560e01b815260006004820152602401610be6565b610cb060008383612407565b6001600160a01b038316612a0a5780600760008282546129ff9190613eea565b90915550612a959050565b6001600160a01b03831660009081526005602052604090205481811015612a76576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610be6565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216612ab157600780548290039055612ad0565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b1591815260200190565b60405180910390a3505050565b60606000612b2f83612be9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526119cf908590612c2a565b600060ff8216601f811115610aae576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612c3f6001600160a01b03841683612ca6565b90508051600014158015612c64575080806020019051810190612c629190613ac6565b155b15611707576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610be6565b6060610c978383600084600080856001600160a01b03168486604051612ccc9190613efd565b60006040518083038185875af1925050503d8060008114612d09576040519150601f19603f3d011682016040523d82523d6000602084013e612d0e565b606091505b5091509150610d20868383606082612d2e57612d2982612d8e565b610c97565b8151158015612d4557506001600160a01b0384163b155b15612d87576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610be6565b5080610c97565b805115612d9e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612e13604051806040016040528060008152602001600081525090565b905290565b60005b83811015612e33578181015183820152602001612e1b565b50506000910152565b60008151808452612e54816020860160208601612e18565b601f01601f19169290920160200192915050565b602081526000610c976020830184612e3c565b6001600160a01b038116811461168e57600080fd5b60008060408385031215612ea357600080fd5b8235612eae81612e7b565b946020939093013593505050565b600060e08284031215612ece57600080fd5b50919050565b600060208284031215612ee657600080fd5b813567ffffffffffffffff811115612efd57600080fd5b610e9384828501612ebc565b8351815260208085015190820152600060a08201604060a08185015281865180845260c08601915060c08160051b8701019350602080890160005b83811015612f835788870360bf19018552815180518852830151838801879052612f7087890182612e3c565b9750509382019390820190600101612f44565b50508751606088015250505060208501516080850152509050610e93565b600060608284031215612ece57600080fd5b60008083601f840112612fc557600080fd5b50813567ffffffffffffffff811115612fdd57600080fd5b602083019150836020828501011115612ff557600080fd5b9250929050565b600080600080600080600060e0888a03121561301757600080fd5b6130218989612fa1565b965060608801359550608088013567ffffffffffffffff8082111561304557600080fd5b6130518b838c01612fb3565b909750955060a08a0135915061306682612e7b565b90935060c0890135908082111561307c57600080fd5b506130898a828b01612fb3565b989b979a50959850939692959293505050565b6000806000606084860312156130b157600080fd5b83356130bc81612e7b565b925060208401356130cc81612e7b565b929592945050506040919091013590565b803563ffffffff811681146130f157600080fd5b919050565b6000806040838503121561310957600080fd5b612eae836130dd565b801515811461168e57600080fd5b6000806040838503121561313357600080fd5b823567ffffffffffffffff81111561314a57600080fd5b61315685828601612ebc565b925050602083013561316781613112565b809150509250929050565b815181526020808301519082015260408101610aae565b803561ffff811681146130f157600080fd5b600080604083850312156131ae57600080fd5b6131b7836130dd565b91506131c560208401613189565b90509250929050565b6000602082840312156131e057600080fd5b8135610c9781613112565b6000602082840312156131fd57600080fd5b8135610c9781612e7b565b60008060008060a0858703121561321e57600080fd5b6132288686612fa1565b9350606085013567ffffffffffffffff81111561324457600080fd5b61325087828801612fb3565b909450925050608085013561326481612e7b565b939692955090935050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526132ab60e084018a612e3c565b83810360408501526132bd818a612e3c565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561330f578351835292840192918401916001016132f3565b50909c9b505050505050505050505050565b60008083601f84011261333357600080fd5b50813567ffffffffffffffff81111561334b57600080fd5b6020830191508360208260051b8501011115612ff557600080fd5b6000806020838503121561337957600080fd5b823567ffffffffffffffff81111561339057600080fd5b61339c85828601613321565b90969095509350505050565b6000602082840312156133ba57600080fd5b610c97826130dd565b600080600080606085870312156133d957600080fd5b6133e2856130dd565b93506133f060208601613189565b9250604085013567ffffffffffffffff81111561340c57600080fd5b61341887828801612fb3565b95989497509550505050565b6000806000838503608081121561343a57600080fd5b843567ffffffffffffffff81111561345157600080fd5b61345d87828801612ebc565b9450506040601f198201121561347257600080fd5b50602084019150606084013561348781612e7b565b809150509250925092565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516134ce604084018280518252602090810151910152565b5082516080830152602083015160a0830152610c97565b600080600080600080600060e0888a03121561350057600080fd5b873561350b81612e7b565b9650602088013561351b81612e7b565b95506040880135945060608801359350608088013560ff8116811461353f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561356f57600080fd5b823561357a81612e7b565b9150602083013561316781612e7b565b6000806040838503121561359d57600080fd5b82356135a881612e7b565b9150602083013561316781613112565b6000606082840312156135ca57600080fd5b610c978383612fa1565b600181811c908216806135e857607f821691505b602082108103612ece57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561364157613641613608565b60405290565b6040805190810167ffffffffffffffff8111828210171561364157613641613608565b604051601f8201601f1916810167ffffffffffffffff8111828210171561369357613693613608565b604052919050565b600067ffffffffffffffff8211156136b5576136b5613608565b50601f01601f191660200190565b600067ffffffffffffffff808411156136de576136de613608565b8360051b60206136ef81830161366a565b86815291850191818101903684111561370757600080fd5b865b848110156137cd578035868111156137215760008081fd5b880160603682900312156137355760008081fd5b61373d61361e565b613746826130dd565b8152613753868301613189565b868201526040808301358981111561376b5760008081fd5b929092019136601f8401126137805760008081fd5b823561379361378e8261369b565b61366a565b81815236898387010111156137a85760008081fd5b818986018a830137600091810189019190915290820152845250918301918301613709565b50979650505050505050565b600080858511156137e957600080fd5b838611156137f657600080fd5b5050820193919092039150565b60008451613815818460208901612e18565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610e9360208301848661382b565b634e487b7160e01b600052603260045260246000fd5b6000823561013e1983360301811261389557600080fd5b9190910192915050565b6000808335601e198436030181126138b657600080fd5b83018035915067ffffffffffffffff8211156138d157600080fd5b602001915036819003821315612ff557600080fd5b67ffffffffffffffff8116811461168e57600080fd5b63ffffffff61390a896130dd565b1681526020880135602082015260006040890135613927816138e6565b67ffffffffffffffff811660408401525087606083015260e0608083015261395360e08301878961382b565b6001600160a01b03861660a084015282810360c084015261397581858761382b565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016139ab576139ab613983565b5060010190565b6000602082840312156139c457600080fd5b815167ffffffffffffffff8111156139db57600080fd5b8201601f810184136139ec57600080fd5b80516139fa61378e8261369b565b818152856020838501011115613a0f57600080fd5b611e0f826020830160208601612e18565b600060408284031215613a3257600080fd5b613a3a613647565b82358152602083013560208201528091505092915050565b600060208284031215613a6457600080fd5b8135610c97816138e6565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000610d206080830184612e3c565b604081526000613ab46040830185612e3c565b8281036020840152611e0f8185612e3c565b600060208284031215613ad857600080fd5b8151610c9781613112565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152613b1960e0840182612e3c565b90506060850151603f198483030160a0850152613b368282612e3c565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215613b6e57600080fd5b613b76613647565b9050815181526020820151602082015292915050565b600060408284031215613b9e57600080fd5b610c978383613b5c565b601f82111561170757600081815260208120601f850160051c81016020861015613bcf5750805b601f850160051c820191505b81811015613bee57828155600101613bdb565b505050505050565b815167ffffffffffffffff811115613c1057613c10613608565b613c2481613c1e84546135d4565b84613ba8565b602080601f831160018114613c595760008415613c415750858301515b600019600386901b1c1916600185901b178555613bee565b600085815260208120601f198616915b82811015613c8857888601518255948401946001909101908401613c69565b5085821015613ca65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015613d3157888303603f190185528151805163ffffffff1684528781015161ffff16888501528601516060878501819052613d1d81860183612e3c565b968901969450505090860190600101613cdd565b509098975050505050505050565b600060808284031215613d5157600080fd5b613d5961361e565b825181526020830151613d6b816138e6565b6020820152613d7d8460408501613b5c565b60408201529392505050565b600082613da657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610aae57610aae613983565b80356020831015610aae57600019602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015613e085780818660080360031b1b83161692505b505092915050565b6001600160c01b03198560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251613e6681602c850160208701612e18565b91909101602c0195945050505050565b8481526001600160c01b03198460c01b16602082015282602882015260008251613ea7816048850160208701612e18565b9190910160480195945050505050565b600060208284031215613ec957600080fd5b8151610c9781612e7b565b634e487b7160e01b600052602160045260246000fd5b80820180821115610aae57610aae613983565b60008251613895818460208701612e1856fea2646970667358221220053220071ca2dfab984bef76b6fdc9c262cfee935b402dba3aa614f4a6fd5db164736f6c63430008150033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001a44076050125825900e736c501f859c50fe728c00000000000000000000000000000000000000000000000000000000000000085a65726f4c656e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45524f00000000000000000000000000000000000000000000000000000000