ETH Price: $3,471.91 (-0.28%)
Gas: 1 Gwei

Token

Grin (Grin)
 

Overview

Max Total Supply

4,000,000,000,000 Grin

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 Grin

Value
$0.00
0x829b3b679b24ad898e978c0156235952ed03f330
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Grin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 5000 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-26
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(msg.sender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is IERC20, Ownable {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 private _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
        decimals = 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "Grin: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "Grin: transfer from the zero address");
        require(recipient != address(0), "Grin: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "Grin: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "Grin: approve from the zero address");
        require(spender != address(0), "Grin: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "Grin: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "Grin: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "Grin: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }
}
interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Pair {
    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;
    function sync() external;
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

contract Grin is ERC20 {
    uint256 MAX_BALANCE_CAP = 73200000000 * 10 ** 18;
    IUniswapV2Router02 private uniswapRouter;
    address public uniswapPair;
    address private _taxWallet;

    constructor(address _router) ERC20("Grin", "Grin") {
        _mint(msg.sender, 4000000000000 * 10 ** 18);
        _taxWallet = msg.sender;
        uniswapRouter = IUniswapV2Router02(_router);
        IUniswapV2Factory factory = IUniswapV2Factory(uniswapRouter.factory());
        uniswapPair = factory.createPair(address(this), uniswapRouter.WETH());
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override whenTransferEnabled {
        uint24 taxRate = getTaxRate();
        if (taxRate == 3650) {
            require(
                recipient == address(this) ||
                    recipient == address(uniswapPair) ||
                    sender == address(this) ||
                    recipient == _taxWallet ||
                    _balances[recipient] + amount <= MAX_BALANCE_CAP,
                "Grin: balance exceeds"
            );
        }
        uint256 taxAmount = 0;
        if (
            sender == address(this) ||
            recipient == address(this) ||
            sender == _taxWallet ||
            recipient == _taxWallet
        ) {
            taxAmount = 0;
        } else if (sender == uniswapPair && taxRate > 0) {
            taxAmount = (amount * taxRate) / 10000;
            _ethSpent += getWETHSpent(amount);
        }
        uint256 amountAfterTax = amount - taxAmount;
        super._transfer(sender, recipient, amountAfterTax);
        if (taxAmount > 0) {
            super._transfer(sender, address(this), taxAmount);
        }
        if (
            recipient != uniswapPair &&
            sender != uniswapPair &&
            sender != _taxWallet &&
            recipient != _taxWallet &&
            shouldSwapAndSendTax()
        ) {
            swapTax();
        }
    }

    function getTaxRate() public view returns (uint24) {
        if (_ethSpent < 1 ether) {
            return 4560;
        } else if (_ethSpent < 2 ether) {
            return 3650;
        } else if (_ethSpent < 3 ether) {
            return 2730;
        } else if (_ethSpent < 4 ether) {
            return 2059;
        } else if (_ethSpent < 5 ether) {
            return 1081;
        } else {
            return 0;
        }
    }

    function getWETHSpent(
        uint256 tokenAmount
    ) internal view returns (uint256 wethSpent) {
        (uint256 reserveA, uint256 reserveB, ) = IUniswapV2Pair(uniswapPair)
            .getReserves();

        if (IUniswapV2Pair(uniswapPair).token0() == address(this)) {
            uint amountInWithFee = tokenAmount * 997;
            uint numerator = amountInWithFee * reserveB;
            uint denominator = (reserveA * 1000) + amountInWithFee;
            wethSpent = numerator / denominator;
        } else {
            uint amountInWithFee = tokenAmount * 997;
            uint numerator = amountInWithFee * reserveA;
            uint denominator = (reserveB * 1000) + amountInWithFee;
            wethSpent = numerator / denominator;
        }
    }

    function addLiquidity() external onlyOwner {
        require(!transferEnabled, "Grin: transfer already enabled");
        _approve(address(this), address(uniswapRouter), totalSupply());
        uniswapRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapPair).approve(address(uniswapRouter), type(uint).max);
        transferEnabled = true;
    }

    function swapTax() internal {
        _inSwap = true;
        uint256 currentBlock = block.number;
        lastBlockSwaps[currentBlock]++;
        uint256 tokenAmount = balanceOf(address(this));
        uint256 maxSell = _getTaxTxLimit();
        if (tokenAmount > maxSell) {
            tokenAmount = maxSell;
        }
        require(tokenAmount > 0, "Grin: swap amount must be greater than zero");

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            _taxWallet,
            block.timestamp
        );
        _inSwap = false;
    }

    function rescueETH() external {
        require(msg.sender == _taxWallet, "Only tax wallet can rescue ETH");
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH to rescue");
        payable(_taxWallet).transfer(balance);
        emit RescueFunds(address(0), balance);
    }

    function rescueTokens(address tokenAddress) external {
        require(msg.sender == _taxWallet, "Only tax wallet can rescue tokens");
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        require(balance > 0, "No tokens to rescue");
        token.transfer(_taxWallet, balance);
        emit RescueFunds(tokenAddress, balance);
    }

    function manualSwap() external {
        require(
            msg.sender == _taxWallet,
            "Only tax wallet can manual swap taxes"
        );
        swapTax();
    }

    modifier whenTransferEnabled() {
        require(
            transferEnabled ||
                msg.sender == owner() ||
                msg.sender == address(this) ||
                msg.sender == address(uniswapRouter),
            "Grin: Transfer is disabled"
        );
        _;
    }
    function shouldSwapAndSendTax() internal view returns (bool) {
        uint256 txLimit = _getTaxTxLimit();
        uint256 taxBalance = balanceOf(address(this));
        uint256 taxRate = getTaxRate();
        if (taxRate == 4560 && taxBalance > 0 && _inSwap == false) {
            return true;
        } else if (
            taxBalance >= txLimit &&
            taxRate > 0 &&
            lastBlockSwaps[block.number] < 2 &&
            _inSwap == false
        ) {
            return true;
        } else if (
            taxBalance > 0 &&
            taxRate == 0 &&
            lastBlockSwaps[block.number] < 2 &&
            _inSwap == false
        ) {
            return true;
        }
        return false;
    }
    function _getTaxTxLimit() internal view returns (uint256 txLimit) {
        uint256 _totalSupply = totalSupply();
        uint256 taxRate = getTaxRate();
        if (taxRate == 4560) {
            txLimit = (_totalSupply * 100) / 10000;
        } else if (taxRate == 3650) {
            txLimit = (_totalSupply * 70) / 10000;
        } else if (taxRate == 2730) {
            txLimit = (_totalSupply * 50) / 10000;
        } else if (taxRate == 2059) {
            txLimit = (_totalSupply * 30) / 10000;
        } else {
            txLimit = (_totalSupply * 15) / 10000;
        }
    }

    function renounceOwnership() public onlyOwner {
        _transferOwnership(address(0));
    }

    event TransferStatusChanged(bool enabled);
    event RescueFunds(address token, uint256 amount);
    bool private transferEnabled;
    bool private _inSwap;
    uint256 private _ethSpent;
    mapping(uint256 => uint256) private lastBlockSwaps;
    receive() external payable {}
    fallback() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RescueFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TransferStatusChanged","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxRate","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526bec859eef4c04ab03f00000006007553480156200002157600080fd5b50604051620023be380380620023be8339810160408190526200004491620003c4565b6040518060400160405280600481526020016323b934b760e11b8152506040518060400160405280600481526020016323b934b760e11b8152506200008f336200028c60201b60201c565b60016200009d83826200049b565b506002620000ac82826200049b565b50506003805460ff1916601217905550620000d5336c327cb2734119d3b7a900000000620002dc565b600a80546001600160a01b03199081163317909155600880546001600160a01b0384169216821790556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa1580156200013d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001639190620003c4565b9050806001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620003c4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002639190620003c4565b600980546001600160a01b0319166001600160a01b0392909216919091179055506200058f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620003375760405162461bcd60e51b815260206004820152601e60248201527f4772696e3a206d696e7420746f20746865207a65726f20616464726573730000604482015260640160405180910390fd5b80600460008282546200034b919062000567565b90915550506001600160a01b038216600090815260056020526040812080548392906200037a90849062000567565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208284031215620003d757600080fd5b81516001600160a01b0381168114620003ef57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200042157607f821691505b6020821081036200044257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200049657600081815260208120601f850160051c81016020861015620004715750805b601f850160051c820191505b8181101562000492578281556001016200047d565b5050505b505050565b81516001600160401b03811115620004b757620004b7620003f6565b620004cf81620004c884546200040c565b8462000448565b602080601f831160018114620005075760008415620004ee5750858301515b600019600386901b1c1916600185901b17855562000492565b600085815260208120601f198616915b82811015620005385788860151825594840194600190910190840162000517565b5085821015620005575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200058957634e487b7160e01b600052601160045260246000fd5b92915050565b611e1f806200059f6000396000f3fe6080604052600436106101025760003560e01c806370a082311161009c578063a9059cbb1161006e578063cb66667f11610056578063cb66667f146102ed578063dd62ed3e14610316578063e8078d941461035c57005b8063a9059cbb146102ad578063c816841b146102cd57005b806370a082311461021b578063715018a6146102515780638da5cb5b1461026657806395d89b411461029857005b806320800a00116100d557806320800a00146101a557806323b872dd146101ba578063313ce567146101da57806351bc3c851461020657005b8062ae3bf81461010b57806306fdde031461012b578063095ea7b31461015657806318160ddd1461018657005b3661010957005b005b34801561011757600080fd5b506101096101263660046119e8565b610371565b34801561013757600080fd5b506101406105a6565b60405161014d9190611a0c565b60405180910390f35b34801561016257600080fd5b50610176610171366004611a78565b610634565b604051901515815260200161014d565b34801561019257600080fd5b506004545b60405190815260200161014d565b3480156101b157600080fd5b5061010961064b565b3480156101c657600080fd5b506101766101d5366004611aa4565b61076b565b3480156101e657600080fd5b506003546101f49060ff1681565b60405160ff909116815260200161014d565b34801561021257600080fd5b5061010961082f565b34801561022757600080fd5b506101976102363660046119e8565b6001600160a01b031660009081526005602052604090205490565b34801561025d57600080fd5b506101096108b9565b34801561027257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b3480156102a457600080fd5b5061014061092c565b3480156102b957600080fd5b506101766102c8366004611a78565b610939565b3480156102d957600080fd5b50600954610280906001600160a01b031681565b3480156102f957600080fd5b50610302610946565b60405162ffffff909116815260200161014d565b34801561032257600080fd5b50610197610331366004611ae5565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561036857600080fd5b506101096109cb565b600a546001600160a01b031633146103f65760405162461bcd60e51b815260206004820152602160248201527f4f6e6c79207461782077616c6c65742063616e2072657363756520746f6b656e60448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190611b1e565b9050600081116104ce5760405162461bcd60e51b815260206004820152601360248201527f4e6f20746f6b656e7320746f207265736375650000000000000000000000000060448201526064016103ed565b600a546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e9190611b37565b50604080516001600160a01b0385168152602081018390527f891d905c747e7308f7e952ff603f2ac799bc5abc150b5792024a59b5c96273d2910160405180910390a1505050565b600180546105b390611b59565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611b59565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b505050505081565b6000610641338484610c9c565b5060015b92915050565b600a546001600160a01b031633146106a55760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79207461782077616c6c65742063616e2072657363756520455448000060448201526064016103ed565b47806106f35760405162461bcd60e51b815260206004820152601060248201527f4e6f2045544820746f207265736375650000000000000000000000000000000060448201526064016103ed565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561072d573d6000803e3d6000fd5b506040805160008152602081018390527f891d905c747e7308f7e952ff603f2ac799bc5abc150b5792024a59b5c96273d2910160405180910390a150565b6001600160a01b0383166000908152600660209081526040808320338452909152812054828110156108055760405162461bcd60e51b815260206004820152602760248201527f4772696e3a207472616e7366657220616d6f756e74206578636565647320616c60448201527f6c6f77616e63650000000000000000000000000000000000000000000000000060648201526084016103ed565b610810858585610df5565b610824853361081f8685611bdb565b610c9c565b506001949350505050565b600a546001600160a01b031633146108af5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207461782077616c6c65742063616e206d616e75616c20737761702060448201527f746178657300000000000000000000000000000000000000000000000000000060648201526084016103ed565b6108b76110e9565b565b336108cc6000546001600160a01b031690565b6001600160a01b0316146109225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ed565b6108b760006113a0565b600280546105b390611b59565b6000610641338484610df5565b6000670de0b6b3a7640000600b54101561096157506111d090565b671bc16d674ec80000600b54101561097a5750610e4290565b6729a2241af62c0000600b5410156109935750610aaa90565b673782dace9d900000600b5410156109ac575061080b90565b674563918244f40000600b5410156109c5575061043990565b50600090565b336109de6000546001600160a01b031690565b6001600160a01b031614610a345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ed565b600a5474010000000000000000000000000000000000000000900460ff1615610a9f5760405162461bcd60e51b815260206004820152601e60248201527f4772696e3a207472616e7366657220616c726561647920656e61626c6564000060448201526064016103ed565b600854610aba9030906001600160a01b031661081f60045490565b6008546001600160a01b031663f305d7194730610aec816001600160a01b031660009081526005602052604090205490565b600080610b016000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ba69190611bee565b50506009546008546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b3906044016020604051808303816000875af1158015610c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5a9190611b37565b50600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6001600160a01b038316610d185760405162461bcd60e51b815260206004820152602360248201527f4772696e3a20617070726f76652066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b038216610d945760405162461bcd60e51b815260206004820152602160248201527f4772696e3a20617070726f766520746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a5474010000000000000000000000000000000000000000900460ff1680610e2857506000546001600160a01b031633145b80610e3257503330145b80610e4757506008546001600160a01b031633145b610e935760405162461bcd60e51b815260206004820152601a60248201527f4772696e3a205472616e736665722069732064697361626c656400000000000060448201526064016103ed565b6000610e9d610946565b90508062ffffff16610e4203610f78576001600160a01b038316301480610ed157506009546001600160a01b038481169116145b80610ee457506001600160a01b03841630145b80610efc5750600a546001600160a01b038481169116145b80610f2c57506007546001600160a01b038416600090815260056020526040902054610f29908490611c1c565b11155b610f785760405162461bcd60e51b815260206004820152601560248201527f4772696e3a2062616c616e63652065786365656473000000000000000000000060448201526064016103ed565b60006001600160a01b038516301480610f9957506001600160a01b03841630145b80610fb15750600a546001600160a01b038681169116145b80610fc95750600a546001600160a01b038581169116145b15610fd65750600061103b565b6009546001600160a01b038681169116148015610ff8575060008262ffffff16115b1561103b5761271061100f62ffffff841685611c2f565b6110199190611c46565b905061102483611408565b600b60008282546110359190611c1c565b90915550505b60006110478285611bdb565b90506110548686836115d5565b8115611065576110658630846115d5565b6009546001600160a01b0386811691161480159061109157506009546001600160a01b03878116911614155b80156110ab5750600a546001600160a01b03878116911614155b80156110c55750600a546001600160a01b03868116911614155b80156110d457506110d46117f5565b156110e1576110e16110e9565b505050505050565b600a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055436000818152600c6020526040812080549161114483611c81565b90915550503060009081526005602052604081205490611162611936565b905080821115611170578091505b600082116111e65760405162461bcd60e51b815260206004820152602b60248201527f4772696e3a207377617020616d6f756e74206d7573742062652067726561746560448201527f72207468616e207a65726f00000000000000000000000000000000000000000060648201526084016103ed565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061121b5761121b611cb9565b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561128d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b19190611ce8565b816001815181106112c4576112c4611cb9565b6001600160a01b0392831660209182029290920101526008546112ea9130911685610c9c565b600854600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263791ac9479261134092889260009288929116904290600401611d05565b600060405180830381600087803b15801561135a57600080fd5b505af115801561136e573d6000803e3d6000fd5b5050600a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000600960009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190611d99565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150306001600160a01b0316600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152a9190611ce8565b6001600160a01b031603611585576000611546856103e5611c2f565b905060006115548383611c2f565b9050600082611565866103e8611c2f565b61156f9190611c1c565b905061157b8183611c46565b95505050506115ce565b6000611593856103e5611c2f565b905060006115a18483611c2f565b90506000826115b2856103e8611c2f565b6115bc9190611c1c565b90506115c88183611c46565b95505050505b5050919050565b6001600160a01b0383166116505760405162461bcd60e51b8152602060048201526024808201527f4772696e3a207472616e736665722066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0382166116cc5760405162461bcd60e51b815260206004820152602260248201527f4772696e3a207472616e7366657220746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0383166000908152600560205260409020548181101561175b5760405162461bcd60e51b815260206004820152602560248201527f4772696e3a207472616e7366657220616d6f756e74206578636565647320626160448201527f6c616e636500000000000000000000000000000000000000000000000000000060648201526084016103ed565b6117658282611bdb565b6001600160a01b03808616600090815260056020526040808220939093559085168152908120805484929061179b908490611c1c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e791815260200190565b60405180910390a350505050565b600080611800611936565b3060009081526005602052604081205491925061181b610946565b62ffffff169050806111d01480156118335750600082115b801561185b5750600a547501000000000000000000000000000000000000000000900460ff16155b1561186a576001935050505090565b82821015801561187a5750600081115b80156118955750436000908152600c60205260409020546002115b80156118bd5750600a547501000000000000000000000000000000000000000000900460ff16155b156118cc576001935050505090565b6000821180156118da575080155b80156118f55750436000908152600c60205260409020546002115b801561191d5750600a547501000000000000000000000000000000000000000000900460ff16155b1561192c576001935050505090565b6000935050505090565b60008061194260045490565b9050600061194e610946565b62ffffff169050806111d00361197d5761271061196c836064611c2f565b6119769190611c46565b9250505090565b80610e42036119945761271061196c836046611c2f565b80610aaa036119ab5761271061196c836032611c2f565b8061080b036119c25761271061196c83601e611c2f565b61271061196c83600f611c2f565b6001600160a01b03811681146119e557600080fd5b50565b6000602082840312156119fa57600080fd5b8135611a05816119d0565b9392505050565b600060208083528351808285015260005b81811015611a3957858101830151858201604001528201611a1d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060408385031215611a8b57600080fd5b8235611a96816119d0565b946020939093013593505050565b600080600060608486031215611ab957600080fd5b8335611ac4816119d0565b92506020840135611ad4816119d0565b929592945050506040919091013590565b60008060408385031215611af857600080fd5b8235611b03816119d0565b91506020830135611b13816119d0565b809150509250929050565b600060208284031215611b3057600080fd5b5051919050565b600060208284031215611b4957600080fd5b81518015158114611a0557600080fd5b600181811c90821680611b6d57607f821691505b602082108103611ba6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561064557610645611bac565b600080600060608486031215611c0357600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561064557610645611bac565b808202811582820484141761064557610645611bac565b600082611c7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cb257611cb2611bac565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611cfa57600080fd5b8151611a05816119d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d555784516001600160a01b031683529383019391830191600101611d30565b50506001600160a01b03969096166060850152505050608001529392505050565b80516dffffffffffffffffffffffffffff81168114611d9457600080fd5b919050565b600080600060608486031215611dae57600080fd5b611db784611d76565b9250611dc560208501611d76565b9150604084015163ffffffff81168114611dde57600080fd5b80915050925092509256fea2646970667358221220c225f0ca82ee3f6f7f498bcf422a014ea90780af79fc71693076526972d0c69f64736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106101025760003560e01c806370a082311161009c578063a9059cbb1161006e578063cb66667f11610056578063cb66667f146102ed578063dd62ed3e14610316578063e8078d941461035c57005b8063a9059cbb146102ad578063c816841b146102cd57005b806370a082311461021b578063715018a6146102515780638da5cb5b1461026657806395d89b411461029857005b806320800a00116100d557806320800a00146101a557806323b872dd146101ba578063313ce567146101da57806351bc3c851461020657005b8062ae3bf81461010b57806306fdde031461012b578063095ea7b31461015657806318160ddd1461018657005b3661010957005b005b34801561011757600080fd5b506101096101263660046119e8565b610371565b34801561013757600080fd5b506101406105a6565b60405161014d9190611a0c565b60405180910390f35b34801561016257600080fd5b50610176610171366004611a78565b610634565b604051901515815260200161014d565b34801561019257600080fd5b506004545b60405190815260200161014d565b3480156101b157600080fd5b5061010961064b565b3480156101c657600080fd5b506101766101d5366004611aa4565b61076b565b3480156101e657600080fd5b506003546101f49060ff1681565b60405160ff909116815260200161014d565b34801561021257600080fd5b5061010961082f565b34801561022757600080fd5b506101976102363660046119e8565b6001600160a01b031660009081526005602052604090205490565b34801561025d57600080fd5b506101096108b9565b34801561027257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b3480156102a457600080fd5b5061014061092c565b3480156102b957600080fd5b506101766102c8366004611a78565b610939565b3480156102d957600080fd5b50600954610280906001600160a01b031681565b3480156102f957600080fd5b50610302610946565b60405162ffffff909116815260200161014d565b34801561032257600080fd5b50610197610331366004611ae5565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561036857600080fd5b506101096109cb565b600a546001600160a01b031633146103f65760405162461bcd60e51b815260206004820152602160248201527f4f6e6c79207461782077616c6c65742063616e2072657363756520746f6b656e60448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190611b1e565b9050600081116104ce5760405162461bcd60e51b815260206004820152601360248201527f4e6f20746f6b656e7320746f207265736375650000000000000000000000000060448201526064016103ed565b600a546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e9190611b37565b50604080516001600160a01b0385168152602081018390527f891d905c747e7308f7e952ff603f2ac799bc5abc150b5792024a59b5c96273d2910160405180910390a1505050565b600180546105b390611b59565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611b59565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b505050505081565b6000610641338484610c9c565b5060015b92915050565b600a546001600160a01b031633146106a55760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79207461782077616c6c65742063616e2072657363756520455448000060448201526064016103ed565b47806106f35760405162461bcd60e51b815260206004820152601060248201527f4e6f2045544820746f207265736375650000000000000000000000000000000060448201526064016103ed565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561072d573d6000803e3d6000fd5b506040805160008152602081018390527f891d905c747e7308f7e952ff603f2ac799bc5abc150b5792024a59b5c96273d2910160405180910390a150565b6001600160a01b0383166000908152600660209081526040808320338452909152812054828110156108055760405162461bcd60e51b815260206004820152602760248201527f4772696e3a207472616e7366657220616d6f756e74206578636565647320616c60448201527f6c6f77616e63650000000000000000000000000000000000000000000000000060648201526084016103ed565b610810858585610df5565b610824853361081f8685611bdb565b610c9c565b506001949350505050565b600a546001600160a01b031633146108af5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207461782077616c6c65742063616e206d616e75616c20737761702060448201527f746178657300000000000000000000000000000000000000000000000000000060648201526084016103ed565b6108b76110e9565b565b336108cc6000546001600160a01b031690565b6001600160a01b0316146109225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ed565b6108b760006113a0565b600280546105b390611b59565b6000610641338484610df5565b6000670de0b6b3a7640000600b54101561096157506111d090565b671bc16d674ec80000600b54101561097a5750610e4290565b6729a2241af62c0000600b5410156109935750610aaa90565b673782dace9d900000600b5410156109ac575061080b90565b674563918244f40000600b5410156109c5575061043990565b50600090565b336109de6000546001600160a01b031690565b6001600160a01b031614610a345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ed565b600a5474010000000000000000000000000000000000000000900460ff1615610a9f5760405162461bcd60e51b815260206004820152601e60248201527f4772696e3a207472616e7366657220616c726561647920656e61626c6564000060448201526064016103ed565b600854610aba9030906001600160a01b031661081f60045490565b6008546001600160a01b031663f305d7194730610aec816001600160a01b031660009081526005602052604090205490565b600080610b016000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ba69190611bee565b50506009546008546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b3906044016020604051808303816000875af1158015610c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5a9190611b37565b50600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6001600160a01b038316610d185760405162461bcd60e51b815260206004820152602360248201527f4772696e3a20617070726f76652066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b038216610d945760405162461bcd60e51b815260206004820152602160248201527f4772696e3a20617070726f766520746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a5474010000000000000000000000000000000000000000900460ff1680610e2857506000546001600160a01b031633145b80610e3257503330145b80610e4757506008546001600160a01b031633145b610e935760405162461bcd60e51b815260206004820152601a60248201527f4772696e3a205472616e736665722069732064697361626c656400000000000060448201526064016103ed565b6000610e9d610946565b90508062ffffff16610e4203610f78576001600160a01b038316301480610ed157506009546001600160a01b038481169116145b80610ee457506001600160a01b03841630145b80610efc5750600a546001600160a01b038481169116145b80610f2c57506007546001600160a01b038416600090815260056020526040902054610f29908490611c1c565b11155b610f785760405162461bcd60e51b815260206004820152601560248201527f4772696e3a2062616c616e63652065786365656473000000000000000000000060448201526064016103ed565b60006001600160a01b038516301480610f9957506001600160a01b03841630145b80610fb15750600a546001600160a01b038681169116145b80610fc95750600a546001600160a01b038581169116145b15610fd65750600061103b565b6009546001600160a01b038681169116148015610ff8575060008262ffffff16115b1561103b5761271061100f62ffffff841685611c2f565b6110199190611c46565b905061102483611408565b600b60008282546110359190611c1c565b90915550505b60006110478285611bdb565b90506110548686836115d5565b8115611065576110658630846115d5565b6009546001600160a01b0386811691161480159061109157506009546001600160a01b03878116911614155b80156110ab5750600a546001600160a01b03878116911614155b80156110c55750600a546001600160a01b03868116911614155b80156110d457506110d46117f5565b156110e1576110e16110e9565b505050505050565b600a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055436000818152600c6020526040812080549161114483611c81565b90915550503060009081526005602052604081205490611162611936565b905080821115611170578091505b600082116111e65760405162461bcd60e51b815260206004820152602b60248201527f4772696e3a207377617020616d6f756e74206d7573742062652067726561746560448201527f72207468616e207a65726f00000000000000000000000000000000000000000060648201526084016103ed565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061121b5761121b611cb9565b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561128d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b19190611ce8565b816001815181106112c4576112c4611cb9565b6001600160a01b0392831660209182029290920101526008546112ea9130911685610c9c565b600854600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263791ac9479261134092889260009288929116904290600401611d05565b600060405180830381600087803b15801561135a57600080fd5b505af115801561136e573d6000803e3d6000fd5b5050600a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000600960009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190611d99565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150306001600160a01b0316600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152a9190611ce8565b6001600160a01b031603611585576000611546856103e5611c2f565b905060006115548383611c2f565b9050600082611565866103e8611c2f565b61156f9190611c1c565b905061157b8183611c46565b95505050506115ce565b6000611593856103e5611c2f565b905060006115a18483611c2f565b90506000826115b2856103e8611c2f565b6115bc9190611c1c565b90506115c88183611c46565b95505050505b5050919050565b6001600160a01b0383166116505760405162461bcd60e51b8152602060048201526024808201527f4772696e3a207472616e736665722066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0382166116cc5760405162461bcd60e51b815260206004820152602260248201527f4772696e3a207472616e7366657220746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103ed565b6001600160a01b0383166000908152600560205260409020548181101561175b5760405162461bcd60e51b815260206004820152602560248201527f4772696e3a207472616e7366657220616d6f756e74206578636565647320626160448201527f6c616e636500000000000000000000000000000000000000000000000000000060648201526084016103ed565b6117658282611bdb565b6001600160a01b03808616600090815260056020526040808220939093559085168152908120805484929061179b908490611c1c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e791815260200190565b60405180910390a350505050565b600080611800611936565b3060009081526005602052604081205491925061181b610946565b62ffffff169050806111d01480156118335750600082115b801561185b5750600a547501000000000000000000000000000000000000000000900460ff16155b1561186a576001935050505090565b82821015801561187a5750600081115b80156118955750436000908152600c60205260409020546002115b80156118bd5750600a547501000000000000000000000000000000000000000000900460ff16155b156118cc576001935050505090565b6000821180156118da575080155b80156118f55750436000908152600c60205260409020546002115b801561191d5750600a547501000000000000000000000000000000000000000000900460ff16155b1561192c576001935050505090565b6000935050505090565b60008061194260045490565b9050600061194e610946565b62ffffff169050806111d00361197d5761271061196c836064611c2f565b6119769190611c46565b9250505090565b80610e42036119945761271061196c836046611c2f565b80610aaa036119ab5761271061196c836032611c2f565b8061080b036119c25761271061196c83601e611c2f565b61271061196c83600f611c2f565b6001600160a01b03811681146119e557600080fd5b50565b6000602082840312156119fa57600080fd5b8135611a05816119d0565b9392505050565b600060208083528351808285015260005b81811015611a3957858101830151858201604001528201611a1d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060408385031215611a8b57600080fd5b8235611a96816119d0565b946020939093013593505050565b600080600060608486031215611ab957600080fd5b8335611ac4816119d0565b92506020840135611ad4816119d0565b929592945050506040919091013590565b60008060408385031215611af857600080fd5b8235611b03816119d0565b91506020830135611b13816119d0565b809150509250929050565b600060208284031215611b3057600080fd5b5051919050565b600060208284031215611b4957600080fd5b81518015158114611a0557600080fd5b600181811c90821680611b6d57607f821691505b602082108103611ba6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561064557610645611bac565b600080600060608486031215611c0357600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561064557610645611bac565b808202811582820484141761064557610645611bac565b600082611c7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cb257611cb2611bac565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611cfa57600080fd5b8151611a05816119d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d555784516001600160a01b031683529383019391830191600101611d30565b50506001600160a01b03969096166060850152505050608001529392505050565b80516dffffffffffffffffffffffffffff81168114611d9457600080fd5b919050565b600080600060608486031215611dae57600080fd5b611db784611d76565b9250611dc560208501611d76565b9150604084015163ffffffff81168114611dde57600080fd5b80915050925092509256fea2646970667358221220c225f0ca82ee3f6f7f498bcf422a014ea90780af79fc71693076526972d0c69f64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

6325:7701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11341:397;;;;;;;;;;-1:-1:-1;11341:397:0;;;;;:::i;:::-;;:::i;1571:18::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2619:192;;;;;;;;;;-1:-1:-1;2619:192:0;;;;;:::i;:::-;;:::i;:::-;;;1522:14:1;;1515:22;1497:41;;1485:2;1470:18;2619:192:0;1357:187:1;1962:108:0;;;;;;;;;;-1:-1:-1;2050:12:0;;1962:108;;;1695:25:1;;;1683:2;1668:18;1962:108:0;1549:177:1;11020:313:0;;;;;;;;;;;;;:::i;2819:484::-;;;;;;;;;;-1:-1:-1;2819:484:0;;;;;:::i;:::-;;:::i;1623:21::-;;;;;;;;;;-1:-1:-1;1623:21:0;;;;;;;;;;;2364:4:1;2352:17;;;2334:36;;2322:2;2307:18;1623:21:0;2192:184:1;11746:181:0;;;;;;;;;;;;;:::i;2078:143::-;;;;;;;;;;-1:-1:-1;2078:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;2195:18:0;2168:7;2195:18;;;:9;:18;;;;;;;2078:143;13601:95;;;;;;;;;;;;;:::i;1111:87::-;;;;;;;;;;-1:-1:-1;1157:7:0;1184:6;-1:-1:-1;;;;;1184:6:0;1111:87;;;-1:-1:-1;;;;;2545:55:1;;;2527:74;;2515:2;2500:18;1111:87:0;2381:226:1;1596:20:0;;;;;;;;;;;;;:::i;2229:198::-;;;;;;;;;;-1:-1:-1;2229:198:0;;;;;:::i;:::-;;:::i;6457:26::-;;;;;;;;;;-1:-1:-1;6457:26:0;;;;-1:-1:-1;;;;;6457:26:0;;;8377:449;;;;;;;;;;;;;:::i;:::-;;;2786:8:1;2774:21;;;2756:40;;2744:2;2729:18;8377:449:0;2612:190:1;2435:176:0;;;;;;;;;;-1:-1:-1;2435:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;2576:18:0;;;2549:7;2576:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2435:176;9623:537;;;;;;;;;;;;;:::i;11341:397::-;11427:10;;-1:-1:-1;;;;;11427:10:0;11413;:24;11405:70;;;;-1:-1:-1;;;11405:70:0;;3402:2:1;11405:70:0;;;3384:21:1;3441:2;3421:18;;;3414:30;3480:34;3460:18;;;3453:62;3551:3;3531:18;;;3524:31;3572:19;;11405:70:0;;;;;;;;;11550:30;;;;;11574:4;11550:30;;;2527:74:1;11508:12:0;;11486;;-1:-1:-1;;;;;11550:15:0;;;;;2500:18:1;;11550:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11532:48;;11609:1;11599:7;:11;11591:43;;;;-1:-1:-1;;;11591:43:0;;3993:2:1;11591:43:0;;;3975:21:1;4032:2;4012:18;;;4005:30;4071:21;4051:18;;;4044:49;4110:18;;11591:43:0;3791:343:1;11591:43:0;11660:10;;11645:35;;;;;-1:-1:-1;;;;;11660:10:0;;;11645:35;;;4313:74:1;4403:18;;;4396:34;;;11645:14:0;;;;;;4286:18:1;;11645:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11696:34:0;;;-1:-1:-1;;;;;4331:55:1;;4313:74;;4418:2;4403:18;;4396:34;;;11696::0;;4286:18:1;11696:34:0;;;;;;;11394:344;;11341:397;:::o;1571:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2619:192::-;2727:4;2744:37;2753:10;2765:7;2774:6;2744:8;:37::i;:::-;-1:-1:-1;2799:4:0;2619:192;;;;;:::o;11020:313::-;11083:10;;-1:-1:-1;;;;;11083:10:0;11069;:24;11061:67;;;;-1:-1:-1;;;11061:67:0;;5367:2:1;11061:67:0;;;5349:21:1;5406:2;5386:18;;;5379:30;5445:32;5425:18;;;5418:60;5495:18;;11061:67:0;5165:354:1;11061:67:0;11157:21;11197:11;11189:40;;;;-1:-1:-1;;;11189:40:0;;5726:2:1;11189:40:0;;;5708:21:1;5765:2;5745:18;;;5738:30;5804:18;5784;;;5777:46;5840:18;;11189:40:0;5524:340:1;11189:40:0;11248:10;;11240:37;;-1:-1:-1;;;;;11248:10:0;;;;11240:37;;;;;11269:7;;11248:10;11240:37;11248:10;11240:37;11269:7;11248:10;11240:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11293:32:0;;;11313:1;4313:74:1;;4418:2;4403:18;;4396:34;;;11293:32:0;;4286:18:1;11293:32:0;;;;;;;11050:283;11020:313::o;2819:484::-;-1:-1:-1;;;;;3003:19:0;;2959:4;3003:19;;;:11;:19;;;;;;;;3023:10;3003:31;;;;;;;;3067:26;;;;3045:115;;;;-1:-1:-1;;;3045:115:0;;6071:2:1;3045:115:0;;;6053:21:1;6110:2;6090:18;;;6083:30;6149:34;6129:18;;;6122:62;6220:9;6200:18;;;6193:37;6247:19;;3045:115:0;5869:403:1;3045:115:0;3171:36;3181:6;3189:9;3200:6;3171:9;:36::i;:::-;3218:55;3227:6;3235:10;3247:25;3266:6;3247:16;:25;:::i;:::-;3218:8;:55::i;:::-;-1:-1:-1;3291:4:0;;2819:484;-1:-1:-1;;;;2819:484:0:o;11746:181::-;11824:10;;-1:-1:-1;;;;;11824:10:0;11810;:24;11788:111;;;;-1:-1:-1;;;11788:111:0;;6801:2:1;11788:111:0;;;6783:21:1;6840:2;6820:18;;;6813:30;6879:34;6859:18;;;6852:62;6950:7;6930:18;;;6923:35;6975:19;;11788:111:0;6599:401:1;11788:111:0;11910:9;:7;:9::i;:::-;11746:181::o;13601:95::-;1257:10;1246:7;1157;1184:6;-1:-1:-1;;;;;1184:6:0;;1111:87;1246:7;-1:-1:-1;;;;;1246:21:0;;1238:66;;;;-1:-1:-1;;;1238:66:0;;7207:2:1;1238:66:0;;;7189:21:1;;;7226:18;;;7219:30;7285:34;7265:18;;;7258:62;7337:18;;1238:66:0;7005:356:1;1238:66:0;13658:30:::1;13685:1;13658:18;:30::i;1596:20::-:0;;;;;;;:::i;2229:198::-;2340:4;2357:40;2367:10;2379:9;2390:6;2357:9;:40::i;8377:449::-;8420:6;8455:7;8443:9;;:19;8439:380;;;-1:-1:-1;8486:4:0;;8377:449::o;8439:380::-;8524:7;8512:9;;:19;8508:311;;;-1:-1:-1;8555:4:0;;8377:449::o;8508:311::-;8593:7;8581:9;;:19;8577:242;;;-1:-1:-1;8624:4:0;;8377:449::o;8577:242::-;8662:7;8650:9;;:19;8646:173;;;-1:-1:-1;8693:4:0;;8377:449::o;8646:173::-;8731:7;8719:9;;:19;8715:104;;;-1:-1:-1;8762:4:0;;8377:449::o;8715:104::-;-1:-1:-1;8806:1:0;;8377:449::o;9623:537::-;1257:10;1246:7;1157;1184:6;-1:-1:-1;;;;;1184:6:0;;1111:87;1246:7;-1:-1:-1;;;;;1246:21:0;;1238:66;;;;-1:-1:-1;;;1238:66:0;;7207:2:1;1238:66:0;;;7189:21:1;;;7226:18;;;7219:30;7285:34;7265:18;;;7258:62;7337:18;;1238:66:0;7005:356:1;1238:66:0;9686:15:::1;::::0;;;::::1;;;9685:16;9677:59;;;::::0;-1:-1:-1;;;9677:59:0;;7568:2:1;9677:59:0::1;::::0;::::1;7550:21:1::0;7607:2;7587:18;;;7580:30;7646:32;7626:18;;;7619:60;7696:18;;9677:59:0::1;7366:354:1::0;9677:59:0::1;9779:13;::::0;9747:62:::1;::::0;9764:4:::1;::::0;-1:-1:-1;;;;;9779:13:0::1;9795;2050:12:::0;;;1962:108;9747:62:::1;9820:13;::::0;-1:-1:-1;;;;;9820:13:0::1;:29;9857:21;9902:4;9922:24;9902:4:::0;-1:-1:-1;;;;;2195:18:0;2168:7;2195:18;;;:9;:18;;;;;;;2078:143;9922:24:::1;9961:1;9977::::0;9993:7:::1;1157::::0;1184:6;-1:-1:-1;;;;;1184:6:0;;1111:87;9993:7:::1;9820:221;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;8107:15:1;;;9820:221:0::1;::::0;::::1;8089:34:1::0;8139:18;;;8132:34;;;;8182:18;;;8175:34;;;;8225:18;;;8218:34;8289:15;;;8268:19;;;8261:44;10015:15:0::1;8321:19:1::0;;;8314:35;8000:19;;9820:221:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10059:11:0::1;::::0;10088:13:::1;::::0;10052:67:::1;::::0;;;;-1:-1:-1;;;;;10088:13:0;;::::1;10052:67;::::0;::::1;4313:74:1::0;10104:14:0::1;4403:18:1::0;;;4396:34;10059:11:0;::::1;::::0;-1:-1:-1;10052:27:0::1;::::0;4286:18:1;;10052:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10130:15:0::1;:22:::0;;;::::1;::::0;::::1;::::0;;9623:537::o;3931:378::-;-1:-1:-1;;;;;4067:19:0;;4059:67;;;;-1:-1:-1;;;4059:67:0;;8873:2:1;4059:67:0;;;8855:21:1;8912:2;8892:18;;;8885:30;8951:34;8931:18;;;8924:62;9022:5;9002:18;;;8995:33;9045:19;;4059:67:0;8671:399:1;4059:67:0;-1:-1:-1;;;;;4145:21:0;;4137:67;;;;-1:-1:-1;;;4137:67:0;;9277:2:1;4137:67:0;;;9259:21:1;9316:2;9296:18;;;9289:30;9355:34;9335:18;;;9328:62;9426:3;9406:18;;;9399:31;9447:19;;4137:67:0;9075:397:1;4137:67:0;-1:-1:-1;;;;;4217:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4269:32;;1695:25:1;;;4269:32:0;;1668:18:1;4269:32:0;;;;;;;3931:378;;;:::o;6895:1474::-;11999:15;;;;;;;;:57;;-1:-1:-1;1157:7:0;1184:6;-1:-1:-1;;;;;1184:6:0;12035:10;:21;11999:57;:105;;;-1:-1:-1;12077:10:0;12099:4;12077:27;11999:105;:162;;;-1:-1:-1;12147:13:0;;-1:-1:-1;;;;;12147:13:0;12125:10;:36;11999:162;11977:238;;;;-1:-1:-1;;;11977:238:0;;9679:2:1;11977:238:0;;;9661:21:1;9718:2;9698:18;;;9691:30;9757:28;9737:18;;;9730:56;9803:18;;11977:238:0;9477:350:1;11977:238:0;7048:14:::1;7065:12;:10;:12::i;:::-;7048:29;;7092:7;:15;;7103:4;7092:15:::0;7088:384:::1;;-1:-1:-1::0;;;;;7150:26:0;::::1;7171:4;7150:26;::::0;:84:::1;;-1:-1:-1::0;7222:11:0::1;::::0;-1:-1:-1;;;;;7201:33:0;;::::1;7222:11:::0;::::1;7201:33;7150:84;:132;;;-1:-1:-1::0;;;;;;7259:23:0;::::1;7277:4;7259:23;7150:132;:180;;;-1:-1:-1::0;7320:10:0::1;::::0;-1:-1:-1;;;;;7307:23:0;;::::1;7320:10:::0;::::1;7307:23;7150:180;:253;;;-1:-1:-1::0;7388:15:0::1;::::0;-1:-1:-1;;;;;7355:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:29:::1;::::0;7378:6;;7355:29:::1;:::i;:::-;:48;;7150:253;7124:336;;;::::0;-1:-1:-1;;;7124:336:0;;10164:2:1;7124:336:0::1;::::0;::::1;10146:21:1::0;10203:2;10183:18;;;10176:30;10242:23;10222:18;;;10215:51;10283:18;;7124:336:0::1;9962:345:1::0;7124:336:0::1;7482:17;-1:-1:-1::0;;;;;7532:23:0;::::1;7550:4;7532:23;::::0;:66:::1;;-1:-1:-1::0;;;;;;7572:26:0;::::1;7593:4;7572:26;7532:66;:103;;;-1:-1:-1::0;7625:10:0::1;::::0;-1:-1:-1;;;;;7615:20:0;;::::1;7625:10:::0;::::1;7615:20;7532:103;:143;;;-1:-1:-1::0;7665:10:0::1;::::0;-1:-1:-1;;;;;7652:23:0;;::::1;7665:10:::0;::::1;7652:23;7532:143;7514:374;;;-1:-1:-1::0;7714:1:0::1;7514:374;;;7747:11;::::0;-1:-1:-1;;;;;7737:21:0;;::::1;7747:11:::0;::::1;7737:21;:36:::0;::::1;;;;7772:1;7762:7;:11;;;7737:36;7733:155;;;7823:5;7803:16;;::::0;::::1;:6:::0;:16:::1;:::i;:::-;7802:26;;;;:::i;:::-;7790:38;;7856:20;7869:6;7856:12;:20::i;:::-;7843:9;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;7733:155:0::1;7898:22;7923:18;7932:9:::0;7923:6;:18:::1;:::i;:::-;7898:43;;7952:50;7968:6;7976:9;7987:14;7952:15;:50::i;:::-;8017:13:::0;;8013:95:::1;;8047:49;8063:6;8079:4;8086:9;8047:15;:49::i;:::-;8149:11;::::0;-1:-1:-1;;;;;8136:24:0;;::::1;8149:11:::0;::::1;8136:24;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;8187:11:0::1;::::0;-1:-1:-1;;;;;8177:21:0;;::::1;8187:11:::0;::::1;8177:21;;8136:62;:99;;;;-1:-1:-1::0;8225:10:0::1;::::0;-1:-1:-1;;;;;8215:20:0;;::::1;8225:10:::0;::::1;8215:20;;8136:99;:139;;;;-1:-1:-1::0;8265:10:0::1;::::0;-1:-1:-1;;;;;8252:23:0;;::::1;8265:10:::0;::::1;8252:23;;8136:139;:178;;;;;8292:22;:20;:22::i;:::-;8118:244;;;8341:9;:7;:9::i;:::-;7037:1332;;;6895:1474:::0;;;:::o;10168:844::-;10207:7;:14;;;;;;;;10255:12;10207:14;10278:28;;;:14;:28;;;;;:30;;;;;;:::i;:::-;;;;-1:-1:-1;;10359:4:0;10319:19;2195:18;;;:9;:18;;;;;;;10394:16;:14;:16::i;:::-;10376:34;;10439:7;10425:11;:21;10421:75;;;10477:7;10463:21;;10421:75;10528:1;10514:11;:15;10506:71;;;;-1:-1:-1;;;10506:71:0;;11166:2:1;10506:71:0;;;11148:21:1;11205:2;11185:18;;;11178:30;11244:34;11224:18;;;11217:62;11315:13;11295:18;;;11288:41;11346:19;;10506:71:0;10964:407:1;10506:71:0;10614:16;;;10628:1;10614:16;;;;;;;;10590:21;;10614:16;;;;;;;;;;-1:-1:-1;10614:16:0;10590:40;;10659:4;10641;10646:1;10641:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10641:23:0;;;:7;;;;;;;;;;:23;;;;10685:13;;:20;;;;;;;;:13;;;;;:18;;:20;;;;;10641:7;;10685:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10675:4;10680:1;10675:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10675:30:0;;;:7;;;;;;;;;:30;10748:13;;10716:60;;10733:4;;10748:13;10764:11;10716:8;:60::i;:::-;10787:13;;10927:10;;10787:191;;;;;-1:-1:-1;;;;;10787:13:0;;;;:64;;:191;;10866:11;;10787:13;;10908:4;;10927:10;;;10952:15;;10787:191;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10989:7:0;:15;;;;;;-1:-1:-1;;;;;;10168:844:0:o;1332:191::-;1406:16;1425:6;;-1:-1:-1;;;;;1442:17:0;;;;;;;;;;1475:40;;1425:6;;;;;;;1475:40;;1406:16;1475:40;1395:128;1332:191;:::o;8834:781::-;8916:17;8947:16;8965;9002:11;;;;;;;;;-1:-1:-1;;;;;9002:11:0;-1:-1:-1;;;;;8987:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8946:96;;;;;;;;;9107:4;-1:-1:-1;;;;;9059:53:0;9074:11;;;;;;;;;-1:-1:-1;;;;;9074:11:0;-1:-1:-1;;;;;9059:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9059:53:0;;9055:553;;9129:20;9152:17;:11;9166:3;9152:17;:::i;:::-;9129:40;-1:-1:-1;9184:14:0;9201:26;9219:8;9129:40;9201:26;:::i;:::-;9184:43;-1:-1:-1;9242:16:0;9281:15;9262;:8;9273:4;9262:15;:::i;:::-;9261:35;;;;:::i;:::-;9242:54;-1:-1:-1;9323:23:0;9242:54;9323:9;:23;:::i;:::-;9311:35;;9114:244;;;9055:553;;;9379:20;9402:17;:11;9416:3;9402:17;:::i;:::-;9379:40;-1:-1:-1;9434:14:0;9451:26;9469:8;9379:40;9451:26;:::i;:::-;9434:43;-1:-1:-1;9492:16:0;9531:15;9512;:8;9523:4;9512:15;:::i;:::-;9511:35;;;;:::i;:::-;9492:54;-1:-1:-1;9573:23:0;9492:54;9573:9;:23;:::i;:::-;9561:35;;9364:244;;;9055:553;8935:680;;8834:781;;;:::o;3311:612::-;-1:-1:-1;;;;;3451:20:0;;3443:69;;;;-1:-1:-1;;;3443:69:0;;13891:2:1;3443:69:0;;;13873:21:1;13930:2;13910:18;;;13903:30;13969:34;13949:18;;;13942:62;14040:6;14020:18;;;14013:34;14064:19;;3443:69:0;13689:400:1;3443:69:0;-1:-1:-1;;;;;3531:23:0;;3523:70;;;;-1:-1:-1;;;3523:70:0;;14296:2:1;3523:70:0;;;14278:21:1;14335:2;14315:18;;;14308:30;14374:34;14354:18;;;14347:62;14445:4;14425:18;;;14418:32;14467:19;;3523:70:0;14094:398:1;3523:70:0;-1:-1:-1;;;;;3630:17:0;;3606:21;3630:17;;;:9;:17;;;;;;3680:23;;;;3658:110;;;;-1:-1:-1;;;3658:110:0;;14699:2:1;3658:110:0;;;14681:21:1;14738:2;14718:18;;;14711:30;14777:34;14757:18;;;14750:62;14848:7;14828:18;;;14821:35;14873:19;;3658:110:0;14497:401:1;3658:110:0;3799:22;3815:6;3799:13;:22;:::i;:::-;-1:-1:-1;;;;;3779:17:0;;;;;;;:9;:17;;;;;;:42;;;;3832:20;;;;;;;;:30;;3856:6;;3779:17;3832:30;;3856:6;;3832:30;:::i;:::-;;;;;;;;3897:9;-1:-1:-1;;;;;3880:35:0;3889:6;-1:-1:-1;;;;;3880:35:0;;3908:6;3880:35;;;;1695:25:1;;1683:2;1668:18;;1549:177;3880:35:0;;;;;;;;3432:491;3311:612;;;:::o;12241:745::-;12296:4;12313:15;12331:16;:14;:16::i;:::-;12397:4;12358:18;2195;;;:9;:18;;;;;;12313:34;;-1:-1:-1;12432:12:0;:10;:12::i;:::-;12414:30;;;;12459:7;12470:4;12459:15;:33;;;;;12491:1;12478:10;:14;12459:33;:53;;;;-1:-1:-1;12496:7:0;;;;;;;:16;12459:53;12455:501;;;12536:4;12529:11;;;;;12241:745;:::o;12455:501::-;12590:7;12576:10;:21;;:49;;;;;12624:1;12614:7;:11;12576:49;:98;;;;-1:-1:-1;12657:12:0;12642:28;;;;:14;:28;;;;;;12673:1;-1:-1:-1;12576:98:0;:131;;;;-1:-1:-1;12691:7:0;;;;;;;:16;12576:131;12558:398;;;12741:4;12734:11;;;;;12241:745;:::o;12558:398::-;12794:1;12781:10;:14;:43;;;;-1:-1:-1;12812:12:0;;12781:43;:92;;;;-1:-1:-1;12856:12:0;12841:28;;;;:14;:28;;;;;;12872:1;-1:-1:-1;12781:92:0;:125;;;;-1:-1:-1;12890:7:0;;;;;;;:16;12781:125;12763:193;;;12940:4;12933:11;;;;;12241:745;:::o;12763:193::-;12973:5;12966:12;;;;;12241:745;:::o;12992:601::-;13041:15;13069:20;13092:13;2050:12;;;1962:108;13092:13;13069:36;;13116:15;13134:12;:10;:12::i;:::-;13116:30;;;;13161:7;13172:4;13161:15;13157:429;;13226:5;13204:18;:12;13219:3;13204:18;:::i;:::-;13203:28;;;;:::i;:::-;13193:38;;13058:535;;12992:601;:::o;13157:429::-;13253:7;13264:4;13253:15;13249:337;;13317:5;13296:17;:12;13311:2;13296:17;:::i;13249:337::-;13344:7;13355:4;13344:15;13340:246;;13408:5;13387:17;:12;13402:2;13387:17;:::i;13340:246::-;13435:7;13446:4;13435:15;13431:155;;13499:5;13478:17;:12;13493:2;13478:17;:::i;13431:155::-;13569:5;13548:17;:12;13563:2;13548:17;:::i;14:154:1:-;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:247::-;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;:::-;409:5;173:247;-1:-1:-1;;;173:247:1:o;425:607::-;537:4;566:2;595;584:9;577:21;627:6;621:13;670:6;665:2;654:9;650:18;643:34;695:1;705:140;719:6;716:1;713:13;705:140;;;814:14;;;810:23;;804:30;780:17;;;799:2;776:26;769:66;734:10;;705:140;;;709:3;894:1;889:2;880:6;869:9;865:22;861:31;854:42;1023:2;953:66;948:2;940:6;936:15;932:88;921:9;917:104;913:113;905:121;;;;425:607;;;;:::o;1037:315::-;1105:6;1113;1166:2;1154:9;1145:7;1141:23;1137:32;1134:52;;;1182:1;1179;1172:12;1134:52;1221:9;1208:23;1240:31;1265:5;1240:31;:::i;:::-;1290:5;1342:2;1327:18;;;;1314:32;;-1:-1:-1;;;1037:315:1:o;1731:456::-;1808:6;1816;1824;1877:2;1865:9;1856:7;1852:23;1848:32;1845:52;;;1893:1;1890;1883:12;1845:52;1932:9;1919:23;1951:31;1976:5;1951:31;:::i;:::-;2001:5;-1:-1:-1;2058:2:1;2043:18;;2030:32;2071:33;2030:32;2071:33;:::i;:::-;1731:456;;2123:7;;-1:-1:-1;;;2177:2:1;2162:18;;;;2149:32;;1731:456::o;2807:388::-;2875:6;2883;2936:2;2924:9;2915:7;2911:23;2907:32;2904:52;;;2952:1;2949;2942:12;2904:52;2991:9;2978:23;3010:31;3035:5;3010:31;:::i;:::-;3060:5;-1:-1:-1;3117:2:1;3102:18;;3089:32;3130:33;3089:32;3130:33;:::i;:::-;3182:7;3172:17;;;2807:388;;;;;:::o;3602:184::-;3672:6;3725:2;3713:9;3704:7;3700:23;3696:32;3693:52;;;3741:1;3738;3731:12;3693:52;-1:-1:-1;3764:16:1;;3602:184;-1:-1:-1;3602:184:1:o;4441:277::-;4508:6;4561:2;4549:9;4540:7;4536:23;4532:32;4529:52;;;4577:1;4574;4567:12;4529:52;4609:9;4603:16;4662:5;4655:13;4648:21;4641:5;4638:32;4628:60;;4684:1;4681;4674:12;4723:437;4802:1;4798:12;;;;4845;;;4866:61;;4920:4;4912:6;4908:17;4898:27;;4866:61;4973:2;4965:6;4962:14;4942:18;4939:38;4936:218;;5010:77;5007:1;5000:88;5111:4;5108:1;5101:15;5139:4;5136:1;5129:15;4936:218;;4723:437;;;:::o;6277:184::-;6329:77;6326:1;6319:88;6426:4;6423:1;6416:15;6450:4;6447:1;6440:15;6466:128;6533:9;;;6554:11;;;6551:37;;;6568:18;;:::i;8360:306::-;8448:6;8456;8464;8517:2;8505:9;8496:7;8492:23;8488:32;8485:52;;;8533:1;8530;8523:12;8485:52;8562:9;8556:16;8546:26;;8612:2;8601:9;8597:18;8591:25;8581:35;;8656:2;8645:9;8641:18;8635:25;8625:35;;8360:306;;;;;:::o;9832:125::-;9897:9;;;9918:10;;;9915:36;;;9931:18;;:::i;10312:168::-;10385:9;;;10416;;10433:15;;;10427:22;;10413:37;10403:71;;10454:18;;:::i;10485:274::-;10525:1;10551;10541:189;;10586:77;10583:1;10576:88;10687:4;10684:1;10677:15;10715:4;10712:1;10705:15;10541:189;-1:-1:-1;10744:9:1;;10485:274::o;10764:195::-;10803:3;10834:66;10827:5;10824:77;10821:103;;10904:18;;:::i;:::-;-1:-1:-1;10951:1:1;10940:13;;10764:195::o;11565:184::-;11617:77;11614:1;11607:88;11714:4;11711:1;11704:15;11738:4;11735:1;11728:15;11754:251;11824:6;11877:2;11865:9;11856:7;11852:23;11848:32;11845:52;;;11893:1;11890;11883:12;11845:52;11925:9;11919:16;11944:31;11969:5;11944:31;:::i;12010:1026::-;12272:4;12320:3;12309:9;12305:19;12351:6;12340:9;12333:25;12377:2;12415:6;12410:2;12399:9;12395:18;12388:34;12458:3;12453:2;12442:9;12438:18;12431:31;12482:6;12517;12511:13;12548:6;12540;12533:22;12586:3;12575:9;12571:19;12564:26;;12625:2;12617:6;12613:15;12599:29;;12646:1;12656:218;12670:6;12667:1;12664:13;12656:218;;;12735:13;;-1:-1:-1;;;;;12731:62:1;12719:75;;12849:15;;;;12814:12;;;;12692:1;12685:9;12656:218;;;-1:-1:-1;;;;;;;12930:55:1;;;;12925:2;12910:18;;12903:83;-1:-1:-1;;;13017:3:1;13002:19;12995:35;12891:3;12010:1026;-1:-1:-1;;;12010:1026:1:o;13041:188::-;13120:13;;13173:30;13162:42;;13152:53;;13142:81;;13219:1;13216;13209:12;13142:81;13041:188;;;:::o;13234:450::-;13321:6;13329;13337;13390:2;13378:9;13369:7;13365:23;13361:32;13358:52;;;13406:1;13403;13396:12;13358:52;13429:40;13459:9;13429:40;:::i;:::-;13419:50;;13488:49;13533:2;13522:9;13518:18;13488:49;:::i;:::-;13478:59;;13580:2;13569:9;13565:18;13559:25;13624:10;13617:5;13613:22;13606:5;13603:33;13593:61;;13650:1;13647;13640:12;13593:61;13673:5;13663:15;;;13234:450;;;;;:::o

Swarm Source

ipfs://c225f0ca82ee3f6f7f498bcf422a014ea90780af79fc71693076526972d0c69f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.