ETH Price: $3,293.81 (-1.82%)

Token

OmniTensor (OMNIT)
 

Overview

Max Total Supply

1,000,000,000 OMNIT

Holders

581

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,214.423906448112082584 OMNIT

Value
$0.00
0x52a845f0cfa9d0f7c532bca5defc123c71c5248e
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:
OmniTensor

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-01
*/

// SPDX-License-Identifier: MIT
/*
     ____                  _ ______                          
    / __ \____ ___  ____  (_)_  __/__  ____  _________  _____
   / / / / __ `__ \/ __ \/ / / / / _ \/ __ \/ ___/ __ \/ ___/
  / /_/ / / / / / / / / / / / / /  __/ / / (__  ) /_/ / /    
  \____/_/ /_/ /_/_/ /_/_/ /_/  \___/_/ /_/____/\____/_/    

  Website:  https://omnitensor.io/
  X:        https://x.com/OmniTensor/
  Telegram: https://t.me/OmniTensor/
  Github:   https://github.com/omnitensor/
  Docs:     https://docs.omnitensor.io/
  Explorer: https://explorer.omnitensor.io/

*/

pragma solidity 0.8.20;

interface IERC20 {
    event Transfer(address indexed sender, address indexed recipient, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    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);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _contractOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * Constructor sets the deployer as the initial owner of the contract.
     */
    constructor() {
        address msgSender = _msgSender();
        _contractOwner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_contractOwner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * Transfers ownership to a new address.
     * newOwner cannot be a zero address.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _updateOwnership(newOwner);
    }

