[ { "inputs": [ { "internalType": "address", "name": "_lzEndpoint", "type": "address" }, { "internalType": "address", "name": "_delegate", "type": "address" }, { "internalType": "bool", "name": "_lpIsEth", "type": "bool" } ], "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": [ { "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": [], "name": "FailedInnerCall", "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": "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" }, { "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": [ { "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": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "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": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "OwnerForcedSwapBack", "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": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferForeignToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedBuyTax", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "UpdatedOperationsAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "UpdatedProjectAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedSellTax", "type": "event" }, { "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": "STABLECOIN", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" }, { "internalType": "uint256[]", "name": "amountsInTokens", "type": "uint256[]" } ], "name": "airdropToWallets", "outputs": [], "stateMutability": "nonpayable", "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": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTax", "outputs": [ { "internalType": "uint64", "name": "projectTax", "type": "uint64" }, { "internalType": "uint64", "name": "operationsTax", "type": "uint64" }, { "internalType": "uint64", "name": "liquidityTax", "type": "uint64" }, { "internalType": "uint64", "name": "totalTax", "type": "uint64" } ], "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": "dexRouter", "outputs": [ { "internalType": "contract IDexRouter", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "inEth", "type": "bool" } ], "name": "forceSwapBack", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBlockNumber", "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": "", "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": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFees", "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": [], "name": "lpPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpPairEth", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpToEth", "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": [], "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": "operationsAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseTrading", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "projectAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "projectGetsTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "sellTax", "outputs": [ { "internalType": "uint64", "name": "projectTax", "type": "uint64" }, { "internalType": "uint64", "name": "operationsTax", "type": "uint64" }, { "internalType": "uint64", "name": "liquidityTax", "type": "uint64" }, { "internalType": "uint64", "name": "totalTax", "type": "uint64" } ], "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" }, { "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": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "_operationsAddress", "type": "address" } ], "name": "setOperationsAddress", "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": [ { "internalType": "address", "name": "_projectAddress", "type": "address" } ], "name": "setProjectAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "getsTokens", "type": "bool" } ], "name": "setProjectGetsTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "tokensForTax", "outputs": [ { "internalType": "uint80", "name": "tokensForProject", "type": "uint80" }, { "internalType": "uint80", "name": "tokensForLiquidity", "type": "uint80" }, { "internalType": "uint80", "name": "tokensForOperations", "type": "uint80" }, { "internalType": "bool", "name": "gasSaver", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "transferForeignToken", "outputs": [ { "internalType": "bool", "name": "_sent", "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": [], "name": "unpauseTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_projectTax", "type": "uint64" }, { "internalType": "uint64", "name": "_liquidityTax", "type": "uint64" }, { "internalType": "uint64", "name": "_operationsTax", "type": "uint64" } ], "name": "updateBuyTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_lpToEth", "type": "bool" } ], "name": "updateLpToEth", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_projectTax", "type": "uint64" }, { "internalType": "uint64", "name": "_liquidityTax", "type": "uint64" }, { "internalType": "uint64", "name": "_operationsTax", "type": "uint64" } ], "name": "updateSellTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
610160604052600f805460ff60a81b191690553480156200001f57600080fd5b5060405162007ecf38038062007ecf833981016040819052620000429162001cbd565b60405180604001604052806005815260200164223ab1313d60d91b81525060405180604001604052806005815260200164223ab1313d60d91b81525084848383620000926200088e60201b60201c565b8484818181818e6001600160a01b038116620000c957604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000d48162000893565b506001600160a01b0380831660805281166200010357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156200014b57600080fd5b505af115801562000160573d6000803e3d6000fd5b505050505050505062000178620008e360201b60201c565b60ff168360ff1610156200019f576040516301e9714b60e41b815260040160405180910390fd5b620001ac60068462001d1d565b620001b990600a62001e3c565b60a0525060089150620001cf9050838262001ef0565b506009620001de828262001ef0565b5050600c805460ff191687151517905550600093508392505046600103905062000235575073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489050737a250d5630b4cf539739df2c5dacb4c659f2488d62000337565b4662aa36a703620002735750731c7d4b196cb0c7b01d743fbc6116a902379c7238905073c532a74256d3db42d0bf7a0400fefdbad769400862000337565b4661210503620002b0575073833589fcd6edb6e08f4c7c32d4f71b54bda029139050734752ba5dbc23f44d87826276bf6fd6b1c372ad2462000337565b4662014a3403620002ee575073036cbd53842c5426634e7929541ec2318f3dcf7e9050731689e7b1f10000ae47ebfe339a4f69decd19f60262000337565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e666967757265640000000000000000000000006044820152606401620000c0565b6012805460ff60f01b1916600160f01b1790556001600160a01b0382166101208190526040805163313ce56760e01b815290516000929163313ce5679160048083019260209291908290030181865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062001fbc565b60ff1611620004115760405162461bcd60e51b815260206004820152601960248201527f496e636f7272656374206c697175696469747920746f6b656e000000000000006044820152606401620000c0565b6001600160a01b03811660c08190526040805163c45a015560e01b8152905133929163c45a01559160048083019260209291908290030181865afa1580156200045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000484919062001fe1565b610120516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062001fe1565b6001600160a01b031660e081905262000518906001620008e8565b60c0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000559573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057f919062001fe1565b6001600160a01b031663c9c653963060c0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f5919062001fe1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000669919062001fe1565b6001600160a01b031661010081905262000685906001620008e8565b6a084595161401484a000000612710620006a182600162001fff565b620006ad91906200202f565b600d55604051620006be9062001c81565b604051809103906000f080158015620006db573d6000803e3d6000fd5b506001600160a01b031661014052601080546001600160c01b031916908190556001600160401b036801000000000000000082048116916200072891600160801b90910416600062002046565b62000734919062002046565b601080546001600160c01b0316600160c01b6001600160401b0393841602179055601180546001600160c01b031916690190000000000000000017908190556801000000000000000081048216916200079791600160801b900416600062002046565b620007a3919062002046565b601180546001600160401b0392909216600160c01b026001600160c01b03909216919091179055600e80546001600160a01b0384166001600160a01b03199182168117909255600f8054909116909117905562000802826001620009db565b6200080f306001620009db565b6200081e61dead6001620009db565b600e5462000837906001600160a01b03166001620009db565b600f5462000850906001600160a01b03166001620009db565b60c05162000860906001620009db565b620008753360c0518362000a4460201b60201c565b62000881828262000a58565b50505050505050620021d7565b601290565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b620008f262000a96565b60e0516001600160a01b0316826001600160a01b0316141580620009135750805b620009875760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401620000c0565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b620009e562000a96565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b62000a53838383600162000ac7565b505050565b6001600160a01b03821662000a845760405163ec442f0560e01b815260006004820152602401620000c0565b62000a926000838362000ba3565b5050565b6000546001600160a01b0316331462000ac55760405163118cdaa760e01b8152336004820152602401620000c0565b565b6001600160a01b03841662000af35760405163e602df0560e01b815260006004820152602401620000c0565b6001600160a01b03831662000b1f57604051634a1406b160e11b815260006004820152602401620000c0565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801562000b9d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000b9491815260200190565b60405180910390a35b50505050565b6001600160a01b03831660009081526013602052604090205460ff1615801562000be657506001600160a01b03821660009081526013602052604090205460ff16155b1562000c6157600f54600160a81b900460ff1662000c3c5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401620000c0565b62000c4983838362000c6e565b62000c5e906001600160801b03168262002070565b90505b62000a5383838362000fe7565b600d54306000908152600a602052604081205490911115801562000caa57506001600160a01b03831660009081526014602052604090205460ff165b1562000cd657600c5460ff161562000ccc5762000cc66200111a565b62000cd6565b62000cd6620014d1565b6040805160808101825260008082526020808301829052828401829052606083018290526001600160a01b0387168252601490529182205460ff161562000d6a5750604080516080810182526011546001600160401b03808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b9004909116606082015262000dda565b6001600160a01b03861660009081526014602052604090205460ff161562000dda5750604080516080810182526010546001600160401b03808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b03161562000fde57604080516080810182526012546001600160501b0380821683526a0100000000000000000000820481166020840152600160a01b82041692820192909252600160f01b90910460ff1615156060808301919091528201516127109062000e5e906001600160401b03168762001fff565b62000e6a91906200202f565b925081606001516001600160401b031682604001516001600160401b03168462000e95919062002086565b62000ea19190620020b4565b8160200181815162000eb49190620020dd565b6001600160501b0316905250606082015182516001600160401b039182169162000ee091168562002086565b62000eec9190620020b4565b8151829062000efd908390620020dd565b6001600160501b0316905250606082015160208301516001600160401b039182169162000f2c91168562002086565b62000f389190620020b4565b8160400181815162000f4b9190620020dd565b6001600160501b039081169091528251601280546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b0291909116600160a01b600160f81b03199287166a0100000000000000000000026001600160a01b031990941695909616949094179190911716929092171790555062000fdc87306001600160801b03861662000fe7565b505b50949350505050565b6001600160a01b038316620010165780600b60008282546200100a919062002100565b909155506200108a9050565b6001600160a01b0383166000908152600a6020526040902054818110156200106b5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000c0565b6001600160a01b0384166000908152600a602052604090209082900390555b6001600160a01b038216620010a857600b80548290039055620010c7565b6001600160a01b0382166000908152600a602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200110d91815260200190565b60405180910390a3505050565b604080516080810182526012546001600160501b0380821683526a0100000000000000000000820481166020840152600160a01b8083049091169383019390935260ff600160f01b909104811615156060830152600f5491929091041680156200118d575080516001600160501b031615155b8015620011c3575080516001600160501b0316620011c0306001600160a01b03166000908152600a602052604090205490565b10155b15620011f557600e548151620011f09130916001600160a01b03909116906001600160501b031662000fe7565b600081525b306000908152600a602052604081205490506000826040015183600001518460200151620012249190620020dd565b620012309190620020dd565b6001600160501b0316905081158062001247575080155b15620012865750506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b600d546200129690603c62001fff565b821115620012b157600d54620012ae90603c62001fff565b91505b60208301516001600160501b031615620013865760008184602001516001600160501b031684620012e3919062001fff565b620012ef91906200202f565b90506200130730610100518362000fe760201b60201c565b610100516001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200134657600080fd5b505af192505050801562001358575060015b5062001365818462002070565b925083602001516001600160501b03168262001382919062002070565b9150505b81156200149857620013988262001a23565b604083015147906000906001600160501b0316156200143157600f5460408601516001600160a01b03909116908490620013dc906001600160501b03168562001fff565b620013e891906200202f565b604051600081818185875af1925050503d806000811462001426576040519150601f19603f3d011682016040523d82523d6000602084013e6200142b565b606091505b50909150505b47915081156200149557600e546040516001600160a01b03909116908390600081818185875af1925050503d80600081146200148a576040519150601f19603f3d011682016040523d82523d6000602084013e6200148f565b606091505b50909150505b50505b50506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b604080516080810182526012546001600160501b0380821683526a0100000000000000000000820481166020840152600160a01b8083049091169383019390935260ff600160f01b909104811615156060830152600f54919290910416801562001544575080516001600160501b031615155b80156200157a575080516001600160501b031662001577306001600160a01b03166000908152600a602052604090205490565b10155b15620015ac57600e548151620015a79130916001600160a01b03909116906001600160501b031662000fe7565b600081525b306000908152600a602052604081205490506000826040015183600001518460200151620015db9190620020dd565b620015e79190620020dd565b6001600160501b03169050811580620015fe575080155b156200163d5750506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b600d546200164d90603c62001fff565b8211156200166857600d546200166590603c62001fff565b91505b60208301516001600160501b0316156200173b5760008184602001516001600160501b0316846200169a919062001fff565b620016a691906200202f565b9050620016bd3060e0518362000fe760201b60201c565b60e0516001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620016fb57600080fd5b505af19250505080156200170d575060015b506200171a818462002070565b925083602001516001600160501b03168262001737919062002070565b9150505b811562001498576200174d8262001b9e565b61014051610120516040516304fa881160e21b81526001600160a01b0391821660048201529116906313ea204490602401600060405180830381600087803b1580156200179957600080fd5b505af1158015620017ae573d6000803e3d6000fd5b5050610120516040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620017ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001825919062002116565b60408501519091506001600160501b031615620018f35761012051600f5460408601516001600160a01b039283169263a9059cbb921690859062001873906001600160501b03168662001fff565b6200187f91906200202f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015620018cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f1919062002130565b505b610120516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156200193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001963919062002116565b90508015620019e95761012051600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015620019c3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001495919062002130565b5050506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062001a5b5762001a5b6200214e565b60200260200101906001600160a01b031690816001600160a01b03168152505060c0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001abc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ae2919062001fe1565b8160018151811062001af85762001af86200214e565b60200260200101906001600160a01b031690816001600160a01b03168152505062001b2d3060c0518462000a4460201b60201c565b60c0516001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b815260040162001b6695949392919062002164565b600060405180830381600087803b15801562001b8157600080fd5b505af115801562001b96573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062001bd65762001bd66200214e565b60200260200101906001600160a01b031690816001600160a01b031681525050610120518160018151811062001c105762001c106200214e565b60200260200101906001600160a01b031690816001600160a01b03168152505062001c453060c0518462000a4460201b60201c565b60c0516001600160a01b0316635c11d7958360008461014051426040518663ffffffff1660e01b815260040162001b6695949392919062002164565b6104168062007ab983390190565b80516001600160a01b038116811462001ca757600080fd5b919050565b8051801515811462001ca757600080fd5b60008060006060848603121562001cd357600080fd5b62001cde8462001c8f565b925062001cee6020850162001c8f565b915062001cfe6040850162001cac565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562001d395762001d3962001d07565b92915050565b600181815b8085111562001d8057816000190482111562001d645762001d6462001d07565b8085161562001d7257918102915b93841c939080029062001d44565b509250929050565b60008262001d995750600162001d39565b8162001da85750600062001d39565b816001811462001dc1576002811462001dcc5762001dec565b600191505062001d39565b60ff84111562001de05762001de062001d07565b50506001821b62001d39565b5060208310610133831016604e8410600b841016171562001e11575081810a62001d39565b62001e1d838362001d3f565b806000190482111562001e345762001e3462001d07565b029392505050565b600062001e4d60ff84168362001d88565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062001e7f57607f821691505b60208210810362001ea057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a5357600081815260208120601f850160051c8101602086101562001ecf5750805b601f850160051c820191505b8181101562001b965782815560010162001edb565b81516001600160401b0381111562001f0c5762001f0c62001e54565b62001f248162001f1d845462001e6a565b8462001ea6565b602080601f83116001811462001f5c576000841562001f435750858301515b600019600386901b1c1916600185901b17855562001b96565b600085815260208120601f198616915b8281101562001f8d5788860151825594840194600190910190840162001f6c565b508582101562001fac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562001fcf57600080fd5b815160ff8116811462001e4d57600080fd5b60006020828403121562001ff457600080fd5b62001e4d8262001c8f565b808202811582820484141762001d395762001d3962001d07565b634e487b7160e01b600052601260045260246000fd5b60008262002041576200204162002019565b500490565b6001600160401b0381811683821601908082111562002069576200206962001d07565b5092915050565b8181038181111562001d395762001d3962001d07565b6001600160801b03818116838216028082169190828114620020ac57620020ac62001d07565b505092915050565b60006001600160801b0383811680620020d157620020d162002019565b92169190910492915050565b6001600160501b0381811683821601908082111562002069576200206962001d07565b8082018082111562001d395762001d3962001d07565b6000602082840312156200212957600080fd5b5051919050565b6000602082840312156200214357600080fd5b62001e4d8262001cac565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620021b65784516001600160a01b0316835293830193918301916001016200218f565b50506001600160a01b03969096166060850152505050608001529392505050565b60805160a05160c05160e0516101005161012051610140516157bc620022fd60003960008181612dc40152613cfb015260008181610aa701528181612d9c01528181612e3701528181612ed301528181612fa3015281816130470152613c33015260008181610b24015281816121780152818161291d015261294401526000818161074401528181611ae60152818161221401528181612cbb0152612ce201526000818161046801528181613a7301528181613b2c01528181613b6801528181613c8b0152613cc7015260008181610af0015281816138e80152818161395d0152613ded0152600081816108c20152818161108f015281816120d5015281816126a6015281816134860152818161373701528181613eee0152613fa701526157bc6000f3fe60806040526004361061041f5760003560e01c806382413eac1161021e578063bc70b35411610123578063d4243885116100ab578063f2fde38b1161007a578063f2fde38b14610e1a578063fc0c546a14610846578063fce0f92814610e3a578063fecb4d7b14610e5a578063ff7bd03d14610e7b57600080fd5b8063d424388514610d7e578063dd62ed3e14610d9e578063e2f4560514610de4578063ea4cfe1214610dfa57600080fd5b8063ca5eb5e1116100f2578063ca5eb5e114610ccc578063cc1776d314610cec578063d045a0dc14610d2b578063d064e53f14610d3e578063d257b34f14610d5e57600080fd5b8063bc70b35414610c58578063bd815db014610c78578063c024666814610c8b578063c7c7f5b314610cab57600080fd5b806396adebb3116101a6578063b62496f511610175578063b62496f514610b9a578063b731ea0a14610bca578063b98bd07014610bea578063bb0b6a5314610c0a578063bbc0c74214610c3757600080fd5b806396adebb314610b125780639a7a23d614610b465780639f68b96414610b66578063a9059cbb14610b7a57600080fd5b80638da5cb5b116101ed5780638da5cb5b14610a5d57806390b89c9b14610a7b57806393a3977614610a9557806395d89b4114610ac9578063963efcaa14610ade57600080fd5b806382413eac146109e95780638366e79a14610a09578063857749b014610a295780638becc57d14610a3d57600080fd5b80633400288b1161032457806352ae2879116102ac5780636d7adcad1161027b5780636d7adcad146108e45780636fc1b31e1461095957806370a0823114610979578063715018a6146109995780637d25a05e146109ae57600080fd5b806352ae2879146108465780635535d461146108595780635a0dfe4d146108795780635e280f11146108b057600080fd5b8063452ed4f1116102f3578063452ed4f114610732578063456068d214610766578063499b83941461077b5780634f7041a51461079b5780634fbee1931461080d57600080fd5b80633400288b146106b25780633b6f743b146106d25780633cf96af1146106ff57806342cbb15c1461071f57600080fd5b806317442b70116103a75780632307b441116103765780632307b4411461061057806323b872dd14610630578063286965a714610650578063293787d314610670578063313ce5671461069057600080fd5b806317442b701461059a57806318160ddd146105bc5780631b1b6f74146105db5780631f5e1334146105fb57600080fd5b80631031e36e116103ee5780631031e36e14610501578063111ecdad1461051857806313137d6514610538578063134d4f251461054b578063156a0d0f1461057357600080fd5b806306fdde031461042b5780630758d92414610456578063095ea7b3146104a25780630d35b415146104d257600080fd5b3661042657005b600080fd5b34801561043757600080fd5b50610440610e9b565b60405161044d919061457f565b60405180910390f35b34801561046257600080fd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161044d565b3480156104ae57600080fd5b506104c26104bd3660046145a7565b610f2d565b604051901515815260200161044d565b3480156104de57600080fd5b506104f26104ed3660046145eb565b610f47565b60405161044d9392919061461f565b34801561050d57600080fd5b50610516611018565b005b34801561052457600080fd5b5060045461048a906001600160a01b031681565b610516610546366004614711565b61108d565b34801561055757600080fd5b50610560600281565b60405161ffff909116815260200161044d565b34801561057f57600080fd5b506040805162b9270b60e21b8152600160208201520161044d565b3480156105a657600080fd5b506040805160018152600260208201520161044d565b3480156105c857600080fd5b50600b545b60405190815260200161044d565b3480156105e757600080fd5b506105166105f63660046147be565b611148565b34801561060757600080fd5b50610560600181565b34801561061c57600080fd5b5061051661062b3660046148f9565b611224565b34801561063c57600080fd5b506104c261064b3660046149ba565b6112ea565b34801561065c57600080fd5b5061051661066b366004614a10565b611310565b34801561067c57600080fd5b5061051661068b3660046147be565b611467565b34801561069c57600080fd5b5060125b60405160ff909116815260200161044d565b3480156106be57600080fd5b506105166106cd366004614a74565b61148d565b3480156106de57600080fd5b506106f26106ed366004614a90565b6114a3565b60405161044d9190614ae1565b34801561070b57600080fd5b50600e5461048a906001600160a01b031681565b34801561072b57600080fd5b50436105cd565b34801561073e57600080fd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561077257600080fd5b5061051661150a565b34801561078757600080fd5b50610516610796366004614af8565b611581565b3480156107a757600080fd5b506010546107da906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b039586168152938516602085015291841691830191909152909116606082015260800161044d565b34801561081957600080fd5b506104c2610828366004614af8565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561085257600080fd5b503061048a565b34801561086557600080fd5b50610440610874366004614b27565b61161f565b34801561088557600080fd5b506104c2610894366004614a74565b63ffffffff919091166000908152600160205260409020541490565b3480156108bc57600080fd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108f057600080fd5b50601254610924906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900460ff1684565b60405161044d94939291906001600160501b039485168152928416602084015292166040820152901515606082015260800190565b34801561096557600080fd5b50610516610974366004614af8565b6116c4565b34801561098557600080fd5b506105cd610994366004614af8565b61171a565b3480156109a557600080fd5b50610516611735565b3480156109ba57600080fd5b506109d16109c9366004614a74565b600092915050565b6040516001600160401b03909116815260200161044d565b3480156109f557600080fd5b506104c2610a04366004614b5a565b611749565b348015610a1557600080fd5b506104c2610a24366004614bc0565b61175e565b348015610a3557600080fd5b5060066106a0565b348015610a4957600080fd5b50610516610a58366004614a10565b611977565b348015610a6957600080fd5b506000546001600160a01b031661048a565b348015610a8757600080fd5b50600c546104c29060ff1681565b348015610aa157600080fd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610ad557600080fd5b50610440611acd565b348015610aea57600080fd5b506105cd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1e57600080fd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b5257600080fd5b50610516610b61366004614bee565b611adc565b348015610b7257600080fd5b5060006104c2565b348015610b8657600080fd5b506104c2610b953660046145a7565b611be8565b348015610ba657600080fd5b506104c2610bb5366004614af8565b60146020526000908152604090205460ff1681565b348015610bd657600080fd5b5060025461048a906001600160a01b031681565b348015610bf657600080fd5b50610516610c05366004614c60565b611bf6565b348015610c1657600080fd5b506105cd610c25366004614ca1565b60016020526000908152604090205481565b348015610c4357600080fd5b50600f546104c290600160a81b900460ff1681565b348015610c6457600080fd5b50610440610c73366004614cbc565b611c10565b610516610c86366004614c60565b611db8565b348015610c9757600080fd5b50610516610ca6366004614bee565b611f4c565b610cbe610cb9366004614d1c565b611fb3565b60405161044d929190614d7e565b348015610cd857600080fd5b50610516610ce7366004614af8565b6120ae565b348015610cf857600080fd5b506011546107da906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b610516610d39366004614711565b612134565b348015610d4a57600080fd5b50610516610d593660046147be565b612163565b348015610d6a57600080fd5b50610516610d79366004614dd0565b6122be565b348015610d8a57600080fd5b50610516610d99366004614af8565b6123ef565b348015610daa57600080fd5b506105cd610db9366004614bc0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610df057600080fd5b506105cd600d5481565b348015610e0657600080fd5b50600f5461048a906001600160a01b031681565b348015610e2657600080fd5b50610516610e35366004614af8565b612445565b348015610e4657600080fd5b50610516610e55366004614af8565b612483565b348015610e6657600080fd5b50600f546104c290600160a01b900460ff1681565b348015610e8757600080fd5b506104c2610e96366004614de9565b612521565b606060088054610eaa90614e05565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed690614e05565b8015610f235780601f10610ef857610100808354040283529160200191610f23565b820191906000526020600020905b815481529060010190602001808311610f0657829003601f168201915b5050505050905090565b600033610f3b818585612557565b60019150505b92915050565b60408051808201909152600080825260208201526060610f7a604051806040016040528060008152602001600081525090565b60408051808201825260008082526001600160401b03602080840182905284518381529081019094529195509182610fd5565b604080518082019091526000815260606020820152815260200190600190039081610fad5790505b509350600080610ffa604089013560608a0135610ff560208c018c614ca1565b612564565b60408051808201909152918252602082015296989597505050505050565b6110206125a8565b600f54600160a81b900460ff1661107e5760405162461bcd60e51b815260206004820152601960248201527f54726164696e6720697320616c7265616479207061757365640000000000000060448201526064015b60405180910390fd5b600f805460ff60a81b19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146110d8576040516391ac5e4f60e01b8152336004820152602401611075565b602087018035906110f2906110ed908a614ca1565b6125d5565b14611130576111046020880188614ca1565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401611075565b61113f87878787878787612611565b50505050505050565b6111506125a8565b600d5461115c3061171a565b10156111d2576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401611075565b80156111e5576111e0612778565b6111ed565b6111ed612b16565b6040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32906020015b60405180910390a150565b61122c6125a8565b805182511461127d5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401611075565b60005b82518110156112e557600083828151811061129d5761129d614e39565b6020026020010151905060008383815181106112bb576112bb614e39565b602002602001015190506112d03383836130f0565b505080806112dd90614e65565b915050611280565b505050565b6000336112f885828561321a565b611303858585613298565b60019150505b9392505050565b6113186125a8565b60408051608081018252600060608201526001600160401b038581168252848116928201929092529082166020820152816113538486614e7e565b61135d9190614e7e565b6001600160401b03166060820181905261057810156113b35760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772031342560701b6044820152606401611075565b60608101516040516001600160401b0390911681527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c979060200160405180910390a1805160118054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b61146f6125a8565b600f8054911515600160a01b0260ff60a01b19909216919091179055565b6114956125a8565b61149f82826132f7565b5050565b604080518082019091526000808252602082015260006114d360408501356060860135610ff56020880188614ca1565b9150506000806114e3868461334c565b90925090506115006114f86020880188614ca1565b838388613470565b9695505050505050565b6115126125a8565b600f54600160a81b900460ff161561156c5760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920756e70617573656400000000006044820152606401611075565b600f805460ff60a81b1916600160a81b179055565b6115896125a8565b6001600160a01b0381166115d55760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401611075565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b60036020908152600092835260408084209091529082529020805461164390614e05565b80601f016020809104026020016040519081016040528092919081815260200182805461166f90614e05565b80156116bc5780601f10611691576101008083540402835291602001916116bc565b820191906000526020600020905b81548152906001019060200180831161169f57829003601f168201915b505050505081565b6116cc6125a8565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419790602001611219565b6001600160a01b03166000908152600a602052604090205490565b61173d6125a8565b6117476000613551565b565b6001600160a01b03811630145b949350505050565b60006117686125a8565b6001600160a01b0383166117be5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401611075565b6001600160a01b038316301415806117e05750600f54600160a81b900460ff16155b6118495760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401611075565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190614ea5565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614ebe565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b61197f6125a8565b60408051608081018252600060608201526001600160401b038581168252848116928201929092529082166020820152816119ba8486614e7e565b6119c49190614e7e565b6001600160401b0316606082018190526103201015611a195760405162461bcd60e51b81526020600482015260116024820152704b656570207461782062656c6f7720382560781b6044820152606401611075565b60608101516040516001600160401b0390911681527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200160405180910390a1805160108054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b606060098054610eaa90614e05565b611ae46125a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580611b225750805b611b945760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401611075565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600033610f3b818585613298565b611bfe6125a8565b61149f611c0b8284614f02565b6135a1565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190611c4490614e05565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7090614e05565b8015611cbd5780601f10611c9257610100808354040283529160200191611cbd565b820191906000526020600020905b815481529060010190602001808311611ca057829003601f168201915b505050505090508051600003611d0d5783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506117569350505050565b6000839003611d1d579050611756565b60028310611d9b57611d6484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136b292505050565b80611d72846002818861500b565b604051602001611d8493929190615035565b604051602081830303815290604052915050611756565b8383604051639a6d49cd60e01b8152600401611075929190615086565b60005b81811015611ecb5736838383818110611dd657611dd6614e39565b9050602002810190611de8919061509a565b9050611e1b611dfa6020830183614ca1565b602083013563ffffffff919091166000908152600160205260409020541490565b611e255750611eb9565b3063d045a0dc60c08301358360a0810135611e446101008301836150bb565b611e55610100890160e08a01614af8565b611e636101208a018a6150bb565b6040518963ffffffff1660e01b8152600401611e859796959493929190615101565b6000604051808303818588803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b5050505050505b80611ec381614e65565b915050611dbb565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f329190810190615187565b604051638351eea760e01b8152600401611075919061457f565b611f546125a8565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611fbb6144e8565b6040805180820190915260008082526020820152600080611ff233604089013560608a0135611fed60208c018c614ca1565b6136de565b91509150600080612003898461334c565b909250905061202f61201860208b018b614ca1565b8383612029368d90038d018d6151f4565b8b613704565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a9061207d908d018d614ca1565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6120b66125a8565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561211957600080fd5b505af115801561212d573d6000803e3d6000fd5b5050505050565b3330146121545760405163029a949d60e31b815260040160405180910390fd5b61113f87878787878787611130565b61216b6125a8565b801561220d57600061219c7f000000000000000000000000000000000000000000000000000000000000000061171a565b116122085760405162461bcd60e51b815260206004820152603660248201527f4d757374206861766520746f6b656e7320696e20455448207061697220746f2060448201527539b2ba1030b9903232b330bab63a102628103830b4b960511b6064820152608401611075565b6122ab565b60006122387f000000000000000000000000000000000000000000000000000000000000000061171a565b116122ab5760405162461bcd60e51b815260206004820152603d60248201527f4d757374206861766520746f6b656e7320696e20535441424c45434f494e207060448201527f61697220746f207365742061732064656661756c74204c5020706169720000006064820152608401611075565b600c805460ff1916911515919091179055565b6122c66125a8565b629896806122d3600b5490565b6122de906001615226565b6122e89190615253565b81101561235d5760405162461bcd60e51b815260206004820152603760248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e30303030312520746f74616c20737570706c792e0000000000000000006064820152608401611075565b6103e8612369600b5490565b612374906001615226565b61237e9190615253565b8111156123ea5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401611075565b600d55565b6123f76125a8565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001611219565b61244d6125a8565b6001600160a01b03811661247757604051631e4fbdf760e01b815260006004820152602401611075565b61248081613551565b50565b61248b6125a8565b6001600160a01b0381166124d75760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401611075565b600e80546001600160a01b0319166001600160a01b0383169081179091556040517f6344ef2de2b47918cc1f04a3854354565f2e61a050d077e52287a28504cd203290600090a250565b60006020820180359060019083906125399086614ca1565b63ffffffff1681526020810191909152604001600020541492915050565b6112e5838383600161380f565b600080612570856138e4565b9150819050838110156125a0576040516371c4efed60e01b81526004810182905260248101859052604401611075565b935093915050565b6000546001600160a01b031633146117475760405163118cdaa760e01b8152336004820152602401611075565b63ffffffff811660009081526001602052604081205480610f415760405163f6ff4fb760e01b815263ffffffff84166004820152602401611075565b6000612623612620878761391b565b90565b9050600061264f8261263d6126388a8a613933565b613956565b61264a60208d018d614ca1565b61398b565b9050602886111561271657600061268c61266f60608c0160408d01615267565b61267c60208d018d614ca1565b846126878c8c61399f565b6139ea565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906126e29086908d906000908790600401615284565b600060405180830381600087803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61274f60208d018d614ca1565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b604080516080810182526012546001600160501b038082168352600160501b820481166020840152600160a01b8083049091169383019390935260ff600160f01b909104811615156060830152600f5491929091041680156127e3575080516001600160501b031615155b8015612801575080516001600160501b03166127fe3061171a565b10155b1561283057600e54815161282b9130916001600160a01b03909116906001600160501b03166130f0565b600081525b600061283b3061171a565b9050600082604001518360000151846020015161285891906152b5565b61286291906152b5565b6001600160501b03169050811580612878575080155b156128b65750506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b600d546128c490603c615226565b8211156128dc57600d546128d990603c615226565b91505b60208301516001600160501b0316156129d85760008184602001516001600160501b03168461290b9190615226565b6129159190615253565b9050612942307f0000000000000000000000000000000000000000000000000000000000000000836130f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561299d57600080fd5b505af19250505080156129ae575060015b506129b981846152d5565b925083602001516001600160501b0316826129d491906152d5565b9150505b8115612add576129e782613a1c565b604083015147906000906001600160501b031615612a7957600f5460408601516001600160a01b03909116908490612a28906001600160501b031685615226565b612a329190615253565b604051600081818185875af1925050503d8060008114612a6e576040519150601f19603f3d011682016040523d82523d6000602084013e612a73565b606091505b50909150505b4791508115612ada57600e546040516001600160a01b03909116908390600081818185875af1925050503d8060008114612acf576040519150601f19603f3d011682016040523d82523d6000602084013e612ad4565b606091505b50909150505b50505b50506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b604080516080810182526012546001600160501b038082168352600160501b820481166020840152600160a01b8083049091169383019390935260ff600160f01b909104811615156060830152600f549192909104168015612b81575080516001600160501b031615155b8015612b9f575080516001600160501b0316612b9c3061171a565b10155b15612bce57600e548151612bc99130916001600160a01b03909116906001600160501b03166130f0565b600081525b6000612bd93061171a565b90506000826040015183600001518460200151612bf691906152b5565b612c0091906152b5565b6001600160501b03169050811580612c16575080155b15612c545750506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b600d54612c6290603c615226565b821115612c7a57600d54612c7790603c615226565b91505b60208301516001600160501b031615612d765760008184602001516001600160501b031684612ca99190615226565b612cb39190615253565b9050612ce0307f0000000000000000000000000000000000000000000000000000000000000000836130f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612d3b57600080fd5b505af1925050508015612d4c575060015b50612d5781846152d5565b925083602001516001600160501b031682612d7291906152d5565b9150505b8115612add57612d8582613bdc565b6040516304fa881160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906313ea204490602401600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a0823190602401602060405180830381865afa158015612e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eab9190614ea5565b60408501519091506001600160501b031615612f8e57600f5460408501516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a9059cbb929116908590612f13906001600160501b031686615226565b612f1d9190615253565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190614ebe565b505b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130169190614ea5565b905080156130b657600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015613092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada9190614ebe565b5050506000602082018190528082526040820152601280546060909201511515600160f01b026001600160f81b0319909216919091179055565b6001600160a01b03831661311b5780600b600082825461311091906152e8565b9091555061318d9050565b6001600160a01b0383166000908152600a60205260409020548181101561316e5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401611075565b6001600160a01b0384166000908152600a602052604090209082900390555b6001600160a01b0382166131a957600b805482900390556131c8565b6001600160a01b0382166000908152600a602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161320d91815260200190565b60405180910390a3505050565b6001600160a01b038381166000908152600660209081526040808320938616835292905220546000198114613292578181101561328357604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611075565b6132928484848403600061380f565b50505050565b6001600160a01b0383166132c257604051634b637e8f60e11b815260006004820152602401611075565b6001600160a01b0382166132ec5760405163ec442f0560e01b815260006004820152602401611075565b6112e5838383613d25565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006133a9856020013561336286613de6565b61336f60a08901896150bb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e1292505050565b90935090506000816133bc5760016133bf565b60025b90506133df6133d16020880188614ca1565b82610c7360808a018a6150bb565b6004549093506001600160a01b031615613467576004805460405163043a78eb60e01b81526001600160a01b039091169163043a78eb916134249188918891016152fb565b602060405180830381865afa158015613441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134659190614ebe565b505b50509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016134d3896125d5565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401613508929190615320565b6040805180830381865afa158015613524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354891906153c9565b95945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b8151811015613682576135d38282815181106135c2576135c2614e39565b6020026020010151604001516136b2565b8181815181106135e5576135e5614e39565b6020026020010151604001516003600084848151811061360757613607614e39565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061364157613641614e39565b60200260200101516020015161ffff1661ffff168152602001908152602001600020908161366f919061542b565b508061367a81614e65565b9150506135a4565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748160405161121991906154ea565b600281015161ffff811660031461149f5781604051639a6d49cd60e01b8152600401611075919061457f565b6000806136ec858585612564565b90925090506136fb8683613e8c565b94509492505050565b61370c6144e8565b600061371b8460000151613ec2565b602085015190915015613735576137358460200151613eea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016137858c6125d5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016137c1929190615320565b60806040518083038185885af11580156137df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138049190615573565b979650505050505050565b6001600160a01b0384166138395760405163e602df0560e01b815260006004820152602401611075565b6001600160a01b03831661386357604051634a1406b160e11b815260006004820152602401611075565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561329257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516138d691815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006139118184615253565b610f419190615226565b600061392a602082848661500b565b611309916155bd565b600061394360286020848661500b565b61394c916155db565b60c01c9392505050565b6000610f417f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416615226565b60006139978484613fcc565b509092915050565b60606139ae826028818661500b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001613a03949392919061560b565b6040516020818303038152906040529050949350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613a5157613a51614e39565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af3919061565a565b81600181518110613b0657613b06614e39565b60200260200101906001600160a01b031690816001600160a01b031681525050613b51307f000000000000000000000000000000000000000000000000000000000000000084612557565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790613ba6908590600090869030904290600401615677565b600060405180830381600087803b158015613bc057600080fd5b505af1158015613bd4573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613c1157613c11614e39565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110613c6557613c65614e39565b60200260200101906001600160a01b031690816001600160a01b031681525050613cb0307f000000000000000000000000000000000000000000000000000000000000000084612557565b604051635c11d79560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c11d79590613ba690859060009086907f0000000000000000000000000000000000000000000000000000000000000000904290600401615677565b6001600160a01b03831660009081526013602052604090205460ff16158015613d6757506001600160a01b03821660009081526013602052604090205460ff16155b15613ddb57600f54600160a81b900460ff16613dba5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401611075565b613dc5838383614002565b613dd8906001600160801b0316826152d5565b90505b6112e58383836130f0565b6000610f417f000000000000000000000000000000000000000000000000000000000000000083615253565b8051606090151580613e5b578484604051602001613e4792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052613e82565b84843385604051602001613e7294939291906156e8565b6040516020818303038152906040525b9150935093915050565b6001600160a01b038216613eb657604051634b637e8f60e11b815260006004820152602401611075565b61149f82600083613d25565b6000813414613ee6576040516304fb820960e51b8152346004820152602401611075565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6e919061565a565b90506001600160a01b038116613f97576040516329b99a9560e11b815260040160405180910390fd5b61149f6001600160a01b038216337f00000000000000000000000000000000000000000000000000000000000000008561433c565b6001600160a01b038216613ff65760405163ec442f0560e01b815260006004820152602401611075565b61149f60008383613d25565b6000600d546140103061171a565b1015801561403657506001600160a01b03831660009081526014602052604090205460ff165b1561405b57600c5460ff16156140535761404e612778565b61405b565b61405b612b16565b6040805160808101825260008082526020808301829052828401829052606083018290526001600160a01b0387168252601490529182205460ff16156140e85750604080516080810182526011546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152614152565b6001600160a01b03861660009081526014602052604090205460ff16156141525750604080516080810182526010546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b03161561433357604080516080810182526012546001600160501b038082168352600160501b820481166020840152600160a01b82041692820192909252600160f01b90910460ff161515606080830191909152820151612710906141cc906001600160401b031687615226565b6141d69190615253565b925081606001516001600160401b031682604001516001600160401b0316846141ff919061572b565b614209919061574e565b8160200181815161421a91906152b5565b6001600160501b0316905250606082015182516001600160401b039182169161424491168561572b565b61424e919061574e565b8151829061425d9083906152b5565b6001600160501b0316905250606082015160208301516001600160401b039182169161428a91168561572b565b614294919061574e565b816040018181516142a591906152b5565b6001600160501b039081169091528251601280546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b02919091166affffffffffffffffffffff60a01b19928716600160501b026001600160a01b031990941695909616949094179190911716929092171790555061433187306001600160801b0386166130f0565b505b50949350505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b179052613292918691906000906143a2908416836143f0565b905080516000141580156143c75750808060200190518101906143c59190614ebe565b155b156112e557604051635274afe760e01b81526001600160a01b0384166004820152602401611075565b60606113098383600084600080856001600160a01b031684866040516144169190615774565b60006040518083038185875af1925050503d8060008114614453576040519150601f19603f3d011682016040523d82523d6000602084013e614458565b606091505b509150915061150086838360608261447857614473826144bf565b611309565b815115801561448f57506001600160a01b0384163b155b156144b857604051639996b31560e01b81526001600160a01b0385166004820152602401611075565b5080611309565b8051156144cf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000801916815260200160006001600160401b0316815260200161452a604051806040016040528060008152602001600081525090565b905290565b60005b8381101561454a578181015183820152602001614532565b50506000910152565b6000815180845261456b81602086016020860161452f565b601f01601f19169290920160200192915050565b6020815260006113096020830184614553565b6001600160a01b038116811461248057600080fd5b600080604083850312156145ba57600080fd5b82356145c581614592565b946020939093013593505050565b600060e082840312156145e557600080fd5b50919050565b6000602082840312156145fd57600080fd5b81356001600160401b0381111561461357600080fd5b611756848285016145d3565b8351815260208085015190820152600060a08201604060a08185015281865180845260c08601915060c08160051b8701019350602080890160005b838110156146995788870360bf1901855281518051885283015183880187905261468687890182614553565b975050938201939082019060010161465a565b50508751606088015250505060208501516080850152509050611756565b6000606082840312156145e557600080fd5b60008083601f8401126146db57600080fd5b5081356001600160401b038111156146f257600080fd5b60208301915083602082850101111561470a57600080fd5b9250929050565b600080600080600080600060e0888a03121561472c57600080fd5b61473689896146b7565b96506060880135955060808801356001600160401b038082111561475957600080fd5b6147658b838c016146c9565b909750955060a08a0135915061477a82614592565b90935060c0890135908082111561479057600080fd5b5061479d8a828b016146c9565b989b979a50959850939692959293505050565b801515811461248057600080fd5b6000602082840312156147d057600080fd5b8135611309816147b0565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614813576148136147db565b60405290565b604080519081016001600160401b0381118282101715614813576148136147db565b604051601f8201601f191681016001600160401b0381118282101715614863576148636147db565b604052919050565b60006001600160401b03821115614884576148846147db565b5060051b60200190565b600082601f83011261489f57600080fd5b813560206148b46148af8361486b565b61483b565b82815260059290921b840181019181810190868411156148d357600080fd5b8286015b848110156148ee57803583529183019183016148d7565b509695505050505050565b6000806040838503121561490c57600080fd5b82356001600160401b038082111561492357600080fd5b818501915085601f83011261493757600080fd5b813560206149476148af8361486b565b82815260059290921b8401810191818101908984111561496657600080fd5b948201945b8386101561498d57853561497e81614592565b8252948201949082019061496b565b965050860135925050808211156149a357600080fd5b506149b08582860161488e565b9150509250929050565b6000806000606084860312156149cf57600080fd5b83356149da81614592565b925060208401356149ea81614592565b929592945050506040919091013590565b6001600160401b038116811461248057600080fd5b600080600060608486031215614a2557600080fd5b8335614a30816149fb565b92506020840135614a40816149fb565b91506040840135614a50816149fb565b809150509250925092565b803563ffffffff81168114614a6f57600080fd5b919050565b60008060408385031215614a8757600080fd5b6145c583614a5b565b60008060408385031215614aa357600080fd5b82356001600160401b03811115614ab957600080fd5b614ac5858286016145d3565b9250506020830135614ad6816147b0565b809150509250929050565b815181526020808301519082015260408101610f41565b600060208284031215614b0a57600080fd5b813561130981614592565b803561ffff81168114614a6f57600080fd5b60008060408385031215614b3a57600080fd5b614b4383614a5b565b9150614b5160208401614b15565b90509250929050565b60008060008060a08587031215614b7057600080fd5b614b7a86866146b7565b935060608501356001600160401b03811115614b9557600080fd5b614ba1878288016146c9565b9094509250506080850135614bb581614592565b939692955090935050565b60008060408385031215614bd357600080fd5b8235614bde81614592565b91506020830135614ad681614592565b60008060408385031215614c0157600080fd5b8235614c0c81614592565b91506020830135614ad6816147b0565b60008083601f840112614c2e57600080fd5b5081356001600160401b03811115614c4557600080fd5b6020830191508360208260051b850101111561470a57600080fd5b60008060208385031215614c7357600080fd5b82356001600160401b03811115614c8957600080fd5b614c9585828601614c1c565b90969095509350505050565b600060208284031215614cb357600080fd5b61130982614a5b565b60008060008060608587031215614cd257600080fd5b614cdb85614a5b565b9350614ce960208601614b15565b925060408501356001600160401b03811115614d0457600080fd5b614d10878288016146c9565b95989497509550505050565b60008060008385036080811215614d3257600080fd5b84356001600160401b03811115614d4857600080fd5b614d54878288016145d3565b9450506040601f1982011215614d6957600080fd5b506020840191506060840135614a5081614592565b600060c082019050835182526001600160401b0360208501511660208301526040840151614db9604084018280518252602090810151910152565b5082516080830152602083015160a0830152611309565b600060208284031215614de257600080fd5b5035919050565b600060608284031215614dfb57600080fd5b61130983836146b7565b600181811c90821680614e1957607f821691505b6020821081036145e557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201614e7757614e77614e4f565b5060010190565b6001600160401b03818116838216019080821115614e9e57614e9e614e4f565b5092915050565b600060208284031215614eb757600080fd5b5051919050565b600060208284031215614ed057600080fd5b8151611309816147b0565b60006001600160401b03821115614ef457614ef46147db565b50601f01601f191660200190565b6000614f106148af8461486b565b80848252602080830192508560051b850136811115614f2e57600080fd5b855b81811015614fff5780356001600160401b0380821115614f505760008081fd5b818901915060608236031215614f665760008081fd5b614f6e6147f1565b614f7783614a5b565b8152614f84868401614b15565b8682015260408084013583811115614f9c5760008081fd5b939093019236601f850112614fb357600092508283fd5b83359250614fc36148af84614edb565b8381523688858701011115614fd85760008081fd5b83888601898301376000938101880193909352810191909152865250938201938201614f30565b50919695505050505050565b6000808585111561501b57600080fd5b8386111561502857600080fd5b5050820193919092039150565b6000845161504781846020890161452f565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061175660208301848661505d565b6000823561013e198336030181126150b157600080fd5b9190910192915050565b6000808335601e198436030181126150d257600080fd5b8301803591506001600160401b038211156150ec57600080fd5b60200191503681900382131561470a57600080fd5b63ffffffff61510f89614a5b565b168152602088013560208201526000604089013561512c816149fb565b6001600160401b03811660408401525087606083015260e0608083015261515760e08301878961505d565b6001600160a01b03861660a084015282810360c084015261517981858761505d565b9a9950505050505050505050565b60006020828403121561519957600080fd5b81516001600160401b038111156151af57600080fd5b8201601f810184136151c057600080fd5b80516151ce6148af82614edb565b8181528560208385010111156151e357600080fd5b61354882602083016020860161452f565b60006040828403121561520657600080fd5b61520e614819565b82358152602083013560208201528091505092915050565b8082028115828204841417610f4157610f41614e4f565b634e487b7160e01b600052601260045260246000fd5b6000826152625761526261523d565b500490565b60006020828403121561527957600080fd5b8135611309816149fb565b60018060a01b038516815283602082015261ffff831660408201526080606082015260006115006080830184614553565b6001600160501b03818116838216019080821115614e9e57614e9e614e4f565b81810381811115610f4157610f41614e4f565b80820180821115610f4157610f41614e4f565b60408152600061530e6040830185614553565b82810360208401526135488185614553565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261535660e0840182614553565b90506060850151603f198483030160a08501526153738282614553565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b6000604082840312156153ab57600080fd5b6153b3614819565b9050815181526020820151602082015292915050565b6000604082840312156153db57600080fd5b6113098383615399565b601f8211156112e557600081815260208120601f850160051c8101602086101561540c5750805b601f850160051c820191505b81811015613bd457828155600101615418565b81516001600160401b03811115615444576154446147db565b615458816154528454614e05565b846153e5565b602080601f83116001811461548d57600084156154755750858301515b600019600386901b1c1916600185901b178555613bd4565b600085815260208120601f198616915b828110156154bc5788860151825594840194600190910190840161549d565b50858210156154da5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561556557888303603f190185528151805163ffffffff1684528781015161ffff1688850152860151606087850181905261555181860183614553565b968901969450505090860190600101615511565b509098975050505050505050565b60006080828403121561558557600080fd5b61558d6147f1565b82518152602083015161559f816149fb565b60208201526155b18460408501615399565b60408201529392505050565b80356020831015610f4157600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156156035780818660080360031b1b83161692505b505092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161564a81602c85016020870161452f565b91909101602c0195945050505050565b60006020828403121561566c57600080fd5b815161130981614592565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156156c75784516001600160a01b0316835293830193918301916001016156a2565b50506001600160a01b03969096166060850152505050608001529392505050565b8481526001600160401b0360c01b8460c01b1660208201528260288201526000825161571b81604885016020870161452f565b9190910160480195945050505050565b6001600160801b0381811683821602808216919082811461560357615603614e4f565b60006001600160801b03808416806157685761576861523d565b92169190910492915050565b600082516150b181846020870161452f56fea26469706673582212204181cce4e744f5823ad48a4b4e93727bd6384758b0d544b7aed053b01cc2e2b964736f6c63430008140033608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610371806100a56000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313ea204414610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008d575b600080fd5b61006461005f3660046102d0565b6100a0565b005b6100646101ff565b600054604080516001600160a01b039092168252519081900360200190f35b61006461009b3660046102d0565b610213565b6100a8610253565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156100ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101139190610300565b11156101fc576040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b9190610300565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156101d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fa9190610319565b505b50565b610207610253565b6102116000610280565b565b61021b610253565b6001600160a01b03811661024a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101fc81610280565b6000546001600160a01b031633146102115760405163118cdaa760e01b8152336004820152602401610241565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102e257600080fd5b81356001600160a01b03811681146102f957600080fd5b9392505050565b60006020828403121561031257600080fd5b5051919050565b60006020828403121561032b57600080fd5b815180151581146102f957600080fdfea2646970667358221220ae52a8eb0fb3ebaa5795292d4595c337c55b966f1f74fb11ae4215a05196be5e64736f6c634300081400330000000000000000000000001a44076050125825900e736c501f859c50fe728c000000000000000000000000253617a0196d5306cdf877b1d2d44e71e30c0cc20000000000000000000000000000000000000000000000000000000000000001