[ { "inputs": [ { "internalType": "contract ISlushToken", "name": "slushToken_", "type": "address" }, { "internalType": "uint8", "name": "sharedDecimals_", "type": "uint8" }, { "internalType": "address", "name": "lzEndpoint_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AdapterParamsMustBeEmpty", "type": "error" }, { "inputs": [], "name": "AmountSDOverflow", "type": "error" }, { "inputs": [], "name": "AmountTooSmall", "type": "error" }, { "inputs": [], "name": "CallerMustBeLzApp", "type": "error" }, { "inputs": [], "name": "CallerMustBeOFTCore", "type": "error" }, { "inputs": [], "name": "GasLimitTooLow", "type": "error" }, { "inputs": [], "name": "IceNotRemovableFromWhitelist", "type": "error" }, { "inputs": [], "name": "InsufficientIceBalance", "type": "error" }, { "inputs": [], "name": "InvalidAdapterParams", "type": "error" }, { "inputs": [], "name": "InvalidDestinationChain", "type": "error" }, { "inputs": [], "name": "InvalidEndpointCaller", "type": "error" }, { "inputs": [], "name": "InvalidMinGas", "type": "error" }, { "inputs": [], "name": "InvalidPayload", "type": "error" }, { "inputs": [], "name": "InvalidSourceSendingContract", "type": "error" }, { "inputs": [], "name": "MinGasLimitNotSet", "type": "error" }, { "inputs": [], "name": "NoStoredMessage", "type": "error" }, { "inputs": [], "name": "NoTrustedPathRecord", "type": "error" }, { "inputs": [], "name": "NonexistentRedeemIndex", "type": "error" }, { "inputs": [], "name": "PayloadSizeTooLarge", "type": "error" }, { "inputs": [], "name": "SharedDecimalsMustBeLteDecimals", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "TransferFromFailed", "type": "error" }, { "inputs": [], "name": "TransferNotAllowed", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnknownPacketType", "type": "error" }, { "inputs": [], "name": "VestingNotEnded", "type": "error" }, { "inputs": [], "name": "WrongDuration", "type": "error" }, { "inputs": [], "name": "WrongRatio", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes32", "name": "_hash", "type": "bytes32" } ], "name": "CallOFTReceivedSuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "iceAmount", "type": "uint256" } ], "name": "CancelRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Convert", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "slushAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "iceEarned", "type": "uint256" } ], "name": "FinalizeRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "_reason", "type": "bytes" } ], "name": "MessageFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_address", "type": "address" } ], "name": "NonContractAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "ReceiveFromChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "slushAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "iceEarned", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "initiatorAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "slushAmount", "type": "uint256" } ], "name": "RedeemNow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes32", "name": "_payloadHash", "type": "bytes32" } ], "name": "RetryMessageSuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_toAddress", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "_type", "type": "uint16" }, { "indexed": false, "internalType": "uint256", "name": "_minDstGas", "type": "uint256" } ], "name": "SetMinDstGas", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "precrime", "type": "address" } ], "name": "SetPrecrime", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "SetTrustedRemote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "SetTrustedRemoteAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "SetUseCustomAdapterParams", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_PAYLOAD_SIZE_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FIXED_RATIO", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NO_EXTRA_GAS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PT_SEND", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PT_SEND_AND_CALL", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "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": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bridgeFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bridgeFeeAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes32", "name": "_from", "type": "bytes32" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "internalType": "uint256", "name": "_gasForCall", "type": "uint256" } ], "name": "callOnOFTReceived", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "cancelRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "circulatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "convert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "convertTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "name": "creditedPackets", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes32", "name": "_toAddress", "type": "bytes32" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "internalType": "uint64", "name": "_dstGasForCall", "type": "uint64" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendAndCallFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes32", "name": "_toAddress", "type": "bytes32" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "name": "failedMessages", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "finalizeRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "finalizeRedeems", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "forceResumeReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" } ], "name": "getConfig", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "bool", "name": "withDiscount", "type": "bool" } ], "name": "getIceByVestingDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNftAddresses", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRedeemNowWhitelist", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "bool", "name": "withDiscount", "type": "bool" } ], "name": "getSlushByVestingDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferWhitelist", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" } ], "name": "getTrustedRemoteAddress", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "getUserRedeem", "outputs": [ { "internalType": "uint256", "name": "slushAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceEarned", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getUserRedeems", "outputs": [ { "components": [ { "internalType": "uint256", "name": "slushAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceEarned", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "internalType": "struct IceToken.RedeemInfo[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getUserRedeemsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "iceBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isRedeemNowRedeemWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isTransferWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "isTrustedRemote", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lzEndpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpoint", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxRedeemDurationDiscounted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "minDstGasLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemDurationDiscounted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nftIERC721WithUtility", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "nonblockingLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "ownsNftWithUtility", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "payloadSizeLimitLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "precrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "redeemIceApr", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "redeemNow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes32", "name": "_toAddress", "type": "bytes32" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "internalType": "uint64", "name": "_dstGasForCall", "type": "uint64" }, { "components": [ { "internalType": "address payable", "name": "refundAddress", "type": "address" }, { "internalType": "address", "name": "zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "adapterParams", "type": "bytes" } ], "internalType": "struct ICommonOFT.LzCallParams", "name": "_callParams", "type": "tuple" } ], "name": "sendAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint16", "name": "dstChainId", "type": "uint16" }, { "internalType": "bytes32", "name": "toAddress", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "components": [ { "internalType": "address payable", "name": "refundAddress", "type": "address" }, { "internalType": "address", "name": "zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "adapterParams", "type": "bytes" } ], "internalType": "struct ICommonOFT.LzCallParams", "name": "callParams", "type": "tuple" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" }, { "internalType": "bytes", "name": "_config", "type": "bytes" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint16", "name": "_packetType", "type": "uint16" }, { "internalType": "uint256", "name": "_minGas", "type": "uint256" } ], "name": "setMinDstGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint256", "name": "_size", "type": "uint256" } ], "name": "setPayloadSizeLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_precrime", "type": "address" } ], "name": "setPrecrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setReceiveVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setSendVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "setTrustedRemoteAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "setUseCustomAdapterParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "slushToken", "outputs": [ { "internalType": "contract ISlushToken", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "bridgeFee_", "type": "uint256" }, { "internalType": "address", "name": "bridgeFeeAddress_", "type": "address" } ], "name": "updateBridgeFeeSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftAddress", "type": "address" }, { "internalType": "bool", "name": "add", "type": "bool" }, { "internalType": "bool", "name": "isIERC721WithUtility", "type": "bool" } ], "name": "updateNftList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "add", "type": "bool" } ], "name": "updateRedeemNowWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "minRedeemDuration_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemDuration_", "type": "uint256" }, { "internalType": "uint256", "name": "minRedeemDurationDiscounted_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemDurationDiscounted_", "type": "uint256" }, { "internalType": "uint256", "name": "redeemIceApr_", "type": "uint256" } ], "name": "updateRedeemSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "add", "type": "bool" } ], "name": "updateTransferWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "useCustomAdapterParams", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "userRedeems", "outputs": [ { "internalType": "uint256", "name": "slushAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceAmount", "type": "uint256" }, { "internalType": "uint256", "name": "iceEarned", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
6101006040526032600e556064600f55621275006010556276a700601155620d2f00601255624f1a006013553480156200003857600080fd5b5060405162006630380380620066308339810160408190526200005b9162000288565b604080518082018252601381527f537761707369636c652049434520546f6b656e000000000000000000000000006020808301919091528251808401909352600383526249434560e81b9083015260016000559083838383838381818080620000c433620001a6565b6001600160a01b0316608052505060ff1660a05250600c9050620000e9838262000386565b50600d620000f8828262000386565b50505060006200010d620001f860201b60201c565b90508060ff168360ff161115620001375760405163498294bf60e01b815260040160405180910390fd5b62000143838262000468565b6200015090600a62000581565b60c0525050506001600160a01b03831691506200018290505760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03831660e0526200019c601a30620001fd565b5050505062000592565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601290565b600062000214836001600160a01b0384166200021d565b90505b92915050565b6000818152600183016020526040812054620002665750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000217565b50600062000217565b6001600160a01b03811681146200028557600080fd5b50565b6000806000606084860312156200029e57600080fd5b8351620002ab816200026f565b602085015190935060ff81168114620002c357600080fd5b6040850151909250620002d6816200026f565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200030c57607f821691505b6020821081036200032d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200038157600081815260208120601f850160051c810160208610156200035c5750805b601f850160051c820191505b818110156200037d5782815560010162000368565b5050505b505050565b81516001600160401b03811115620003a257620003a2620002e1565b620003ba81620003b38454620002f7565b8462000333565b602080601f831160018114620003f25760008415620003d95750858301515b600019600386901b1c1916600185901b1785556200037d565b600085815260208120601f198616915b82811015620004235788860151825594840194600190910190840162000402565b5085821015620004425787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000217576200021762000452565b600181815b80851115620004c5578160001904821115620004a957620004a962000452565b80851615620004b757918102915b93841c939080029062000489565b509250929050565b600082620004de5750600162000217565b81620004ed5750600062000217565b8160018114620005065760028114620005115762000531565b600191505062000217565b60ff84111562000525576200052562000452565b50506001821b62000217565b5060208310610133831016604e8410600b841016171562000556575081810a62000217565b62000562838362000484565b806000190482111562000579576200057962000452565b029392505050565b60006200021460ff841683620004cd565b60805160a05160c05160e051615ffb6200063560003960008181610e770152818161193b015281816133970152818161343a0152613aa301526000818161417e015281816147e60152614a7c01526000610b73015260008181610dcd015281816111a40152818161145801528181611518015281816119910152818161265001528181612dc8015281816136de01528181613e8301526149720152615ffb6000f3fe6080604052600436106105d55760003560e01c80638908365411610301578063cbed8b9c1161019a578063eab45d9c116100ec578063f53c2eba11610095578063fbb614841161006f578063fbb6148414611158578063fc0c546a1461116e578063ffbdf9291461118157600080fd5b8063f53c2eba146110f6578063f5ae382f1461110b578063f5ecbdbc1461113857600080fd5b8063ed629c5c116100c6578063ed629c5c1461109c578063f0bddf5d146110b6578063f2fde38b146110d657600080fd5b8063eab45d9c1461103c578063eaffd49a1461105c578063eb8d72b71461107c57600080fd5b8063dd62ed3e1161014e578063e4880a5811610128578063e4880a5814610ff1578063e6a20ae614611011578063e9ed87f81461102657600080fd5b8063dd62ed3e14610f75578063df2a5b3b14610fbb578063e3a2950b14610fdb57600080fd5b8063cf0afea81161017f578063cf0afea814610f05578063d1deba1f14610f32578063dadaaca114610f4557600080fd5b8063cbed8b9c14610ec5578063cc6c542314610ee557600080fd5b8063a4c51df511610253578063b90c2b5211610207578063c20d5a08116101e1578063c20d5a0814610e65578063c446183414610e99578063c4b1076614610eaf57600080fd5b8063b90c2b5214610def578063baf3292d14610e25578063bf1f2aef14610e4557600080fd5b8063a9059cbb11610238578063a9059cbb14610d7b578063aff6cbf114610d9b578063b353aaa714610dbb57600080fd5b8063a4c51df514610d3b578063a6c3d16514610d5b57600080fd5b8063950c8a74116102b55780639f38369a1161028f5780639f38369a14610cdb578063a3908e1b14610cfb578063a457c2d714610d1b57600080fd5b8063950c8a7414610c5457806395d89b4114610c745780639bdb981214610c8957600080fd5b80638da5cb5b116102e65780638da5cb5b14610bed57806391a275a814610c1f5780639358928b14610c3f57600080fd5b80638908365414610b955780638cfd8f5c14610bb557600080fd5b806342d65a8d11610473578063634e2f4f116103c55780637311ae2a116103795780637cbc2373116103535780637cbc237314610b2b57806382b12dd714610b4b578063857749b014610b6157600080fd5b80637311ae2a14610ae35780637533d78814610af857806376203b4814610b1857600080fd5b8063695ef6bf116103aa578063695ef6bf14610a8557806370a0823114610a98578063715018a614610ace57600080fd5b8063634e2f4f14610a4557806366ad5c8a14610a6557600080fd5b8063539ffb77116104275780635b8c41e6116104015780635b8c41e6146109c15780635d0d388a14610a10578063619ac95b14610a3057600080fd5b8063539ffb771461096b5780635763f29c1461098b5780635a1d34dc146109a157600080fd5b80634be9e512116104585780634be9e512146108ee5780634c42899a1461090e5780634f62b7ec1461092357600080fd5b806342d65a8d146108b957806344770515146108d957600080fd5b80631fc721311161052c578063365260b4116104e05780633f1f4fa4116104ba5780633f1f4fa41461084c578063415da38b1461087957806342966c681461089957600080fd5b8063365260b4146107d7578063395093511461080c5780633d8b38f61461082c57600080fd5b8063246e32ec11610511578063246e32ec146107805780632ed51abb146107a0578063313ce567146107b557600080fd5b80631fc721311461074a57806323b872dd1461076057600080fd5b8063095ea7b31161058e57806318160ddd1161056857806318160ddd146106f55780631c352679146107145780631eee7e601461072a57600080fd5b8063095ea7b3146106955780630df37483146106b557806310ddb137146106d557600080fd5b8063051e782d116105bf578063051e782d1461063157806306fdde031461065357806307e0db171461067557600080fd5b80621d3567146105da57806301ffc9a7146105fc575b600080fd5b3480156105e657600080fd5b506105fa6105f5366004614df5565b6111a1565b005b34801561060857600080fd5b5061061c610617366004614e89565b61135d565b60405190151581526020015b60405180910390f35b34801561063d57600080fd5b50610646611394565b6040516106289190614eb3565b34801561065f57600080fd5b506106686113a5565b6040516106289190614f50565b34801561068157600080fd5b506105fa610690366004614f63565b611437565b3480156106a157600080fd5b5061061c6106b0366004614f93565b6114c0565b3480156106c157600080fd5b506105fa6106d0366004614fbf565b6114d8565b3480156106e157600080fd5b506105fa6106f0366004614f63565b6114f7565b34801561070157600080fd5b50600b545b604051908152602001610628565b34801561072057600080fd5b50610706600e5481565b34801561073657600080fd5b5061061c610745366004614fdb565b61154f565b34801561075657600080fd5b5061070660145481565b34801561076c57600080fd5b5061061c61077b366004614ff8565b61155c565b34801561078c57600080fd5b506105fa61079b366004615039565b611582565b3480156107ac57600080fd5b506105fa611688565b3480156107c157600080fd5b5060125b60405160ff9091168152602001610628565b3480156107e357600080fd5b506107f76107f2366004615077565b61171d565b60408051928352602083019190915201610628565b34801561081857600080fd5b5061061c610827366004614f93565b611772565b34801561083857600080fd5b5061061c6108473660046150df565b6117b1565b34801561085857600080fd5b50610706610867366004614f63565b60046020526000908152604090205481565b34801561088557600080fd5b506105fa610894366004615132565b61187d565b3480156108a557600080fd5b506105fa6108b436600461517d565b61191b565b3480156108c557600080fd5b506105fa6108d43660046150df565b611972565b3480156108e557600080fd5b50610706600081565b3480156108fa57600080fd5b50610706610909366004615196565b6119f8565b34801561091a57600080fd5b506107c5600081565b34801561092f57600080fd5b5061094361093e366004614f93565b611af3565b604080519586526020860194909452928401919091526060830152608082015260a001610628565b34801561097757600080fd5b506105fa61098636600461517d565b611b41565b34801561099757600080fd5b5061070660125481565b3480156109ad57600080fd5b506105fa6109bc366004615039565b611c28565b3480156109cd57600080fd5b506107066109dc366004615233565b6006602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b348015610a1c57600080fd5b5061061c610a2b366004614fdb565b611c44565b348015610a3c57600080fd5b50610706606481565b348015610a5157600080fd5b50610706610a60366004615196565b611c51565b348015610a7157600080fd5b506105fa610a80366004614df5565b611cd9565b6105fa610a933660046152e6565b611d76565b348015610aa457600080fd5b50610706610ab3366004614fdb565b6001600160a01b031660009081526009602052604090205490565b348015610ada57600080fd5b506105fa611e51565b348015610aef57600080fd5b50610646611e63565b348015610b0457600080fd5b50610668610b13366004614f63565b611e6f565b6105fa610b2636600461535a565b611f09565b348015610b3757600080fd5b506105fa610b4636600461540d565b611fb8565b348015610b5757600080fd5b5061070660155481565b348015610b6d57600080fd5b506107c57f000000000000000000000000000000000000000000000000000000000000000081565b348015610ba157600080fd5b506105fa610bb036600461542f565b61216e565b348015610bc157600080fd5b50610706610bd036600461545d565b600360209081526000928352604080842090915290825290205481565b348015610bf957600080fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610628565b348015610c2b57600080fd5b50601654610c07906001600160a01b031681565b348015610c4b57600080fd5b506107066121bb565b348015610c6057600080fd5b50600554610c07906001600160a01b031681565b348015610c8057600080fd5b506106686121c6565b348015610c9557600080fd5b5061061c610ca4366004615233565b6008602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b348015610ce757600080fd5b50610668610cf6366004614f63565b6121d5565b348015610d0757600080fd5b506105fa610d1636600461517d565b6122b5565b348015610d2757600080fd5b5061061c610d36366004614f93565b6122d1565b348015610d4757600080fd5b506107f7610d56366004615490565b612373565b348015610d6757600080fd5b506105fa610d763660046150df565b612402565b348015610d8757600080fd5b5061061c610d96366004614f93565b61248b565b348015610da757600080fd5b506105fa610db636600461517d565b612499565b348015610dc757600080fd5b50610c077f000000000000000000000000000000000000000000000000000000000000000081565b348015610dfb57600080fd5b50610706610e0a366004614fdb565b6001600160a01b031660009081526018602052604090205490565b348015610e3157600080fd5b506105fa610e40366004614fdb565b6124c2565b348015610e5157600080fd5b5061061c610e60366004614fdb565b61252c565b348015610e7157600080fd5b50610c077f000000000000000000000000000000000000000000000000000000000000000081565b348015610ea557600080fd5b5061070661271081565b348015610ebb57600080fd5b5061070660105481565b348015610ed157600080fd5b506105fa610ee036600461554e565b612631565b348015610ef157600080fd5b50610943610f00366004614f93565b6126bb565b348015610f1157600080fd5b50610f25610f20366004614fdb565b612735565b60405161062891906155bd565b6105fa610f40366004614df5565b612888565b348015610f5157600080fd5b5061061c610f60366004614fdb565b60196020526000908152604090205460ff1681565b348015610f8157600080fd5b50610706610f9036600461562b565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b348015610fc757600080fd5b506105fa610fd6366004615659565b612a2c565b348015610fe757600080fd5b50610706600f5481565b348015610ffd57600080fd5b506105fa61100c366004615039565b612ab7565b34801561101d57600080fd5b506107c5600181565b34801561103257600080fd5b5061070660115481565b34801561104857600080fd5b506105fa611057366004615695565b612af7565b34801561106857600080fd5b506105fa6110773660046156b2565b612b40565b34801561108857600080fd5b506105fa6110973660046150df565b612c30565b3480156110a857600080fd5b5060075461061c9060ff1681565b3480156110c257600080fd5b506105fa6110d136600461577b565b612c8a565b3480156110e257600080fd5b506105fa6110f1366004614fdb565b612cfe565b34801561110257600080fd5b50610646612d8b565b34801561111757600080fd5b50610706611126366004614fdb565b60176020526000908152604090205481565b34801561114457600080fd5b506106686111533660046157c7565b612d97565b34801561116457600080fd5b5061070660135481565b34801561117a57600080fd5b5030610c07565b34801561118d57600080fd5b506105fa61119c36600461542f565b612e48565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146111ea57604051630d1ad4cd60e01b815260040160405180910390fd5b61ffff86166000908152600260205260408120805461120890615814565b80601f016020809104026020016040519081016040528092919081815260200182805461123490615814565b80156112815780601f1061125657610100808354040283529160200191611281565b820191906000526020600020905b81548152906001019060200180831161126457829003601f168201915b505083519394505050508514158061129857508051155b806112c05750805160208201206040516112b59088908890615848565b604051809103902014155b156112de57604051631935e28160e11b815260040160405180910390fd5b6113548787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612e6c92505050565b50505050505050565b60006001600160e01b03198216631f7ecdf760e01b148061138e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606113a0601c612efa565b905090565b6060600c80546113b490615814565b80601f01602080910402602001604051908101604052809291908181526020018280546113e090615814565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905090565b61143f612f07565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b1580156114a557600080fd5b505af11580156114b9573d6000803e3d6000fd5b5050505050565b6000336114ce818585612f61565b5060019392505050565b6114e0612f07565b61ffff909116600090815260046020526040902055565b6114ff612f07565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb1379060240161148b565b600061138e601a83613085565b60003361156a8582856130a7565b611575858585613139565b60019150505b9392505050565b61158a613306565b611595601c33613085565b6115b1576040516282b42960e81b815260040160405180910390fd5b816000036115d257604051631f2a200560e01b815260040160405180910390fd5b6115dd333084613139565b604080518381526020810184905260008183018190526060820152905133917fe02f6383e19e87c24e0c03e2cd5dbd05156cb29a1b0f3dbca1fa3430e444f63d919081900360800190a2611634818384600061335f565b60408051838152602081018490526001600160a01b0383169133917f40b40d6b3b91ffa3c7ab7b7f8014d1649eb30cfb1d3dd0e6337705672b1bd469910160405180910390a36116846001600055565b5050565b611690613306565b33600090815260186020526040902054805b801561170f573360009081526018602052604090206116c260018361586e565b815481106116d2576116d2615881565b90600052602060002090600502016004015442106116fd576116fd6116f860018361586e565b6135c3565b8061170781615897565b9150506116a2565b505061171b6001600055565b565b6000806117638888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366592505050565b91509150965096945050505050565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091906114ce90829086906117ac9087906158ae565b612f61565b61ffff8316600090815260026020526040812080548291906117d290615814565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90615814565b801561184b5780601f106118205761010080835404028352916020019161184b565b820191906000526020600020905b81548152906001019060200180831161182e57829003601f168201915b505050505090508383604051611862929190615848565b60405180910390208180519060200120149150509392505050565b611885612f07565b6001600160a01b0383166118ac5760405163d92e233d60e01b815260040160405180910390fd5b81156118e9576118bd601e8461376a565b506001600160a01b0383166000908152601960205260409020805482151560ff19909116179055505050565b6118f4601e8461377f565b506001600160a01b0383166000908152601960205260409020805460ff191690555b505050565b6119253382613794565b604051630852cd8d60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c689060240161148b565b61197a612f07565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d906119ca908690869086906004016158ea565b600060405180830381600087803b1580156119e457600080fd5b505af1158015611354573d6000803e3d6000fd5b60008082611a0857601054611a0c565b6012545b9050600083611a1d57601154611a21565b6013545b905081851015611a365760009250505061157b565b808510611a60576064600f5487611a4d9190615908565b611a579190615935565b9250505061157b565b670de0b6b3a76400006000611a75848461586e565b600e54600f54611a85919061586e565b611a8f868a61586e565b611a999085615908565b611aa39190615908565b611aad9190615935565b600e54611aba9084615908565b611ac491906158ae565b9050816064611ad3838b615908565b611add9190615935565b611ae79190615935565b98975050505050505050565b60186020528160005260406000208181548110611b0f57600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b611b49613306565b3381611b5582826138d4565b336000908152601860205260408120805485908110611b7657611b76615881565b90600052602060002090600502019050806001015460176000336001600160a01b03166001600160a01b031681526020019081526020016000206000828254611bbf919061586e565b92505081905550611bd530338360010154613139565b600181015460405190815233907f56d7520e387607a8daa892e3fed116badc2a636307bdc794b1c1aed97ae203f49060200160405180910390a2611c188461390c565b505050611c256001600055565b50565b611c30613306565b611c3a8282613a0f565b6116846001600055565b600061138e601c83613085565b60008082611c6157601054611c65565b6012545b9050600083611c7657601154611c7a565b6013545b905081851015611c8f5760009250505061157b565b808510611c9a578094505b6103e86301e133808660145489611cb19190615908565b611cbb9190615908565b611cc59190615935565b611ccf9190615935565b9695505050505050565b333014611cf85760405162e4f81560e51b815260040160405180910390fd5b611d6e8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250613b3892505050565b505050505050565b611d7e613306565b826001600160a01b038681169082161480611d9f5750611d9f601a87613085565b80611db05750611db0601a82613085565b611dcd57604051638cd22d1960e01b815260040160405180910390fd5b60006103e860155485611de09190615908565b611dea9190615935565b90506000611df8828661586e565b9050611e078888888488613b90565b8115611e44576016546001600160a01b0316611e2c57611e278883613794565b611e44565b601654611e449089906001600160a01b031684613139565b5050506114b96001600055565b611e59612f07565b61171b6000613bfd565b60606113a0601e612efa565b60026020526000908152604090208054611e8890615814565b80601f0160208091040260200160405190810160405280929190818152602001828054611eb490615814565b8015611f015780601f10611ed657610100808354040283529160200191611f01565b820191906000526020600020905b815481529060010190602001808311611ee457829003601f168201915b505050505081565b611fad8888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611f569150506020890189614fdb565b611f6660408a0160208b01614fdb565b611f7360408b018b615949565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c5c92505050565b505050505050505050565b611fc0613306565b81600003611fe157604051631f2a200560e01b815260040160405180910390fd5b6000611fec3361252c565b9050600081611ffd57601054612001565b6012545b9050808310156120245760405163226fc27f60e01b815260040160405180910390fd5b61202f333086613139565b600061203c8585856119f8565b9050600061204b868686611c51565b60408051888152602081018590529081018290526060810187905290915033907fe02f6383e19e87c24e0c03e2cd5dbd05156cb29a1b0f3dbca1fa3430e444f63d9060800160405180910390a284156121535733600090815260176020526040812080548892906120bd9084906158ae565b909155505033600090815260186020908152604091829020825160a081018452858152918201899052918101839052426060820181905260808201906121049089906158ae565b9052815460018181018455600093845260209384902083516005909302019182559282015192810192909255604081015160028301556060810151600383015560800151600490910155612160565b612160338784600061335f565b505050506116846001600055565b612176612f07565b306001600160a01b0383160361219f57604051631861db2360e01b815260040160405180910390fd5b80156121b057611916601a8361376a565b611916601a8361377f565b60006113a0600b5490565b6060600d80546113b490615814565b61ffff81166000908152600260205260408120805460609291906121f890615814565b80601f016020809104026020016040519081016040528092919081815260200182805461222490615814565b80156122715780601f1061224657610100808354040283529160200191612271565b820191906000526020600020905b81548152906001019060200180831161225457829003601f168201915b50505050509050805160000361229a5760405163039aee5360e01b815260040160405180910390fd5b61157b6000601483516122ad919061586e565b839190613d2e565b6122bd613306565b6122c78133613a0f565b611c256001600055565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091908381101561235b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6123688286868403612f61565b506001949350505050565b6000806123f08b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c9081908401838280828437600092019190915250613e5692505050565b91509150995099975050505050505050565b61240a612f07565b81813060405160200161241f93929190615990565b60408051601f1981840301815291815261ffff851660009081526002602052209061244a90826159fc565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161247e939291906158ea565b60405180910390a1505050565b6000336114ce818585613139565b6124a1613306565b33816124ad82826138d4565b6124b6836135c3565b5050611c256001600055565b6124ca612f07565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b6000805b61253a601e613f11565b81101561262b576000736e2542afc68a1697feb2810437df9409d3b934936364a2dbfd85612569601e86613f1b565b60196000612578601e89613f1b565b6001600160a01b0390811682526020820192909252604090810160002054905160e086901b6001600160e01b031916815293821660048501529116602483015260ff1615156044820152606401602060405180830381865af41580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190615abc565b9050801561261857600192505061262b565b508061262381615ad5565b915050612530565b50919050565b612639612f07565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c9061268d9088908890889088908890600401615aee565b600060405180830381600087803b1580156126a757600080fd5b505af1158015611fad573d6000803e3d6000fd5b600080600080600086866126cf82826138d4565b6001600160a01b038916600090815260186020526040812080548a9081106126f9576126f9615881565b600091825260209091206005909102018054600182015460028301546003840154600490940154929e919d509b50919950975095505050505050565b6001600160a01b0381166000908152601860205260408120546060918167ffffffffffffffff81111561276a5761276a6151c4565b6040519080825280602002602001820160405280156127cd57816020015b6127ba6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816127885790505b50905060005b82811015612880576001600160a01b038516600090815260186020526040902080548290811061280557612805615881565b90600052602060002090600502016040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505082828151811061286257612862615881565b6020026020010181905250808061287890615ad5565b9150506127d3565b509392505050565b61ffff861660009081526006602052604080822090516128ab9088908890615848565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020549050806128f157604051632b96c98560e21b815260040160405180910390fd5b808383604051612902929190615848565b60405180910390201461292857604051637c6953f960e01b815260040160405180910390fd5b61ffff8716600090815260066020526040808220905161294b9089908990615848565b908152604080516020928190038301812067ffffffffffffffff8916600090815290845282902093909355601f880182900482028301820190528682526129e4918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250613b3892505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051612a1b959493929190615b27565b60405180910390a150505050505050565b612a34612f07565b80600003612a555760405163e4ac3b3f60e01b815260040160405180910390fd5b61ffff83811660008181526003602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09060600161247e565b612abf612f07565b60158290556016805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316179055611916601a8261376a565b612aff612f07565b6007805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a490602001612521565b333014612b60576040516320aa6c2360e21b815260040160405180910390fd5b612b6b308686613f27565b9350846001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf86604051612bad91815260200190565b60405180910390a3604051633fe79aed60e11b81526001600160a01b03861690637fcf35da908390612bf1908e908e908e908e908e908d908d908d90600401615b63565b600060405180830381600088803b158015612c0b57600080fd5b5087f1158015612c1f573d6000803e3d6000fd5b505050505050505050505050505050565b612c38612f07565b61ffff83166000908152600260205260409020612c56828483615bbf565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161247e939291906158ea565b612c92612f07565b85871180612ca05750606486115b15612cbe57604051634aa3778b60e01b815260040160405180910390fd5b838510612cde5760405163226fc27f60e01b815260040160405180910390fd5b600e96909655600f94909455601092909255601155601255601355601455565b612d06612f07565b6001600160a01b038116612d825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401612352565b611c2581613bfd565b60606113a0601a612efa565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015612e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e3f9190810190615c7f565b95945050505050565b612e50612f07565b8015612e6157611916601c8361376a565b611916601c8361377f565b600080612ee45a60966366ad5c8a60e01b89898989604051602401612e949493929190615ced565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915230929190613f79565b9150915081611d6e57611d6e8686868685614004565b6060600061157b836140a2565b6001546001600160a01b0316331461171b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612352565b6001600160a01b038316612fc35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401612352565b6001600160a01b0382166130245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401612352565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600183016020526040812054151561157b565b6001600160a01b038381166000908152600a6020908152604080832093861683529290522054600019811461313357818110156131265760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401612352565b6131338484848403612f61565b50505050565b6001600160a01b03831661319d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401612352565b6001600160a01b0382166131ff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401612352565b61320a8383836140fe565b6001600160a01b038316600090815260096020526040902054818110156132995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401612352565b6001600160a01b0380851660008181526009602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906132f99086815260200190565b60405180910390a3613133565b6002600054036133585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612352565b6002600055565b600061336b838561586e565b60405163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156133e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134049190615d2c565b905080613424576040516312171d8360e31b815260040160405180910390fd5b604051630852cd8d60e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b15801561348657600080fd5b505af115801561349a573d6000803e3d6000fd5b505050506134a83086613794565b821561356f57306000908152600960205260409020548311156134de5760405163a05b0e1b60e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038716600482015260248101849052309063a9059cbb906044016020604051808303816000875af115801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190615d2c565b90508061356f576040516312171d8360e31b815260040160405180910390fd5b60408051868152602081018690529081018490526001600160a01b038716907f30e46266fbec30e6d144f81193f0b04d5491225f48ba58667b5af351483d014b9060600160405180910390a2505050505050565b3360009081526018602052604081208054839081106135e4576135e4615881565b90600052602060002090600502019050806004015442101561361957604051633e0ad23560e21b815260040160405180910390fd5b6001810154336000908152601760205260408120805490919061363d90849061586e565b9250508190555061365c3382600101548360000154846002015461335f565b6116848261390c565b60008060006136c48761367788614176565b6040805160006020820152602181019390935260c09190911b77ffffffffffffffffffffffffffffffffffffffffffffffff19166041830152805160298184030181526049909201905290565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb109061371b908b90309086908b908b90600401615d49565b6040805180830381865afa158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b9190615d8f565b92509250509550959350505050565b600061157b836001600160a01b0384166141ce565b600061157b836001600160a01b03841661421d565b6001600160a01b0382166137f45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401612352565b613800826000836140fe565b6001600160a01b038216600090815260096020526040902054818110156138745760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401612352565b6001600160a01b03831660008181526009602090815260408083208686039055600b80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821660009081526018602052604090205481106116845760405163508e6ff560e01b815260040160405180910390fd5b33600090815260186020526040902080546139299060019061586e565b8154811061393957613939615881565b906000526020600020906005020160186000336001600160a01b03166001600160a01b03168152602001908152602001600020828154811061397d5761397d615881565b60009182526020808320845460059093020191825560018085015490830155600280850154908301556003808501549083015560049384015493909101929092553381526018909152604090208054806139d9576139d9615db3565b60008281526020812060056000199093019283020181815560018101829055600281018290556003810182905560040155905550565b81600003613a3057604051631f2a200560e01b815260040160405180910390fd5b613a3a8183614310565b604080516001600160a01b03831681526020810184905233917fccfaeb3043a96a967dc036ab72e078a9632af809671bc2a1ac30a8043645f89e910160405180910390a26040516323b872dd60e01b8152336004820152306024820152604481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190615d2c565b90508061191657604051631e4e7d0960e21b815260040160405180910390fd5b6000613b4482826143dd565b905060ff8116613b5f57613b5a85858585614443565b6114b9565b60001960ff821601613b7757613b5a858585856144d3565b60405163fe3e832760e01b815260040160405180910390fd5b611d6e85858585613ba46020870187614fdb565b613bb46040880160208901614fdb565b613bc16040890189615949565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152503492506146e4915050565b600180546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613c758960018467ffffffffffffffff89166147a2565b613c7e876147de565b509050613c8d8a8a8a8461481e565b905080600003613cb05760405163617ab12d60e11b815260040160405180910390fd5b6000613cc7338a613cc085614176565b8a8a614850565b9050613cd78a8287878734614891565b888b6001600160a01b03168b61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a85604051613d1891815260200190565b60405180910390a4509998505050505050505050565b606081613d3c81601f6158ae565b1015613d8a5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401612352565b613d9482846158ae565b84511015613de45760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401612352565b606082158015613e035760405191506000825260208201604052613e4d565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613e3c578051835260209283019201613e24565b5050858452601f01601f1916604052505b50949350505050565b6000806000613e69338a613cc08b614176565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090613ec0908d90309086908b908b90600401615d49565b6040805180830381865afa158015613edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f009190615d8f565b925092505097509795505050505050565b600061138e825490565b600061157b83836149ee565b600033306001600160a01b03861614801590613f555750806001600160a01b0316856001600160a01b031614155b15613f6557613f658582856130a7565b613f70858585613139565b50909392505050565b6000606060008060008661ffff1667ffffffffffffffff811115613f9f57613f9f6151c4565b6040519080825280601f01601f191660200182016040528015613fc9576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115613feb578692505b828152826000602083013e909890975095505050505050565b8180519060200120600660008761ffff1661ffff168152602001908152602001600020856040516140359190615dc9565b90815260408051918290036020908101832067ffffffffffffffff88166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906140939087908790879087908790615de5565b60405180910390a15050505050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156140f257602002820191906000526020600020905b8154815260200190600101908083116140de575b50505050509050919050565b6001600160a01b038316158061411b57506001600160a01b038216155b806141375750816001600160a01b0316836001600160a01b0316145b806141485750614148601a84613085565b806141595750614159601a83613085565b61191657604051638cd22d1960e01b815260040160405180910390fd5b6000806141a37f000000000000000000000000000000000000000000000000000000000000000084615935565b905067ffffffffffffffff81111561138e57604051633124998d60e11b815260040160405180910390fd5b60008181526001830160205260408120546142155750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561138e565b50600061138e565b6000818152600183016020526040812054801561430657600061424160018361586e565b85549091506000906142559060019061586e565b90508181146142ba57600086600001828154811061427557614275615881565b906000526020600020015490508087600001848154811061429857614298615881565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806142cb576142cb615db3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061138e565b600091505061138e565b6001600160a01b0382166143665760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401612352565b614372600083836140fe565b80600b600082825461438491906158ae565b90915550506001600160a01b0382166000818152600960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006143ea8260016158ae565b8351101561443a5760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401612352565b50016001015190565b60008061444f83614a18565b90925090506001600160a01b0382166144685761dead91505b600061447382614a75565b9050614480878483614aab565b9050826001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf836040516144c291815260200190565b60405180910390a350505050505050565b60008060008060006144e486614abe565b945094509450945094506000600860008b61ffff1661ffff168152602001908152602001600020896040516145199190615dc9565b908152604080516020928190038301902067ffffffffffffffff8b166000908152925281205460ff16915061454d85614a75565b9050816145bc5761455f8b3083614aab565b61ffff8c16600090815260086020526040908190209051919250600191614587908d90615dc9565b908152604080516020928190038301902067ffffffffffffffff8d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b614613576040516001600160a01b03871681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a150505050505050613133565b8a8a8a8a8a8a868a60008a614632578b67ffffffffffffffff16614634565b5a5b90506000806146665a609663eaffd49a60e01b8e8e8e8d8d8d8d8d604051602401612e94989796959493929190615e38565b9150915081156146bf578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884906146b1908e908e908690615eab565b60405180910390a2506146cc565b6146cc8b8b8b8b85614004565b50505050505050505050505050505050505050505050565b60006146f2888285816147a2565b6146fb866147de565b50905061470a8989898461481e565b90508060000361472d5760405163617ab12d60e11b815260040160405180910390fd5b600061473c8861367784614176565b905061474c898288888888614891565b878a6001600160a01b03168a61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8560405161478d91815260200190565b60405180910390a45098975050505050505050565b60075460ff16156147be576147b984848484614b4b565b613133565b81511561313357604051638fadcadb60e01b815260040160405180910390fd5b60008061480b7f000000000000000000000000000000000000000000000000000000000000000084615eda565b9050614817818461586e565b9150915091565b6000336001600160a01b038616811461483c5761483c8682856130a7565b6148468684613794565b5090949350505050565b6060600185856001600160a01b038916858760405160200161487796959493929190615eee565b604051602081830303815290604052905095945050505050565b61ffff8616600090815260026020526040812080546148af90615814565b80601f01602080910402602001604051908101604052809291908181526020018280546148db90615814565b80156149285780601f106148fd57610100808354040283529160200191614928565b820191906000526020600020905b81548152906001019060200180831161490b57829003601f168201915b5050505050905080516000036149515760405163b86ac1ef60e01b815260040160405180910390fd5b61495c878751614bcc565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c58031009084906149b3908b9086908c908c908c908c90600401615f5e565b6000604051808303818588803b1580156149cc57600080fd5b505af11580156149e0573d6000803e3d6000fd5b505050505050505050505050565b6000826000018281548110614a0557614a05615881565b9060005260206000200154905092915050565b60008080614a2684826143dd565b60ff16141580614a3857508251602914155b15614a5657604051637c6953f960e01b815260040160405180910390fd5b614a6183600d614c0e565b9150614a6e836021614c84565b9050915091565b600061138e7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416615908565b6000614ab78383614310565b5092915050565b600080806060816001614ad187836143dd565b60ff1614614af257604051637c6953f960e01b815260040160405180910390fd5b614afd86600d614c0e565b9350614b0a866021614c84565b9250614b17866029614cea565b9450614b24866049614c84565b9050614b406051808851614b38919061586e565b889190613d2e565b915091939590929450565b6000614b5683614d50565b61ffff808716600090815260036020908152604080832093891683529290529081205491925090614b889084906158ae565b905080600003614bab57604051631f3ec9d560e11b815260040160405180910390fd5b80821015611d6e576040516376a1e1d360e11b815260040160405180910390fd5b61ffff821660009081526004602052604081205490819003614bed57506127105b808211156119165760405163220b093360e11b815260040160405180910390fd5b6000614c1b8260146158ae565b83511015614c6b5760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401612352565b5001602001516c01000000000000000000000000900490565b6000614c918260086158ae565b83511015614ce15760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401612352565b50016008015190565b6000614cf78260206158ae565b83511015614d475760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401612352565b50016020015190565b6000602282511015614d755760405163cef80ea360e01b815260040160405180910390fd5b506022015190565b803561ffff81168114614d8f57600080fd5b919050565b60008083601f840112614da657600080fd5b50813567ffffffffffffffff811115614dbe57600080fd5b602083019150836020828501011115614dd657600080fd5b9250929050565b803567ffffffffffffffff81168114614d8f57600080fd5b60008060008060008060808789031215614e0e57600080fd5b614e1787614d7d565b9550602087013567ffffffffffffffff80821115614e3457600080fd5b614e408a838b01614d94565b9097509550859150614e5460408a01614ddd565b94506060890135915080821115614e6a57600080fd5b50614e7789828a01614d94565b979a9699509497509295939492505050565b600060208284031215614e9b57600080fd5b81356001600160e01b03198116811461157b57600080fd5b6020808252825182820181905260009190848201906040850190845b81811015614ef45783516001600160a01b031683529284019291840191600101614ecf565b50909695505050505050565b60005b83811015614f1b578181015183820152602001614f03565b50506000910152565b60008151808452614f3c816020860160208601614f00565b601f01601f19169290920160200192915050565b60208152600061157b6020830184614f24565b600060208284031215614f7557600080fd5b61157b82614d7d565b6001600160a01b0381168114611c2557600080fd5b60008060408385031215614fa657600080fd5b8235614fb181614f7e565b946020939093013593505050565b60008060408385031215614fd257600080fd5b614fb183614d7d565b600060208284031215614fed57600080fd5b813561157b81614f7e565b60008060006060848603121561500d57600080fd5b833561501881614f7e565b9250602084013561502881614f7e565b929592945050506040919091013590565b6000806040838503121561504c57600080fd5b82359150602083013561505e81614f7e565b809150509250929050565b8015158114611c2557600080fd5b60008060008060008060a0878903121561509057600080fd5b61509987614d7d565b9550602087013594506040870135935060608701356150b781615069565b9250608087013567ffffffffffffffff8111156150d357600080fd5b614e7789828a01614d94565b6000806000604084860312156150f457600080fd5b6150fd84614d7d565b9250602084013567ffffffffffffffff81111561511957600080fd5b61512586828701614d94565b9497909650939450505050565b60008060006060848603121561514757600080fd5b833561515281614f7e565b9250602084013561516281615069565b9150604084013561517281615069565b809150509250925092565b60006020828403121561518f57600080fd5b5035919050565b6000806000606084860312156151ab57600080fd5b8335925060208401359150604084013561517281615069565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615203576152036151c4565b604052919050565b600067ffffffffffffffff821115615225576152256151c4565b50601f01601f191660200190565b60008060006060848603121561524857600080fd5b61525184614d7d565b9250602084013567ffffffffffffffff81111561526d57600080fd5b8401601f8101861361527e57600080fd5b803561529161528c8261520b565b6151da565b8181528760208385010111156152a657600080fd5b816020840160208301376000602083830101528094505050506152cb60408501614ddd565b90509250925092565b60006060828403121561262b57600080fd5b600080600080600060a086880312156152fe57600080fd5b853561530981614f7e565b945061531760208701614d7d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561534157600080fd5b61534d888289016152d4565b9150509295509295909350565b60008060008060008060008060e0898b03121561537657600080fd5b883561538181614f7e565b975061538f60208a01614d7d565b96506040890135955060608901359450608089013567ffffffffffffffff808211156153ba57600080fd5b6153c68c838d01614d94565b90965094508491506153da60a08c01614ddd565b935060c08b01359150808211156153f057600080fd5b506153fd8b828c016152d4565b9150509295985092959890939650565b6000806040838503121561542057600080fd5b50508035926020909101359150565b6000806040838503121561544257600080fd5b823561544d81614f7e565b9150602083013561505e81615069565b6000806040838503121561547057600080fd5b61547983614d7d565b915061548760208401614d7d565b90509250929050565b600080600080600080600080600060e08a8c0312156154ae57600080fd5b6154b78a614d7d565b985060208a0135975060408a0135965060608a013567ffffffffffffffff808211156154e257600080fd5b6154ee8d838e01614d94565b909850965086915061550260808d01614ddd565b955060a08c0135915061551482615069565b90935060c08b0135908082111561552a57600080fd5b506155378c828d01614d94565b915080935050809150509295985092959850929598565b60008060008060006080868803121561556657600080fd5b61556f86614d7d565b945061557d60208701614d7d565b935060408601359250606086013567ffffffffffffffff8111156155a057600080fd5b6155ac88828901614d94565b969995985093965092949392505050565b602080825282518282018190526000919060409081850190868401855b8281101561561e5781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016155da565b5091979650505050505050565b6000806040838503121561563e57600080fd5b823561564981614f7e565b9150602083013561505e81614f7e565b60008060006060848603121561566e57600080fd5b61567784614d7d565b925061568560208501614d7d565b9150604084013590509250925092565b6000602082840312156156a757600080fd5b813561157b81615069565b6000806000806000806000806000806101008b8d0312156156d257600080fd5b6156db8b614d7d565b995060208b013567ffffffffffffffff808211156156f857600080fd5b6157048e838f01614d94565b909b50995089915061571860408e01614ddd565b985060608d0135975060808d0135915061573182614f7e565b90955060a08c0135945060c08c0135908082111561574e57600080fd5b5061575b8d828e01614d94565b9150809450508092505060e08b013590509295989b9194979a5092959850565b600080600080600080600060e0888a03121561579657600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080608085870312156157dd57600080fd5b6157e685614d7d565b93506157f460208601614d7d565b9250604085013561580481614f7e565b9396929550929360600135925050565b600181811c9082168061582857607f821691505b60208210810361262b57634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561138e5761138e615858565b634e487b7160e01b600052603260045260246000fd5b6000816158a6576158a6615858565b506000190190565b8082018082111561138e5761138e615858565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000612e3f6040830184866158c1565b808202811582820484141761138e5761138e615858565b634e487b7160e01b600052601260045260246000fd5b6000826159445761594461591f565b500490565b6000808335601e1984360301811261596057600080fd5b83018035915067ffffffffffffffff82111561597b57600080fd5b602001915036819003821315614dd657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b601f82111561191657600081815260208120601f850160051c810160208610156159dd5750805b601f850160051c820191505b81811015611d6e578281556001016159e9565b815167ffffffffffffffff811115615a1657615a166151c4565b615a2a81615a248454615814565b846159b6565b602080601f831160018114615a5f5760008415615a475750858301515b600019600386901b1c1916600185901b178555611d6e565b600085815260208120601f198616915b82811015615a8e57888601518255948401946001909101908401615a6f565b5085821015615aac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215615ace57600080fd5b5051919050565b600060018201615ae757615ae7615858565b5060010190565b600061ffff808816835280871660208401525084604083015260806060830152615b1c6080830184866158c1565b979650505050505050565b61ffff86168152608060208201526000615b456080830186886158c1565b67ffffffffffffffff94909416604083015250606001529392505050565b61ffff8916815260c060208201526000615b8160c08301898b6158c1565b67ffffffffffffffff8816604084015286606084015285608084015282810360a0840152615bb08185876158c1565b9b9a5050505050505050505050565b67ffffffffffffffff831115615bd757615bd76151c4565b615beb83615be58354615814565b836159b6565b6000601f841160018114615c1f5760008515615c075750838201355b600019600387901b1c1916600186901b1783556114b9565b600083815260209020601f19861690835b82811015615c505786850135825560209485019460019092019101615c30565b5086821015615c6d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600060208284031215615c9157600080fd5b815167ffffffffffffffff811115615ca857600080fd5b8201601f81018413615cb957600080fd5b8051615cc761528c8261520b565b818152856020838501011115615cdc57600080fd5b612e3f826020830160208601614f00565b61ffff85168152608060208201526000615d0a6080830186614f24565b67ffffffffffffffff851660408401528281036060840152615b1c8185614f24565b600060208284031215615d3e57600080fd5b815161157b81615069565b61ffff861681526001600160a01b038516602082015260a060408201526000615d7560a0830186614f24565b84151560608401528281036080840152611ae78185614f24565b60008060408385031215615da257600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603160045260246000fd5b60008251615ddb818460208701614f00565b9190910192915050565b61ffff8616815260a060208201526000615e0260a0830187614f24565b67ffffffffffffffff861660408401528281036060840152615e248186614f24565b90508281036080840152611ae78185614f24565b600061010061ffff8b168352806020840152615e568184018b614f24565b905067ffffffffffffffff891660408401528760608401526001600160a01b03871660808401528560a084015282810360c0840152615e958186614f24565b9150508260e08301529998505050505050505050565b606081526000615ebe6060830186614f24565b67ffffffffffffffff9490941660208301525060400152919050565b600082615ee957615ee961591f565b500690565b60ff60f81b8760f81b168152856001820152600077ffffffffffffffffffffffffffffffffffffffffffffffff19808760c01b166021840152856029840152808560c01b166049840152508251615f4c816051850160208701614f00565b91909101605101979650505050505050565b61ffff8716815260c060208201526000615f7b60c0830188614f24565b8281036040840152615f8d8188614f24565b6001600160a01b0387811660608601528616608085015283810360a08501529050615fb88185614f24565b999850505050505050505056fea26469706673582212200f0cef301cde1bbef4a05fa746af6563ca98d75a1a8bbd1aad6d9cab0a4159ae64736f6c6343000813003300000000000000000000000036bfe1f1b36cfdb4fe75cc592ff5dc6200ad3e0f0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7