    function _updateOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_contractOwner, newOwner);
        _contractOwner = newOwner;
    }

    /**
     * Renounces ownership, making the contract ownerless.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_contractOwner, address(0));
        _contractOwner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 tokenAmount,
        uint256 minETHAmount,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint tokenDesired,
        uint tokenMin,
        uint ethMin,
        address to,
        uint deadline
    ) external payable returns (uint tokenAmount, uint ethAmount, uint liquidity);
}

contract OmniTensor is Context, IERC20, Ownable {
    string private constant _tokenName = "OmniTensor";
    string private constant _tokenSymbol = "OMNIT";
    uint8 private constant _tokenDecimals = 18;
    uint256 private constant _totalSupply = 1000000000 * 10**_tokenDecimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _excludedAccounts; // Track excluded accounts for fees or limits

    uint256 private constant _minSwapTokens = 100000 * 10**_tokenDecimals; // Minimum tokens to trigger swap
    uint256 private _maxSwapTokens = 5000000 * 10**_tokenDecimals; // Maximum tokens to swap at once

    uint256 public maxTxValue = 5000000 * 10**_tokenDecimals; // Max transaction value allowed
    uint256 public maxWalletHoldings = 10000000 * 10**_tokenDecimals; // Max wallet balance allowed

    uint256 private _launchBlock;
    uint256 buyFeeRate = 30; // Buy transaction fee rate (percentage)
    uint256 sellFeeRate = 30; // Sell transaction fee rate (percentage)

    IUniswapV2Router02 private _uniswapV2Router;
    address public uniswapV2Pair;
    address OmegaWallet; // Wallet for specific allocation
    address GammaWallet;
    address BetaWallet;
    address AlphaWallet;

    bool private _isTradingActive = false; // Flag to check if trading is active

    /**
     * Constructor initializes wallets and assigns the total token supply to the contract deployer.
     */
    constructor() {
        OmegaWallet = 0x891C76B4729b8bddAB00FD5deCd419FB9f33BEdF;
        GammaWallet = 0xBd92bF5d4f7d1E4E8f3B3E99F99738B9aEEfCC55;
        BetaWallet = 0xca9Ca67a79a23681A6A13C55724128D023F6A953;
        AlphaWallet = 0x2F6D0A6B2bC5e219eb9a288F63048b911648B9Aa;

        _balances[msg.sender] = _totalSupply;
        _excludedAccounts[msg.sender] = 1;
        _excludedAccounts[address(this)] = 1;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public pure returns (string memory) {
        return _tokenName;
    }

    function symbol() public pure returns (string memory) {
        return _tokenSymbol;
    }

    function decimals() public pure returns (uint8) {
        return _tokenDecimals;
    }

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

    /**
     * Returns current buy and sell tax rates.
     */
    function getFeeRates() external view returns (uint256 buyTax, uint256 sellTax) {
        buyTax = buyFeeRate;
        sellTax = sellFeeRate;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _setAllowance(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _setAllowance(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function _setAllowance(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * Starts trading by setting up Uniswap pair and enabling liquidity.
     */
    function startTrading() external onlyOwner {
        require(!_isTradingActive, "Trading is already enabled");
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAllowance(address(this), address(_uniswapV2Router), _totalSupply);
        
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        _isTradingActive = true;
        _launchBlock = block.number;
    }

    /**
     * Excludes or includes an account from fee calculations or limits.
     */
    function setExcludedAccount(address account, uint256 value) external onlyOwner {
        _excludedAccounts[account] = value;
    }

    /**
     * Removes transaction and wallet holding limits.
     */
    function disableLimits() external onlyOwner {
        maxTxValue = _totalSupply;
        maxWalletHoldings = _totalSupply;
    }

    /**
     * Adjusts the buy and sell tax rates. The new tax rates cannot exceed the existing rates.
     */
    function adjustTaxRates(uint256 newBuyTaxRate, uint256 newSellTaxRate) external onlyOwner {
        require(newBuyTaxRate <= buyFeeRate && newSellTaxRate <= sellFeeRate, "Tax cannot be increased");
        buyFeeRate = newBuyTaxRate;
        sellFeeRate = newSellTaxRate;
    }

    /**
     * Handles token transfer and applies a tax based on the transaction type (buy/sell).
     */
    function _executeTokenTransfer(address from, address to, uint256 amount, uint256 taxRate) private {
        uint256 taxAmount = (amount * taxRate) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balances[from] -= amount;
        _balances[to] += transferAmount;
        _balances[address(this)] += taxAmount;

        emit Transfer(from, to, transferAmount);
    }

    /**
     * Core transfer logic, including validation and fee application.
     */
    function _executeTransfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "ERC20: transfer amount must be greater than zero");

        uint256 taxRate = 0;

        if (_excludedAccounts[from] == 0 && _excludedAccounts[to] == 0) {
            require(_isTradingActive, "Trading is not enabled yet");
            require(amount <= maxTxValue, "Transaction amount exceeds the maximum limit");
            
            if (to != uniswapV2Pair && to != address(0xdead)) {
                require(balanceOf(to) + amount <= maxWalletHoldings, "Recipient wallet exceeds the maximum limit");
            }

            if (block.number < _launchBlock + 3) {
                taxRate = (from == uniswapV2Pair) ? 30 : 30;
            } else {
                if (from == uniswapV2Pair) {
                    taxRate = buyFeeRate;
                } else if (to == uniswapV2Pair) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > _minSwapTokens) {
                        uint256 swapAmount = _maxSwapTokens;
                        if (contractTokenBalance > amount) contractTokenBalance = amount;
                        if (contractTokenBalance > swapAmount) contractTokenBalance = swapAmount;
                        _exchangeTokensForEth(contractTokenBalance);
                    }
                    taxRate = sellFeeRate;
                }
            }
        }
        _executeTokenTransfer(from, to, amount, taxRate);
    }

    /**
     * Withdraws ETH from the contract.
     */
    function withdrawEth() external onlyOwner {
        (bool success, ) = owner().call{value: address(this).balance}("");
        require(success, "Rescue ETH failed");
    }

    /**
     * Transfers the remaining tokens in the contract to the owner.
     */
    function recoverTokens() external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0, "No tokens to rescue");

        _executeTokenTransfer(address(this), owner(), contractTokenBalance, 0);
    }

    /**
     * Swaps a percentage of the contract's tokens for ETH.
     */
    function executeManualSwap(uint256 percent) external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapAmount = (percent * contractTokenBalance) / 100;
        _exchangeTokensForEth(swapAmount);
    }

    /**
     * Swaps tokens for ETH using the Uniswap router and allocates ETH to specific wallets.
     */
    function _exchangeTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _setAllowance(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 contractEthBalance = address(this).balance;
        uint256 OmegaFund = (contractEthBalance * 10) / 100;
        uint256 GammaFund = (contractEthBalance * 30) / 100;
        uint256 BetaFund = (contractEthBalance * 30) / 100;
        uint256 AlphaFund = (contractEthBalance * 30) / 100;

        (bool success, ) = OmegaWallet.call{value: OmegaFund}("");
        (success, ) = GammaWallet.call{value: GammaFund}("");
        (success, ) = BetaWallet.call{value: BetaFund}("");
        (success, ) = AlphaWallet.call{value: AlphaFund}("");
        

        require(success, "Transfer failed");
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"amount","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":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"},{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"adjustTaxRates","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":"pure","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"executeManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFeeRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setExcludedAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000307565b6200002190624c4b406200031e565b600455620000326012600a62000307565b6200004190624c4b406200031e565b600555620000526012600a62000307565b6200006190629896806200031e565b600655601e6008819055600955600f805460ff60a01b1916905534801562000087575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b031990811673891c76b4729b8bddab00fd5decd419fb9f33bedf17909155600d8054821673bd92bf5d4f7d1e4e8f3b3e99f99738b9aeefcc55179055600e8054821673ca9ca67a79a23681a6a13c55724128d023f6a953179055600f8054909116732f6d0a6b2bc5e219eb9a288f63048b911648b9aa1790556200015a6012600a62000307565b6200016a90633b9aca006200031e565b335f908152600160208181526040808420949094556003905282822081905530825291902055620001983390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001d16012600a62000307565b620001e190633b9aca006200031e565b60405190815260200160405180910390a362000338565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200024c57815f1904821115620002305762000230620001f8565b808516156200023e57918102915b93841c939080029062000211565b509250929050565b5f82620002645750600162000301565b816200027257505f62000301565b81600181146200028b57600281146200029657620002b6565b600191505062000301565b60ff841115620002aa57620002aa620001f8565b50506001821b62000301565b5060208310610133831016604e8410600b8410161715620002db575081810a62000301565b620002e783836200020c565b805f1904821115620002fd57620002fd620001f8565b0290505b92915050565b5f6200031760ff84168362000254565b9392505050565b8082028115828204841417620003015762000301620001f8565b611a2d80620003465f395ff3fe60806040526004361061013f575f3560e01c80638da5cb5b116100b3578063b7ea78b51161006d578063b7ea78b51461039b578063d6e7a55e146103b0578063dd62ed3e146103d7578063e8eecf4c1461041b578063f2fde38b14610430578063f928364c1461044f575f80fd5b80638da5cb5b146102ec57806395d89b4114610308578063a0ef91df14610335578063a9059cbb14610349578063aabc60d614610368578063b77f39fe14610387575f80fd5b8063301c3d5c11610104578063301c3d5c14610214578063313ce56714610233578063477ce99b1461024e57806349bd5a5e1461026d57806370a08231146102a4578063715018a6146102d8575f80fd5b806306fdde031461014a578063095ea7b31461018e57806318160ddd146101bd57806323b872dd146101df578063293230b8146101fe575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600a81526927b6b734aa32b739b7b960b11b60208201525b6040516101859190611625565b60405180910390f35b348015610199575f80fd5b506101ad6101a8366004611684565b610463565b6040519015158152602001610185565b3480156101c8575f80fd5b506101d1610479565b604051908152602001610185565b3480156101ea575f80fd5b506101ad6101f93660046116ae565b610499565b348015610209575f80fd5b5061021261054e565b005b34801561021f575f80fd5b5061021261022e366004611684565b6108f2565b34801561023e575f80fd5b5060405160128152602001610185565b348015610259575f80fd5b506102126102683660046116ec565b610936565b348015610278575f80fd5b50600b5461028c906001600160a01b031681565b6040516001600160a01b039091168152602001610185565b3480156102af575f80fd5b506101d16102be366004611703565b6001600160a01b03165f9081526001602052604090205490565b3480156102e3575f80fd5b50610212610995565b3480156102f7575f80fd5b505f546001600160a01b031661028c565b348015610313575f80fd5b5060408051808201909152600581526413d353925560da1b6020820152610178565b348015610340575f80fd5b50610212610a06565b348015610354575f80fd5b506101ad610363366004611684565b610ac6565b348015610373575f80fd5b50610212610382366004611725565b610ad2565b348015610392575f80fd5b50610212610b66565b3480156103a6575f80fd5b506101d160065481565b3480156103bb575f80fd5b5060085460095460408051928352602083019190915201610185565b3480156103e2575f80fd5b506101d16103f1366004611745565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610426575f80fd5b506101d160055481565b34801561043b575f80fd5b5061021261044a366004611703565b610bfd565b34801561045a575f80fd5b50610212610c2f565b5f61046f338484610c94565b5060015b92915050565b5f6104866012600a611870565b61049490633b9aca0061187e565b905090565b5f6104a5848484610db7565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054357828110156105365760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105438533858403610c94565b506001949350505050565b5f546001600160a01b031633146105775760405162461bcd60e51b815260040161052d90611895565b600f54600160a01b900460ff16156105d15760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052d565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610633573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065791906118ca565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906118ca565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610724573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074891906118ca565b600b80546001600160a01b0319166001600160a01b03928316179055600a805461079092309291169061077d90601290611870565b61078b90633b9aca0061187e565b610c94565b600a546001600160a01b031663f305d71947306107c1816001600160a01b03165f9081526001602052604090205490565b5f806107d45f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561083a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061085f91906118e5565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611910565b50600f805460ff60a01b1916600160a01b17905543600755565b5f546001600160a01b0316331461091b5760405162461bcd60e51b815260040161052d90611895565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b0316331461095f5760405162461bcd60e51b815260040161052d90611895565b305f9081526001602052604081205490606461097b838561187e565b610985919061192f565b90506109908161111d565b505050565b5f546001600160a01b031633146109be5760405162461bcd60e51b815260040161052d90611895565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161052d90611895565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610a79576040519150601f19603f3d011682016040523d82523d5f602084013e610a7e565b606091505b5050905080610ac35760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052d565b50565b5f61046f338484610db7565b5f546001600160a01b03163314610afb5760405162461bcd60e51b815260040161052d90611895565b6008548211158015610b0f57506009548111155b610b5b5760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052d565b600891909155600955565b5f546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161052d90611895565b305f9081526001602052604090205480610be15760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052d565b610ac330610bf65f546001600160a01b031690565b835f61146c565b5f546001600160a01b03163314610c265760405162461bcd60e51b815260040161052d90611895565b610ac381611567565b5f546001600160a01b03163314610c585760405162461bcd60e51b815260040161052d90611895565b610c646012600a611870565b610c7290633b9aca0061187e565b600555610c816012600a611870565b610c8f90633b9aca0061187e565b600655565b6001600160a01b038316610cf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b038216610d575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b5f8111610e835760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052d565b6001600160a01b0383165f90815260036020526040812054158015610ebd57506001600160a01b0383165f90815260036020526040902054155b1561110b57600f54600160a01b900460ff16610f1b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052d565b600554821115610f825760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052d565b600b546001600160a01b03848116911614801590610fab57506001600160a01b03831661dead14155b1561103d5760065482610fd2856001600160a01b03165f9081526001602052604090205490565b610fdc919061194e565b111561103d5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052d565b60075461104b90600361194e565b43101561107b57600b546001600160a01b0385811691161461106e57601e611071565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109a575060085461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cb6012600a611870565b6110d890620186a061187e565b81111561110557600454838211156110ee578391505b808211156110fa578091505b6111038261111d565b505b50506009545b6111178484848461146c565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061115057611150611961565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111cb91906118ca565b816001815181106111de576111de611961565b6001600160a01b039283166020918202929092010152600a546112049130911684610c94565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123c9085905f90869030904290600401611975565b5f604051808303815f87803b158015611253575f80fd5b505af1158015611265573d5f803e3d5ffd5b504792505f91506064905061127b83600a61187e565b611285919061192f565b90505f606461129584601e61187e565b61129f919061192f565b90505f60646112af85601e61187e565b6112b9919061192f565b90505f60646112c986601e61187e565b6112d3919061192f565b600c546040519192505f916001600160a01b039091169086908381818185875af1925050503d805f8114611322576040519150601f19603f3d011682016040523d82523d5f602084013e611327565b606091505b5050600d546040519192506001600160a01b03169085905f81818185875af1925050503d805f8114611374576040519150601f19603f3d011682016040523d82523d5f602084013e611379565b606091505b5050600e546040519192506001600160a01b03169084905f81818185875af1925050503d805f81146113c6576040519150601f19603f3d011682016040523d82523d5f602084013e6113cb565b606091505b5050600f546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611418576040519150601f19603f3d011682016040523d82523d5f602084013e61141d565b606091505b505080915050806114625760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052d565b5050505050505050565b5f6064611479838561187e565b611483919061192f565b90505f61149082856119e4565b6001600160a01b0387165f908152600160205260408120805492935086929091906114bc9084906119e4565b90915550506001600160a01b0385165f90815260016020526040812080548392906114e890849061194e565b9091555050305f908152600160205260408120805484929061150b90849061194e565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161155791815260200190565b60405180910390a3505050505050565b6001600160a01b0381166115cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b8181101561165057858101830151858201604001528201611634565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ac3575f80fd5b5f8060408385031215611695575f80fd5b82356116a081611670565b946020939093013593505050565b5f805f606084860312156116c0575f80fd5b83356116cb81611670565b925060208401356116db81611670565b929592945050506040919091013590565b5f602082840312156116fc575f80fd5b5035919050565b5f60208284031215611713575f80fd5b813561171e81611670565b9392505050565b5f8060408385031215611736575f80fd5b50508035926020909101359150565b5f8060408385031215611756575f80fd5b823561176181611670565b9150602083013561177181611670565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117ca57815f19048211156117b0576117b061177c565b808516156117bd57918102915b93841c9390800290611795565b509250929050565b5f826117e057506001610473565b816117ec57505f610473565b8160018114611802576002811461180c57611828565b6001915050610473565b60ff84111561181d5761181d61177c565b50506001821b610473565b5060208310610133831016604e8410600b841016171561184b575081810a610473565b6118558383611790565b805f19048211156118685761186861177c565b029392505050565b5f61171e60ff8416836117d2565b80820281158282048414176104735761047361177c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118da575f80fd5b815161171e81611670565b5f805f606084860312156118f7575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611920575f80fd5b8151801515811461171e575f80fd5b5f8261194957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104735761047361177c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119c35784516001600160a01b03168352938301939183019160010161199e565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156104735761047361177c56fea264697066735822122054ed232f652b2ff27b1c8ac450a72928406040d48b43479cbc7e8f485a574e4564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80638da5cb5b116100b3578063b7ea78b51161006d578063b7ea78b51461039b578063d6e7a55e146103b0578063dd62ed3e146103d7578063e8eecf4c1461041b578063f2fde38b14610430578063f928364c1461044f575f80fd5b80638da5cb5b146102ec57806395d89b4114610308578063a0ef91df14610335578063a9059cbb14610349578063aabc60d614610368578063b77f39fe14610387575f80fd5b8063301c3d5c11610104578063301c3d5c14610214578063313ce56714610233578063477ce99b1461024e57806349bd5a5e1461026d57806370a08231146102a4578063715018a6146102d8575f80fd5b806306fdde031461014a578063095ea7b31461018e57806318160ddd146101bd57806323b872dd146101df578063293230b8146101fe575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600a81526927b6b734aa32b739b7b960b11b60208201525b6040516101859190611625565b60405180910390f35b348015610199575f80fd5b506101ad6101a8366004611684565b610463565b6040519015158152602001610185565b3480156101c8575f80fd5b506101d1610479565b604051908152602001610185565b3480156101ea575f80fd5b506101ad6101f93660046116ae565b610499565b348015610209575f80fd5b5061021261054e565b005b34801561021f575f80fd5b5061021261022e366004611684565b6108f2565b34801561023e575f80fd5b5060405160128152602001610185565b348015610259575f80fd5b506102126102683660046116ec565b610936565b348015610278575f80fd5b50600b5461028c906001600160a01b031681565b6040516001600160a01b039091168152602001610185565b3480156102af575f80fd5b506101d16102be366004611703565b6001600160a01b03165f9081526001602052604090205490565b3480156102e3575f80fd5b50610212610995565b3480156102f7575f80fd5b505f546001600160a01b031661028c565b348015610313575f80fd5b5060408051808201909152600581526413d353925560da1b6020820152610178565b348015610340575f80fd5b50610212610a06565b348015610354575f80fd5b506101ad610363366004611684565b610ac6565b348015610373575f80fd5b50610212610382366004611725565b610ad2565b348015610392575f80fd5b50610212610b66565b3480156103a6575f80fd5b506101d160065481565b3480156103bb575f80fd5b5060085460095460408051928352602083019190915201610185565b3480156103e2575f80fd5b506101d16103f1366004611745565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610426575f80fd5b506101d160055481565b34801561043b575f80fd5b5061021261044a366004611703565b610bfd565b34801561045a575f80fd5b50610212610c2f565b5f61046f338484610c94565b5060015b92915050565b5f6104866012600a611870565b61049490633b9aca0061187e565b905090565b5f6104a5848484610db7565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054357828110156105365760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105438533858403610c94565b506001949350505050565b5f546001600160a01b031633146105775760405162461bcd60e51b815260040161052d90611895565b600f54600160a01b900460ff16156105d15760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052d565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610633573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065791906118ca565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906118ca565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610724573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074891906118ca565b600b80546001600160a01b0319166001600160a01b03928316179055600a805461079092309291169061077d90601290611870565b61078b90633b9aca0061187e565b610c94565b600a546001600160a01b031663f305d71947306107c1816001600160a01b03165f9081526001602052604090205490565b5f806107d45f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561083a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061085f91906118e5565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611910565b50600f805460ff60a01b1916600160a01b17905543600755565b5f546001600160a01b0316331461091b5760405162461bcd60e51b815260040161052d90611895565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b0316331461095f5760405162461bcd60e51b815260040161052d90611895565b305f9081526001602052604081205490606461097b838561187e565b610985919061192f565b90506109908161111d565b505050565b5f546001600160a01b031633146109be5760405162461bcd60e51b815260040161052d90611895565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161052d90611895565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610a79576040519150601f19603f3d011682016040523d82523d5f602084013e610a7e565b606091505b5050905080610ac35760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052d565b50565b5f61046f338484610db7565b5f546001600160a01b03163314610afb5760405162461bcd60e51b815260040161052d90611895565b6008548211158015610b0f57506009548111155b610b5b5760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052d565b600891909155600955565b5f546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161052d90611895565b305f9081526001602052604090205480610be15760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052d565b610ac330610bf65f546001600160a01b031690565b835f61146c565b5f546001600160a01b03163314610c265760405162461bcd60e51b815260040161052d90611895565b610ac381611567565b5f546001600160a01b03163314610c585760405162461bcd60e51b815260040161052d90611895565b610c646012600a611870565b610c7290633b9aca0061187e565b600555610c816012600a611870565b610c8f90633b9aca0061187e565b600655565b6001600160a01b038316610cf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b038216610d575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b5f8111610e835760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052d565b6001600160a01b0383165f90815260036020526040812054158015610ebd57506001600160a01b0383165f90815260036020526040902054155b1561110b57600f54600160a01b900460ff16610f1b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052d565b600554821115610f825760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052d565b600b546001600160a01b03848116911614801590610fab57506001600160a01b03831661dead14155b1561103d5760065482610fd2856001600160a01b03165f9081526001602052604090205490565b610fdc919061194e565b111561103d5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052d565b60075461104b90600361194e565b43101561107b57600b546001600160a01b0385811691161461106e57601e611071565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109a575060085461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cb6012600a611870565b6110d890620186a061187e565b81111561110557600454838211156110ee578391505b808211156110fa578091505b6111038261111d565b505b50506009545b6111178484848461146c565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061115057611150611961565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111cb91906118ca565b816001815181106111de576111de611961565b6001600160a01b039283166020918202929092010152600a546112049130911684610c94565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123c9085905f90869030904290600401611975565b5f604051808303815f87803b158015611253575f80fd5b505af1158015611265573d5f803e3d5ffd5b504792505f91506064905061127b83600a61187e565b611285919061192f565b90505f606461129584601e61187e565b61129f919061192f565b90505f60646112af85601e61187e565b6112b9919061192f565b90505f60646112c986601e61187e565b6112d3919061192f565b600c546040519192505f916001600160a01b039091169086908381818185875af1925050503d805f8114611322576040519150601f19603f3d011682016040523d82523d5f602084013e611327565b606091505b5050600d546040519192506001600160a01b03169085905f81818185875af1925050503d805f8114611374576040519150601f19603f3d011682016040523d82523d5f602084013e611379565b606091505b5050600e546040519192506001600160a01b03169084905f81818185875af1925050503d805f81146113c6576040519150601f19603f3d011682016040523d82523d5f602084013e6113cb565b606091505b5050600f546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611418576040519150601f19603f3d011682016040523d82523d5f602084013e61141d565b606091505b505080915050806114625760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052d565b5050505050505050565b5f6064611479838561187e565b611483919061192f565b90505f61149082856119e4565b6001600160a01b0387165f908152600160205260408120805492935086929091906114bc9084906119e4565b90915550506001600160a01b0385165f90815260016020526040812080548392906114e890849061194e565b9091555050305f908152600160205260408120805484929061150b90849061194e565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161155791815260200190565b60405180910390a3505050505050565b6001600160a01b0381166115cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b8181101561165057858101830151858201604001528201611634565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ac3575f80fd5b5f8060408385031215611695575f80fd5b82356116a081611670565b946020939093013593505050565b5f805f606084860312156116c0575f80fd5b83356116cb81611670565b925060208401356116db81611670565b929592945050506040919091013590565b5f602082840312156116fc575f80fd5b5035919050565b5f60208284031215611713575f80fd5b813561171e81611670565b9392505050565b5f8060408385031215611736575f80fd5b50508035926020909101359150565b5f8060408385031215611756575f80fd5b823561176181611670565b9150602083013561177181611670565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117ca57815f19048211156117b0576117b061177c565b808516156117bd57918102915b93841c9390800290611795565b509250929050565b5f826117e057506001610473565b816117ec57505f610473565b8160018114611802576002811461180c57611828565b6001915050610473565b60ff84111561181d5761181d61177c565b50506001821b610473565b5060208310610133831016604e8410600b841016171561184b575081810a610473565b6118558383611790565b805f19048211156118685761186861177c565b029392505050565b5f61171e60ff8416836117d2565b80820281158282048414176104735761047361177c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118da575f80fd5b815161171e81611670565b5f805f606084860312156118f7575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611920575f80fd5b8151801515811461171e575f80fd5b5f8261194957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104735761047361177c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119c35784516001600160a01b03168352938301939183019160010161199e565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156104735761047361177c56fea264697066735822122054ed232f652b2ff27b1c8ac450a72928406040d48b43479cbc7e8f485a574e4564736f6c63430008140033

Deployed Bytecode Sourcemap

3598:10423:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:88;;;;;;;;;;-1:-1:-1;5719:10:0;;;;;;;;;;;;-1:-1:-1;;;5719:10:0;;;;5649:88;;;;;;;:::i;:::-;;;;;;;;6732:166;;;;;;;;;;-1:-1:-1;6732:166:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6732:166:0;1023:187:1;5941:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5941:100:0;1215:177:1;6906:541:0;;;;;;;;;;-1:-1:-1;6906:541:0;;;;;:::i;:::-;;:::i;7895:815::-;;;;;;;;;;;;;:::i;:::-;;8809:132;;;;;;;;;;-1:-1:-1;8809:132:0;;;;;:::i;:::-;;:::i;5845:88::-;;;;;;;;;;-1:-1:-1;5845:88:0;;3802:2;2000:36:1;;1988:2;1973:18;5845:88:0;1858:184:1;12498:251:0;;;;;;;;;;-1:-1:-1;12498:251:0;;;;;:::i;:::-;;:::i;4769:28::-;;;;;;;;;;-1:-1:-1;4769:28:0;;;;-1:-1:-1;;;;;4769:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;4769:28:0;2232:203:1;6272:119:0;;;;;;;;;;-1:-1:-1;6272:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6365:18:0;6338:7;6365:18;;;:9;:18;;;;;;;6272:119;2667:164;;;;;;;;;;;;;:::i;1886:87::-;;;;;;;;;;-1:-1:-1;1924:7:0;1951:14;-1:-1:-1;;;;;1951:14:0;1886:87;;5745:92;;;;;;;;;;-1:-1:-1;5817:12:0;;;;;;;;;;;;-1:-1:-1;;;5817:12:0;;;;5745:92;;11874:174;;;;;;;;;;;;;:::i;6399:::-;;;;;;;;;;-1:-1:-1;6399:174:0;;;;;:::i;:::-;;:::i;9275:281::-;;;;;;;;;;-1:-1:-1;9275:281:0;;;;;:::i;:::-;;:::i;12143:268::-;;;;;;;;;;;;;:::i;4435:64::-;;;;;;;;;;;;;;;;6115:149;;;;;;;;;;-1:-1:-1;6214:10:0;;6245:11;;6115:149;;;3119:25:1;;;3175:2;3160:18;;3153:34;;;;3092:18;6115:149:0;2945:248:1;6581:143:0;;;;;;;;;;-1:-1:-1;6581:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6689:18:0;;;6662:7;6689:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6581:143;4339:56;;;;;;;;;;;;;;;;2223:107;;;;;;;;;;-1:-1:-1;2223:107:0;;;;;:::i;:::-;;:::i;9022:131::-;;;;;;;;;;;;;:::i;6732:166::-;6807:4;6824:44;1434:10;6852:7;6861:6;6824:13;:44::i;:::-;-1:-1:-1;6886:4:0;6732:166;;;;;:::o;5941:100::-;5994:7;3864:18;3802:2;3864;:18;:::i;:::-;3851:31;;:10;:31;:::i;:::-;6014:19;;5941:100;:::o;6906:541::-;7004:4;7021:43;7038:6;7046:9;7057:6;7021:16;:43::i;:::-;-1:-1:-1;;;;;7104:19:0;;7077:24;7104:19;;;:11;:19;;;;;;;;1434:10;7104:33;;;;;;;;-1:-1:-1;;7152:37:0;;7148:270;;7234:6;7214:16;:26;;7206:79;;;;-1:-1:-1;;;7206:79:0;;5481:2:1;7206:79:0;;;5463:21:1;5520:2;5500:18;;;5493:30;5559:34;5539:18;;;5532:62;-1:-1:-1;;;5610:18:1;;;5603:38;5658:19;;7206:79:0;;;;;;;;;7329:62;7343:6;1434:10;7384:6;7365:16;:25;7329:13;:62::i;:::-;-1:-1:-1;7435:4:0;;6906:541;-1:-1:-1;;;;6906:541:0:o;7895:815::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;7958:16:::1;::::0;-1:-1:-1;;;7958:16:0;::::1;;;7957:17;7949:56;;;::::0;-1:-1:-1;;;7949:56:0;;6251:2:1;7949:56:0::1;::::0;::::1;6233:21:1::0;6290:2;6270:18;;;6263:30;6329:28;6309:18;;;6302:56;6375:18;;7949:56:0::1;6049:350:1::0;7949:56:0::1;8016:16;:81:::0;;-1:-1:-1;;;;;;8016:81:0::1;8054:42;8016:81:::0;;::::1;::::0;;;8142:26:::1;::::0;;-1:-1:-1;;;8142:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;8054:42;8142:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8124:56:0::1;;8189:4;8196:16;;;;;;;;;-1:-1:-1::0;;;;;8196:16:0::1;-1:-1:-1::0;;;;;8196:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8124:96;::::0;-1:-1:-1;;;;;;8124:96:0::1;::::0;;;;;;-1:-1:-1;;;;;6890:15:1;;;8124:96:0::1;::::0;::::1;6872:34:1::0;6942:15;;6922:18;;;6915:43;6807:18;;8124:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8108:13;:112:::0;;-1:-1:-1;;;;;;8108:112:0::1;-1:-1:-1::0;;;;;8108:112:0;;::::1;;::::0;;8268:16:::1;::::0;;8231:69:::1;::::0;8253:4:::1;::::0;8268:16;::::1;::::0;3864:18:::1;::::0;3802:2:::1;::::0;3864:18:::1;:::i;:::-;3851:31;::::0;:10:::1;:31;:::i;:::-;8231:13;:69::i;:::-;8321:16;::::0;-1:-1:-1;;;;;8321:16:0::1;:32;8361:21;8406:4;8426:24;8406:4:::0;-1:-1:-1;;;;;6365:18:0;6338:7;6365:18;;;:9;:18;;;;;;;6272:119;8426:24:::1;8465:1;8481::::0;8497:7:::1;1924::::0;1951:14;-1:-1:-1;;;;;1951:14:0;;1886:87;8497:7:::1;8321:224;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8321:224:0;;;-1:-1:-1;;;;;7328:15:1;;;8321:224:0::1;::::0;::::1;7310:34:1::0;7360:18;;;7353:34;;;;7403:18;;;7396:34;;;;7446:18;;;7439:34;7510:15;;;7489:19;;;7482:44;8519:15:0::1;7542:19:1::0;;;7535:35;7244:19;;8321:224:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;8565:13:0::1;::::0;8596:16:::1;::::0;8558:72:::1;::::0;-1:-1:-1;;;8558:72:0;;-1:-1:-1;;;;;8596:16:0;;::::1;8558:72;::::0;::::1;8066:51:1::0;-1:-1:-1;;8133:18:1;;;8126:34;8565:13:0;::::1;::::0;-1:-1:-1;8558:29:0::1;::::0;8039:18:1;;8558:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8641:16:0::1;:23:::0;;-1:-1:-1;;;;8641:23:0::1;-1:-1:-1::0;;;8641:23:0::1;::::0;;8690:12:::1;8675;:27:::0;7895:815::o;8809:132::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8899:26:0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;8809:132::o;12498:251::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;12621:4:::1;12572:28;6365:18:::0;;;:9;:18;;;;;;;12694:3:::1;12660:30;6365:18:::0;12660:7;:30:::1;:::i;:::-;12659:38;;;;:::i;:::-;12638:59;;12708:33;12730:10;12708:21;:33::i;:::-;12561:188;;12498:251:::0;:::o;2667:164::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;2782:1:::1;2758:14:::0;;2737:48:::1;::::0;-1:-1:-1;;;;;2758:14:0;;::::1;::::0;2737:48:::1;::::0;2782:1;;2737:48:::1;2821:1;2796:27:::0;;-1:-1:-1;;;;;;2796:27:0::1;::::0;;2667:164::o;11874:174::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;11928:12:::1;1951:14:::0;;11946:46:::1;::::0;-1:-1:-1;;;;;1951:14:0;;;;11966:21:::1;::::0;11928:12;11946:46;11928:12;11946:46;11966:21;1951:14;11946:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11927:65;;;12011:7;12003:37;;;::::0;-1:-1:-1;;;12003:37:0;;9087:2:1;12003:37:0::1;::::0;::::1;9069:21:1::0;9126:2;9106:18;;;9099:30;-1:-1:-1;;;9145:18:1;;;9138:47;9202:18;;12003:37:0::1;8885:341:1::0;12003:37:0::1;11916:132;11874:174::o:0;6399:::-;6477:4;6494:49;1434:10;6525:9;6536:6;6494:16;:49::i;9275:281::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;9401:10:::1;;9384:13;:27;;:60;;;;;9433:11;;9415:14;:29;;9384:60;9376:96;;;::::0;-1:-1:-1;;;9376:96:0;;9433:2:1;9376:96:0::1;::::0;::::1;9415:21:1::0;9472:2;9452:18;;;9445:30;9511:25;9491:18;;;9484:53;9554:18;;9376:96:0::1;9231:347:1::0;9376:96:0::1;9483:10;:26:::0;;;;9520:11:::1;:28:::0;9275:281::o;12143:268::-;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;12247:4:::1;12198:28;6365:18:::0;;;:9;:18;;;;;;12272:24;12264:56:::1;;;::::0;-1:-1:-1;;;12264:56:0;;9785:2:1;12264:56:0::1;::::0;::::1;9767:21:1::0;9824:2;9804:18;;;9797:30;-1:-1:-1;;;9843:18:1;;;9836:49;9902:18;;12264:56:0::1;9583:343:1::0;12264:56:0::1;12333:70;12363:4;12370:7;1924::::0;1951:14;-1:-1:-1;;;;;1951:14:0;;1886:87;12370:7:::1;12379:20;12401:1;12333:21;:70::i;2223:107::-:0;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;2296:26:::1;2313:8;2296:16;:26::i;9022:131::-:0;2021:14;;-1:-1:-1;;;;;2021:14:0;1434:10;2021:30;2013:75;;;;-1:-1:-1;;;2013:75:0;;;;;;;:::i;:::-;3864:18:::1;3802:2;3864;:18;:::i;:::-;3851:31;::::0;:10:::1;:31;:::i;:::-;9077:10;:25:::0;3864:18:::1;3802:2;3864;:18;:::i;:::-;3851:31;::::0;:10:::1;:31;:::i;:::-;9113:17;:32:::0;9022:131::o;7455:340::-;-1:-1:-1;;;;;7553:19:0;;7545:68;;;;-1:-1:-1;;;7545:68:0;;10133:2:1;7545:68:0;;;10115:21:1;10172:2;10152:18;;;10145:30;10211:34;10191:18;;;10184:62;-1:-1:-1;;;10262:18:1;;;10255:34;10306:19;;7545:68:0;9931:400:1;7545:68:0;-1:-1:-1;;;;;7632:21:0;;7624:68;;;;-1:-1:-1;;;7624:68:0;;10538:2:1;7624:68:0;;;10520:21:1;10577:2;10557:18;;;10550:30;10616:34;10596:18;;;10589:62;-1:-1:-1;;;10667:18:1;;;10660:32;10709:19;;7624:68:0;10336:398:1;7624:68:0;-1:-1:-1;;;;;7703:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7755:32;;1361:25:1;;;7755:32:0;;1334:18:1;7755:32:0;;;;;;;7455:340;;;:::o;10165:1642::-;-1:-1:-1;;;;;10260:18:0;;10252:68;;;;-1:-1:-1;;;10252:68:0;;10941:2:1;10252:68:0;;;10923:21:1;10980:2;10960:18;;;10953:30;11019:34;10999:18;;;10992:62;-1:-1:-1;;;11070:18:1;;;11063:35;11115:19;;10252:68:0;10739:401:1;10252:68:0;10348:1;10339:6;:10;10331:71;;;;-1:-1:-1;;;10331:71:0;;11347:2:1;10331:71:0;;;11329:21:1;11386:2;11366:18;;;11359:30;11425:34;11405:18;;;11398:62;-1:-1:-1;;;11476:18:1;;;11469:46;11532:19;;10331:71:0;11145:412:1;10331:71:0;-1:-1:-1;;;;;10451:23:0;;10415:15;10451:23;;;:17;:23;;;;;;:28;:58;;;;-1:-1:-1;;;;;;10483:21:0;;;;;;:17;:21;;;;;;:26;10451:58;10447:1294;;;10534:16;;-1:-1:-1;;;10534:16:0;;;;10526:55;;;;-1:-1:-1;;;10526:55:0;;11764:2:1;10526:55:0;;;11746:21:1;11803:2;11783:18;;;11776:30;11842:28;11822:18;;;11815:56;11888:18;;10526:55:0;11562:350:1;10526:55:0;10614:10;;10604:6;:20;;10596:77;;;;-1:-1:-1;;;10596:77:0;;12119:2:1;10596:77:0;;;12101:21:1;12158:2;12138:18;;;12131:30;12197:34;12177:18;;;12170:62;-1:-1:-1;;;12248:18:1;;;12241:42;12300:19;;10596:77:0;11917:408:1;10596:77:0;10712:13;;-1:-1:-1;;;;;10706:19:0;;;10712:13;;10706:19;;;;:44;;-1:-1:-1;;;;;;10729:21:0;;10743:6;10729:21;;10706:44;10702:183;;;10805:17;;10795:6;10779:13;10789:2;-1:-1:-1;;;;;6365:18:0;6338:7;6365:18;;;:9;:18;;;;;;;6272:119;10779:13;:22;;;;:::i;:::-;:43;;10771:98;;;;-1:-1:-1;;;10771:98:0;;12662:2:1;10771:98:0;;;12644:21:1;12701:2;12681:18;;;12674:30;12740:34;12720:18;;;12713:62;-1:-1:-1;;;12791:18:1;;;12784:40;12841:19;;10771:98:0;12460:406:1;10771:98:0;10920:12;;:16;;10935:1;10920:16;:::i;:::-;10905:12;:31;10901:829;;;10976:13;;-1:-1:-1;;;;;10968:21:0;;;10976:13;;10968:21;10967:33;;10998:2;10967:33;;;10993:2;10967:33;10957:43;;;;10901:829;;;11053:13;;-1:-1:-1;;;;;11053:13:0;;;11045:21;;;;11041:674;;-1:-1:-1;11101:10:0;;11041:674;;;11147:13;;-1:-1:-1;;;;;11147:13:0;;;11141:19;;;;11137:578;;11234:4;11185:28;6365:18;;;:9;:18;;;;;;4176;3802:2;4176;:18;:::i;:::-;4167:27;;:6;:27;:::i;:::-;11267:20;:37;11263:389;;;11354:14;;11399:29;;;11395:64;;;11453:6;11430:29;;11395:64;11513:10;11490:20;:33;11486:72;;;11548:10;11525:33;;11486:72;11585:43;11607:20;11585:21;:43::i;:::-;11306:346;11263:389;-1:-1:-1;;11684:11:0;;11137:578;11751:48;11773:4;11779:2;11783:6;11791:7;11751:21;:48::i;:::-;10241:1566;10165:1642;;;:::o;12868:1113::-;12963:16;;;12977:1;12963:16;;;;;;;;12939:21;;12963:16;;;;;;;;;;-1:-1:-1;12963:16:0;12939:40;;13008:4;12990;12995:1;12990:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12990:23:0;;;:7;;;;;;;;;;:23;;;;13034:16;;:23;;;-1:-1:-1;;;13034:23:0;;;;:16;;;;;:21;;:23;;;;;12990:7;;13034:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13024:4;13029:1;13024:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13024:33:0;;;:7;;;;;;;;;:33;13107:16;;13070:68;;13092:4;;13107:16;13126:11;13070:13;:68::i;:::-;13151:16;;:197;;-1:-1:-1;;;13151:197:0;;-1:-1:-1;;;;;13151:16:0;;;;:67;;:197;;13233:11;;13151:16;;13275:4;;13302;;13322:15;;13151:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13390:21:0;;-1:-1:-1;13361:26:0;;-1:-1:-1;13470:3:0;;-1:-1:-1;13443:23:0;13390:21;13464:2;13443:23;:::i;:::-;13442:31;;;;:::i;:::-;13422:51;-1:-1:-1;13484:17:0;13532:3;13505:23;:18;13526:2;13505:23;:::i;:::-;13504:31;;;;:::i;:::-;13484:51;-1:-1:-1;13546:16:0;13593:3;13566:23;:18;13587:2;13566:23;:::i;:::-;13565:31;;;;:::i;:::-;13546:50;-1:-1:-1;13607:17:0;13655:3;13628:23;:18;13649:2;13628:23;:::i;:::-;13627:31;;;;:::i;:::-;13690:11;;:38;;13607:51;;-1:-1:-1;13672:12:0;;-1:-1:-1;;;;;13690:11:0;;;;13714:9;;13672:12;13690:38;13672:12;13690:38;13714:9;13690:11;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13753:11:0;;:38;;13671:57;;-1:-1:-1;;;;;;13753:11:0;;13777:9;;13753:38;;;;13777:9;13753:11;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13816:10:0;;:36;;13739:52;;-1:-1:-1;;;;;;13816:10:0;;13839:8;;13816:36;;;;13839:8;13816:10;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13877:11:0;;:38;;13802:50;;-1:-1:-1;;;;;;13877:11:0;;13901:9;;13877:38;;;;13901:9;13877:11;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13863:52;;;;;13946:7;13938:35;;;;-1:-1:-1;;;13938:35:0;;14322:2:1;13938:35:0;;;14304:21:1;14361:2;14341:18;;;14334:30;-1:-1:-1;;;14380:18:1;;;14373:45;14435:18;;13938:35:0;14120:339:1;13938:35:0;12928:1053;;;;;;;12868:1113;:::o;9673:395::-;9782:17;9823:3;9803:16;9812:7;9803:6;:16;:::i;:::-;9802:24;;;;:::i;:::-;9782:44;-1:-1:-1;9837:22:0;9862:18;9782:44;9862:6;:18;:::i;:::-;-1:-1:-1;;;;;9893:15:0;;;;;;:9;:15;;;;;:25;;9837:43;;-1:-1:-1;9912:6:0;;9893:15;;;:25;;9912:6;;9893:25;:::i;:::-;;;;-1:-1:-1;;;;;;;9929:13:0;;;;;;:9;:13;;;;;:31;;9946:14;;9929:13;:31;;9946:14;;9929:31;:::i;:::-;;;;-1:-1:-1;;9989:4:0;9971:24;;;;:9;:24;;;;;:37;;9999:9;;9971:24;:37;;9999:9;;9971:37;:::i;:::-;;;;;;;;10041:2;-1:-1:-1;;;;;10026:34:0;10035:4;-1:-1:-1;;;;;10026:34:0;;10045:14;10026:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;10026:34:0;;;;;;;;9771:297;;9673:395;;;;:::o;2338:243::-;-1:-1:-1;;;;;2410:22:0;;2402:73;;;;-1:-1:-1;;;2402:73:0;;14799:2:1;2402:73:0;;;14781:21:1;14838:2;14818:18;;;14811:30;14877:34;14857:18;;;14850:62;-1:-1:-1;;;14928:18:1;;;14921:36;14974:19;;2402:73:0;14597:402:1;2402:73:0;2512:14;;;2491:46;;-1:-1:-1;;;;;2491:46:0;;;;2512:14;;;2491:46;;;2548:14;:25;;-1:-1:-1;;;;;;2548:25:0;-1:-1:-1;;;;;2548:25:0;;;;;;;;;;2338:243::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;:::-;2676:5;2440:247;-1:-1:-1;;;2440:247:1:o;2692:248::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;-1:-1:-1;;2860:23:1;;;2930:2;2915:18;;;2902:32;;-1:-1:-1;2692:248:1:o;3198:388::-;3266:6;3274;3327:2;3315:9;3306:7;3302:23;3298:32;3295:52;;;3343:1;3340;3333:12;3295:52;3382:9;3369:23;3401:31;3426:5;3401:31;:::i;:::-;3451:5;-1:-1:-1;3508:2:1;3493:18;;3480:32;3521:33;3480:32;3521:33;:::i;:::-;3573:7;3563:17;;;3198:388;;;;;:::o;3591:127::-;3652:10;3647:3;3643:20;3640:1;3633:31;3683:4;3680:1;3673:15;3707:4;3704:1;3697:15;3723:422;3812:1;3855:5;3812:1;3869:270;3890:7;3880:8;3877:21;3869:270;;;3949:4;3945:1;3941:6;3937:17;3931:4;3928:27;3925:53;;;3958:18;;:::i;:::-;4008:7;3998:8;3994:22;3991:55;;;4028:16;;;;3991:55;4107:22;;;;4067:15;;;;3869:270;;;3873:3;3723:422;;;;;:::o;4150:806::-;4199:5;4229:8;4219:80;;-1:-1:-1;4270:1:1;4284:5;;4219:80;4318:4;4308:76;;-1:-1:-1;4355:1:1;4369:5;;4308:76;4400:4;4418:1;4413:59;;;;4486:1;4481:130;;;;4393:218;;4413:59;4443:1;4434:10;;4457:5;;;4481:130;4518:3;4508:8;4505:17;4502:43;;;4525:18;;:::i;:::-;-1:-1:-1;;4581:1:1;4567:16;;4596:5;;4393:218;;4695:2;4685:8;4682:16;4676:3;4670:4;4667:13;4663:36;4657:2;4647:8;4644:16;4639:2;4633:4;4630:12;4626:35;4623:77;4620:159;;;-1:-1:-1;4732:19:1;;;4764:5;;4620:159;4811:34;4836:8;4830:4;4811:34;:::i;:::-;4881:6;4877:1;4873:6;4869:19;4860:7;4857:32;4854:58;;;4892:18;;:::i;:::-;4930:20;;4150:806;-1:-1:-1;;;4150:806:1:o;4961:140::-;5019:5;5048:47;5089:4;5079:8;5075:19;5069:4;5048:47;:::i;5106:168::-;5179:9;;;5210;;5227:15;;;5221:22;;5207:37;5197:71;;5248:18;;:::i;5688:356::-;5890:2;5872:21;;;5909:18;;;5902:30;5968:34;5963:2;5948:18;;5941:62;6035:2;6020:18;;5688:356::o;6404:251::-;6474:6;6527:2;6515:9;6506:7;6502:23;6498:32;6495:52;;;6543:1;6540;6533:12;6495:52;6575:9;6569:16;6594:31;6619:5;6594:31;:::i;7581:306::-;7669:6;7677;7685;7738:2;7726:9;7717:7;7713:23;7709:32;7706:52;;;7754:1;7751;7744:12;7706:52;7783:9;7777:16;7767:26;;7833:2;7822:9;7818:18;7812:25;7802:35;;7877:2;7866:9;7862:18;7856:25;7846:35;;7581:306;;;;;:::o;8171:277::-;8238:6;8291:2;8279:9;8270:7;8266:23;8262:32;8259:52;;;8307:1;8304;8297:12;8259:52;8339:9;8333:16;8392:5;8385:13;8378:21;8371:5;8368:32;8358:60;;8414:1;8411;8404:12;8453:217;8493:1;8519;8509:132;;8563:10;8558:3;8554:20;8551:1;8544:31;8598:4;8595:1;8588:15;8626:4;8623:1;8616:15;8509:132;-1:-1:-1;8655:9:1;;8453:217::o;12330:125::-;12395:9;;;12416:10;;;12413:36;;;12429:18;;:::i;13003:127::-;13064:10;13059:3;13055:20;13052:1;13045:31;13095:4;13092:1;13085:15;13119:4;13116:1;13109:15;13135:980;13397:4;13445:3;13434:9;13430:19;13476:6;13465:9;13458:25;13502:2;13540:6;13535:2;13524:9;13520:18;13513:34;13583:3;13578:2;13567:9;13563:18;13556:31;13607:6;13642;13636:13;13673:6;13665;13658:22;13711:3;13700:9;13696:19;13689:26;;13750:2;13742:6;13738:15;13724:29;;13771:1;13781:195;13795:6;13792:1;13789:13;13781:195;;;13860:13;;-1:-1:-1;;;;;13856:39:1;13844:52;;13951:15;;;;13916:12;;;;13892:1;13810:9;13781:195;;;-1:-1:-1;;;;;;;14032:32:1;;;;14027:2;14012:18;;14005:60;-1:-1:-1;;;14096:3:1;14081:19;14074:35;13993:3;13135:980;-1:-1:-1;;;13135:980:1:o;14464:128::-;14531:9;;;14552:11;;;14549:37;;;14566:18;;:::i

Swarm Source

ipfs://54ed232f652b2ff27b1c8ac450a72928406040d48b43479cbc7e8f485a574e45
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.