[ { "inputs": [ { "internalType": "address", "name": "_layerZeroEndpoint", "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": "CheckpointUnorderedInsertion", "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": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "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": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "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": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "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" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "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": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "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": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [], "name": "TOTAL_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "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": "composeMsgSender", "outputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "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": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "isTradingEnabled", "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "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": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "peers", "outputs": [ { "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "stateMutability": "view", "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": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "_value", "type": "bool" } ], "name": "whitelistAddressBeforeTradingEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101a06040526010805460ff191690553480156200001c57600080fd5b50604051620056b4380380620056b48339810160408190526200003f9162000b48565b6040518060400160405280600981526020016810d85c1e55985d5b1d60ba1b815250604051806040016040528060048152602001634341505960e01b8152508233604051806040016040528060048152602001634361707960e01b815250604051806040016040528060058152602001640312e302e360dc1b8152508585620000cd6200030a60201b60201c565b8686818181813380620000fb57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000106816200030f565b506001600160a01b0380831660805281166200013557604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156200017d57600080fd5b505af115801562000192573d6000803e3d6000fd5b5050505050505050620001aa6200035f60201b60201c565b60ff168360ff161015620001d1576040516301e9714b60e41b815260040160405180910390fd5b620001de60068462000b89565b620001eb90600a62000ca2565b60a0525060089150620002019050838262000d59565b50600962000210828262000d59565b50620002229150839050600a62000364565b610160526200023381600b62000364565b61018052815160208084019190912061012052815190820120610140524660e052620002c36101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c052505030610100525050336000818152601160205260409020805460ff1916600117905562000303925090506a52b7d2dcc80cd2e40000006200039d565b5062000f14565b601290565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b600060208351101562000384576200037c83620003db565b905062000397565b8162000391848262000d59565b5060ff90505b92915050565b6001600160a01b038216620003c95760405163ec442f0560e01b815260006004820152602401620000f2565b620003d7600083836200041e565b5050565b600080829050601f8151111562000409578260405163305a27a960e01b8152600401620000f2919062000e25565b8051620004168262000e76565b179392505050565b60105460ff16620004b7576001600160a01b03831660009081526011602052604090205460ff16806200046957506001600160a01b03821660009081526011602052604090205460ff165b620004b75760405162461bcd60e51b815260206004820152601360248201527f54726164696e672069732064697361626c6564000000000000000000000000006044820152606401620000f2565b620004c4838383620004c9565b505050565b620004d683838362000538565b6001600160a01b0383166200052b576000620004f160075490565b90506001600160d01b03808211156200052857604051630e58ae9360e11b81526004810183905260248101829052604401620000f2565b50505b620004c48383836200066b565b6001600160a01b038316620005675780600760008282546200055b919062000e9b565b90915550620005db9050565b6001600160a01b03831660009081526005602052604090205481811015620005bc5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000f2565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216620005f95760078054829003905562000618565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200065e91815260200190565b60405180910390a3505050565b6001600160a01b038316620006a0576200069d600f620019d86200070360201b17620006978462000718565b62000752565b50505b6001600160a01b038216620006cf57620006cc600f620019e46200078f60201b17620006978462000718565b50505b6001600160a01b038381166000908152600d6020526040808220548584168352912054620004c4929182169116836200079d565b600062000711828462000eb1565b9392505050565b60006001600160d01b038211156200074e576040516306dfcc6560e41b815260d0600482015260248101839052604401620000f2565b5090565b600080620007826200076362000904565b62000779620007728862000915565b868860201c565b87919062000964565b915091505b935093915050565b600062000711828462000edb565b816001600160a01b0316836001600160a01b031614158015620007c05750600081115b15620004c4576001600160a01b0383161562000863576001600160a01b0383166000908152600e60209081526040822082916200080e91906200078f901b620019e417620006978662000718565b6001600160d01b031691506001600160d01b03169150846001600160a01b031660008051602062005694833981519152838360405162000858929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620004c4576001600160a01b0382166000908152600e6020908152604082208291620008ab919062000703901b620019d817620006978662000718565b6001600160d01b031691506001600160d01b03169150836001600160a01b0316600080516020620056948339815191528383604051620008f5929190918252602082015260400190565b60405180910390a25050505050565b60006200091062000974565b905090565b805460009080156200095b5762000941836200093360018462000efe565b600091825260209091200190565b54660100000000000090046001600160d01b031662000711565b60009392505050565b6000806200078285858562000981565b6000620009104362000b13565b82546000908190801562000ab4576000620009a3876200093360018562000efe565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b031660208401529192509087161015620009fb57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff80881691160362000a4f578462000a22886200093360018662000efe565b80546001600160d01b039290921666010000000000000265ffffffffffff90921691909117905562000aa3565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b602001519250839150620007879050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316660100000000000002919093161792019190915590508162000787565b600065ffffffffffff8211156200074e576040516306dfcc6560e41b81526030600482015260248101839052604401620000f2565b60006020828403121562000b5b57600080fd5b81516001600160a01b03811681146200071157600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000397576200039762000b73565b600181815b8085111562000be657816000190482111562000bca5762000bca62000b73565b8085161562000bd857918102915b93841c939080029062000baa565b509250929050565b60008262000bff5750600162000397565b8162000c0e5750600062000397565b816001811462000c27576002811462000c325762000c52565b600191505062000397565b60ff84111562000c465762000c4662000b73565b50506001821b62000397565b5060208310610133831016604e8410600b841016171562000c77575081810a62000397565b62000c83838362000ba5565b806000190482111562000c9a5762000c9a62000b73565b029392505050565b60006200071160ff84168362000bee565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000cde57607f821691505b60208210810362000cff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004c4576000816000526020600020601f850160051c8101602086101562000d305750805b601f850160051c820191505b8181101562000d515782815560010162000d3c565b505050505050565b81516001600160401b0381111562000d755762000d7562000cb3565b62000d8d8162000d86845462000cc9565b8462000d05565b602080601f83116001811462000dc5576000841562000dac5750858301515b600019600386901b1c1916600185901b17855562000d51565b600085815260208120601f198616915b8281101562000df65788860151825594840194600190910190840162000dd5565b508582101562000e155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b8181101562000e555785810183015185820160400152820162000e37565b506000604082860101526040601f19601f8301168501019250505092915050565b8051602080830151919081101562000cff5760001960209190910360031b1b16919050565b8082018082111562000397576200039762000b73565b6001600160d01b0381811683821601908082111562000ed45762000ed462000b73565b5092915050565b6001600160d01b0382811682821603908082111562000ed45762000ed462000b73565b8181038181111562000397576200039762000b73565b60805160a05160c05160e05161010051610120516101405161016051610180516146c962000fcb6000396000612108015260006120db01526000612b7d01526000612b5501526000612ab001526000612ada01526000612b0401526000818161090401528181612483015281816124f8015261279e0152600081816106b001528181610cff0152818161186201528181611b1701528181611f1a015281816122a701528181612db40152612e6d01526146c96000f3fe6080604052600436106103815760003560e01c80638433b1fb116101d1578063b92d0eff11610102578063ca5eb5e1116100a0578063f1127ed81161006f578063f1127ed814610af4578063f2fde38b14610b40578063fc0c546a146105db578063ff7bd03d14610b6057600080fd5b8063ca5eb5e114610a5b578063d045a0dc14610a7b578063d424388514610a8e578063dd62ed3e14610aae57600080fd5b8063bc70b354116100dc578063bc70b354146109e7578063bd815db014610a07578063c3cda52014610a1a578063c7c7f5b314610a3a57600080fd5b8063b92d0eff146105db578063b98bd0701461099a578063bb0b6a53146109ba57600080fd5b806391ddadf41161016f5780639ab24eb0116101495780639ab24eb0146109265780639f68b96414610946578063a9059cbb1461095a578063b731ea0a1461097a57600080fd5b806391ddadf4146108b157806395d89b41146108dd578063963efcaa146108f257600080fd5b80638a8c523c116101ab5780638a8c523c1461083f5780638da5cb5b146108545780638e539e8c14610872578063902d55a51461089257600080fd5b80638433b1fb146107e357806384b0196e14610803578063857749b01461082b57600080fd5b80633a46b1a8116102b65780635c19a95c1161025457806370a082311161022357806370a0823114610727578063715018a61461075d5780637d25a05e146107725780637ecebe00146107ad57600080fd5b80635c19a95c1461067e5780635e280f111461069e5780636fc1b31e146106d25780636fcfff45146106f257600080fd5b806352ae28791161029057806352ae2879146105db5780635535d461146105ee578063587cde1e1461060e5780635a0dfe4d1461064757600080fd5b80633a46b1a8146105795780633b6f743b146105995780634bf5d7e9146105c657600080fd5b8063156a0d0f116103235780631f5e1334116102fd5780631f5e13341461050257806323b872dd14610517578063313ce567146105375780633400288b1461055957600080fd5b8063156a0d0f1461049b57806317442b70146104c257806318160ddd146104e357600080fd5b80630d35b4151161035f5780630d35b415146103f7578063111ecdad1461042657806313137d651461045e578063134d4f251461047357600080fd5b8063064a59d01461038657806306fdde03146103b5578063095ea7b3146103d7575b600080fd5b34801561039257600080fd5b506010546103a09060ff1681565b60405190151581526020015b60405180910390f35b3480156103c157600080fd5b506103ca610b80565b6040516103ac91906136ab565b3480156103e357600080fd5b506103a06103f23660046136d3565b610c12565b34801561040357600080fd5b50610417610412366004613717565b610c2c565b6040516103ac9392919061374b565b34801561043257600080fd5b50600454610446906001600160a01b031681565b6040516001600160a01b0390911681526020016103ac565b61047161046c36600461383e565b610cfd565b005b34801561047f57600080fd5b50610488600281565b60405161ffff90911681526020016103ac565b3480156104a757600080fd5b506040805162b9270b60e21b815260016020820152016103ac565b3480156104ce57600080fd5b506040805160018082526020820152016103ac565b3480156104ef57600080fd5b506007545b6040519081526020016103ac565b34801561050e57600080fd5b50610488600181565b34801561052357600080fd5b506103a06105323660046138dd565b610dbd565b34801561054357600080fd5b5060125b60405160ff90911681526020016103ac565b34801561056557600080fd5b50610471610574366004613937565b610de3565b34801561058557600080fd5b506104f46105943660046136d3565b610e41565b3480156105a557600080fd5b506105b96105b4366004613961565b610ec2565b6040516103ac91906139b2565b3480156105d257600080fd5b506103ca610f29565b3480156105e757600080fd5b5030610446565b3480156105fa57600080fd5b506103ca6106093660046139db565b610fa1565b34801561061a57600080fd5b50610446610629366004613a0e565b6001600160a01b039081166000908152600d60205260409020541690565b34801561065357600080fd5b506103a0610662366004613937565b63ffffffff919091166000908152600160205260409020541490565b34801561068a57600080fd5b50610471610699366004613a0e565b611046565b3480156106aa57600080fd5b506104467f000000000000000000000000000000000000000000000000000000000000000081565b3480156106de57600080fd5b506104716106ed366004613a0e565b611055565b3480156106fe57600080fd5b5061071261070d366004613a0e565b6110b2565b60405163ffffffff90911681526020016103ac565b34801561073357600080fd5b506104f4610742366004613a0e565b6001600160a01b031660009081526005602052604090205490565b34801561076957600080fd5b506104716110bd565b34801561077e57600080fd5b5061079561078d366004613937565b600092915050565b6040516001600160401b0390911681526020016103ac565b3480156107b957600080fd5b506104f46107c8366004613a0e565b6001600160a01b03166000908152600c602052604090205490565b3480156107ef57600080fd5b506104716107fe366004613a2b565b6110d1565b34801561080f57600080fd5b50610818611104565b6040516103ac9796959493929190613a59565b34801561083757600080fd5b506006610547565b34801561084b57600080fd5b5061047161114a565b34801561086057600080fd5b506000546001600160a01b0316610446565b34801561087e57600080fd5b506104f461088d366004613af2565b611161565b34801561089e57600080fd5b506104f46a52b7d2dcc80cd2e400000081565b3480156108bd57600080fd5b506108c66111cb565b60405165ffffffffffff90911681526020016103ac565b3480156108e957600080fd5b506103ca6111da565b3480156108fe57600080fd5b506104f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561093257600080fd5b506104f4610941366004613a0e565b6111e9565b34801561095257600080fd5b5060006103a0565b34801561096657600080fd5b506103a06109753660046136d3565b611219565b34801561098657600080fd5b50600254610446906001600160a01b031681565b3480156109a657600080fd5b506104716109b5366004613b4f565b611227565b3480156109c657600080fd5b506104f46109d5366004613b90565b60016020526000908152604090205481565b3480156109f357600080fd5b506103ca610a02366004613bab565b611388565b610471610a15366004613b4f565b611503565b348015610a2657600080fd5b50610471610a35366004613c0b565b61168d565b610a4d610a48366004613c6d565b611741565b6040516103ac929190613cda565b348015610a6757600080fd5b50610471610a76366004613a0e565b61183b565b610471610a8936600461383e565b6118c1565b348015610a9a57600080fd5b50610471610aa9366004613a0e565b6118f0565b348015610aba57600080fd5b506104f4610ac9366004613d2c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610b0057600080fd5b50610b14610b0f366004613d5a565b611946565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016103ac565b348015610b4c57600080fd5b50610471610b5b366004613a0e565b611964565b348015610b6c57600080fd5b506103a0610b7b366004613d86565b6119a2565b606060088054610b8f90613da2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90613da2565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b600033610c208185856119f0565b60019150505b92915050565b60408051808201909152600080825260208201526060610c5f604051806040016040528060008152602001600081525090565b60408051808201825260008082526001600160401b03602080840182905284518381529081019094529195509182610cba565b604080518082019091526000815260606020820152815260200190600190039081610c925790505b509350600080610cdf604089013560608a0135610cda60208c018c613b90565b611a02565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610d4d576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610d6790610d62908a613b90565b611a46565b14610da557610d796020880188613b90565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610d44565b610db487878787878787611a82565b50505050505050565b600033610dcb858285611be9565b610dd6858585611c67565b60019150505b9392505050565b610deb611cc6565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b600080610e4c6111cb565b90508065ffffffffffff168310610e8757604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610d44565b610eb1610e9384611cf3565b6001600160a01b0386166000908152600e6020526040902090611d2a565b6001600160d01b0316949350505050565b60408051808201909152600080825260208201526000610ef260408501356060860135610cda6020880188613b90565b915050600080610f028684611de0565b9092509050610f1f610f176020880188613b90565b838388611f04565b9695505050505050565b6060610f33611fe5565b65ffffffffffff16610f436111cb565b65ffffffffffff1614610f69576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b600360209081526000928352604080842090915290825290208054610fc590613da2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff190613da2565b801561103e5780601f106110135761010080835404028352916020019161103e565b820191906000526020600020905b81548152906001019060200180831161102157829003601f168201915b505050505081565b336110518183611ff0565b5050565b61105d611cc6565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b6000610c2682612062565b6110c5611cc6565b6110cf6000612084565b565b6110d9611cc6565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000606080600080600060606111186120d4565b611120612101565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b611152611cc6565b6010805460ff19166001179055565b60008061116c6111cb565b90508065ffffffffffff1683106111a757604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610d44565b6111bb6111b384611cf3565b600f90611d2a565b6001600160d01b03169392505050565b60006111d5611fe5565b905090565b606060098054610b8f90613da2565b6001600160a01b0381166000908152600e6020526040812061120a9061212e565b6001600160d01b031692915050565b600033610c20818585611c67565b61122f611cc6565b60005b818110156113565761127483838381811061124f5761124f613dec565b90506020028101906112619190613e02565b61126f906040810190613e22565b612167565b82828281811061128657611286613dec565b90506020028101906112989190613e02565b6112a6906040810190613e22565b600360008686868181106112bc576112bc613dec565b90506020028101906112ce9190613e02565b6112dc906020810190613b90565b63ffffffff1663ffffffff168152602001908152602001600020600086868681811061130a5761130a613dec565b905060200281019061131c9190613e02565b61132d906040810190602001613e68565b61ffff16815260208101919091526040016000209161134d919083613ed3565b50600101611232565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748282604051610e35929190613fbb565b63ffffffff8416600090815260036020908152604080832061ffff871684529091528120805460609291906113bc90613da2565b80601f01602080910402602001604051908101604052809291908181526020018280546113e890613da2565b80156114355780601f1061140a57610100808354040283529160200191611435565b820191906000526020600020905b81548152906001019060200180831161141857829003601f168201915b5050505050905080516000036114855783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506114fb9350505050565b60008390036114955790506114fb565b600283106114de576114a78484612167565b806114b5846002818861409f565b6040516020016114c7939291906140c9565b6040516020818303038152906040529150506114fb565b8383604051639a6d49cd60e01b8152600401610d449291906140f1565b949350505050565b60005b8181101561160c573683838381811061152157611521613dec565b90506020028101906115339190614105565b90506115666115456020830183613b90565b602083013563ffffffff919091166000908152600160205260409020541490565b6115705750611604565b3063d045a0dc60c08301358360a081013561158f610100830183613e22565b6115a0610100890160e08a01613a0e565b6115ae6101208a018a613e22565b6040518963ffffffff1660e01b81526004016115d09796959493929190614131565b6000604051808303818588803b1580156115e957600080fd5b505af11580156115fd573d6000803e3d6000fd5b5050505050505b600101611506565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa15801561164b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167391908101906141df565b604051638351eea760e01b8152600401610d4491906136ab565b834211156116b157604051632341d78760e11b815260048101859052602401610d44565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061172b906117239060a001604051602081830303815290604052805190602001206121a9565b8585856121d6565b90506117378187612204565b610db48188611ff0565b611749613614565b604080518082019091526000808252602082015260008061177f6040880135606089013561177a60208b018b613b90565b612257565b915091506000806117908984611de0565b90925090506117bc6117a560208b018b613b90565b83836117b6368d90038d018d614280565b8b612274565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a9061180a908d018d613b90565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b611843611cc6565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156118a657600080fd5b505af11580156118ba573d6000803e3d6000fd5b5050505050565b3330146118e15760405163029a949d60e31b815260040160405180910390fd5b610db487878787878787610da5565b6118f8611cc6565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760906020016110a7565b6040805180820190915260008082526020820152610ddc8383612374565b61196c611cc6565b6001600160a01b03811661199657604051631e4fbdf760e01b815260006004820152602401610d44565b61199f81612084565b50565b60006020820180359060019083906119ba9086613b90565b63ffffffff1681526020810191909152604001600020541492915050565b6000610ddc82846142c8565b6000610ddc82846142ef565b6119fd83838360016123aa565b505050565b600080611a0e8561247f565b915081905083811015611a3e576040516371c4efed60e01b81526004810182905260248101859052604401610d44565b935093915050565b63ffffffff811660009081526001602052604081205480610c265760405163f6ff4fb760e01b815263ffffffff84166004820152602401610d44565b6000611a94611a9187876124b6565b90565b90506000611ac082611aae611aa98a8a6124ce565b6124f1565b611abb60208d018d613b90565b612526565b90506028861115611b87576000611afd611ae060608c0160408d0161430f565b611aed60208d018d613b90565b84611af88c8c61253a565b612585565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611b539086908d90600090879060040161432c565b600060405180830381600087803b158015611b6d57600080fd5b505af1158015611b81573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c611bc060208d018d613b90565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b038381166000908152600660209081526040808320938616835292905220546000198114611c615781811015611c5257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610d44565b611c61848484840360006123aa565b50505050565b6001600160a01b038316611c9157604051634b637e8f60e11b815260006004820152602401610d44565b6001600160a01b038216611cbb5760405163ec442f0560e01b815260006004820152602401610d44565b6119fd8383836125b7565b6000546001600160a01b031633146110cf5760405163118cdaa760e01b8152336004820152602401610d44565b600065ffffffffffff821115611d26576040516306dfcc6560e41b81526030600482015260248101839052604401610d44565b5090565b815460009081816005811115611d89576000611d458461264d565b611d4f908561435d565b60008881526020902090915081015465ffffffffffff9081169087161015611d7957809150611d87565b611d84816001614370565b92505b505b6000611d9787878585612735565b90508015611dd257611dbc87611dae60018461435d565b600091825260209091200190565b54600160301b90046001600160d01b0316611dd5565b60005b979650505050505050565b6060806000611e3d8560200135611df686612797565b611e0360a0890189613e22565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127c392505050565b9093509050600081611e50576001611e53565b60025b9050611e73611e656020880188613b90565b82610a0260808a018a613e22565b6004549093506001600160a01b031615611efb576004805460405163043a78eb60e01b81526001600160a01b039091169163043a78eb91611eb8918891889101614383565b602060405180830381865afa158015611ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef991906143a8565b505b50509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611f6789611a46565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611f9c9291906143c5565b6040805180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdc919061446e565b95945050505050565b60006111d543611cf3565b6001600160a01b038281166000818152600d602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46119fd818361205d8661283d565b61285b565b6001600160a01b0381166000908152600e6020526040812054610c26906129c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606111d57f0000000000000000000000000000000000000000000000000000000000000000600a6129f8565b60606111d57f0000000000000000000000000000000000000000000000000000000000000000600b6129f8565b8054600090801561215e5761214883611dae60018461435d565b54600160301b90046001600160d01b0316610ddc565b60009392505050565b6000612176600282848661409f565b61217f9161448a565b60f01c9050600381146119fd578282604051639a6d49cd60e01b8152600401610d449291906140f1565b6000610c266121b6612aa3565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806121e888888888612bce565b9250925092506121f88282612c9d565b50909695505050505050565b6001600160a01b0382166000908152600c602052604090208054600181019091558181146119fd576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610d44565b600080612265858585611a02565b9092509050611a3e3383612d56565b61227c613614565b600061228b8460000151612d8c565b6020850151909150156122a5576122a58460200151612db0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016122f58c611a46565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016123319291906143c5565b60806040518083038185885af115801561234f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611dd591906144ba565b60408051808201909152600080825260208201526001600160a01b0383166000908152600e60205260409020610ddc9083612e92565b6001600160a01b0384166123d45760405163e602df0560e01b815260006004820152602401610d44565b6001600160a01b0383166123fe57604051634a1406b160e11b815260006004820152602401610d44565b6001600160a01b0380851660009081526006602090815260408083209387168352929052208290558015611c6157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161247191815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006124ac8184614537565b610c269190614559565b60006124c5602082848661409f565b610ddc91614570565b60006124de60286020848661409f565b6124e79161458e565b60c01c9392505050565b6000610c267f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416614559565b60006125328484612f02565b509092915050565b6060612549826028818661409f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b60608484848460405160200161259e94939291906145bc565b6040516020818303038152906040529050949350505050565b60105460ff16612642576001600160a01b03831660009081526011602052604090205460ff168061260057506001600160a01b03821660009081526011602052604090205460ff165b6126425760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610d44565b6119fd838383612f38565b60008160000361265f57506000919050565b6000600161266c84612f9f565b901c6001901b9050600181848161268557612685614521565b048201901c9050600181848161269d5761269d614521565b048201901c905060018184816126b5576126b5614521565b048201901c905060018184816126cd576126cd614521565b048201901c905060018184816126e5576126e5614521565b048201901c905060018184816126fd576126fd614521565b048201901c9050600181848161271557612715614521565b048201901c9050610ddc8182858161272f5761272f614521565b04613033565b60005b8183101561278f57600061274c8484613049565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561277b57809250612789565b612786816001614370565b93505b50612738565b509392505050565b6000610c267f000000000000000000000000000000000000000000000000000000000000000083614537565b805160609015158061280c5784846040516020016127f892919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052612833565b84843385604051602001612823949392919061460b565b6040516020818303038152906040525b9150935093915050565b6001600160a01b038116600090815260056020526040812054610c26565b816001600160a01b0316836001600160a01b03161415801561287d5750600081115b156119fd576001600160a01b03831615612925576001600160a01b0383166000908152600e6020526040812081906128c0906119e46128bb86613064565b613098565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161291a929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156119fd576001600160a01b0382166000908152600e60205260408120819061295e906119d86128bb86613064565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516129b8929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115611d26576040516306dfcc6560e41b81526020600482015260248101839052604401610d44565b606060ff8314612a1257612a0b836130d0565b9050610c26565b818054612a1e90613da2565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4a90613da2565b8015612a975780601f10612a6c57610100808354040283529160200191612a97565b820191906000526020600020905b815481529060010190602001808311612a7a57829003601f168201915b50505050509050610c26565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612afc57507f000000000000000000000000000000000000000000000000000000000000000046145b15612b2657507f000000000000000000000000000000000000000000000000000000000000000090565b6111d5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612c095750600091506003905082612c93565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612c5d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c8957506000925060019150829050612c93565b9250600091508190505b9450945094915050565b6000826003811115612cb157612cb161464e565b03612cba575050565b6001826003811115612cce57612cce61464e565b03612cec5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612d0057612d0061464e565b03612d215760405163fce698f760e01b815260048101829052602401610d44565b6003826003811115612d3557612d3561464e565b03611051576040516335e2f38360e21b815260048101829052602401610d44565b6001600160a01b038216612d8057604051634b637e8f60e11b815260006004820152602401610d44565b611051826000836125b7565b6000813414611d26576040516304fb820960e51b8152346004820152602401610d44565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e349190614664565b90506001600160a01b038116612e5d576040516329b99a9560e11b815260040160405180910390fd5b6110516001600160a01b038216337f00000000000000000000000000000000000000000000000000000000000000008561310f565b6040805180820190915260008082526020820152826000018263ffffffff1681548110612ec157612ec1613dec565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6001600160a01b038216612f2c5760405163ec442f0560e01b815260006004820152602401610d44565b611051600083836125b7565b612f43838383613169565b6001600160a01b038316612f94576000612f5c60075490565b90506001600160d01b0380821115612f9157604051630e58ae9360e11b81526004810183905260248101829052604401610d44565b50505b6119fd838383613293565b600080608083901c15612fb457608092831c92015b604083901c15612fc657604092831c92015b602083901c15612fd857602092831c92015b601083901c15612fea57601092831c92015b600883901c15612ffc57600892831c92015b600483901c1561300e57600492831c92015b600283901c1561302057600292831c92015b600183901c15610c265760010192915050565b60008183106130425781610ddc565b5090919050565b60006130586002848418614537565b610ddc90848416614370565b60006001600160d01b03821115611d26576040516306dfcc6560e41b815260d0600482015260248101839052604401610d44565b6000806130c46130a66111cb565b6130bc6130b28861212e565b868863ffffffff16565b879190613309565b91509150935093915050565b606060006130dd83613317565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611c6190859061333f565b6001600160a01b0383166131945780600760008282546131899190614370565b909155506132069050565b6001600160a01b038316600090815260056020526040902054818110156131e75760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610d44565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b03821661322257600780548290039055613241565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328691815260200190565b60405180910390a3505050565b6001600160a01b0383166132b5576132b2600f6119d86128bb84613064565b50505b6001600160a01b0382166132d7576132d4600f6119e46128bb84613064565b50505b6001600160a01b038381166000908152600d60205260408082205485841683529120546119fd9291821691168361285b565b6000806130c48585856133a2565b600060ff8216601f811115610c2657604051632cd44ac360e21b815260040160405180910390fd5b60006133546001600160a01b0384168361351c565b9050805160001415801561337957508080602001905181019061337791906143a8565b155b156119fd57604051635274afe760e01b81526001600160a01b0384166004820152602401610d44565b8254600090819080156134c15760006133c087611dae60018561435d565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561341457604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603613460578461343788611dae60018661435d565b80546001600160d01b0392909216600160301b0265ffffffffffff9092169190911790556134b1565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150611a3e9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611a3e565b6060610ddc8383600084600080856001600160a01b031684866040516135429190614681565b60006040518083038185875af1925050503d806000811461357f576040519150601f19603f3d011682016040523d82523d6000602084013e613584565b606091505b5091509150610f1f8683836060826135a45761359f826135eb565b610ddc565b81511580156135bb57506001600160a01b0384163b155b156135e457604051639996b31560e01b81526001600160a01b0385166004820152602401610d44565b5080610ddc565b8051156135fb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000801916815260200160006001600160401b03168152602001613656604051806040016040528060008152602001600081525090565b905290565b60005b8381101561367657818101518382015260200161365e565b50506000910152565b6000815180845261369781602086016020860161365b565b601f01601f19169290920160200192915050565b602081526000610ddc602083018461367f565b6001600160a01b038116811461199f57600080fd5b600080604083850312156136e657600080fd5b82356136f1816136be565b946020939093013593505050565b600060e0828403121561371157600080fd5b50919050565b60006020828403121561372957600080fd5b81356001600160401b0381111561373f57600080fd5b6114fb848285016136ff565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b838110156137c65788870360bf190185528151805188528301518388018790526137b38789018261367f565b9750509382019390820190600101613787565b505087516060880152505050602085015160808501525090506114fb565b60006060828403121561371157600080fd5b60008083601f84011261380857600080fd5b5081356001600160401b0381111561381f57600080fd5b60208301915083602082850101111561383757600080fd5b9250929050565b600080600080600080600060e0888a03121561385957600080fd5b61386389896137e4565b96506060880135955060808801356001600160401b038082111561388657600080fd5b6138928b838c016137f6565b909750955060a08a013591506138a7826136be565b90935060c089013590808211156138bd57600080fd5b506138ca8a828b016137f6565b989b979a50959850939692959293505050565b6000806000606084860312156138f257600080fd5b83356138fd816136be565b9250602084013561390d816136be565b929592945050506040919091013590565b803563ffffffff8116811461393257600080fd5b919050565b6000806040838503121561394a57600080fd5b6136f18361391e565b801515811461199f57600080fd5b6000806040838503121561397457600080fd5b82356001600160401b0381111561398a57600080fd5b613996858286016136ff565b92505060208301356139a781613953565b809150509250929050565b815181526020808301519082015260408101610c26565b803561ffff8116811461393257600080fd5b600080604083850312156139ee57600080fd5b6139f78361391e565b9150613a05602084016139c9565b90509250929050565b600060208284031215613a2057600080fd5b8135610ddc816136be565b60008060408385031215613a3e57600080fd5b8235613a49816136be565b915060208301356139a781613953565b60ff60f81b881681526000602060e06020840152613a7a60e084018a61367f565b8381036040850152613a8c818a61367f565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015613ae057835183529284019291840191600101613ac4565b50909c9b505050505050505050505050565b600060208284031215613b0457600080fd5b5035919050565b60008083601f840112613b1d57600080fd5b5081356001600160401b03811115613b3457600080fd5b6020830191508360208260051b850101111561383757600080fd5b60008060208385031215613b6257600080fd5b82356001600160401b03811115613b7857600080fd5b613b8485828601613b0b565b90969095509350505050565b600060208284031215613ba257600080fd5b610ddc8261391e565b60008060008060608587031215613bc157600080fd5b613bca8561391e565b9350613bd8602086016139c9565b925060408501356001600160401b03811115613bf357600080fd5b613bff878288016137f6565b95989497509550505050565b60008060008060008060c08789031215613c2457600080fd5b8635613c2f816136be565b95506020870135945060408701359350606087013560ff81168114613c5357600080fd5b9598949750929560808101359460a0909101359350915050565b60008060008385036080811215613c8357600080fd5b84356001600160401b03811115613c9957600080fd5b613ca5878288016136ff565b9450506040601f1982011215613cba57600080fd5b506020840191506060840135613ccf816136be565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151613d15604084018280518252602090810151910152565b5082516080830152602083015160a0830152610ddc565b60008060408385031215613d3f57600080fd5b8235613d4a816136be565b915060208301356139a7816136be565b60008060408385031215613d6d57600080fd5b8235613d78816136be565b9150613a056020840161391e565b600060608284031215613d9857600080fd5b610ddc83836137e4565b600181811c90821680613db657607f821691505b60208210810361371157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112613e1857600080fd5b9190910192915050565b6000808335601e19843603018112613e3957600080fd5b8301803591506001600160401b03821115613e5357600080fd5b60200191503681900382131561383757600080fd5b600060208284031215613e7a57600080fd5b610ddc826139c9565b601f8211156119fd576000816000526020600020601f850160051c81016020861015613eac5750805b601f850160051c820191505b81811015613ecb57828155600101613eb8565b505050505050565b6001600160401b03831115613eea57613eea613dd6565b613efe83613ef88354613da2565b83613e83565b6000601f841160018114613f325760008515613f1a5750838201355b600019600387901b1c1916600186901b1783556118ba565b600083815260209020601f19861690835b82811015613f635786850135825560209485019460019092019101613f43565b5086821015613f805760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040808401600586901b8501820187855b8881101561409157878303603f190184528135368b9003605e1901811261400057600080fd5b8a01606063ffffffff6140128361391e565b16855261ffff6140238984016139c9565b168886015286820135601e1983360301811261403e57600080fd5b9091018781019190356001600160401b0381111561405b57600080fd5b80360383131561406a57600080fd5b818887015261407c8287018285613f92565b96890196955050509186019150600101613fda565b509098975050505050505050565b600080858511156140af57600080fd5b838611156140bc57600080fd5b5050820193919092039150565b600084516140db81846020890161365b565b8201838582376000930192835250909392505050565b6020815260006114fb602083018486613f92565b6000823561013e19833603018112613e1857600080fd5b6001600160401b038116811461199f57600080fd5b63ffffffff61413f8961391e565b168152602088013560208201526000604089013561415c8161411c565b6001600160401b03811660408401525087606083015260e0608083015261418760e083018789613f92565b6001600160a01b03861660a084015282810360c08401526141a9818587613f92565b9a9950505050505050505050565b604080519081016001600160401b03811182821017156141d9576141d9613dd6565b60405290565b6000602082840312156141f157600080fd5b81516001600160401b038082111561420857600080fd5b818401915084601f83011261421c57600080fd5b81518181111561422e5761422e613dd6565b604051601f8201601f19908116603f0116810190838211818310171561425657614256613dd6565b8160405282815287602084870101111561426f57600080fd5b611dd583602083016020880161365b565b60006040828403121561429257600080fd5b61429a6141b7565b82358152602083013560208201528091505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160d01b038181168382160190808211156142e8576142e86142b2565b5092915050565b6001600160d01b038281168282160390808211156142e8576142e86142b2565b60006020828403121561432157600080fd5b8135610ddc8161411c565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610f1f608083018461367f565b81810381811115610c2657610c266142b2565b80820180821115610c2657610c266142b2565b604081526000614396604083018561367f565b8281036020840152611fdc818561367f565b6000602082840312156143ba57600080fd5b8151610ddc81613953565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526143fb60e084018261367f565b90506060850151603f198483030160a0850152614418828261367f565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561445057600080fd5b6144586141b7565b9050815181526020820151602082015292915050565b60006040828403121561448057600080fd5b610ddc838361443e565b6001600160f01b031981358181169160028510156144b25780818660020360031b1b83161692505b505092915050565b6000608082840312156144cc57600080fd5b604051606081018181106001600160401b03821117156144ee576144ee613dd6565b6040528251815260208301516145038161411c565b6020820152614515846040850161443e565b60408201529392505050565b634e487b7160e01b600052601260045260246000fd5b60008261455457634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c2657610c266142b2565b80356020831015610c2657600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156144b25760089490940360031b84901b1690921692915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c820152600082516145fb81602c85016020870161365b565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b1660208201528260288201526000825161463e81604885016020870161365b565b9190910160480195945050505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561467657600080fd5b8151610ddc816136be565b60008251613e1881846020870161365b56fea264697066735822122098ec7705c11cdb7a67043000f754a40033fbefb00ccfa02bb8b8d7a148d84ce264736f6c63430008170033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7240000000000000000000000001a44076050125825900e736c501f859c50fe728c