| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| 0x13d895b78bf1bd1990d90f76e659526073010f772633ccf374a7dc1f6a105067 | Transfer | (pending) | 2 days ago | IN | 0 ETH | (Pending) | |||
| Swap Compact | 24511105 | 24 mins ago | IN | 0 ETH | 0.00001361 | ||||
| Swap Compact | 24511049 | 35 mins ago | IN | 0 ETH | 0.00001419 | ||||
| Swap Compact | 24510960 | 53 mins ago | IN | 0 ETH | 0.0000164 | ||||
| Swap Compact | 24510932 | 1 hr ago | IN | 0 ETH | 0.00009967 | ||||
| Swap Compact | 24510906 | 1 hr ago | IN | 0 ETH | 0.00000841 | ||||
| Swap Compact | 24510819 | 1 hr ago | IN | 0 ETH | 0.00000907 | ||||
| Swap Compact | 24510813 | 1 hr ago | IN | 0 ETH | 0.00001843 | ||||
| Swap Compact | 24510783 | 1 hr ago | IN | 0 ETH | 0.00000855 | ||||
| Swap Compact | 24510783 | 1 hr ago | IN | 0 ETH | 0.00000907 | ||||
| Swap Compact | 24510750 | 1 hr ago | IN | 0 ETH | 0.00001926 | ||||
| Swap Compact | 24510736 | 1 hr ago | IN | 0 ETH | 0.00001011 | ||||
| Swap Compact | 24510721 | 1 hr ago | IN | 0 ETH | 0.00000906 | ||||
| Swap Compact | 24510707 | 1 hr ago | IN | 0 ETH | 0.00000923 | ||||
| Swap Compact | 24510706 | 1 hr ago | IN | 0 ETH | 0.00001024 | ||||
| Swap Compact | 24510705 | 1 hr ago | IN | 0 ETH | 0.00001234 | ||||
| Swap Compact | 24510661 | 1 hr ago | IN | 0 ETH | 0.00000843 | ||||
| Swap Compact | 24510562 | 2 hrs ago | IN | 0 ETH | 0.00001053 | ||||
| Swap Compact | 24510387 | 2 hrs ago | IN | 0 ETH | 0.00000761 | ||||
| Swap Compact | 24510387 | 2 hrs ago | IN | 0 ETH | 0.00000855 | ||||
| Swap Compact | 24510365 | 2 hrs ago | IN | 0 ETH | 0.0000711 | ||||
| Swap Compact | 24510355 | 2 hrs ago | IN | 0 ETH | 0.00007782 | ||||
| Swap Compact | 24510337 | 2 hrs ago | IN | 0 ETH | 0.00053951 | ||||
| Swap Compact | 24510193 | 3 hrs ago | IN | 0 ETH | 0.00001765 | ||||
| Swap Compact | 24510092 | 3 hrs ago | IN | 0 ETH | 0.00001648 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24511127 | 20 mins ago | 0.003669 ETH | ||||
| Transfer | 24511127 | 20 mins ago | 0.003669 ETH | ||||
| Transfer | 24510675 | 1 hr ago | 0.01003334 ETH | ||||
| Transfer | 24510675 | 1 hr ago | 0.01003334 ETH | ||||
| Transfer | 24509962 | 4 hrs ago | 0.00480686 ETH | ||||
| Transfer | 24509962 | 4 hrs ago | 0.00480686 ETH | ||||
| Execute Path | 24509958 | 4 hrs ago | 0.10269024 ETH | ||||
| Swap Compact | 24509958 | 4 hrs ago | 0.10269024 ETH | ||||
| Transfer | 24509868 | 4 hrs ago | 0.10653332 ETH | ||||
| Transfer | 24509868 | 4 hrs ago | 0.10653332 ETH | ||||
| Execute Path | 24509615 | 5 hrs ago | 0.03715405 ETH | ||||
| Swap Compact | 24509615 | 5 hrs ago | 0.03715405 ETH | ||||
| Transfer | 24509551 | 5 hrs ago | 1.15673238 ETH | ||||
| Transfer | 24509551 | 5 hrs ago | 1.15673238 ETH | ||||
| Transfer | 24509395 | 6 hrs ago | 0.00018387 ETH | ||||
| Transfer | 24509395 | 6 hrs ago | 0.00018415 ETH | ||||
| Execute Path | 24509373 | 6 hrs ago | 0.03578218 ETH | ||||
| Swap Compact | 24509373 | 6 hrs ago | 0.03578218 ETH | ||||
| Transfer | 24509202 | 6 hrs ago | 0.075584 ETH | ||||
| Transfer | 24509202 | 6 hrs ago | 0.075584 ETH | ||||
| Execute Path | 24509130 | 7 hrs ago | 0.0000837 ETH | ||||
| Transfer | 24509087 | 7 hrs ago | 0.00704912 ETH | ||||
| Transfer | 24509087 | 7 hrs ago | 0.00704912 ETH | ||||
| Transfer | 24508903 | 7 hrs ago | 0.15229857 ETH | ||||
| Transfer | 24508903 | 7 hrs ago | 0.15229857 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
OdosRouterV3
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
import "../interfaces/IOdosRouterV3.sol";
import "../interfaces/IOdosExecutor.sol";
import "../interfaces/IOdosHook.sol";
import "../interfaces/ISignatureTransfer.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/access/Ownable2Step.sol";
/// @title V3 Routing contract for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
contract OdosRouterV3 is IOdosRouterV3, Ownable2Step {
using SafeERC20 for IERC20;
/// @dev The zero address is uniquely used to represent eth since it is already
/// recognized as an invalid ERC20, and due to its gas efficiency
address constant _ETH = address(0);
/// @dev Address list where addresses can be cached for use when reading from storage is cheaper
// than reading from calldata. addressListStart is the storage slot of the first dynamic array element
uint256 private constant addressListStart =
29102676481673041902632991033461445430619272659676223336789171408008386403022;
address[] public addressList;
/// @dev Address which can access and liquidate funds held in the router
address public liquidatorAddress;
// @dev constant for the fee precision
uint256 public constant FEE_DENOM = 1e18;
constructor(address owner) Ownable(owner) { }
/// @dev Must exist in order for contract to receive eth
receive() external payable { }
/// @notice Custom decoder to swap with compact calldata for efficient execution on L2s
function swapCompact()
external
payable
returns (uint256)
{
swapTokenInfo memory tokenInfo;
swapReferralInfo memory referralInfo;
address executor;
bytes calldata pathDefinition;
{
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
let result := 0
let pos := 4
// Load in the input and output token addresses
result, pos := getAddress(pos)
mstore(tokenInfo, result)
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0x60), result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(tokenInfo, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
// Load in the quoted output amount
let quoteAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, quoteAmountLength), 8), calldataload(pos))
mstore(add(tokenInfo, 0x80), outputQuote)
pos := add(pos, quoteAmountLength)
// Load the slippage tolerance and use to get the minimum output amount
{
let slippageTolerance := shr(232, calldataload(pos))
mstore(add(tokenInfo, 0xA0), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
}
pos := add(pos, 3)
// Load in the executor address
executor, pos := getAddress(pos)
// Load in the destination to send the input to - Zero denotes the executor
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(tokenInfo, 0x40), result)
// Load in the destination to send the output to - Zero denotes msg.sender
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0xC0), result)
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
}
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256 amountOut)
{
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens with a call at the end
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapWithHook(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256 amountOut)
{
amountOut = _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for initiating approval transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapApproval(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
if (tokenInfo.inputToken == _ETH) {
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = msg.value;
} else {
require(msg.value == tokenInfo.inputAmount, "Wrong msg.value");
}
}
else {
require(msg.value == 0, "Wrong msg.value");
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = IERC20(tokenInfo.inputToken).balanceOf(msg.sender);
}
IERC20(tokenInfo.inputToken).safeTransferFrom(
msg.sender,
tokenInfo.inputReceiver,
tokenInfo.inputAmount
);
}
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
returns (uint256 amountOut)
{
return _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapPermit2WithHook(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
returns (uint256 amountOut)
{
amountOut = _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for using permit2 before a swap
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
ISignatureTransfer.PermitTransferFrom(
ISignatureTransfer.TokenPermissions(
tokenInfo.inputToken,
tokenInfo.inputAmount
),
permit2.nonce,
permit2.deadline
),
ISignatureTransfer.SignatureTransferDetails(
tokenInfo.inputReceiver,
tokenInfo.inputAmount
),
msg.sender,
permit2.signature
);
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping one token for another
/// Assumes input tokens have already been sent to their destinations and
/// that msg.value is set to expected ETH input value, or 0 for ERC20 input
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
// Check for valid output specifications
require(tokenInfo.outputMin <= tokenInfo.outputQuote, "Minimum greater than quote");
require(tokenInfo.outputMin > 0, "Minimum output is zero");
require(tokenInfo.inputToken != tokenInfo.outputToken, "Arbitrage not supported");
uint256 balanceBefore = _universalBalance(tokenInfo.outputToken);
// Delegate the execution of the path to the specified Odos Executor
uint256[] memory amountsIn = new uint256[](1);
amountsIn[0] = tokenInfo.inputAmount;
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
amountOut = _universalBalance(tokenInfo.outputToken) - balanceBefore;
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
tokenInfo.outputToken,
referralInfo.feeRecipient,
amountOut * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountOut = amountOut * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
int256 slippage = int256(amountOut) - int256(tokenInfo.outputQuote);
if (slippage > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountOut = tokenInfo.outputQuote;
}
require(amountOut >= tokenInfo.outputMin, "Slippage Limit Exceeded");
// Transfer out the final output to the end user
_universalTransfer(
tokenInfo.outputToken,
tokenInfo.outputReceiver == address(0) ? msg.sender : tokenInfo.outputReceiver,
amountOut
);
emit Swap(
msg.sender,
tokenInfo.inputAmount,
tokenInfo.inputToken,
amountOut,
tokenInfo.outputToken,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Custom decoder to swapMulti with compact calldata for efficient execution on L2s
function swapMultiCompact()
external
payable
returns (uint256[] memory amountsOut)
{
address executor;
inputTokenInfo[] memory inputs;
outputTokenInfo[] memory outputs;
uint256 pos = 6;
{
uint256 numInputs;
uint256 numOutputs;
assembly {
numInputs := shr(248, calldataload(4))
numOutputs := shr(248, calldataload(5))
}
inputs = new inputTokenInfo[](numInputs);
outputs = new outputTokenInfo[](numOutputs);
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
executor, pos := getAddress(pos)
let slippageTolerance := shr(232, calldataload(pos))
pos := add(pos, 3)
let result := 0
let memPos := 0
for { let element := 0 } lt(element, numInputs) { element := add(element, 1) }
{
memPos := mload(add(inputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(memPos, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(memPos, 0x40), result)
}
for { let element := 0 } lt(element, numOutputs) { element := add(element, 1) }
{
memPos := mload(add(outputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the quoted output amount
let outputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, outputAmountLength), 8), calldataload(pos))
mstore(add(memPos, 0x20), outputQuote)
pos := add(pos, outputAmountLength)
// Set the minimum output amount as quote with slippage limit applied
mstore(add(memPos, 0x40), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
result, pos := getAddress(pos)
mstore(add(memPos, 0x60), result)
}
}
}
swapReferralInfo memory referralInfo;
bytes calldata pathDefinition;
assembly {
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens with a hook
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiWithHook(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal logic for swapping between two sets of tokens with approvals
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiApproval(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// If input amount is still 0 then that means the maximum possible input is to be used
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
IERC20(inputs[i].tokenAddress).safeTransferFrom(
msg.sender,
inputs[i].receiver,
inputs[i].amountIn
);
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2 with a hook
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiPermit2WithHook(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal function for approcing with premit2 before swapping multiple tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
ISignatureTransfer.PermitBatchTransferFrom memory permit;
ISignatureTransfer.SignatureTransferDetails[] memory transferDetails;
{
uint256 permit_length = msg.value > 0 ? inputs.length - 1 : inputs.length;
permit = ISignatureTransfer.PermitBatchTransferFrom(
new ISignatureTransfer.TokenPermissions[](permit_length),
permit2.nonce,
permit2.deadline
);
transferDetails =
new ISignatureTransfer.SignatureTransferDetails[](permit_length);
}
{
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
uint256 permit_index = expected_msg_value == 0 ? i : i - 1;
permit.permitted[permit_index].token = inputs[i].tokenAddress;
permit.permitted[permit_index].amount = inputs[i].amountIn;
transferDetails[permit_index].to = inputs[i].receiver;
transferDetails[permit_index].requestedAmount = inputs[i].amountIn;
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
}
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
permit,
transferDetails,
msg.sender,
permit2.signature
);
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping between two sets of tokens
/// assumes that inputs have already been sent to the right location and msg.value
/// is set correctly to be 0 for no native input and match native inpuit otherwise
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// Extract arrays of input amount values and tokens from the inputs struct list
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
// Check input specification validity and transfer input tokens to executor
{
for (uint256 i = 0; i < inputs.length; i++) {
amountsIn[i] = inputs[i].amountIn;
tokensIn[i] = inputs[i].tokenAddress;
for (uint256 j = 0; j < i; j++) {
require(
inputs[i].tokenAddress != inputs[j].tokenAddress,
"Duplicate source tokens"
);
}
for (uint256 j = 0; j < outputs.length; j++) {
require(
inputs[i].tokenAddress != outputs[j].tokenAddress,
"Arbitrage not supported"
);
}
}
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
require(
outputs[i].amountMin <= outputs[i].amountQuote,
"Minimum greater than quote"
);
require(
outputs[i].amountMin > 0,
"Minimum output is zero"
);
for (uint256 j = 0; j < i; j++) {
require(
outputs[i].tokenAddress != outputs[j].tokenAddress,
"Duplicate destination tokens"
);
}
balancesBefore[i] = _universalBalance(outputs[i].tokenAddress);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
int256[] memory slippage = new int256[](outputs.length);
{
amountsOut = new uint256[](outputs.length);
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(outputs[i].tokenAddress) - balancesBefore[i];
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
outputs[i].tokenAddress,
referralInfo.feeRecipient,
amountsOut[i] * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountsOut[i] = amountsOut[i] * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
slippage[i] = int256(amountsOut[i]) - int256(outputs[i].amountQuote);
if (slippage[i] > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountsOut[i] = outputs[i].amountQuote;
}
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
}
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Changes the liquidator address
/// @param account The address of new liquidator
function changeLiquidatorAddress(address account)
external
onlyOwner
{
liquidatorAddress = account;
emit LiquidatorAddressChanged(account);
}
/// @notice Push new addresses to the cached address list for when storage is cheaper than calldata
/// @param addresses list of addresses to be added to the cached address list
function writeAddressList(
address[] calldata addresses
)
external
onlyOwner
{
for (uint256 i = 0; i < addresses.length; i++) {
addressList.push(addresses[i]);
}
}
/// @notice Allows the owner to transfer funds held by the router contract
/// @param tokens List of token address to be transferred
/// @param amounts List of amounts of each token to be transferred
/// @param dest Address to which the funds should be sent
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
require(tokens.length == amounts.length, "Invalid funds transfer");
for (uint256 i = 0; i < tokens.length; i++) {
_universalTransfer(
tokens[i],
dest,
amounts[i] == 0 ? _universalBalance(tokens[i]) : amounts[i]
);
}
}
/// @notice Directly swap funds held in router
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut)
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
for (uint256 i = 0; i < inputs.length; i++) {
tokensIn[i] = inputs[i].tokenAddress;
amountsIn[i] = inputs[i].amountIn == 0 ?
_universalBalance(tokensIn[i]) : inputs[i].amountIn;
_universalTransfer(
tokensIn[i],
inputs[i].receiver,
amountsIn[i]
);
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
balancesBefore[i] = _universalBalance(tokensOut[i]);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: 0}(pathDefinition, amountsIn, msg.sender);
amountsOut = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(tokensOut[i]) - balancesBefore[i];
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
new int256[](outputs.length),
0,
0,
address(0)
);
}
/// @notice helper function to get balance of ERC20 or native coin for this contract
/// @param token address of the token to check, null for native coin
/// @return balance of specified coin or token
function _universalBalance(address token) private view returns(uint256) {
if (token == _ETH) {
return address(this).balance;
} else {
return IERC20(token).balanceOf(address(this));
}
}
/// @notice helper function to transfer ERC20 or native coin
/// @param token address of the token being transferred, null for native coin
/// @param to address to transfer to
/// @param amount to transfer
function _universalTransfer(address token, address to, uint256 amount) private {
if (token == _ETH) {
(bool success,) = payable(to).call{value: amount}("");
require(success, "ETH transfer failed");
} else {
IERC20(token).safeTransfer(to, amount);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/// @title V3 Routing contract interface for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
interface IOdosRouterV3 {
/// @dev Contains all information needed to describe the input and output for a swap
struct permit2Info {
address contractAddress;
uint256 nonce;
uint256 deadline;
bytes signature;
}
/// @dev Contains all information needed to describe the input and output for a swap
struct swapTokenInfo {
address inputToken;
uint256 inputAmount;
address inputReceiver;
address outputToken;
uint256 outputQuote;
uint256 outputMin;
address outputReceiver;
}
/// @dev Contains all information needed to describe an intput token for swapMulti
struct inputTokenInfo {
address tokenAddress;
uint256 amountIn;
address receiver;
}
/// @dev Contains all information needed to describe an output token for swapMulti
struct outputTokenInfo {
address tokenAddress;
uint256 amountQuote;
uint256 amountMin;
address receiver;
}
/// @dev Holds all information for a given referral
struct swapReferralInfo {
uint64 code;
uint64 fee;
address feeRecipient;
}
/// @dev Event emitted on changing the liquidator address
event LiquidatorAddressChanged(address indexed account);
// @dev event for swapping one token for another
event Swap(
address sender,
uint256 inputAmount,
address inputToken,
uint256 amountOut,
address outputToken,
int256 slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
/// @dev event for swapping multiple input and/or output tokens
event SwapMulti(
address sender,
uint256[] amountsIn,
address[] tokensIn,
uint256[] amountsOut,
address[] tokensOut,
int256[] slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
function swapCompact() external payable returns (uint256);
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256 amountOut);
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external returns (uint256 amountOut);
function swapMultiCompact() external payable returns (uint256[] memory amountsOut);
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function changeLiquidatorAddress(address account)
external;
function writeAddressList(
address[] calldata addresses
)
external;
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external;
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosExecutor {
function executePath (
bytes calldata bytecode,
uint256[] memory inputAmount,
address msgSender
) external payable;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosHook {
function executeOdosHook (
bytes calldata hookData,
uint256[] memory inputAmounts,
address msgSender
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/// @title SignatureTransfer
/// @notice Handles ERC20 token transfers through signature based actions
/// @dev Requires user's token approval on the Permit2 contract
interface ISignatureTransfer {
/// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount
/// @param maxAmount The maximum amount a spender can request to transfer
error InvalidAmount(uint256 maxAmount);
/// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred
/// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred
error LengthMismatch();
/// @notice Emits an event when the owner successfully invalidates an unordered nonce.
event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);
/// @notice The token and amount details for a transfer signed in the permit transfer signature
struct TokenPermissions {
// ERC20 token address
address token;
// the maximum amount that can be spent
uint256 amount;
}
/// @notice The signed permit message for a single token transfer
struct PermitTransferFrom {
TokenPermissions permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice Specifies the recipient address and amount for batched transfers.
/// @dev Recipients and amounts correspond to the index of the signed token permissions array.
/// @dev Reverts if the requested amount is greater than the permitted signed amount.
struct SignatureTransferDetails {
// recipient address
address to;
// spender requested amount
uint256 requestedAmount;
}
/// @notice Used to reconstruct the signed permit message for multiple token transfers
/// @dev Do not need to pass in spender address as it is required that it is msg.sender
/// @dev Note that a user still signs over a spender address
struct PermitBatchTransferFrom {
// the tokens and corresponding amounts permitted for a transfer
TokenPermissions[] permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection
/// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order
/// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce
/// @dev It returns a uint256 bitmap
/// @dev The index, or wordPosition is capped at type(uint248).max
function nonceBitmap(address, uint256) external view returns (uint256);
/// @notice Transfers a token using a signed permit message
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param signature The signature to verify
function permitTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers a token using a signed permit message
/// @notice Includes extra data provided by the caller to verify signature over
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param signature The signature to verify
function permitTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @notice Includes extra data provided by the caller to verify signature over
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Invalidates the bits specified in mask for the bitmap at the word position
/// @dev The wordPos is maxed at type(uint248).max
/// @param wordPos A number to index the nonceBitmap at
/// @param mask A bitmap masked against msg.sender's current bitmap at the word position
function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
import {IERC1363} from "../../../interfaces/IERC1363.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC-20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*
* NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function
* only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being
* set here.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
safeTransfer(token, to, value);
} else if (!token.transferAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target
* has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferFromAndCallRelaxed(
IERC1363 token,
address from,
address to,
uint256 value,
bytes memory data
) internal {
if (to.code.length == 0) {
safeTransferFrom(token, from, to, value);
} else if (!token.transferFromAndCall(from, to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.
* Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}
* once without retrying, and relies on the returned value to be true.
*
* Reverts if the returned value is other than `true`.
*/
function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
forceApprove(token, to, value);
} else if (!token.approveAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
// bubble errors
if iszero(success) {
let ptr := mload(0x40)
returndatacopy(ptr, 0, returndatasize())
revert(ptr, returndatasize())
}
returnSize := returndatasize()
returnValue := mload(0)
}
if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
bool success;
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
returnSize := returndatasize()
returnValue := mload(0)
}
return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.20;
import {Ownable} from "./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This extension of the {Ownable} contract includes a two-step mechanism to transfer
* ownership, where the new owner must call {acceptOwnership} in order to replace the
* old one. This can help prevent common mistakes, such as transfers of ownership to
* incorrect accounts, or to contracts that are unable to interact with the
* permission system.
*
* The initial owner is specified at deployment time in the constructor for `Ownable`. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*
* Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() public virtual {
address sender = _msgSender();
if (pendingOwner() != sender) {
revert OwnableUnauthorizedAccount(sender);
}
_transferOwnership(sender);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC165} from "./IERC165.sol";
/**
* @title IERC1363
* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
*
* Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
*/
interface IERC1363 is IERC20, IERC165 {
/*
* Note: the ERC-165 identifier for this interface is 0xb0202a11.
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
*/
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @param data Additional data with no specified format, sent in call to `spender`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../token/ERC20/IERC20.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "../utils/introspection/IERC165.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"remappings": [
"@openzeppelin/=lib/openzeppelin-contracts/",
"ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"LiquidatorAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"inputAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"inputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"int256","name":"slippage","type":"int256"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensIn","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensOut","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"slippage","type":"int256[]"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"SwapMulti","type":"event"},{"inputs":[],"name":"FEE_DENOM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"changeLiquidatorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidatorAddress","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":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapCompact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMulti","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapMultiCompact","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMultiPermit2","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiPermit2WithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiWithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapPermit2","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapPermit2WithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"}],"name":"swapRouterFunds","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapWithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"dest","type":"address"}],"name":"transferRouterFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"writeAddressList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620043e3380380620043e38339810160408190526200003491620000e5565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000077565b505062000117565b600180546001600160a01b0319169055620000928162000095565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f857600080fd5b81516001600160a01b03811681146200011057600080fd5b9392505050565b6142bc80620001276000396000f3fe6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Deployed Bytecode
0x6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
-----Decoded View---------------
Arg [0] : owner (address): 0x000636843C30b6B10d3DC9aF803E7A7956aa994C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Loading...
Loading
Loading...
Loading
OVERVIEW
Odos leverages an intent optimization algorithm to deliver superior exchange rates on single and multi-token swaps. Available via dApp and API.Net Worth in USD
$1,548,192.27
Net Worth in ETH
784.677853
Token Allocations
EURC
80.70%
UXLINK
18.25%
QUO
0.33%
Others
0.72%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 80.69% | $1.06 | 1,174,109.1536 | $1,249,241.13 | |
| BSC | 0.33% | $0.002755 | 1,857,613.2389 | $5,117.39 | |
| BSC | <0.01% | $99 | 0.4579 | $45.33 | |
| BSC | <0.01% | $106,305.36 | 0.00041942 | $44.59 | |
| BSC | <0.01% | $622.03 | 0.0707 | $43.97 | |
| BSC | <0.01% | $1,975.82 | 0.0183 | $36.14 | |
| BSC | <0.01% | $76,284 | 0.00046954 | $35.82 | |
| BSC | <0.01% | $54.76 | 0.5145 | $28.17 | |
| BSC | <0.01% | $0.07985 | 295.1094 | $23.56 | |
| BSC | <0.01% | $76,114 | 0.00030569 | $23.27 | |
| BSC | <0.01% | $254.07 | 0.0837 | $21.28 | |
| BSC | <0.01% | $622.34 | 0.0333 | $20.71 | |
| BSC | <0.01% | $8.86 | 2.3372 | $20.7 | |
| BSC | <0.01% | $1.72 | 10.6489 | $18.32 | |
| BSC | <0.01% | $0.003572 | 4,703.2821 | $16.8 | |
| BSC | <0.01% | $0.998611 | 14.5584 | $14.54 | |
| BSC | <0.01% | $0.275792 | 50.9141 | $14.04 | |
| BSC | <0.01% | $118.9 | 0.1113 | $13.23 | |
| BSC | <0.01% | $0.001588 | 8,211.8351 | $13.04 | |
| BSC | <0.01% | $832.42 | 0.0141 | $11.75 | |
| BSC | <0.01% | $8.82 | 1.2032 | $10.62 | |
| BSC | <0.01% | $1.31 | 7.9749 | $10.45 | |
| BSC | <0.01% | $0.079894 | 125.9634 | $10.06 | |
| BSC | <0.01% | $2.56 | 3.9054 | $10 | |
| BSC | <0.01% | $28.57 | 0.3436 | $9.82 | |
| BSC | <0.01% | $805.52 | 0.0121 | $9.76 | |
| BSC | <0.01% | $0.000961 | 9,587.9736 | $9.22 | |
| BSC | <0.01% | $0.025783 | 322.2656 | $8.31 | |
| BSC | <0.01% | $0.998924 | 8.0819 | $8.07 | |
| BSC | <0.01% | $0.086581 | 90.9005 | $7.87 | |
| BSC | <0.01% | $0.515387 | 13.7845 | $7.1 | |
| BSC | <0.01% | $0.142069 | 49.8996 | $7.09 | |
| BSC | <0.01% | $0.036662 | 191.1815 | $7.01 | |
| BSC | <0.01% | $67,970.56 | 0.00009856 | $6.7 | |
| BSC | <0.01% | $1 | 5.4271 | $5.43 | |
| BSC | <0.01% | $0.999689 | 5.3307 | $5.33 | |
| BSC | <0.01% | $0.999947 | 5.2467 | $5.25 | |
| BSC | <0.01% | $0.229368 | 21.4556 | $4.92 | |
| BSC | <0.01% | $8.04 | 0.6023 | $4.84 | |
| BSC | <0.01% | $0.209253 | 20.9317 | $4.38 | |
| BSC | <0.01% | $3.58 | 1.1487 | $4.12 | |
| BSC | <0.01% | $1.35 | 2.9982 | $4.05 | |
| BSC | <0.01% | $0.026675 | 151.346 | $4.04 | |
| BSC | <0.01% | $9 | 0.4096 | $3.69 | |
| BSC | <0.01% | $0.016114 | 224.3373 | $3.62 | |
| BSC | <0.01% | $0.999375 | 3.5558 | $3.55 | |
| BSC | <0.01% | $0.101263 | 34.5618 | $3.5 | |
| BSC | <0.01% | $0.000796 | 4,393.6509 | $3.5 | |
| BSC | <0.01% | $0.312936 | 11.1026 | $3.47 | |
| BSC | <0.01% | $0.088577 | 38.8972 | $3.45 | |
| BSC | <0.01% | $0.000004 | 838,200.4598 | $3.44 | |
| BSC | <0.01% | $0.651443 | 5.2225 | $3.4 | |
| BSC | <0.01% | $1 | 3.3166 | $3.32 | |
| BSC | <0.01% | $1,958.82 | 0.00168166 | $3.29 | |
| BSC | <0.01% | $2.3 | 1.4099 | $3.25 | |
| BSC | <0.01% | $689.31 | 0.00456291 | $3.15 | |
| BSC | <0.01% | $0.027057 | 109.0665 | $2.95 | |
| BSC | <0.01% | $0.016133 | 180.6831 | $2.91 | |
| BSC | <0.01% | $0.00 | 203,960,817.4681 | $0.00 | |
| BSC | <0.01% | $3.52 | 0.6728 | $2.37 | |
| BSC | <0.01% | $0.017917 | 127.6767 | $2.29 | |
| BSC | <0.01% | $1 | 2.228 | $2.23 | |
| BSC | <0.01% | $0.002812 | 777.5392 | $2.19 | |
| BSC | <0.01% | $76,043 | 0.00002871 | $2.18 | |
| BSC | <0.01% | $575.74 | 0.00346098 | $1.99 | |
| BSC | <0.01% | <$0.000001 | 36,618,382.2743 | $1.88 | |
| BSC | <0.01% | $0.0027 | 654.6372 | $1.77 | |
| BSC | <0.01% | $0.00 | 0.5854 | $0.00 | |
| BSC | <0.01% | $0.009782 | 172.2891 | $1.69 | |
| BSC | <0.01% | $0.08438 | 19.5627 | $1.65 | |
| BSC | <0.01% | $0.182052 | 8.9864 | $1.64 | |
| BSC | <0.01% | $0.025785 | 63.3678 | $1.63 | |
| BSC | <0.01% | $0.117691 | 13.05 | $1.54 | |
| BSC | <0.01% | $0.029452 | 51.9999 | $1.53 | |
| BSC | <0.01% | $0.003882 | 388.7953 | $1.51 | |
| BSC | <0.01% | $0.240863 | 5.8835 | $1.42 | |
| BSC | <0.01% | $0.013192 | 105.8446 | $1.4 | |
| BSC | <0.01% | $0.998756 | 1.3721 | $1.37 | |
| BSC | <0.01% | $0.001703 | 795.5968 | $1.35 | |
| BSC | <0.01% | $1.22 | 1.1067 | $1.35 | |
| BSC | <0.01% | $0.02282 | 57.4248 | $1.31 | |
| BSC | <0.01% | $0.00 | 114,419,855.7132 | $0.00 | |
| BSC | <0.01% | $64,889 | 0.00001907 | $1.24 | |
| BSC | <0.01% | $1.2 | 0.9327 | $1.12 | |
| BSC | <0.01% | $0.001277 | 870.4085 | $1.11 | |
| BSC | <0.01% | $3.62 | 0.3043 | $1.1 | |
| BSC | <0.01% | $0.000022 | 48,778.3122 | $1.06 | |
| BSC | <0.01% | $0.325866 | 3.0456 | $0.9924 | |
| BSC | <0.01% | $0.002574 | 383.7925 | $0.9878 | |
| BSC | <0.01% | $0.029825 | 32.7172 | $0.9757 | |
| BSC | <0.01% | $0.013593 | 70.8274 | $0.9627 | |
| BSC | <0.01% | $0.998733 | 0.963 | $0.9618 | |
| BSC | <0.01% | $0.00 | 0.0003955 | $0.00 | |
| BSC | <0.01% | $0.046738 | 20.3864 | $0.9528 | |
| BSC | <0.01% | $0.020467 | 46.17 | $0.9449 | |
| BSC | <0.01% | $1.05 | 0.7913 | $0.834 | |
| BSC | <0.01% | $0.013949 | 58.234 | $0.8123 | |
| BSC | <0.01% | $0.057953 | 13.5955 | $0.7878 | |
| BSC | <0.01% | $0.921409 | 0.7928 | $0.7304 | |
| BSC | <0.01% | $0.000001 | 1,427,580.9864 | $0.7167 | |
| BSC | <0.01% | $0.007523 | 94.2155 | $0.7087 | |
| BSC | <0.01% | $0.00555 | 127.3573 | $0.7068 | |
| BSC | <0.01% | $1.34 | 0.5202 | $0.6954 | |
| BSC | <0.01% | $0.948664 | 0.7121 | $0.6755 | |
| BSC | <0.01% | $0.00 | 1.0332 | $0.00 | |
| BSC | <0.01% | $0.031402 | 20.6913 | $0.6497 | |
| BSC | <0.01% | $0.002717 | 233.7142 | $0.6349 | |
| BSC | <0.01% | <$0.000001 | 1,570,666,039.1986 | $0.6064 | |
| BSC | <0.01% | $0.870857 | 0.6733 | $0.5863 | |
| BSC | <0.01% | $0.007709 | 71.6466 | $0.5523 | |
| BSC | <0.01% | $574.42 | 0.000956 | $0.5491 | |
| BSC | <0.01% | $0.287484 | 1.8831 | $0.5413 | |
| BSC | <0.01% | $0.024074 | 22.1284 | $0.5327 | |
| BSC | <0.01% | $0.00177 | 300.6508 | $0.532 | |
| BSC | <0.01% | $0.011653 | 45.1884 | $0.5265 | |
| BSC | <0.01% | $75,618 | 0.00000696 | $0.5263 | |
| BSC | <0.01% | $0.001359 | 382.5549 | $0.5198 | |
| BSC | <0.01% | $0.00851 | 59.297 | $0.5046 | |
| BSC | <0.01% | $0.520131 | 0.97 | $0.5045 | |
| BSC | <0.01% | $1.34 | 0.3622 | $0.4842 | |
| BSC | <0.01% | $0.00 | 924.8041 | $0.00 | |
| BSC | <0.01% | $1.3 | 0.3293 | $0.4281 | |
| BSC | <0.01% | $0.001894 | 216.1627 | $0.4093 | |
| BSC | <0.01% | $0.000663 | 609.9552 | $0.4046 | |
| BSC | <0.01% | $0.001141 | 353.3776 | $0.4032 | |
| BSC | <0.01% | $0.00003 | 12,495.7932 | $0.3702 | |
| BSC | <0.01% | $0.993855 | 0.3643 | $0.362 | |
| BSC | <0.01% | $0.049361 | 7.2255 | $0.3566 | |
| BSC | <0.01% | $0.00313 | 105.5343 | $0.3302 | |
| BSC | <0.01% | $0.00 | 6.427 | $0.00 | |
| BSC | <0.01% | $0.000012 | 22,761.6633 | $0.2754 | |
| BSC | <0.01% | $0.142069 | 1.918 | $0.2724 | |
| BSC | <0.01% | $0.008294 | 32.3458 | $0.2682 | |
| BSC | <0.01% | $0.000006 | 42,106.3369 | $0.2621 | |
| BSC | <0.01% | $0.00 | 125.4278 | $0.00 | |
| BSC | <0.01% | $47.98 | 0.00515089 | $0.2471 | |
| BSC | <0.01% | $0.264594 | 0.9268 | $0.2452 | |
| BSC | <0.01% | $0.097213 | 2.3372 | $0.2272 | |
| BSC | <0.01% | $0.020191 | 11.1501 | $0.2251 | |
| BSC | <0.01% | $0.092324 | 2.4115 | $0.2226 | |
| BSC | <0.01% | $0.010141 | 21.5881 | $0.2189 | |
| BSC | <0.01% | $0.00 | 184.6319 | $0.00 | |
| BSC | <0.01% | $1.31 | 0.1576 | $0.2064 | |
| BSC | <0.01% | $0.001808 | 112.0856 | $0.2026 | |
| BSC | <0.01% | $0.163368 | 1.24 | $0.2025 | |
| BSC | <0.01% | $0.038842 | 5.12 | $0.1988 | |
| BSC | <0.01% | $0.000002 | 109,332.7191 | $0.1946 | |
| BSC | <0.01% | $0.005143 | 36.3414 | $0.1869 | |
| BSC | <0.01% | $0.001417 | 131.7219 | $0.1866 | |
| BSC | <0.01% | $0.017777 | 10.49 | $0.1864 | |
| BSC | <0.01% | $0.000924 | 201.0426 | $0.1857 | |
| BSC | <0.01% | $0.01031 | 17.7508 | $0.183 | |
| BSC | <0.01% | $0.001106 | 155.8626 | $0.1724 | |
| BSC | <0.01% | $0.002002 | 83.9521 | $0.168 | |
| BSC | <0.01% | $0.050529 | 3.2081 | $0.1621 | |
| BSC | <0.01% | $0.037953 | 4.1929 | $0.1591 | |
| BSC | <0.01% | $3.61 | 0.0416 | $0.1503 | |
| BSC | <0.01% | $0.000704 | 209.1913 | $0.1471 | |
| BSC | <0.01% | $0.05432 | 2.6518 | $0.144 | |
| BSC | <0.01% | $0.00 | 54.8258 | $0.00 | |
| BSC | <0.01% | $0.71661 | 0.1964 | $0.1407 | |
| BSC | <0.01% | $0.001546 | 88.4752 | $0.1367 | |
| BSC | <0.01% | $1.32 | 0.1027 | $0.1355 | |
| BSC | <0.01% | $0.933192 | 0.1405 | $0.1311 | |
| BSC | <0.01% | $0.004326 | 29.8806 | $0.1292 | |
| BSC | <0.01% | $0.00 | 16.2295 | $0.00 | |
| BSC | <0.01% | $0.031369 | 3.7672 | $0.1181 | |
| BSC | <0.01% | $0.000958 | 115.293 | $0.1104 | |
| BSC | <0.01% | <$0.000001 | 5,135,973.7238 | $0.1094 | |
| BSC | <0.01% | $0.000425 | 257.2555 | $0.1093 | |
| BSC | <0.01% | $0.000901 | 121.4694 | $0.1093 | |
| BSC | <0.01% | $40.88 | 0.002645 | $0.1081 | |
| BSC | <0.01% | $2.47 | 0.043 | $0.106 | |
| BSC | <0.01% | $0.018044 | 5.8124 | $0.1048 | |
| BSC | <0.01% | $1.03 | 0.1013 | $0.1044 | |
| BSC | <0.01% | $0.094348 | 1.1044 | $0.1041 | |
| ARB | 18.25% | $0.00 | 47,460,169.4559 | $0.00 | |
| ARB | <0.01% | $1,972.77 | 0.0238 | $47.02 | |
| ARB | <0.01% | $2,767.96 | 0.0155 | $43.02 | |
| ARB | <0.01% | $0.99973 | 36.9982 | $36.99 | |
| ARB | <0.01% | $0.023897 | 1,436.4873 | $34.33 | |
| ARB | <0.01% | $0.096052 | 357.3105 | $34.32 | |
| ARB | <0.01% | $0.998438 | 33.1503 | $33.1 | |
| ARB | <0.01% | $0.00 | 0.0126 | $0.00 | |
| ARB | <0.01% | $2.09 | 12.4002 | $25.92 | |
| ARB | <0.01% | $0.520132 | 45.5619 | $23.7 | |
| ARB | <0.01% | $0.967893 | 23.7459 | $22.98 | |
| ARB | <0.01% | $3.58 | 6.1593 | $22.05 | |
| ARB | <0.01% | $6.47 | 3.3765 | $21.85 | |
| ARB | <0.01% | $0.23417 | 92.7606 | $21.72 | |
| ARB | <0.01% | $1,975.39 | 0.0109 | $21.53 | |
| ARB | <0.01% | $0.027218 | 786.0354 | $21.39 | |
| ARB | <0.01% | $8.85 | 2.4101 | $21.33 | |
| ARB | <0.01% | $5,027.48 | 0.003915 | $19.68 | |
| ARB | <0.01% | $76,177 | 0.00023233 | $17.7 | |
| ARB | <0.01% | $2,317.13 | 0.00730983 | $16.94 | |
| ARB | <0.01% | $1.2 | 12.1699 | $14.6 | |
| ARB | <0.01% | $0.476592 | 29.5076 | $14.06 | |
| ARB | <0.01% | $0.994846 | 14.103 | $14.03 | |
| ARB | <0.01% | $78.36 | 0.1662 | $13.03 | |
| ARB | <0.01% | $103.18 | 0.1225 | $12.64 | |
| ARB | <0.01% | $0.00 | 0.00015979 | $0.00 | |
| ARB | <0.01% | $0.31252 | 34.595 | $10.81 | |
| ARB | <0.01% | $2,624.38 | 0.00405934 | $10.65 | |
| ARB | <0.01% | $1.22 | 8.6379 | $10.54 | |
| ARB | <0.01% | $2,258.88 | 0.00457369 | $10.33 | |
| ARB | <0.01% | $8.11 | 1.1269 | $9.14 | |
| ARB | <0.01% | $0.999815 | 8.275 | $8.27 | |
| ARB | <0.01% | $0.999608 | 8.0501 | $8.05 | |
| ARB | <0.01% | $0.148352 | 45.3433 | $6.73 | |
| ARB | <0.01% | $76,390 | 0.00008797 | $6.72 | |
| ARB | <0.01% | $0.452447 | 12.2115 | $5.53 | |
| ARB | <0.01% | $2,314.06 | 0.00224445 | $5.19 | |
| ARB | <0.01% | $0.000004 | 1,207,505.404 | $5.02 | |
| ARB | <0.01% | $0.320796 | 14.014 | $4.5 | |
| ARB | <0.01% | $1 | 4.4005 | $4.41 | |
| ARB | <0.01% | $2.48 | 1.7774 | $4.41 | |
| ARB | <0.01% | $77,257 | 0.00005483 | $4.24 | |
| ARB | <0.01% | $0.005427 | 678.7159 | $3.68 | |
| ARB | <0.01% | $1.34 | 2.7194 | $3.64 | |
| ARB | <0.01% | $1.31 | 2.7439 | $3.59 | |
| ARB | <0.01% | $0.052689 | 58.4924 | $3.08 | |
| ARB | <0.01% | <$0.000001 | 128,057,792.6734 | $3.07 | |
| ARB | <0.01% | $0.013313 | 229.9271 | $3.06 | |
| ARB | <0.01% | $0.999562 | 3.0464 | $3.05 | |
| ARB | <0.01% | $0.08772 | 34.3986 | $3.02 | |
| ARB | <0.01% | $1.18 | 2.4621 | $2.91 | |
| ARB | <0.01% | $0.998748 | 2.6403 | $2.64 | |
| ARB | <0.01% | $0.999011 | 2.3813 | $2.38 | |
| ARB | <0.01% | $0.206448 | 11.3529 | $2.34 | |
| ARB | <0.01% | $0.915998 | 2.2041 | $2.02 | |
| ARB | <0.01% | $0.007147 | 273.1048 | $1.95 | |
| ARB | <0.01% | $76,284 | 0.0000254 | $1.94 | |
| ARB | <0.01% | $0.149329 | 12.8312 | $1.92 | |
| ARB | <0.01% | $0.009574 | 185.4972 | $1.78 | |
| ARB | <0.01% | $0.002035 | 850.8412 | $1.73 | |
| ARB | <0.01% | $1.09 | 1.5241 | $1.66 | |
| ARB | <0.01% | $0.002701 | 607.2555 | $1.64 | |
| ARB | <0.01% | $121.88 | 0.0128 | $1.56 | |
| ARB | <0.01% | $0.001274 | 1,187.6339 | $1.51 | |
| ARB | <0.01% | $0.000185 | 7,295.8415 | $1.35 | |
| ARB | <0.01% | $0.002812 | 473.0623 | $1.33 | |
| ARB | <0.01% | $1.28 | 0.9094 | $1.16 | |
| ARB | <0.01% | $0.000004 | 301,114.28 | $1.15 | |
| ARB | <0.01% | $0.067638 | 13.6669 | $0.9244 | |
| ARB | <0.01% | $0.993956 | 0.9093 | $0.9038 | |
| ARB | <0.01% | $0.997961 | 0.8791 | $0.8773 | |
| ARB | <0.01% | $0.000271 | 2,914.516 | $0.7907 | |
| ARB | <0.01% | $70,983 | 0.00001108 | $0.7865 | |
| ARB | <0.01% | $0.999951 | 0.786 | $0.7859 | |
| ARB | <0.01% | $0.009299 | 83.4382 | $0.7759 | |
| ARB | <0.01% | $0.10751 | 7.079 | $0.761 | |
| ARB | <0.01% | $0.003306 | 216.1616 | $0.7145 | |
| ARB | <0.01% | $0.01131 | 56.8156 | $0.6425 | |
| ARB | <0.01% | $0.009796 | 62.9205 | $0.6163 | |
| ARB | <0.01% | $2,273.11 | 0.00026574 | $0.604 | |
| ARB | <0.01% | $2,533.28 | 0.0002375 | $0.6016 | |
| ARB | <0.01% | $0.992463 | 0.5982 | $0.5936 | |
| ARB | <0.01% | $0.204443 | 2.8474 | $0.5821 | |
| ARB | <0.01% | $0.000189 | 2,900.5289 | $0.5485 | |
| ARB | <0.01% | $2.32 | 0.2338 | $0.5424 | |
| ARB | <0.01% | $0.831074 | 0.6486 | $0.539 | |
| ARB | <0.01% | $1.01 | 0.4811 | $0.4834 | |
| ARB | <0.01% | $0.000454 | 1,010.465 | $0.4584 | |
| ARB | <0.01% | $0.046488 | 9.7598 | $0.4537 | |
| ARB | <0.01% | $0.003737 | 121.0655 | $0.4524 | |
| ARB | <0.01% | $0.106845 | 4.1084 | $0.4389 | |
| ARB | <0.01% | $0.00 | 10.5666 | $0.00 | |
| ARB | <0.01% | $0.000036 | 10,746.9911 | $0.3819 | |
| ARB | <0.01% | $0.056119 | 5.9269 | $0.3326 | |
| ARB | <0.01% | $0.99991 | 0.3257 | $0.3256 | |
| ARB | <0.01% | $0.003724 | 82.2296 | $0.3062 | |
| ARB | <0.01% | $0.019156 | 13.5557 | $0.2596 | |
| ARB | <0.01% | $0.99981 | 0.2581 | $0.258 | |
| ARB | <0.01% | $76,732 | 0.00000331 | $0.2539 | |
| ARB | <0.01% | $0.001417 | 173.8322 | $0.2462 | |
| ARB | <0.01% | $0.001974 | 117.1997 | $0.2313 | |
| ARB | <0.01% | $0.995475 | 0.2304 | $0.2293 | |
| ARB | <0.01% | $118.82 | 0.00155571 | $0.1848 | |
| ARB | <0.01% | $0.946432 | 0.188 | $0.1779 | |
| ARB | <0.01% | $0.005568 | 29.4942 | $0.1642 | |
| ARB | <0.01% | $0.000006 | 23,728.5594 | $0.1459 | |
| ARB | <0.01% | $0.016114 | 8.6775 | $0.1398 | |
| ARB | <0.01% | $0.04059 | 3.2491 | $0.1318 | |
| ARB | <0.01% | $4,582.16 | 0.00002757 | $0.1263 | |
| ARB | <0.01% | $0.210646 | 0.5881 | $0.1238 | |
| ARB | <0.01% | $0.141954 | 0.8304 | $0.1178 | |
| ARB | <0.01% | $0.999206 | 0.1089 | $0.1088 | |
| ETH | 0.02% | $0.04476 | 8,174.0545 | $365.87 | |
| ETH | <0.01% | $0.079389 | 1,727.6852 | $137.16 | |
| ETH | <0.01% | $1,972.82 | 0.0473 | $93.4 | |
| ETH | <0.01% | $194.74 | 0.4592 | $89.42 | |
| ETH | <0.01% | $2,777.07 | 0.0317 | $87.97 | |
| ETH | <0.01% | $0.004764 | 17,811.6034 | $84.85 | |
| ETH | <0.01% | $1.18 | 71.7863 | $84.71 | |
| ETH | <0.01% | $5,134.67 | 0.0164 | $84.04 | |
| ETH | <0.01% | $1.07 | 77.2571 | $82.28 | |
| ETH | <0.01% | $1.2 | 67.8129 | $81.38 | |
| ETH | <0.01% | $1.88 | 39.1394 | $73.61 | |
| ETH | <0.01% | $1.18 | 62.2952 | $73.51 | |
| ETH | <0.01% | $0.288226 | 243.4726 | $70.18 | |
| ETH | <0.01% | $0.997696 | 63.5799 | $63.43 | |
| ETH | <0.01% | $1.29 | 47.7606 | $61.61 | |
| ETH | <0.01% | $5,096.69 | 0.0116 | $59.31 | |
| ETH | <0.01% | $0.999653 | 55.472 | $55.45 | |
| ETH | <0.01% | $0.253034 | 217.1276 | $54.94 | |
| ETH | <0.01% | $76,149 | 0.00068401 | $52.09 | |
| ETH | <0.01% | $1,972.82 | 0.0255 | $50.35 | |
| ETH | <0.01% | $0.999911 | 49.7481 | $49.74 | |
| ETH | <0.01% | $0.999375 | 47.5312 | $47.5 | |
| ETH | <0.01% | $1,975.39 | 0.024 | $47.44 | |
| ETH | <0.01% | $1.22 | 38.7018 | $47.22 | |
| ETH | <0.01% | $71,099 | 0.00065489 | $46.56 | |
| ETH | <0.01% | $0.13757 | 327.4594 | $45.05 | |
| ETH | <0.01% | $0.09735 | 439.5911 | $42.79 | |
| ETH | <0.01% | $76,331 | 0.00055559 | $42.41 | |
| ETH | <0.01% | $0.629957 | 67.2673 | $42.38 | |
| ETH | <0.01% | $99.44 | 0.4168 | $41.45 | |
| ETH | <0.01% | $0.667369 | 60.8 | $40.58 | |
| ETH | <0.01% | $77.02 | 0.5095 | $39.24 | |
| ETH | <0.01% | $2,196.25 | 0.0174 | $38.12 | |
| ETH | <0.01% | $76,149 | 0.00049911 | $38.01 | |
| ETH | <0.01% | $0.492241 | 76.6414 | $37.73 | |
| ETH | <0.01% | $2,624.38 | 0.0141 | $37.06 | |
| ETH | <0.01% | $0.635057 | 57.1721 | $36.31 | |
| ETH | <0.01% | <$0.000001 | 802,018,409.5449 | $35.12 | |
| ETH | <0.01% | $1.01 | 34.8474 | $35.03 | |
| ETH | <0.01% | $0.019879 | 1,720.9952 | $34.21 | |
| ETH | <0.01% | $1.18 | 27.3518 | $32.22 | |
| ETH | <0.01% | $1.18 | 27.3518 | $32.22 | |
| ETH | <0.01% | $1.22 | 25.5126 | $31.13 | |
| ETH | <0.01% | $2.1 | 14.797 | $31.04 | |
| ETH | <0.01% | $0.261393 | 117.0368 | $30.59 | |
| ETH | <0.01% | $0.951451 | 31.5826 | $30.05 | |
| ETH | <0.01% | $1.16 | 25.6345 | $29.74 | |
| ETH | <0.01% | $0.995521 | 29.8581 | $29.72 | |
| ETH | <0.01% | $0.108732 | 271.9367 | $29.57 | |
| ETH | <0.01% | $8.32 | 3.4911 | $29.05 | |
| ETH | <0.01% | $2,323.98 | 0.0125 | $28.94 | |
| ETH | <0.01% | $0.854925 | 33.7981 | $28.89 | |
| ETH | <0.01% | $0.998154 | 28.4159 | $28.36 | |
| ETH | <0.01% | $0.663272 | 42.4872 | $28.18 | |
| ETH | <0.01% | $0.110897 | 250.6499 | $27.8 | |
| ETH | <0.01% | $3.04 | 8.9604 | $27.24 | |
| ETH | <0.01% | $0.006503 | 4,090.8736 | $26.6 | |
| ETH | <0.01% | $0.664646 | 38.9125 | $25.86 | |
| ETH | <0.01% | $1.04 | 24.6154 | $25.62 | |
| ETH | <0.01% | $1 | 25.3383 | $25.39 | |
| ETH | <0.01% | $0.920606 | 27.3473 | $25.18 | |
| ETH | <0.01% | $76,298 | 0.00031733 | $24.21 | |
| ETH | <0.01% | $0.005183 | 4,488.1234 | $23.26 | |
| ETH | <0.01% | $0.191506 | 119.4404 | $22.87 | |
| ETH | <0.01% | $0.422981 | 52.8014 | $22.33 | |
| ETH | <0.01% | $2,257.37 | 0.00963624 | $21.75 | |
| ETH | <0.01% | $0.006037 | 3,515.0429 | $21.22 | |
| ETH | <0.01% | $0.99981 | 20.2728 | $20.27 | |
| ETH | <0.01% | $0.000004 | 4,901,639.4409 | $20.1 | |
| ETH | <0.01% | $0.213911 | 92.284 | $19.74 | |
| ETH | <0.01% | $0.103427 | 185.5616 | $19.19 | |
| ETH | <0.01% | $1.18 | 16.0262 | $18.91 | |
| ETH | <0.01% | $0.999706 | 18.7882 | $18.78 | |
| ETH | <0.01% | $0.275739 | 65.3223 | $18.01 | |
| ETH | <0.01% | <$0.000001 | 95,507,108.571 | $17.9 | |
| ETH | <0.01% | $1 | 17.76 | $17.76 | |
| ETH | <0.01% | $3.63 | 4.6808 | $16.98 | |
| ETH | <0.01% | $2,095.43 | 0.00765311 | $16.04 | |
| ETH | <0.01% | $77,257 | 0.00020691 | $15.99 | |
| ETH | <0.01% | $1.13 | 13.6705 | $15.45 | |
| ETH | <0.01% | $1.63 | 9.2454 | $15.07 | |
| ETH | <0.01% | $0.296589 | 50.5075 | $14.98 | |
| ETH | <0.01% | $0.236803 | 62.0964 | $14.7 | |
| ETH | <0.01% | $0.713512 | 20.3859 | $14.55 | |
| ETH | <0.01% | $1 | 14.3858 | $14.44 | |
| ETH | <0.01% | $16.17 | 0.8912 | $14.41 | |
| ETH | <0.01% | $0.6682 | 21.3566 | $14.27 | |
| ETH | <0.01% | $0.154815 | 91.9348 | $14.23 | |
| ETH | <0.01% | $1.72 | 8.2714 | $14.23 | |
| ETH | <0.01% | $1.58 | 8.9352 | $14.12 | |
| ETH | <0.01% | $1 | 14.0979 | $14.1 | |
| ETH | <0.01% | $0.083643 | 168.0155 | $14.05 | |
| ETH | <0.01% | $1 | 13.504 | $13.5 | |
| ETH | <0.01% | $0.206755 | 64.5262 | $13.34 | |
| ETH | <0.01% | $0.0513 | 259.1261 | $13.29 | |
| ETH | <0.01% | $8.55 | 1.5516 | $13.27 | |
| ETH | <0.01% | $0.027001 | 491.1164 | $13.26 | |
| ETH | <0.01% | $17.99 | 0.6799 | $12.23 | |
| ETH | <0.01% | $5,077.23 | 0.00233138 | $11.84 | |
| ETH | <0.01% | $121.86 | 0.095 | $11.58 | |
| ETH | <0.01% | $0.561804 | 19.4074 | $10.9 | |
| ETH | <0.01% | $0.184366 | 53.4471 | $9.85 | |
| ETH | <0.01% | $0.117691 | 81.8356 | $9.63 | |
| ETH | <0.01% | $0.000461 | 20,854.8583 | $9.62 | |
| ETH | <0.01% | $3.25 | 2.924 | $9.5 | |
| ETH | <0.01% | $0.3125 | 30.2252 | $9.45 | |
| ETH | <0.01% | $1.05 | 8.4732 | $8.9 | |
| ETH | <0.01% | $3.56 | 2.4057 | $8.56 | |
| ETH | <0.01% | $2,317.13 | 0.00368863 | $8.55 | |
| ETH | <0.01% | $0.003461 | 2,451.0278 | $8.48 | |
| ETH | <0.01% | $0.103585 | 79.8624 | $8.27 | |
| ETH | <0.01% | $1.15 | 7.1921 | $8.27 | |
| ETH | <0.01% | $0.064592 | 123.1987 | $7.96 | |
| ETH | <0.01% | $2,415.91 | 0.00320055 | $7.73 | |
| ETH | <0.01% | $0.056082 | 136.2726 | $7.64 | |
| ETH | <0.01% | $0.234166 | 32.0071 | $7.49 | |
| ETH | <0.01% | $8.12 | 0.9155 | $7.43 | |
| ETH | <0.01% | $0.000004 | 1,919,126.5286 | $7.38 | |
| ETH | <0.01% | $0.001725 | 4,241.4756 | $7.32 | |
| ETH | <0.01% | $2,407.09 | 0.00296839 | $7.15 | |
| ETH | <0.01% | $0.004824 | 1,453.6099 | $7.01 | |
| ETH | <0.01% | $0.107566 | 64.7974 | $6.97 | |
| ETH | <0.01% | $2,452.98 | 0.00280956 | $6.89 | |
| ETH | <0.01% | $75,557 | 0.00009045 | $6.83 | |
| ETH | <0.01% | $0.139728 | 48.3547 | $6.76 | |
| ETH | <0.01% | <$0.000001 | 917,198,114.5361 | $6.72 | |
| ETH | <0.01% | $0.320432 | 20.9696 | $6.72 | |
| ETH | <0.01% | $0.998733 | 6.696 | $6.69 | |
| ETH | <0.01% | $0.021883 | 304.2603 | $6.66 | |
| ETH | <0.01% | $0.148367 | 44.7326 | $6.64 | |
| ETH | <0.01% | $0.000006 | 1,057,582.7049 | $6.59 | |
| ETH | <0.01% | $0.008582 | 739.4965 | $6.35 | |
| ETH | <0.01% | $0.149285 | 40.8311 | $6.1 | |
| ETH | <0.01% | $0.117187 | 51.7356 | $6.06 | |
| ETH | <0.01% | $0.041493 | 141.2937 | $5.86 | |
| ETH | <0.01% | $0.999708 | 5.8532 | $5.85 | |
| ETH | <0.01% | $0.004276 | 1,309.0016 | $5.6 | |
| ETH | <0.01% | $0.013817 | 391.6236 | $5.41 | |
| ETH | <0.01% | $0.017495 | 305.1312 | $5.34 | |
| ETH | <0.01% | $0.076078 | 69.674 | $5.3 | |
| ETH | <0.01% | $0.007794 | 638.3772 | $4.98 | |
| ETH | <0.01% | $0.005027 | 979.638 | $4.92 | |
| ETH | <0.01% | $0.002812 | 1,733.649 | $4.88 | |
| ETH | <0.01% | $0.130996 | 37.1159 | $4.86 | |
| ETH | <0.01% | $0.009479 | 503.1247 | $4.77 | |
| ETH | <0.01% | $0.00503 | 928.1048 | $4.67 | |
| ETH | <0.01% | $0.999405 | 4.6355 | $4.63 | |
| ETH | <0.01% | $0.990986 | 4.6679 | $4.63 | |
| ETH | <0.01% | $0.000032 | 143,727.5983 | $4.6 | |
| ETH | <0.01% | $0.007146 | 623.3457 | $4.45 | |
| ETH | <0.01% | $78.28 | 0.0563 | $4.41 | |
| ETH | <0.01% | $0.005146 | 848.0082 | $4.36 | |
| ETH | <0.01% | $0.999269 | 4.35 | $4.35 | |
| ETH | <0.01% | $0.147029 | 29.2005 | $4.29 | |
| ETH | <0.01% | $0.993855 | 4.1648 | $4.14 | |
| ETH | <0.01% | $0.13015 | 31.6264 | $4.12 | |
| ETH | <0.01% | $0.340505 | 12.0809 | $4.11 | |
| ETH | <0.01% | $0.040588 | 101.3016 | $4.11 | |
| ETH | <0.01% | $0.009772 | 420.2039 | $4.11 | |
| ETH | <0.01% | $0.119855 | 33.1758 | $3.98 | |
| ETH | <0.01% | $0.007034 | 560.9112 | $3.95 | |
| ETH | <0.01% | $0.461665 | 8.4925 | $3.92 | |
| ETH | <0.01% | $0.00071 | 5,441.3008 | $3.86 | |
| ETH | <0.01% | $0.011165 | 341.1703 | $3.81 | |
| ETH | <0.01% | $0.020907 | 181.7795 | $3.8 | |
| ETH | <0.01% | $0.010978 | 345.9702 | $3.8 | |
| ETH | <0.01% | $0.000004 | 990,128.092 | $3.77 | |
| ETH | <0.01% | $2.21 | 1.6992 | $3.76 | |
| ETH | <0.01% | $0.125758 | 29.9054 | $3.76 | |
| ETH | <0.01% | $0.950863 | 3.9105 | $3.72 | |
| ETH | <0.01% | $0.000071 | 52,052.719 | $3.7 | |
| ETH | <0.01% | $0.00196 | 1,843.0814 | $3.61 | |
| ETH | <0.01% | $0.107371 | 33.1263 | $3.56 | |
| ETH | <0.01% | $0.014676 | 224.001 | $3.29 | |
| ETH | <0.01% | $0.003507 | 937.1587 | $3.29 | |
| ETH | <0.01% | $0.002786 | 1,174.53 | $3.27 | |
| ETH | <0.01% | $0.999837 | 3.1837 | $3.18 | |
| ETH | <0.01% | $0.079557 | 38.9336 | $3.1 | |
| ETH | <0.01% | $0.557959 | 5.5214 | $3.08 | |
| ETH | <0.01% | $9.61 | 0.3194 | $3.07 | |
| ETH | <0.01% | $0.999248 | 3.0195 | $3.02 | |
| ETH | <0.01% | $0.999859 | 2.9982 | $3 | |
| ETH | <0.01% | $0.000183 | 16,095.0813 | $2.94 | |
| ETH | <0.01% | $13.97 | 0.2074 | $2.9 | |
| ETH | <0.01% | $0.063913 | 45.0896 | $2.88 | |
| ETH | <0.01% | $2,767.01 | 0.00103991 | $2.88 | |
| ETH | <0.01% | $1.5 | 1.8907 | $2.84 | |
| ETH | <0.01% | $0.020458 | 137.1437 | $2.81 | |
| ETH | <0.01% | $17.24 | 0.1605 | $2.77 | |
| ETH | <0.01% | $0.062435 | 44.2868 | $2.77 | |
| ETH | <0.01% | $0.000007 | 408,506.3975 | $2.73 | |
| ETH | <0.01% | $1.43 | 1.8987 | $2.72 | |
| ETH | <0.01% | $0.001201 | 2,255.5439 | $2.71 | |
| ETH | <0.01% | $1 | 2.6447 | $2.65 | |
| ETH | <0.01% | $0.023621 | 111.379 | $2.63 | |
| ETH | <0.01% | $0.920606 | 2.8487 | $2.62 | |
| ETH | <0.01% | $2,265.17 | 0.00114333 | $2.59 | |
| ETH | <0.01% | $0.004609 | 554.867 | $2.56 | |
| ETH | <0.01% | $0.003306 | 756.076 | $2.5 | |
| ETH | <0.01% | <$0.000001 | 95,634,444.5462 | $2.49 | |
| ETH | <0.01% | $2,533.88 | 0.00097836 | $2.48 | |
| ETH | <0.01% | $0.325866 | 7.3792 | $2.4 | |
| ETH | <0.01% | $0.010428 | 227.4826 | $2.37 | |
| ETH | <0.01% | $0.015644 | 149.2017 | $2.33 | |
| ETH | <0.01% | $0.007612 | 294.9608 | $2.25 | |
| ETH | <0.01% | $1,961.8 | 0.00114122 | $2.24 | |
| ETH | <0.01% | $0.001339 | 1,666.6077 | $2.23 | |
| ETH | <0.01% | $0.044174 | 49.8527 | $2.2 | |
| ETH | <0.01% | $0.381974 | 5.74 | $2.19 | |
| ETH | <0.01% | $0.773852 | 2.818 | $2.18 | |
| ETH | <0.01% | $0.014174 | 153.5049 | $2.18 | |
| ETH | <0.01% | $0.999689 | 2.1602 | $2.16 | |
| ETH | <0.01% | $0.145421 | 14.6222 | $2.13 | |
| ETH | <0.01% | $76,212 | 0.00002789 | $2.13 | |
| ETH | <0.01% | $0.009763 | 217.592 | $2.12 | |
| ETH | <0.01% | $0.162127 | 13.0199 | $2.11 | |
| ETH | <0.01% | <$0.000001 | 112,268,322.9201 | $2.08 | |
| ETH | <0.01% | $118.7 | 0.0174 | $2.07 | |
| ETH | <0.01% | $0.127444 | 16.0436 | $2.04 | |
| ETH | <0.01% | $0.09212 | 22.1841 | $2.04 | |
| ETH | <0.01% | $0.142709 | 14.0685 | $2.01 | |
| ETH | <0.01% | $0.001076 | 1,830.6964 | $1.97 | |
| ETH | <0.01% | $121.63 | 0.0159 | $1.94 | |
| ETH | <0.01% | $0.00811 | 232.9925 | $1.89 | |
| ETH | <0.01% | $0.009849 | 189.1335 | $1.86 | |
| ETH | <0.01% | $0.003726 | 492.1978 | $1.83 | |
| ETH | <0.01% | $0.033391 | 54.8856 | $1.83 | |
| ETH | <0.01% | $0.243328 | 7.4681 | $1.82 | |
| ETH | <0.01% | $0.001678 | 1,074.4211 | $1.8 | |
| ETH | <0.01% | $1.67 | 1.0573 | $1.77 | |
| ETH | <0.01% | $0.080566 | 21.3454 | $1.72 | |
| ETH | <0.01% | $1.03 | 1.6279 | $1.67 | |
| ETH | <0.01% | $8.51 | 0.1936 | $1.65 | |
| ETH | <0.01% | $0.014253 | 114.1517 | $1.63 | |
| ETH | <0.01% | $0.092324 | 17.5572 | $1.62 | |
| ETH | <0.01% | $0.016266 | 99.0351 | $1.61 | |
| ETH | <0.01% | $0.03556 | 45.0755 | $1.6 | |
| ETH | <0.01% | $0.000006 | 251,046.3546 | $1.54 | |
| ETH | <0.01% | $0.000477 | 3,172.2193 | $1.51 | |
| ETH | <0.01% | $0.146159 | 10.2822 | $1.5 | |
| ETH | <0.01% | $0.996691 | 1.4985 | $1.49 | |
| ETH | <0.01% | $0.053387 | 27.4309 | $1.46 | |
| ETH | <0.01% | $0.032691 | 44.2767 | $1.45 | |
| ETH | <0.01% | <$0.000001 | 22,734,743.4052 | $1.45 | |
| ETH | <0.01% | $0.003049 | 470.3709 | $1.43 | |
| ETH | <0.01% | $0.06639 | 21.0567 | $1.4 | |
| ETH | <0.01% | $0.038699 | 35.9681 | $1.39 | |
| ETH | <0.01% | $0.002566 | 538.5414 | $1.38 | |
| ETH | <0.01% | $1.32 | 1.0411 | $1.37 | |
| ETH | <0.01% | $2,639.96 | 0.00051996 | $1.37 | |
| ETH | <0.01% | $0.004397 | 306.4122 | $1.35 | |
| ETH | <0.01% | $0.025583 | 52.2478 | $1.34 | |
| ETH | <0.01% | $0.00383 | 346.4246 | $1.33 | |
| ETH | <0.01% | $0.276152 | 4.786 | $1.32 | |
| ETH | <0.01% | $39.77 | 0.033 | $1.31 | |
| ETH | <0.01% | $1.04 | 1.2669 | $1.31 | |
| ETH | <0.01% | $0.007207 | 176.3134 | $1.27 | |
| ETH | <0.01% | $1.52 | 0.82 | $1.25 | |
| ETH | <0.01% | $0.382891 | 3.1402 | $1.2 | |
| ETH | <0.01% | $0.000977 | 1,230.0789 | $1.2 | |
| ETH | <0.01% | $0.000086 | 13,219.6394 | $1.13 | |
| ETH | <0.01% | $0.001706 | 658.3098 | $1.12 | |
| ETH | <0.01% | $0.004325 | 259.191 | $1.12 | |
| ETH | <0.01% | $0.076048 | 14.6036 | $1.11 | |
| ETH | <0.01% | $0.000044 | 25,402.5798 | $1.11 | |
| ETH | <0.01% | $0.048894 | 22.6007 | $1.11 | |
| ETH | <0.01% | $0.01697 | 61.812 | $1.05 | |
| ETH | <0.01% | $0.000622 | 1,670.9196 | $1.04 | |
| ETH | <0.01% | $0.004272 | 242.2941 | $1.03 | |
| ETH | <0.01% | $0.02689 | 38.1085 | $1.02 | |
| ETH | <0.01% | $0.209843 | 4.8701 | $1.02 | |
| ETH | <0.01% | $0.006551 | 152.9569 | $1 | |
| ETH | <0.01% | $0.076621 | 12.8066 | $0.9812 | |
| ETH | <0.01% | $0.003239 | 302.5263 | $0.98 | |
| ETH | <0.01% | $0.001575 | 617.6927 | $0.9726 | |
| ETH | <0.01% | $0.012807 | 75.7452 | $0.97 | |
| ETH | <0.01% | $0.005293 | 181.9907 | $0.9632 | |
| ETH | <0.01% | $0.00241 | 395.2896 | $0.9526 | |
| ETH | <0.01% | $0.030847 | 30.821 | $0.9507 | |
| ETH | <0.01% | $2.28 | 0.4141 | $0.9442 | |
| ETH | <0.01% | $0.152572 | 6.1009 | $0.9308 | |
| ETH | <0.01% | $0.000061 | 15,234.9452 | $0.9225 | |
| ETH | <0.01% | $7.97 | 0.1157 | $0.9218 | |
| ETH | <0.01% | $0.892598 | 1.03 | $0.9193 | |
| ETH | <0.01% | $0.050116 | 18.04 | $0.904 | |
| ETH | <0.01% | $4,551.92 | 0.0001977 | $0.8998 | |
| ETH | <0.01% | $0.000009 | 102,218.9482 | $0.8862 | |
| ETH | <0.01% | $0.009182 | 95.9954 | $0.8814 | |
| ETH | <0.01% | $0.000952 | 916.6518 | $0.8729 | |
| ETH | <0.01% | $0.016687 | 52.2465 | $0.8718 | |
| ETH | <0.01% | $0.006341 | 135.8493 | $0.8613 | |
| ETH | <0.01% | $0.000004 | 229,127.1693 | $0.8454 | |
| ETH | <0.01% | $0.006413 | 131.23 | $0.8416 | |
| ETH | <0.01% | $0.016672 | 50.1513 | $0.8361 | |
| ETH | <0.01% | $0.000241 | 3,442.5568 | $0.8308 | |
| ETH | <0.01% | $0.007607 | 108.9112 | $0.8284 | |
| ETH | <0.01% | $0.003047 | 269.0939 | $0.8199 | |
| ETH | <0.01% | $2,453.13 | 0.0003279 | $0.8043 | |
| ETH | <0.01% | $0.007607 | 101.7026 | $0.7736 | |
| ETH | <0.01% | $0.020379 | 37.8401 | $0.7711 | |
| ETH | <0.01% | $0.996638 | 0.7708 | $0.7682 | |
| ETH | <0.01% | $0.002126 | 356.8702 | $0.7585 | |
| ETH | <0.01% | $56.93 | 0.013 | $0.7419 | |
| ETH | <0.01% | $0.009324 | 79.0847 | $0.7373 | |
| ETH | <0.01% | $0.306651 | 2.3994 | $0.7357 | |
| ETH | <0.01% | $118.7 | 0.00617223 | $0.7326 | |
| ETH | <0.01% | $0.034098 | 21.4344 | $0.7308 | |
| ETH | <0.01% | $0.058813 | 12.2731 | $0.7218 | |
| ETH | <0.01% | $0.075854 | 9.4313 | $0.7153 | |
| ETH | <0.01% | <$0.000001 | 1,452,556.4204 | $0.7059 | |
| ETH | <0.01% | $0.000017 | 41,771.2388 | $0.6984 | |
| ETH | <0.01% | $0.461983 | 1.4924 | $0.6894 | |
| ETH | <0.01% | <$0.000001 | 95,202,185.2367 | $0.6874 | |
| ETH | <0.01% | $1.22 | 0.5568 | $0.6789 | |
| ETH | <0.01% | $1,535.81 | 0.00044178 | $0.6784 | |
| ETH | <0.01% | $0.083852 | 8.081 | $0.6776 | |
| ETH | <0.01% | <$0.000001 | 19,031,295.6567 | $0.6771 | |
| ETH | <0.01% | $0.020336 | 33.2762 | $0.6767 | |
| ETH | <0.01% | $0.007481 | 90.1234 | $0.6742 | |
| ETH | <0.01% | $0.00003 | 22,097.6072 | $0.6631 | |
| ETH | <0.01% | $0.016262 | 40.1515 | $0.6529 | |
| ETH | <0.01% | $0.984843 | 0.6557 | $0.6457 | |
| ETH | <0.01% | $67,855.27 | 0.00000943 | $0.64 | |
| ETH | <0.01% | $17.6 | 0.0359 | $0.6324 | |
| ETH | <0.01% | $0.02906 | 21.6893 | $0.6302 | |
| ETH | <0.01% | $0.02687 | 23.2968 | $0.6259 | |
| ETH | <0.01% | $0.091103 | 6.7867 | $0.6182 | |
| ETH | <0.01% | $0.002347 | 261.7905 | $0.6144 | |
| ETH | <0.01% | $0.029245 | 21.0068 | $0.6143 | |
| ETH | <0.01% | $1.14 | 0.5372 | $0.6124 | |
| ETH | <0.01% | $76,340 | 0.00000802 | $0.6122 | |
| ETH | <0.01% | $0.000042 | 14,687.5113 | $0.6121 | |
| ETH | <0.01% | $0.000446 | 1,338.5242 | $0.5975 | |
| ETH | <0.01% | $0.001452 | 410.1676 | $0.5955 | |
| ETH | <0.01% | $0.00 | 48.1836 | $0.00 | |
| ETH | <0.01% | $0.000669 | 883.9343 | $0.5913 | |
| ETH | <0.01% | $0.027299 | 21.4532 | $0.5856 | |
| ETH | <0.01% | $0.05688 | 10.2028 | $0.5803 | |
| ETH | <0.01% | $0.095949 | 6.0339 | $0.5789 | |
| ETH | <0.01% | $0.005509 | 105.0214 | $0.5785 | |
| ETH | <0.01% | $1.29 | 0.4459 | $0.5752 | |
| ETH | <0.01% | $0.000135 | 4,256.9244 | $0.574 | |
| ETH | <0.01% | $0.369304 | 1.548 | $0.5716 | |
| ETH | <0.01% | $0.000298 | 1,919.8457 | $0.5712 | |
| ETH | <0.01% | $0.008942 | 63.6145 | $0.5688 | |
| ETH | <0.01% | $2.96 | 0.1889 | $0.5592 | |
| ETH | <0.01% | $0.003739 | 148.4837 | $0.5552 | |
| ETH | <0.01% | $0.003365 | 162.6741 | $0.5474 | |
| ETH | <0.01% | $0.000001 | 593,375.279 | $0.5452 | |
| ETH | <0.01% | <$0.000001 | 307,120,757.0302 | $0.5448 | |
| ETH | <0.01% | $0.007231 | 74.3449 | $0.5376 | |
| ETH | <0.01% | $0.00013 | 4,120.7922 | $0.5365 | |
| ETH | <0.01% | $64,957 | 0.00000815 | $0.5293 | |
| ETH | <0.01% | $0.001401 | 377.6221 | $0.529 | |
| ETH | <0.01% | $0.015554 | 33.7428 | $0.5248 | |
| ETH | <0.01% | $0.006415 | 81.1769 | $0.5207 | |
| ETH | <0.01% | $0.124355 | 4.1659 | $0.518 | |
| ETH | <0.01% | $0.010489 | 49.1618 | $0.5156 | |
| ETH | <0.01% | $0.004396 | 116.9519 | $0.514 | |
| ETH | <0.01% | $0.520228 | 0.988 | $0.514 | |
| ETH | <0.01% | $0.000875 | 586.0067 | $0.5129 | |
| ETH | <0.01% | $0.024225 | 21.1318 | $0.5119 | |
| ETH | <0.01% | $3.23 | 0.1578 | $0.5097 | |
| ETH | <0.01% | $0.006936 | 72.7262 | $0.5044 | |
| ETH | <0.01% | $0.000621 | 811.7448 | $0.5037 | |
| ETH | <0.01% | $0.007435 | 65.8217 | $0.4893 | |
| ETH | <0.01% | $2.33 | 0.209 | $0.4868 | |
| ETH | <0.01% | $0.064481 | 7.4437 | $0.4799 | |
| ETH | <0.01% | $0.000472 | 1,010.8369 | $0.4769 | |
| ETH | <0.01% | $0.011758 | 40.4857 | $0.476 | |
| ETH | <0.01% | $24.31 | 0.0193 | $0.4695 | |
| ETH | <0.01% | $0.000002 | 239,276.2441 | $0.4689 | |
| ETH | <0.01% | $0.301637 | 1.5438 | $0.4656 | |
| ETH | <0.01% | $0.052686 | 8.7733 | $0.4622 | |
| ETH | <0.01% | $0.000001 | 366,514.0837 | $0.4618 | |
| ETH | <0.01% | $0.000105 | 4,398.2889 | $0.4599 | |
| ETH | <0.01% | $0.026675 | 17.1495 | $0.4574 | |
| ETH | <0.01% | $0.065043 | 6.9665 | $0.4531 | |
| ETH | <0.01% | $0.098324 | 4.5964 | $0.4519 | |
| ETH | <0.01% | $1 | 0.4501 | $0.45 | |
| ETH | <0.01% | $0.000704 | 635.6571 | $0.4472 | |
| ETH | <0.01% | $759.71 | 0.00058724 | $0.4461 | |
| ETH | <0.01% | $0.000318 | 1,401.702 | $0.446 | |
| ETH | <0.01% | $0.164984 | 2.6961 | $0.4448 | |
| ETH | <0.01% | $0.028952 | 15.2219 | $0.4407 | |
| ETH | <0.01% | $15.8 | 0.0279 | $0.4406 | |
| ETH | <0.01% | $0.000006 | 73,717.9845 | $0.4305 | |
| ETH | <0.01% | $0.014843 | 28.6793 | $0.4256 | |
| ETH | <0.01% | $75,933 | 0.00000559 | $0.4244 | |
| ETH | <0.01% | $76,732 | 0.00000553 | $0.4243 | |
| ETH | <0.01% | $0.00001 | 41,848.1597 | $0.413 | |
| ETH | <0.01% | $11.9 | 0.0345 | $0.411 | |
| ETH | <0.01% | $0.00003 | 13,391.3114 | $0.4069 | |
| ETH | <0.01% | $0.004283 | 94.7005 | $0.4055 | |
| ETH | <0.01% | <$0.000001 | 1,119,092.3954 | $0.4038 | |
| ETH | <0.01% | $0.005015 | 80.36 | $0.403 | |
| ETH | <0.01% | $0.024026 | 16.5837 | $0.3984 | |
| ETH | <0.01% | $0.038174 | 10.3689 | $0.3958 | |
| ETH | <0.01% | $41.96 | 0.00929497 | $0.39 | |
| ETH | <0.01% | $0.100142 | 3.8538 | $0.3859 | |
| ETH | <0.01% | $0.001943 | 194.3759 | $0.3776 | |
| ETH | <0.01% | $0.339684 | 1.0593 | $0.3598 | |
| ETH | <0.01% | $0.009698 | 36.5416 | $0.3543 | |
| ETH | <0.01% | $0.082551 | 4.2855 | $0.3537 | |
| ETH | <0.01% | $0.000034 | 10,419.4528 | $0.3534 | |
| ETH | <0.01% | $0.010209 | 34.2382 | $0.3495 | |
| ETH | <0.01% | $0.295259 | 1.1696 | $0.3453 | |
| ETH | <0.01% | <$0.000001 | 2,732,948.7886 | $0.3448 | |
| ETH | <0.01% | $0.055257 | 6.1911 | $0.342 | |
| ETH | <0.01% | $0.005316 | 64.1461 | $0.3409 | |
| ETH | <0.01% | $0.009782 | 34.808 | $0.3404 | |
| ETH | <0.01% | $4.39 | 0.0772 | $0.3389 | |
| ETH | <0.01% | <$0.000001 | 22,093,661.9857 | $0.3356 | |
| ETH | <0.01% | $0.044465 | 7.5285 | $0.3347 | |
| ETH | <0.01% | $0.006003 | 55.6889 | $0.3342 | |
| ETH | <0.01% | $0.000579 | 577.0802 | $0.334 | |
| ETH | <0.01% | $0.000822 | 400.8695 | $0.3293 | |
| ETH | <0.01% | $0.011771 | 27.6848 | $0.3258 | |
| ETH | <0.01% | $0.010104 | 31.7558 | $0.3208 | |
| ETH | <0.01% | $0.020093 | 15.9377 | $0.3202 | |
| ETH | <0.01% | $0.005877 | 54.1611 | $0.3183 | |
| ETH | <0.01% | $0.000078 | 4,074.3605 | $0.3171 | |
| ETH | <0.01% | $0.109378 | 2.8997 | $0.3171 | |
| ETH | <0.01% | <$0.000001 | 42,028,550.1537 | $0.3156 | |
| ETH | <0.01% | $0.007725 | 40.5686 | $0.3133 | |
| ETH | <0.01% | $1.29 | 0.2387 | $0.3079 | |
| ETH | <0.01% | $0.001516 | 200.5291 | $0.3039 | |
| ETH | <0.01% | $0.946432 | 0.3201 | $0.3029 | |
| ETH | <0.01% | $1.17 | 0.2562 | $0.2997 | |
| ETH | <0.01% | $8.04 | 0.0372 | $0.2987 | |
| ETH | <0.01% | $0.000619 | 475.307 | $0.2942 | |
| ETH | <0.01% | $0.023901 | 12.2552 | $0.2929 | |
| ETH | <0.01% | $0.00406 | 71.6199 | $0.2907 | |
| ETH | <0.01% | $0.002665 | 107.4635 | $0.2863 | |
| ETH | <0.01% | $0.000767 | 373.0451 | $0.2861 | |
| ETH | <0.01% | $0.136119 | 2.0987 | $0.2856 | |
| ETH | <0.01% | $0.138268 | 2.0347 | $0.2813 | |
| ETH | <0.01% | $0.192502 | 1.449 | $0.2789 | |
| ETH | <0.01% | $0.001843 | 149.9693 | $0.2763 | |
| ETH | <0.01% | $0.000304 | 906.2576 | $0.2757 | |
| ETH | <0.01% | $1.01 | 0.2705 | $0.2743 | |
| ETH | <0.01% | $1.31 | 0.2089 | $0.2736 | |
| ETH | <0.01% | $0.000037 | 7,319.838 | $0.2728 | |
| ETH | <0.01% | $0.000001 | 257,459.0317 | $0.2705 | |
| ETH | <0.01% | $0.000385 | 694.442 | $0.2676 | |
| ETH | <0.01% | $0.006933 | 38.5012 | $0.2669 | |
| ETH | <0.01% | $0.01495 | 17.8468 | $0.2668 | |
| ETH | <0.01% | $0.029678 | 8.9887 | $0.2667 | |
| ETH | <0.01% | $8.85 | 0.0301 | $0.266 | |
| ETH | <0.01% | $0.162711 | 1.6339 | $0.2658 | |
| ETH | <0.01% | $0.000434 | 597.2718 | $0.2593 | |
| ETH | <0.01% | $0.000007 | 39,069.6505 | $0.2582 | |
| ETH | <0.01% | $0.027092 | 9.5095 | $0.2576 | |
| ETH | <0.01% | $2.09 | 0.1232 | $0.2575 | |
| ETH | <0.01% | $0.00158 | 162.9937 | $0.2574 | |
| ETH | <0.01% | $622.34 | 0.00041244 | $0.2566 | |
| ETH | <0.01% | $0.999946 | 0.2566 | $0.2566 | |
| ETH | <0.01% | $0.001065 | 238.3036 | $0.2537 | |
| ETH | <0.01% | $0.00293 | 86.2734 | $0.2527 | |
| ETH | <0.01% | $0.452251 | 0.5412 | $0.2447 | |
| ETH | <0.01% | $0.000272 | 891.6912 | $0.2422 | |
| ETH | <0.01% | $0.002703 | 89.4545 | $0.2418 | |
| ETH | <0.01% | $0.005421 | 43.1409 | $0.2338 | |
| ETH | <0.01% | $0.025221 | 9.1945 | $0.2318 | |
| ETH | <0.01% | $3,455.04 | 0.00006702 | $0.2315 | |
| ETH | <0.01% | $0.001198 | 191.0888 | $0.2288 | |
| ETH | <0.01% | $0.004214 | 54.1171 | $0.228 | |
| ETH | <0.01% | $0.002431 | 92.9627 | $0.226 | |
| ETH | <0.01% | $0.000042 | 5,300.2458 | $0.2245 | |
| ETH | <0.01% | $0.013313 | 16.647 | $0.2216 | |
| ETH | <0.01% | $0.001151 | 192.4619 | $0.2214 | |
| ETH | <0.01% | $0.059521 | 3.6814 | $0.2191 | |
| ETH | <0.01% | $0.00006 | 3,581.2225 | $0.2138 | |
| ETH | <0.01% | $1.17 | 0.1827 | $0.2137 | |
| ETH | <0.01% | $0.000006 | 34,873.6133 | $0.212 | |
| ETH | <0.01% | $0.999617 | 0.2114 | $0.2113 | |
| ETH | <0.01% | $0.127747 | 1.639 | $0.2093 | |
| ETH | <0.01% | $0.00133 | 156.802 | $0.2086 | |
| ETH | <0.01% | $0.007709 | 26.5014 | $0.2043 | |
| ETH | <0.01% | $95.28 | 0.00214067 | $0.2039 | |
| ETH | <0.01% | $0.001704 | 117.5337 | $0.2002 | |
| ETH | <0.01% | $0.00223 | 89.4024 | $0.1993 | |
| ETH | <0.01% | $0.021951 | 8.9929 | $0.1974 | |
| ETH | <0.01% | $0.00237 | 81.6539 | $0.1935 | |
| ETH | <0.01% | $0.000992 | 193.5291 | $0.192 | |
| ETH | <0.01% | $0.021009 | 9.1321 | $0.1918 | |
| ETH | <0.01% | $0.000286 | 670.7885 | $0.1917 | |
| ETH | <0.01% | <$0.000001 | 923,186.7159 | $0.1885 | |
| ETH | <0.01% | $0.098479 | 1.9115 | $0.1882 | |
| ETH | <0.01% | $0.493768 | 0.3806 | $0.1879 | |
| ETH | <0.01% | $0.007125 | 26.3148 | $0.1874 | |
| ETH | <0.01% | $0.024455 | 7.6267 | $0.1865 | |
| ETH | <0.01% | $0.151749 | 1.2153 | $0.1844 | |
| ETH | <0.01% | $4.88 | 0.0368 | $0.1794 | |
| ETH | <0.01% | $0.012782 | 13.9948 | $0.1788 | |
| ETH | <0.01% | $0.000969 | 182.4522 | $0.1768 | |
| ETH | <0.01% | $0.022892 | 7.6511 | $0.1751 | |
| ETH | <0.01% | $0.163368 | 1.0701 | $0.1748 | |
| ETH | <0.01% | $0.011246 | 15.5183 | $0.1745 | |
| ETH | <0.01% | $0.002934 | 58.996 | $0.1731 | |
| ETH | <0.01% | $0.003119 | 55.3315 | $0.1725 | |
| ETH | <0.01% | $0.002918 | 58.9396 | $0.1719 | |
| ETH | <0.01% | $0.006989 | 24.6062 | $0.1719 | |
| ETH | <0.01% | $0.00 | 18.961 | $0.00 | |
| ETH | <0.01% | $0.997839 | 0.1714 | $0.171 | |
| ETH | <0.01% | $0.004154 | 40.3734 | $0.1677 | |
| ETH | <0.01% | $0.037525 | 4.4668 | $0.1676 | |
| ETH | <0.01% | $0.000846 | 198.2525 | $0.1676 | |
| ETH | <0.01% | $0.138206 | 1.1965 | $0.1653 | |
| ETH | <0.01% | $0.000164 | 1,011.2645 | $0.1653 | |
| ETH | <0.01% | $0.05041 | 3.2026 | $0.1614 | |
| ETH | <0.01% | $0.027355 | 5.8151 | $0.159 | |
| ETH | <0.01% | $0.094968 | 1.6525 | $0.1569 | |
| ETH | <0.01% | <$0.000001 | 166,614,592.359 | $0.156 | |
| ETH | <0.01% | $0.039335 | 3.9561 | $0.1556 | |
| ETH | <0.01% | $0.007091 | 21.8977 | $0.1552 | |
| ETH | <0.01% | $0.993467 | 0.1556 | $0.1545 | |
| ETH | <0.01% | $0.001277 | 120.8466 | $0.1542 | |
| ETH | <0.01% | $0.000113 | 1,364.2066 | $0.1537 | |
| ETH | <0.01% | $0.002378 | 64.201 | $0.1526 | |
| ETH | <0.01% | $0.092746 | 1.6415 | $0.1522 | |
| ETH | <0.01% | $0.001801 | 83.6576 | $0.1507 | |
| ETH | <0.01% | $0.000126 | 1,198.525 | $0.1505 | |
| ETH | <0.01% | $0.02023 | 7.4337 | $0.1503 | |
| ETH | <0.01% | $0.998958 | 0.1499 | $0.1497 | |
| ETH | <0.01% | $0.006915 | 21.5681 | $0.1491 | |
| ETH | <0.01% | $0.000138 | 1,076.5346 | $0.1489 | |
| ETH | <0.01% | $0.002975 | 50.0107 | $0.1487 | |
| ETH | <0.01% | $0.004836 | 30.4693 | $0.1473 | |
| ETH | <0.01% | $0.155771 | 0.9328 | $0.1452 | |
| ETH | <0.01% | $0.102852 | 1.4079 | $0.1448 | |
| ETH | <0.01% | $0.000035 | 4,109.215 | $0.1445 | |
| ETH | <0.01% | $0.001862 | 76.3498 | $0.1421 | |
| ETH | <0.01% | $0.000768 | 184.7212 | $0.1417 | |
| ETH | <0.01% | $0.00129 | 106.7338 | $0.1377 | |
| ETH | <0.01% | $0.073001 | 1.87 | $0.1365 | |
| ETH | <0.01% | $0.999572 | 0.1294 | $0.1293 | |
| ETH | <0.01% | $0.015219 | 8.2994 | $0.1263 | |
| ETH | <0.01% | $0.001434 | 87.719 | $0.1257 | |
| ETH | <0.01% | $0.163013 | 0.7699 | $0.1254 | |
| ETH | <0.01% | $0.000432 | 288.714 | $0.1246 | |
| ETH | <0.01% | $0.00022 | 557.6531 | $0.1226 | |
| ETH | <0.01% | $0.001719 | 70.9779 | $0.122 | |
| ETH | <0.01% | $0.002167 | 56.1291 | $0.1216 | |
| ETH | <0.01% | $0.000011 | 10,916.385 | $0.1208 | |
| ETH | <0.01% | $0.000047 | 2,574.1724 | $0.1203 | |
| ETH | <0.01% | $0.000492 | 244.4117 | $0.1201 | |
| ETH | <0.01% | $0.002302 | 51.8778 | $0.1194 | |
| ETH | <0.01% | $50.68 | 0.00233106 | $0.1181 | |
| ETH | <0.01% | $0.180363 | 0.6533 | $0.1178 | |
| ETH | <0.01% | $1.33 | 0.0886 | $0.1178 | |
| ETH | <0.01% | $0.07332 | 1.6076 | $0.1178 | |
| ETH | <0.01% | $0.108619 | 1.0827 | $0.1175 | |
| ETH | <0.01% | $0.000422 | 275.7226 | $0.1162 | |
| ETH | <0.01% | $0.006598 | 17.4391 | $0.115 | |
| ETH | <0.01% | $0.032272 | 3.5378 | $0.1141 | |
| ETH | <0.01% | $0.102714 | 1.1078 | $0.1137 | |
| ETH | <0.01% | $2.48 | 0.0457 | $0.1134 | |
| ETH | <0.01% | $0.641132 | 0.1769 | $0.1134 | |
| ETH | <0.01% | $0.00579 | 19.5199 | $0.113 | |
| ETH | <0.01% | $0.000035 | 3,230.182 | $0.1125 | |
| ETH | <0.01% | $0.008555 | 13.1034 | $0.112 | |
| ETH | <0.01% | $0.000412 | 265.3247 | $0.1094 | |
| ETH | <0.01% | $0.001812 | 60.2484 | $0.1091 | |
| ETH | <0.01% | $0.072073 | 1.5084 | $0.1087 | |
| ETH | <0.01% | $2,459.09 | 0.00004403 | $0.1082 | |
| ETH | <0.01% | $0.154267 | 0.7006 | $0.108 | |
| ETH | <0.01% | $0.700481 | 0.1515 | $0.106 | |
| ETH | <0.01% | $0.001382 | 75.1387 | $0.1038 | |
| ETH | <0.01% | $0.000478 | 216.4417 | $0.1034 | |
| ETH | <0.01% | $0.000351 | 293.6334 | $0.1031 | |
| ETH | <0.01% | $0.000015 | 6,776.851 | $0.1019 | |
| ETH | <0.01% | $0.204369 | 0.4981 | $0.1017 | |
| BASE | <0.01% | $76,388 | 0.00065928 | $50.36 | |
| BASE | <0.01% | $76,331 | 0.00061833 | $47.2 | |
| BASE | <0.01% | $118.91 | 0.3676 | $43.72 | |
| BASE | <0.01% | $2,289.36 | 0.019 | $43.4 | |
| BASE | <0.01% | $0.036611 | 1,182.1021 | $43.28 | |
| BASE | <0.01% | $0.999889 | 42.9177 | $42.91 | |
| BASE | <0.01% | $0.999909 | 41.5259 | $41.52 | |
| BASE | <0.01% | $0.01239 | 3,270.1346 | $40.52 | |
| BASE | <0.01% | $0.00 | 0.0166 | $0.00 | |
| BASE | <0.01% | $0.000594 | 64,561.656 | $38.38 | |
| BASE | <0.01% | $31.92 | 1.2005 | $38.32 | |
| BASE | <0.01% | $0.001293 | 28,781.2719 | $37.21 | |
| BASE | <0.01% | $0.986994 | 37.2444 | $36.76 | |
| BASE | <0.01% | $0.101288 | 357.5778 | $36.22 | |
| BASE | <0.01% | $1.73 | 20.752 | $35.9 | |
| BASE | <0.01% | $2,462.49 | 0.0138 | $33.97 | |
| BASE | <0.01% | $0.944165 | 34.0209 | $32.12 | |
| BASE | <0.01% | $0.020716 | 1,441.8933 | $29.87 | |
| BASE | <0.01% | $0.007356 | 3,744.3911 | $27.54 | |
| BASE | <0.01% | $0.001393 | 18,993.384 | $26.46 | |
| BASE | <0.01% | $0.000117 | 223,041.3775 | $26.12 | |
| BASE | <0.01% | $2,773.1 | 0.00941212 | $26.1 | |
| BASE | <0.01% | $0.31348 | 80.9202 | $25.37 | |
| BASE | <0.01% | $0.013983 | 1,799.7204 | $25.17 | |
| BASE | <0.01% | $1 | 25.0571 | $25.08 | |
| BASE | <0.01% | $1.12 | 21.352 | $23.91 | |
| BASE | <0.01% | $0.026376 | 906.4196 | $23.91 | |
| BASE | <0.01% | $0.019553 | 1,176.7404 | $23.01 | |
| BASE | <0.01% | $0.098471 | 221.5673 | $21.82 | |
| BASE | <0.01% | $0.000004 | 5,679,615.2139 | $21.66 | |
| BASE | <0.01% | $0.999739 | 21.2713 | $21.27 | |
| BASE | <0.01% | $0.404324 | 52.5952 | $21.27 | |
| BASE | <0.01% | $0.00 | 4,389.5781 | $0.00 | |
| BASE | <0.01% | $0.298912 | 69.3468 | $20.73 | |
| BASE | <0.01% | $1.07 | 19.2613 | $20.57 | |
| BASE | <0.01% | $17.62 | 1.1465 | $20.2 | |
| BASE | <0.01% | $0.327556 | 59.22 | $19.4 | |
| BASE | <0.01% | $0.11181 | 171.9382 | $19.22 | |
| BASE | <0.01% | $1.18 | 15.9636 | $18.84 | |
| BASE | <0.01% | $1.2 | 15.486 | $18.58 | |
| BASE | <0.01% | $0.234323 | 76.0161 | $17.81 | |
| BASE | <0.01% | $2,419.43 | 0.00721017 | $17.44 | |
| BASE | <0.01% | $0.002202 | 7,483.5586 | $16.48 | |
| BASE | <0.01% | $0.095532 | 169.6679 | $16.21 | |
| BASE | <0.01% | $0.019895 | 800 | $15.92 | |
| BASE | <0.01% | $0.000569 | 27,862.6327 | $15.87 | |
| BASE | <0.01% | $1.35 | 11.6988 | $15.79 | |
| BASE | <0.01% | $0.008994 | 1,754.8521 | $15.78 | |
| BASE | <0.01% | $0.046992 | 331.4659 | $15.58 | |
| BASE | <0.01% | $0.261272 | 56.3191 | $14.71 | |
| BASE | <0.01% | $0.011256 | 1,275.4622 | $14.36 | |
| BASE | <0.01% | $0.001734 | 7,964.4473 | $13.81 | |
| BASE | <0.01% | $2.56 | 5.2456 | $13.43 | |
| BASE | <0.01% | $0.00 | 67.1352 | $0.00 | |
| BASE | <0.01% | $0.006719 | 1,896.9267 | $12.75 | |
| BASE | <0.01% | $85.11 | 0.1497 | $12.74 | |
| BASE | <0.01% | $77,257 | 0.00016009 | $12.37 | |
| BASE | <0.01% | $0.644535 | 18.8155 | $12.13 | |
| BASE | <0.01% | $0.005423 | 2,229.2479 | $12.09 | |
| BASE | <0.01% | $0.007569 | 1,548.3284 | $11.72 | |
| BASE | <0.01% | $1.63 | 7.1629 | $11.68 | |
| BASE | <0.01% | $0.019497 | 582.0759 | $11.35 | |
| BASE | <0.01% | $76,114 | 0.0001485 | $11.3 | |
| BASE | <0.01% | $0.999803 | 11.2063 | $11.2 | |
| BASE | <0.01% | $0.022281 | 496.4238 | $11.06 | |
| BASE | <0.01% | $0.079932 | 136.0546 | $10.88 | |
| BASE | <0.01% | $2,263.38 | 0.00461537 | $10.45 | |
| BASE | <0.01% | $0.003371 | 2,890.4172 | $9.74 | |
| BASE | <0.01% | $0.495267 | 19.5887 | $9.7 | |
| BASE | <0.01% | $2,269 | 0.00423791 | $9.62 | |
| BASE | <0.01% | $0.012717 | 715.9238 | $9.1 | |
| BASE | <0.01% | $0.031941 | 281.2754 | $8.98 | |
| BASE | <0.01% | $0.998334 | 8.7778 | $8.76 | |
| BASE | <0.01% | $0.003172 | 2,738.9757 | $8.69 | |
| BASE | <0.01% | $0.425286 | 20.2672 | $8.62 | |
| BASE | <0.01% | $0.995415 | 7.741 | $7.71 | |
| BASE | <0.01% | $0.043003 | 179.16 | $7.7 | |
| BASE | <0.01% | $0.296961 | 25.6389 | $7.61 | |
| BASE | <0.01% | $59.82 | 0.1247 | $7.46 | |
| BASE | <0.01% | $0.557399 | 12.6422 | $7.05 | |
| BASE | <0.01% | $0.012386 | 550.0836 | $6.81 | |
| BASE | <0.01% | $0.061756 | 110.2888 | $6.81 | |
| BASE | <0.01% | $0.002166 | 3,058.857 | $6.63 | |
| BASE | <0.01% | $0.004635 | 1,347.6864 | $6.25 | |
| BASE | <0.01% | $0.998626 | 6.2076 | $6.2 | |
| BASE | <0.01% | $0.040468 | 147.0581 | $5.95 | |
| BASE | <0.01% | $4.3 | 1.3471 | $5.79 | |
| BASE | <0.01% | $0.006436 | 897.2339 | $5.77 | |
| BASE | <0.01% | $0.020662 | 278.4914 | $5.75 | |
| BASE | <0.01% | $2,150.72 | 0.00257141 | $5.53 | |
| BASE | <0.01% | $0.004978 | 1,080.3088 | $5.38 | |
| BASE | <0.01% | $0.027216 | 197.3689 | $5.37 | |
| BASE | <0.01% | $0.000028 | 183,931.8516 | $5.2 | |
| BASE | <0.01% | $0.054165 | 93.5641 | $5.07 | |
| BASE | <0.01% | $0.030555 | 163.6129 | $5 | |
| BASE | <0.01% | $0.089424 | 55.8524 | $4.99 | |
| BASE | <0.01% | $0.007785 | 633.6775 | $4.93 | |
| BASE | <0.01% | $0.000273 | 17,878.4994 | $4.88 | |
| BASE | <0.01% | $0.000086 | 56,637.0498 | $4.88 | |
| BASE | <0.01% | $0.211825 | 22.7248 | $4.81 | |
| BASE | <0.01% | $2,810 | 0.00167328 | $4.7 | |
| BASE | <0.01% | $0.00067 | 6,813.762 | $4.56 | |
| BASE | <0.01% | $2.87 | 1.4673 | $4.21 | |
| BASE | <0.01% | $0.01693 | 247.4781 | $4.19 | |
| BASE | <0.01% | $0.00009 | 46,179.6121 | $4.15 | |
| BASE | <0.01% | $0.003683 | 1,096.8414 | $4.04 | |
| BASE | <0.01% | <$0.000001 | 22,987,573.7242 | $3.9 | |
| BASE | <0.01% | $1,972.9 | 0.00188425 | $3.72 | |
| BASE | <0.01% | $0.000626 | 5,834.2284 | $3.65 | |
| BASE | <0.01% | $0.105938 | 34.4188 | $3.65 | |
| BASE | <0.01% | $0.001304 | 2,750.1218 | $3.58 | |
| BASE | <0.01% | $1.09 | 3.2944 | $3.57 | |
| BASE | <0.01% | $0.461933 | 6.759 | $3.12 | |
| BASE | <0.01% | $0.00001 | 317,302.4519 | $3.09 | |
| BASE | <0.01% | $0.9999 | 3.068 | $3.07 | |
| BASE | <0.01% | $2,459.64 | 0.00115467 | $2.84 | |
| BASE | <0.01% | $0.282209 | 9.719 | $2.74 | |
| BASE | <0.01% | $0.10343 | 26.0546 | $2.69 | |
| BASE | <0.01% | $0.019154 | 140.4443 | $2.69 | |
| BASE | <0.01% | $0.00042 | 6,395.9261 | $2.69 | |
| BASE | <0.01% | $1,975.39 | 0.00133852 | $2.64 | |
| BASE | <0.01% | $0.000225 | 11,518.7592 | $2.59 | |
| BASE | <0.01% | $0.053342 | 48.3562 | $2.58 | |
| BASE | <0.01% | $0.998628 | 2.5545 | $2.55 | |
| BASE | <0.01% | $0.00017 | 14,756.341 | $2.5 | |
| BASE | <0.01% | $0.021135 | 118.3518 | $2.5 | |
| BASE | <0.01% | $0.382115 | 6.5345 | $2.5 | |
| BASE | <0.01% | $0.601141 | 4.1097 | $2.47 | |
| BASE | <0.01% | <$0.000001 | 51,842,196.1825 | $2.36 | |
| BASE | <0.01% | $0.148405 | 15.7986 | $2.34 | |
| BASE | <0.01% | $0.10775 | 20.18 | $2.17 | |
| BASE | <0.01% | $1.22 | 1.7421 | $2.13 | |
| BASE | <0.01% | $0.007316 | 279.3512 | $2.04 | |
| BASE | <0.01% | $0.05616 | 36.2107 | $2.03 | |
| BASE | <0.01% | $0.636816 | 3.1347 | $2 | |
| BASE | <0.01% | $0.006254 | 318.4407 | $1.99 | |
| BASE | <0.01% | $0.00 | 1,125 | $0.00 | |
| BASE | <0.01% | $75,561 | 0.00002481 | $1.87 | |
| BASE | <0.01% | $0.07977 | 23.2713 | $1.86 | |
| BASE | <0.01% | $0.001355 | 1,356.7306 | $1.84 | |
| BASE | <0.01% | $0.000059 | 30,766.9799 | $1.82 | |
| BASE | <0.01% | $0.13545 | 13.2419 | $1.79 | |
| BASE | <0.01% | $0.452572 | 3.7943 | $1.72 | |
| BASE | <0.01% | $0.073602 | 22.4996 | $1.66 | |
| BASE | <0.01% | $0.000009 | 183,228.7356 | $1.62 | |
| BASE | <0.01% | $0.601583 | 2.5949 | $1.56 | |
| BASE | <0.01% | $1.02 | 1.5006 | $1.53 | |
| BASE | <0.01% | $0.000309 | 4,910.8096 | $1.52 | |
| BASE | <0.01% | $0.000421 | 3,504.3935 | $1.47 | |
| BASE | <0.01% | $0.993976 | 1.4564 | $1.45 | |
| BASE | <0.01% | $0.053394 | 25.705 | $1.37 | |
| BASE | <0.01% | $0.066957 | 20.0811 | $1.34 | |
| BASE | <0.01% | $172.1 | 0.00767864 | $1.32 | |
| BASE | <0.01% | $0.235913 | 5.598 | $1.32 | |
| BASE | <0.01% | $0.012763 | 101.0179 | $1.29 | |
| BASE | <0.01% | <$0.000001 | 3,218,287,780.6264 | $1.29 | |
| BASE | <0.01% | $0.004139 | 306.9208 | $1.27 | |
| BASE | <0.01% | $0.017793 | 69.1529 | $1.23 | |
| BASE | <0.01% | $0.000844 | 1,434.6819 | $1.21 | |
| BASE | <0.01% | $0.000103 | 11,324.4101 | $1.17 | |
| BASE | <0.01% | $0.062608 | 18.2638 | $1.14 | |
| BASE | <0.01% | $0.999961 | 1.1226 | $1.12 | |
| BASE | <0.01% | $0.00001 | 107,415.8222 | $1.12 | |
| BASE | <0.01% | $0.000106 | 10,421.0103 | $1.11 | |
| BASE | <0.01% | $0.020347 | 54.362 | $1.11 | |
| BASE | <0.01% | $0.463522 | 2.3388 | $1.08 | |
| BASE | <0.01% | $0.124476 | 8.554 | $1.06 | |
| BASE | <0.01% | $0.00014 | 7,174.5312 | $1 | |
| BASE | <0.01% | $0.025735 | 37.9732 | $0.9772 | |
| BASE | <0.01% | $71,128 | 0.00001365 | $0.9711 | |
| BASE | <0.01% | <$0.000001 | 186,738,695.6202 | $0.8963 | |
| BASE | <0.01% | $0.002594 | 335.0404 | $0.8689 | |
| BASE | <0.01% | $0.034006 | 25.4711 | $0.8661 | |
| BASE | <0.01% | $0.005121 | 168.7719 | $0.8642 | |
| BASE | <0.01% | $0.00016 | 5,334.5632 | $0.8554 | |
| BASE | <0.01% | $2,027.17 | 0.00041887 | $0.8491 | |
| BASE | <0.01% | $0.000196 | 4,119.3558 | $0.8064 | |
| BASE | <0.01% | $0.520476 | 1.5474 | $0.8054 | |
| BASE | <0.01% | $0.012885 | 61.8923 | $0.7974 | |
| BASE | <0.01% | $0.050116 | 15.8653 | $0.7951 | |
| BASE | <0.01% | $0.000487 | 1,604.5303 | $0.7812 | |
| BASE | <0.01% | $0.996545 | 0.7663 | $0.7636 | |
| BASE | <0.01% | $0.000006 | 120,512.9502 | $0.6965 | |
| BASE | <0.01% | $0.090967 | 7.6102 | $0.6922 | |
| BASE | <0.01% | $0.004647 | 139.9736 | $0.6504 | |
| BASE | <0.01% | $0.008942 | 71.5588 | $0.6398 | |
| BASE | <0.01% | $0.000028 | 22,788.499 | $0.6396 | |
| BASE | <0.01% | $0.000198 | 3,157.7843 | $0.6242 | |
| BASE | <0.01% | $0.001114 | 558.7862 | $0.6225 | |
| BASE | <0.01% | $0.002812 | 220.0987 | $0.6189 | |
| BASE | <0.01% | $0.000786 | 783.9729 | $0.6163 | |
| BASE | <0.01% | $0.870857 | 0.6932 | $0.6036 | |
| BASE | <0.01% | $0.001287 | 467.1365 | $0.6012 | |
| BASE | <0.01% | $0.020948 | 28.5704 | $0.5984 | |
| BASE | <0.01% | $0.007217 | 82.7178 | $0.597 | |
| BASE | <0.01% | $0.0599 | 9.6973 | $0.5808 | |
| BASE | <0.01% | $0.677964 | 0.8565 | $0.5806 | |
| BASE | <0.01% | $0.000125 | 4,580.4832 | $0.5747 | |
| BASE | <0.01% | $0.093155 | 5.8009 | $0.5403 | |
| BASE | <0.01% | $0.009934 | 53.3243 | $0.5297 | |
| BASE | <0.01% | $0.028875 | 16.9672 | $0.4899 | |
| BASE | <0.01% | $0.002668 | 182.0713 | $0.4856 | |
| BASE | <0.01% | $0.000345 | 1,404.5628 | $0.4849 | |
| BASE | <0.01% | $0.004022 | 117.5065 | $0.4725 | |
| BASE | <0.01% | $0.00134 | 348.6384 | $0.467 | |
| BASE | <0.01% | $1.18 | 0.391 | $0.4613 | |
| BASE | <0.01% | $0.004737 | 97.1477 | $0.4601 | |
| BASE | <0.01% | <$0.000001 | 57,348,307.748 | $0.4473 | |
| BASE | <0.01% | $0.00 | 3,144.6652 | $0.00 | |
| BASE | <0.01% | $0.001442 | 302.1504 | $0.4356 | |
| BASE | <0.01% | $0.000001 | 558,323.7779 | $0.4263 | |
| BASE | <0.01% | $76,285 | 0.00000534 | $0.4072 | |
| BASE | <0.01% | $2.09 | 0.1898 | $0.3966 | |
| BASE | <0.01% | $0.000004 | 105,525.6378 | $0.3915 | |
| BASE | <0.01% | $0.005746 | 67.9079 | $0.3902 | |
| BASE | <0.01% | $0.001579 | 233.5979 | $0.3689 | |
| BASE | <0.01% | $0.000185 | 1,941.2583 | $0.3586 | |
| BASE | <0.01% | $0.004438 | 77.1507 | $0.3424 | |
| BASE | <0.01% | $0.000001 | 298,799.7813 | $0.3376 | |
| BASE | <0.01% | $0.00029 | 1,132.046 | $0.3287 | |
| BASE | <0.01% | $0.000568 | 550.5167 | $0.3128 | |
| BASE | <0.01% | $174.4 | 0.00177057 | $0.3087 | |
| BASE | <0.01% | $0.029212 | 10.4456 | $0.3051 | |
| BASE | <0.01% | $0.109331 | 2.7512 | $0.3007 | |
| BASE | <0.01% | $0.950705 | 0.3023 | $0.2873 | |
| BASE | <0.01% | $1.01 | 0.2767 | $0.278 | |
| BASE | <0.01% | $0.000046 | 5,990.1696 | $0.2734 | |
| BASE | <0.01% | $0.000412 | 661.9115 | $0.273 | |
| BASE | <0.01% | $0.389586 | 0.6936 | $0.2702 | |
| BASE | <0.01% | $0.000282 | 941.7523 | $0.2655 | |
| BASE | <0.01% | $2.04 | 0.1296 | $0.2643 | |
| BASE | <0.01% | $147.83 | 0.00178782 | $0.2642 | |
| BASE | <0.01% | $1.59 | 0.1661 | $0.264 | |
| BASE | <0.01% | $0.979549 | 0.2651 | $0.2596 | |
| BASE | <0.01% | $2,041.55 | 0.00012308 | $0.2512 | |
| BASE | <0.01% | $0.0153 | 16.1632 | $0.2472 | |
| BASE | <0.01% | $0.038777 | 6.0866 | $0.236 | |
| BASE | <0.01% | $0.029819 | 7.9093 | $0.2358 | |
| BASE | <0.01% | $0.000011 | 21,173.6327 | $0.2326 | |
| BASE | <0.01% | $0.000001 | 219,318.6297 | $0.2258 | |
| BASE | <0.01% | $0.007624 | 27.8015 | $0.2119 | |
| BASE | <0.01% | $0.011868 | 17.4759 | $0.2074 | |
| BASE | <0.01% | $2,217.8 | 0.00009144 | $0.2028 | |
| BASE | <0.01% | $0.000001 | 330,721.8805 | $0.1996 | |
| BASE | <0.01% | $0.130873 | 1.4503 | $0.1897 | |
| BASE | <0.01% | $0.000003 | 61,805.905 | $0.1662 | |
| BASE | <0.01% | $0.002324 | 70.7469 | $0.1644 | |
| BASE | <0.01% | $0.705853 | 0.2304 | $0.1626 | |
| BASE | <0.01% | $0.00 | 733.1453 | $0.00 | |
| BASE | <0.01% | $0.000989 | 158.6334 | $0.1568 | |
| BASE | <0.01% | $0.00 | 96,737.9087 | $0.00 | |
| BASE | <0.01% | $65,941 | 0.00000229 | $0.151 | |
| BASE | <0.01% | $0.060865 | 2.4622 | $0.1498 | |
| BASE | <0.01% | $16 | 0.00764487 | $0.1223 | |
| BASE | <0.01% | $10.55 | 0.011 | $0.1162 | |
| BASE | <0.01% | $0.125263 | 0.913 | $0.1143 | |
| BASE | <0.01% | $0.016229 | 6.8021 | $0.1103 | |
| BASE | <0.01% | $0.02178 | 5.057 | $0.1101 | |
| BASE | <0.01% | $0.034719 | 3.1015 | $0.1076 | |
| BASE | <0.01% | $0.000037 | 2,892.4433 | $0.1075 | |
| BASE | <0.01% | <$0.000001 | 67,133,872.1648 | $0.1074 | |
| BASE | <0.01% | $0.000309 | 328.8231 | $0.1016 | |
| BASE | <0.01% | $0.090929 | 1.1111 | $0.101 | |
| POL | <0.01% | $0.00 | 48.1854 | $0.00 | |
| POL | <0.01% | $0.234323 | 192.9812 | $45.22 | |
| POL | <0.01% | $8.86 | 5.0197 | $44.47 | |
| POL | <0.01% | $71,100 | 0.0004518 | $32.12 | |
| POL | <0.01% | $0.9999 | 25.8728 | $25.87 | |
| POL | <0.01% | $118.91 | 0.2147 | $25.53 | |
| POL | <0.01% | $0.998295 | 21.9668 | $21.93 | |
| POL | <0.01% | $0.788343 | 27.1399 | $21.4 | |
| POL | <0.01% | $0.123821 | 157.204 | $19.47 | |
| POL | <0.01% | $1.44 | 11.6244 | $16.74 | |
| POL | <0.01% | $2,773.1 | 0.00548401 | $15.21 | |
| POL | <0.01% | $1.18 | 12.3999 | $14.63 | |
| POL | <0.01% | $1.18 | 12.3999 | $14.63 | |
| POL | <0.01% | $0.320938 | 45.5722 | $14.63 | |
| POL | <0.01% | $0.126226 | 114.7301 | $14.48 | |
| POL | <0.01% | $76,114 | 0.00018979 | $14.45 | |
| POL | <0.01% | $0.107533 | 130.1848 | $14 | |
| POL | <0.01% | $0.157587 | 77.1884 | $12.16 | |
| POL | <0.01% | $8.06 | 1.3713 | $11.05 | |
| POL | <0.01% | $5,134.75 | 0.00210267 | $10.8 | |
| POL | <0.01% | $1,976.06 | 0.00455168 | $8.99 | |
| POL | <0.01% | $64,957 | 0.0001179 | $7.66 | |
| POL | <0.01% | $0.111737 | 57.5104 | $6.43 | |
| POL | <0.01% | $0.002787 | 2,212.43 | $6.17 | |
| POL | <0.01% | $0.011279 | 545.1657 | $6.15 | |
| POL | <0.01% | $0.000314 | 18,504.1725 | $5.81 | |
| POL | <0.01% | $0.000796 | 7,170.6517 | $5.71 | |
| POL | <0.01% | $0.08267 | 66.5585 | $5.5 | |
| POL | <0.01% | $1,975.39 | 0.00270795 | $5.35 | |
| POL | <0.01% | $0.004399 | 1,045.67 | $4.6 | |
| POL | <0.01% | $0.993935 | 3.9361 | $3.91 | |
| POL | <0.01% | $0.107493 | 34.8266 | $3.74 | |
| POL | <0.01% | $2.09 | 1.6901 | $3.53 | |
| POL | <0.01% | $0.667839 | 4.7935 | $3.2 | |
| POL | <0.01% | $0.99981 | 3.0338 | $3.03 | |
| POL | <0.01% | $0.024074 | 125.7572 | $3.03 | |
| POL | <0.01% | $0.455295 | 6.0371 | $2.75 | |
| POL | <0.01% | $0.142493 | 18.4569 | $2.63 | |
| POL | <0.01% | $85.11 | 0.0293 | $2.5 | |
| POL | <0.01% | $0.99981 | 2.4272 | $2.43 | |
| POL | <0.01% | $0.00 | 470.2127 | $0.00 | |
| POL | <0.01% | $0.053394 | 38.4471 | $2.05 | |
| POL | <0.01% | $0.0406 | 46.667 | $1.89 | |
| POL | <0.01% | $0.107444 | 16.0194 | $1.72 | |
| POL | <0.01% | $0.009692 | 169.9656 | $1.65 | |
| POL | <0.01% | $0.193146 | 8.275 | $1.6 | |
| POL | <0.01% | $103.18 | 0.0153 | $1.58 | |
| POL | <0.01% | $0.016054 | 97.1458 | $1.56 | |
| POL | <0.01% | $0.098471 | 13.8302 | $1.36 | |
| POL | <0.01% | $0.000455 | 2,845.5091 | $1.3 | |
| POL | <0.01% | $45.56 | 0.0279 | $1.27 | |
| POL | <0.01% | $0.000106 | 11,793.0214 | $1.25 | |
| POL | <0.01% | $3.58 | 0.3386 | $1.21 | |
| POL | <0.01% | $0.148405 | 7.8618 | $1.17 | |
| POL | <0.01% | $0.14271 | 7.9899 | $1.14 | |
| POL | <0.01% | $0.106769 | 10.3149 | $1.1 | |
| POL | <0.01% | $0.18304 | 5.9179 | $1.08 | |
| POL | <0.01% | $0.094747 | 11.428 | $1.08 | |
| POL | <0.01% | $121.51 | 0.00862204 | $1.05 | |
| POL | <0.01% | $0.00 | 252,479.0493 | $0.00 | |
| POL | <0.01% | $0.003998 | 248.6816 | $0.9942 | |
| POL | <0.01% | $0.004871 | 188.9599 | $0.9204 | |
| POL | <0.01% | $0.000022 | 40,549.5553 | $0.8983 | |
| POL | <0.01% | $0.056885 | 15.6666 | $0.8911 | |
| POL | <0.01% | $0.163186 | 4.1904 | $0.6838 | |
| POL | <0.01% | $2,314.06 | 0.00029261 | $0.6771 | |
| POL | <0.01% | $0.55806 | 1.1937 | $0.6661 | |
| POL | <0.01% | $0.006975 | 94.0856 | $0.6562 | |
| POL | <0.01% | $1.73 | 0.3601 | $0.6229 | |
| POL | <0.01% | $0.000603 | 963.0095 | $0.5808 | |
| POL | <0.01% | $0.111672 | 5.1456 | $0.5746 | |
| POL | <0.01% | $0.007613 | 62.9757 | $0.4794 | |
| POL | <0.01% | $65,583 | 0.00000692 | $0.4538 | |
| POL | <0.01% | $0.19225 | 2.1588 | $0.415 | |
| POL | <0.01% | $6.34 | 0.0645 | $0.409 | |
| POL | <0.01% | $0.002813 | 140.8778 | $0.3962 | |
| POL | <0.01% | $0.00047 | 834.0902 | $0.3922 | |
| POL | <0.01% | $0.095123 | 4.0747 | $0.3876 | |
| POL | <0.01% | $0.010993 | 34.4046 | $0.3782 | |
| POL | <0.01% | $0.004262 | 83.7497 | $0.3569 | |
| POL | <0.01% | $17.62 | 0.0189 | $0.3331 | |
| POL | <0.01% | $0.000622 | 513.8208 | $0.3196 | |
| POL | <0.01% | $0.005029 | 56.8546 | $0.2859 | |
| POL | <0.01% | $0.154813 | 1.834 | $0.2839 | |
| POL | <0.01% | $3.23 | 0.0848 | $0.274 | |
| POL | <0.01% | $0.013667 | 18.2953 | $0.25 | |
| POL | <0.01% | $0.015635 | 15.434 | $0.2413 | |
| POL | <0.01% | $0.138317 | 1.7277 | $0.2389 | |
| POL | <0.01% | $0.000434 | 520.0438 | $0.2257 | |
| POL | <0.01% | $1,537.45 | 0.00013764 | $0.2116 | |
| POL | <0.01% | $0.029683 | 6.9023 | $0.2048 | |
| POL | <0.01% | $0.000768 | 258.3849 | $0.1983 | |
| POL | <0.01% | $0.000155 | 1,239.8705 | $0.1922 | |
| POL | <0.01% | $0.001417 | 130.0831 | $0.1843 | |
| POL | <0.01% | $0.282597 | 0.6429 | $0.1816 | |
| POL | <0.01% | $0.376987 | 0.4505 | $0.1698 | |
| POL | <0.01% | $0.000797 | 192.7735 | $0.1537 | |
| POL | <0.01% | $0.000028 | 5,200.3381 | $0.1431 | |
| POL | <0.01% | $0.024982 | 5.6539 | $0.1412 | |
| POL | <0.01% | $0.007083 | 19.3952 | $0.1373 | |
| POL | <0.01% | $0.149175 | 0.9159 | $0.1366 | |
| POL | <0.01% | $0.109417 | 1.2127 | $0.1326 | |
| POL | <0.01% | $0.078542 | 1.5623 | $0.1227 | |
| POL | <0.01% | $0.00071 | 172.4456 | $0.1223 | |
| POL | <0.01% | $0.000006 | 18,987.1322 | $0.1184 | |
| POL | <0.01% | $0.324893 | 0.3505 | $0.1138 | |
| POL | <0.01% | $0.001077 | 101.9203 | $0.1097 | |
| POL | <0.01% | $0.003388 | 30.7886 | $0.1043 | |
| POL | <0.01% | $0.032694 | 3.0887 | $0.1009 | |
| AVAX | <0.01% | $264,122 | 0.00036136 | $95.44 | |
| AVAX | <0.01% | $2,263.38 | 0.0223 | $50.55 | |
| AVAX | <0.01% | $1.18 | 37.8763 | $44.62 | |
| AVAX | <0.01% | $4,545.39 | 0.00937428 | $42.61 | |
| AVAX | <0.01% | $76,248 | 0.00053266 | $40.61 | |
| AVAX | <0.01% | $0.999961 | 34.4457 | $34.44 | |
| AVAX | <0.01% | $12.51 | 2.1472 | $26.86 | |
| AVAX | <0.01% | $0.999803 | 26.3869 | $26.38 | |
| AVAX | <0.01% | $0.142889 | 148.6687 | $21.24 | |
| AVAX | <0.01% | <$0.000001 | 195,453,371.1523 | $17.18 | |
| AVAX | <0.01% | $0.99981 | 15.8582 | $15.86 | |
| AVAX | <0.01% | $5,009.63 | 0.002412 | $12.08 | |
| AVAX | <0.01% | $9 | 1.019 | $9.18 | |
| AVAX | <0.01% | $0.028376 | 317.9167 | $9.02 | |
| AVAX | <0.01% | $67,794.94 | 0.00013086 | $8.87 | |
| AVAX | <0.01% | $1 | 8.7168 | $8.72 | |
| AVAX | <0.01% | $0.000351 | 24,167.1424 | $8.49 | |
| AVAX | <0.01% | $0.002453 | 2,576.9107 | $6.32 | |
| AVAX | <0.01% | $0.00095 | 5,397.1331 | $5.13 | |
| AVAX | <0.01% | $6.47 | 0.5957 | $3.85 | |
| AVAX | <0.01% | $0.025671 | 126.3779 | $3.24 | |
| AVAX | <0.01% | $0.000291 | 10,749.5832 | $3.13 | |
| AVAX | <0.01% | $0.013712 | 200.8576 | $2.75 | |
| AVAX | <0.01% | $0.036626 | 74.5044 | $2.73 | |
| AVAX | <0.01% | $0.99982 | 2.6809 | $2.68 | |
| AVAX | <0.01% | $76,284 | 0.00003253 | $2.48 | |
| AVAX | <0.01% | $8.99 | 0.1738 | $1.56 | |
| AVAX | <0.01% | $0.9917 | 1.4801 | $1.47 | |
| AVAX | <0.01% | $1 | 1.4101 | $1.41 | |
| AVAX | <0.01% | $0.001914 | 707.5563 | $1.35 | |
| AVAX | <0.01% | <$0.000001 | 711,191,071.0605 | $1.21 | |
| AVAX | <0.01% | $0.006413 | 181.3603 | $1.16 | |
| AVAX | <0.01% | $1,975.39 | 0.00044349 | $0.876 | |
| AVAX | <0.01% | $0.045035 | 18.5299 | $0.8345 | |
| AVAX | <0.01% | $13.09 | 0.0508 | $0.6654 | |
| AVAX | <0.01% | $0.00 | 0.3781 | $0.00 | |
| AVAX | <0.01% | $0.013288 | 26.453 | $0.3515 | |
| AVAX | <0.01% | $1.01 | 0.3404 | $0.3451 | |
| AVAX | <0.01% | $0.000126 | 1,995.2811 | $0.252 | |
| AVAX | <0.01% | $0.99595 | 0.2492 | $0.2482 | |
| AVAX | <0.01% | $738.36 | 0.00031871 | $0.2353 | |
| AVAX | <0.01% | $65,043 | 0.00000265 | $0.1723 | |
| AVAX | <0.01% | $0.013667 | 10.4276 | $0.1425 | |
| AVAX | <0.01% | $1.3 | 0.1023 | $0.133 | |
| OP | <0.01% | $0.999689 | 32.9469 | $32.94 | |
| OP | <0.01% | $1.34 | 24.2426 | $32.49 | |
| OP | <0.01% | $0.999911 | 31.1036 | $31.1 | |
| OP | <0.01% | $0.997696 | 30.3694 | $30.3 | |
| OP | <0.01% | $121.86 | 0.2435 | $29.68 | |
| OP | <0.01% | $0.999946 | 27.5092 | $27.51 | |
| OP | <0.01% | $0.124943 | 152.5367 | $19.06 | |
| OP | <0.01% | $1,810.99 | 0.00951535 | $17.23 | |
| OP | <0.01% | $0.422981 | 35.874 | $15.17 | |
| OP | <0.01% | $8.85 | 1.5071 | $13.34 | |
| OP | <0.01% | $2,627.86 | 0.00434897 | $11.43 | |
| OP | <0.01% | $0.382653 | 29.1044 | $11.14 | |
| OP | <0.01% | $0.075854 | 143.735 | $10.9 | |
| OP | <0.01% | $2,599.13 | 0.0038367 | $9.97 | |
| OP | <0.01% | $0.999911 | 9.8217 | $9.82 | |
| OP | <0.01% | $0.865228 | 10.1464 | $8.78 | |
| OP | <0.01% | $0.000603 | 14,291.3687 | $8.62 | |
| OP | <0.01% | $1.72 | 4.333 | $7.45 | |
| OP | <0.01% | $1,972.66 | 0.00371843 | $7.34 | |
| OP | <0.01% | $1,975.39 | 0.00365028 | $7.21 | |
| OP | <0.01% | $76,114 | 0.00008988 | $6.84 | |
| OP | <0.01% | $0.135432 | 45.8174 | $6.21 | |
| OP | <0.01% | $2,773.1 | 0.0021868 | $6.06 | |
| OP | <0.01% | $0.007323 | 784.8076 | $5.75 | |
| OP | <0.01% | $118.7 | 0.0412 | $4.89 | |
| OP | <0.01% | $0.014869 | 220.717 | $3.28 | |
| OP | <0.01% | $0.995473 | 3.0406 | $3.03 | |
| OP | <0.01% | $0.234087 | 12.5656 | $2.94 | |
| OP | <0.01% | $0.015991 | 174.7971 | $2.8 | |
| OP | <0.01% | $0.958881 | 2.0819 | $2 | |
| OP | <0.01% | $0.031919 | 57.6529 | $1.84 | |
| OP | <0.01% | $0.174158 | 10.0534 | $1.75 | |
| OP | <0.01% | $3.58 | 0.4768 | $1.71 | |
| OP | <0.01% | $71,128 | 0.00002194 | $1.56 | |
| OP | <0.01% | $6.97 | 0.1747 | $1.22 | |
| OP | <0.01% | $0.986994 | 0.8707 | $0.8593 | |
| OP | <0.01% | $0.052437 | 14.3941 | $0.7547 | |
| OP | <0.01% | $110,933 | 0.00000612 | $0.6789 | |
| OP | <0.01% | $1.18 | 0.5202 | $0.6138 | |
| OP | <0.01% | $1.01 | 0.4909 | $0.4938 | |
| OP | <0.01% | $0.148367 | 3.0764 | $0.4564 | |
| OP | <0.01% | $2,314.06 | 0.00019528 | $0.4519 | |
| OP | <0.01% | $0.149285 | 2.947 | $0.4399 | |
| OP | <0.01% | $0.00 | 2.899 | $0.00 | |
| OP | <0.01% | $0.019738 | 18.8326 | $0.3717 | |
| OP | <0.01% | $0.320432 | 1.1155 | $0.3574 | |
| OP | <0.01% | $0.993855 | 0.3336 | $0.3315 | |
| OP | <0.01% | $0.01235 | 26.3862 | $0.3258 | |
| OP | <0.01% | $0.00 | 0.00012579 | $0.00 | |
| OP | <0.01% | $2,277.17 | 0.00007806 | $0.1777 | |
| OP | <0.01% | $1.01 | 0.154 | $0.1547 | |
| OP | <0.01% | $0.032272 | 4.6473 | $0.1499 | |
| OP | <0.01% | $1,056.77 | 0.00011894 | $0.1256 | |
| OP | <0.01% | $0.001417 | 84.7314 | $0.12 | |
| SONIC | <0.01% | $0.051182 | 1,033.3155 | $52.89 | |
| SONIC | <0.01% | $2,263.38 | 0.0203 | $45.99 | |
| SONIC | <0.01% | $0.999911 | 42.1787 | $42.17 | |
| SONIC | <0.01% | $0.005999 | 6,630.5983 | $39.78 | |
| SONIC | <0.01% | $0.001226 | 18,230.1279 | $22.36 | |
| SONIC | <0.01% | $0.015927 | 1,354.2595 | $21.57 | |
| SONIC | <0.01% | $1.63 | 12.7999 | $20.86 | |
| SONIC | <0.01% | $0.042542 | 442.2979 | $18.82 | |
| SONIC | <0.01% | $0.053892 | 309.4618 | $16.68 | |
| SONIC | <0.01% | $0.00587 | 2,085.5512 | $12.24 | |
| SONIC | <0.01% | $0.000592 | 14,757.2899 | $8.74 | |
| SONIC | <0.01% | $0.874631 | 9.6201 | $8.41 | |
| SONIC | <0.01% | $2,270.08 | 0.00361556 | $8.21 | |
| SONIC | <0.01% | $0.997661 | 7.4778 | $7.46 | |
| SONIC | <0.01% | $0.171917 | 40.0507 | $6.89 | |
| SONIC | <0.01% | $0.00106 | 4,542.2299 | $4.81 | |
| SONIC | <0.01% | $0.999689 | 4.6659 | $4.66 | |
| SONIC | <0.01% | $0.799461 | 5.8185 | $4.65 | |
| SONIC | <0.01% | $1.18 | 3.3252 | $3.92 | |
| SONIC | <0.01% | $1.18 | 3.3225 | $3.92 | |
| SONIC | <0.01% | $0.000237 | 15,756.361 | $3.74 | |
| SONIC | <0.01% | $0.051158 | 57.413 | $2.94 | |
| SONIC | <0.01% | $0.140326 | 16.2081 | $2.27 | |
| SONIC | <0.01% | $0.717457 | 3.1167 | $2.24 | |
| SONIC | <0.01% | $0.006238 | 346.7248 | $2.16 | |
| SONIC | <0.01% | $0.015089 | 93.5217 | $1.41 | |
| SONIC | <0.01% | $76,114 | 0.00001392 | $1.06 | |
| SONIC | <0.01% | $0.002803 | 323.705 | $0.9073 | |
| SONIC | <0.01% | $0.871009 | 0.8624 | $0.7511 | |
| SONIC | <0.01% | <$0.000001 | 16,556,345.5758 | $0.5711 | |
| SONIC | <0.01% | $0.042028 | 11.7451 | $0.4936 | |
| SONIC | <0.01% | $0.000033 | 8,124.1585 | $0.2694 | |
| SONIC | <0.01% | $0.007688 | 30.7835 | $0.2366 | |
| SONIC | <0.01% | $0.001604 | 113.9181 | $0.1827 | |
| SONIC | <0.01% | $170.36 | 0.00102595 | $0.1747 | |
| SONIC | <0.01% | $0.998483 | 0.1742 | $0.1739 | |
| SONIC | <0.01% | $0.001417 | 104.3244 | $0.1478 | |
| SONIC | <0.01% | $0.000243 | 465.7503 | $0.1132 | |
| SONIC | <0.01% | $0.00138 | 80.1924 | $0.1106 | |
| FRAXTAL | <0.01% | $0.993929 | 54.2142 | $53.89 | |
| FRAXTAL | <0.01% | $0.999882 | 48.499 | $48.49 | |
| FRAXTAL | <0.01% | $0.999887 | 42.1952 | $42.19 | |
| FRAXTAL | <0.01% | $0.00 | 0.0165 | $0.00 | |
| FRAXTAL | <0.01% | $0.667965 | 46.6802 | $31.18 | |
| FRAXTAL | <0.01% | $2,599.13 | 0.0112 | $29.05 | |
| FRAXTAL | <0.01% | $0.993929 | 27.0158 | $26.85 | |
| FRAXTAL | <0.01% | $0.234457 | 113.4644 | $26.6 | |
| FRAXTAL | <0.01% | $0.993929 | 21.0484 | $20.92 | |
| FRAXTAL | <0.01% | $0.998658 | 17.755 | $17.73 | |
| FRAXTAL | <0.01% | $0.993929 | 16.6519 | $16.55 | |
| FRAXTAL | <0.01% | $1.18 | 3.6589 | $4.32 | |
| FRAXTAL | <0.01% | $0.211987 | 19.1577 | $4.06 | |
| FRAXTAL | <0.01% | $1.15 | 3.427 | $3.94 | |
| FRAXTAL | <0.01% | $0.103655 | 22.6065 | $2.34 | |
| FRAXTAL | <0.01% | $0.999753 | 2.0717 | $2.07 | |
| FRAXTAL | <0.01% | $0.667839 | 2.3894 | $1.6 | |
| FRAXTAL | <0.01% | $0.014887 | 104.1551 | $1.55 | |
| FRAXTAL | <0.01% | $0.002011 | 176.4941 | $0.3548 | |
| FRAXTAL | <0.01% | $76,114 | 0.00000338 | $0.2572 | |
| FRAXTAL | <0.01% | $0.99862 | 0.1787 | $0.1784 | |
| MANTLE | <0.01% | $2,455.52 | 0.0214 | $52.62 | |
| MANTLE | <0.01% | $2,263.52 | 0.0229 | $51.88 | |
| MANTLE | <0.01% | $0.998295 | 36.1309 | $36.07 | |
| MANTLE | <0.01% | $2,455.3 | 0.0133 | $32.76 | |
| MANTLE | <0.01% | $0.630249 | 51.8853 | $32.7 | |
| MANTLE | <0.01% | $0.003297 | 9,041.2902 | $29.81 | |
| MANTLE | <0.01% | $0.716385 | 34.8335 | $24.95 | |
| MANTLE | <0.01% | $0.998658 | 22.0117 | $21.98 | |
| MANTLE | <0.01% | $1.22 | 15.857 | $19.35 | |
| MANTLE | <0.01% | $0.999739 | 16.7176 | $16.71 | |
| MANTLE | <0.01% | $1 | 9.4771 | $9.48 | |
| MANTLE | <0.01% | $0.994042 | 8.2301 | $8.18 | |
| MANTLE | <0.01% | $0.020807 | 151.6489 | $3.16 | |
| MANTLE | <0.01% | $0.078478 | 1.8536 | $0.1454 | |
| MANTLE | <0.01% | $1.11 | 0.1218 | $0.1351 | |
| MANTLE | <0.01% | $0.994568 | 0.1342 | $0.1334 | |
| LINEA | <0.01% | $76,131 | 0.00062984 | $47.95 | |
| LINEA | <0.01% | $2,766.65 | 0.0156 | $43.11 | |
| LINEA | <0.01% | $0.999997 | 37.1879 | $37.19 | |
| LINEA | <0.01% | $0.023832 | 1,036.4185 | $24.7 | |
| LINEA | <0.01% | $0.03102 | 743.2087 | $23.05 | |
| LINEA | <0.01% | $0.999804 | 22.5783 | $22.57 | |
| LINEA | <0.01% | $0.000342 | 58,187.6708 | $19.91 | |
| LINEA | <0.01% | $1 | 17.6278 | $17.65 | |
| LINEA | <0.01% | $2,277.97 | 0.00600386 | $13.68 | |
| LINEA | <0.01% | $0.999941 | 9.2151 | $9.21 | |
| LINEA | <0.01% | $2,123.98 | 0.00427593 | $9.08 | |
| LINEA | <0.01% | $0.001053 | 8,444.669 | $8.9 | |
| LINEA | <0.01% | $0.000099 | 76,689.4655 | $7.63 | |
| LINEA | <0.01% | $1,972.82 | 0.00337229 | $6.65 | |
| LINEA | <0.01% | $1 | 6.6126 | $6.61 | |
| LINEA | <0.01% | $1.18 | 5.3053 | $6.26 | |
| LINEA | <0.01% | $0.00 | 0.00210367 | $0.00 | |
| LINEA | <0.01% | $0.00 | 1,131.4411 | $0.00 | |
| LINEA | <0.01% | $1.31 | 1.8314 | $2.4 | |
| LINEA | <0.01% | $2,085.92 | 0.0008321 | $1.74 | |
| LINEA | <0.01% | $0.026752 | 62.8223 | $1.68 | |
| LINEA | <0.01% | $0.149559 | 10.0425 | $1.5 | |
| LINEA | <0.01% | $1 | 1.1162 | $1.12 | |
| LINEA | <0.01% | $0.004594 | 239.482 | $1.1 | |
| LINEA | <0.01% | $0.667685 | 1.3028 | $0.8698 | |
| LINEA | <0.01% | $0.998872 | 0.6863 | $0.6855 | |
| LINEA | <0.01% | $2,256.8 | 0.00026303 | $0.5936 | |
| LINEA | <0.01% | $0.000001 | 443,342.758 | $0.2968 | |
| LINEA | <0.01% | $3.58 | 0.0352 | $0.1261 | |
| SCROLL | <0.01% | $0.999803 | 42.1867 | $42.18 | |
| SCROLL | <0.01% | $1,973.03 | 0.021 | $41.36 | |
| SCROLL | <0.01% | $2,257.96 | 0.0165 | $37.27 | |
| SCROLL | <0.01% | $0.9999 | 34.5528 | $34.55 | |
| SCROLL | <0.01% | $2,027.17 | 0.0107 | $21.78 | |
| SCROLL | <0.01% | $2,459.94 | 0.00373194 | $9.18 | |
| SCROLL | <0.01% | $67,794.94 | 0.00013211 | $8.96 | |
| SCROLL | <0.01% | $0.043103 | 47.2622 | $2.04 | |
| SCROLL | <0.01% | $2,289.36 | 0.00072974 | $1.67 | |
| SCROLL | <0.01% | $2,420.72 | 0.00008457 | $0.2047 | |
| UNI | <0.01% | $2,263.48 | 0.0117 | $26.58 | |
| UNI | <0.01% | $0.999911 | 19.4042 | $19.4 | |
| UNI | <0.01% | $1,972.63 | 0.0089521 | $17.66 | |
| UNI | <0.01% | $67,797.32 | 0.00016426 | $11.14 | |
| UNI | <0.01% | $3.58 | 1.4805 | $5.3 | |
| UNI | <0.01% | $32.94 | 0.0824 | $2.71 | |
| UNI | <0.01% | $2.96 | 0.0473 | $0.1399 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.