ETH Price: $2,274.89 (-6.01%)

Token

Elect Trump and Fight (ETF)
 

Overview

Max Total Supply

420,690,000,000,000 ETF

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000062862 ETF

Value
$0.00
0x99dd6d564e0fe84566f87cc120178f6f63957308
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:
ETF

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-22
*/

/*
ETF

Telegram: https://t.me/ElectTrumpFight
Twitter: https://x.com/ETFonETH
Website: https://etfoneth.com/
Email: [email protected]

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.26;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default C.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards U:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance M.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 internal _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 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(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _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), "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);
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

contract ETF is ERC20, Ownable {
    IDexRouter public immutable dexRouter;
    address public immutable LP;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    uint256 public limits = 2;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    address public taxCollector;

    bool public swapEnabled = true;

    mapping(address => bool) private _isExcludedFromFees;
  
    uint256 public tradingActiveTime;

    constructor() ERC20("Elect Trump and Fight", "ETF") payable {
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);
        LP = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 420_690_000_000_000 * _decimalFactor;
        taxCollector = msg.sender;
 
        swapTokensAtAmount = (totalSupply * 1) / 10000;
        maxSwapTokens = totalSupply / 200;

        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;

        _balances[0xE312a99b0bfb467DEfB0B63A3F952596736Eb2d4] = 2 * totalSupply / 100;
        emit Transfer(address(0), 0xE312a99b0bfb467DEfB0B63A3F952596736Eb2d4, 2 * totalSupply / 100);
        _balances[0x558Fdd94416cB29D5485579307B3B6fE37980059] = 2 * totalSupply / 100;
        emit Transfer(address(0), 0x558Fdd94416cB29D5485579307B3B6fE37980059, 2 * totalSupply / 100);

        _balances[address(this)] = totalSupply - (4 * totalSupply / 100);
        emit Transfer(address(0), address(this), totalSupply - (4 * totalSupply / 100));
        _totalSupply = totalSupply;
    }

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

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


    function updateSwapTokens(uint256 atAmount, uint256 maxAmount) external onlyOwner {
        require(maxAmount <= totalSupply() / 100, "Max swap cannot be higher than 1% supply.");
        swapTokensAtAmount = atAmount;
        maxSwapTokens = maxAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

    
    function getSellFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 40) return 0;
        return 15;
    }

    function getBuyFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 40) return 0;
        else if(block.number - tradingActiveTime > 10) return 15;
        else if(block.number - tradingActiveTime == 0) return 85;
        else if(block.number - tradingActiveTime <= 2) return 45;
        return 30;
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (tradingActiveTime > 0 && to != owner() && from != owner()) {
            if (limits == 2) {
                require(amount <= totalSupply() / 100, "Transfer limit exceeded");
            }

            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees();

                if (LP == to) {
                    if(_sf > 0)
                        fees = (amount * _sf) / 100;
                }
                else if (_bf > 0 && LP == from) {
                    fees = (amount * _bf) / 100;
                }

                if (fees > 0) {
                    super._transfer(from, address(this), fees);
                    amount -= fees;
                }   

                if (swapEnabled && !swapping && LP == to) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }   
            }
        }

        super._transfer(from, to, amount);
    }

    function launch(address lpOwner) external payable onlyOwner {
        require(tradingActiveTime == 0, "Already launched");
        dexRouter.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,lpOwner,block.timestamp);
        tradingActiveTime = block.number;
    }

    function finalLimits() external onlyOwner() {
        //unlimited
        limits = 3;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }


    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        swapTokensForEth(amountToSwap);
        bool success;
        (success, ) = taxCollector.call{value: address(this).balance}("");
    }


    function withdrawTax() external {
        require(msg.sender == owner() || msg.sender == taxCollector, "Unauthorised");
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }


    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpOwner","type":"address"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"atAmount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6002600655600a805460ff60a01b1916600160a01b179055601560c09081527f456c656374205472756d7020616e64204669676874000000000000000000000060e05261014060405260036101008181526222aa2360e91b61012052906100668382610638565b5060046100738282610638565b5050505f61008561047460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610126573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014a91906106f2565b6001600160a01b031663c9c653966080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610196573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ba91906106f2565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015610203573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022791906106f2565b6001600160a01b031660a05261023f33825f19610478565b61024b30825f19610478565b5f6102586009600a610818565b6102699066017e9d8602b400610826565b600a80546001600160a01b03191633179055905061271061028b826001610826565b610295919061083d565b6008556102a360c88261083d565b600955335f908152600b60205260408082208054600160ff199182168117909255308452919092208054909116909117905560646102e2826002610826565b6102ec919061083d565b73e312a99b0bfb467defb0b63a3f952596736eb2d45f81815260208190527fa9fcb21d46029e288ccace6e1056b71960b5116ac2bea3698e05103dab62ea5292909255905f80516020612050833981519152606461034b856002610826565b610355919061083d565b60405190815260200160405180910390a36064610373826002610826565b61037d919061083d565b73558fdd94416cb29d5485579307b3b6fe379800595f81815260208190527f63a3468cd26457e40f86a2d7460e283920d9a62fe493b2afeb213ff6e1aa775c92909255905f8051602061205083398151915260646103dc856002610826565b6103e6919061083d565b60405190815260200160405180910390a36064610404826004610826565b61040e919061083d565b610418908261085c565b305f81815260208190526040812092909255905f805160206120508339815191526064610446856004610826565b610450919061083d565b61045a908561085c565b60405190815260200160405180910390a36002555061086f565b3390565b6001600160a01b0383166104df5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166105405760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d6565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105c857607f821691505b6020821081036105e657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561063357805f5260205f20601f840160051c810160208510156106115750805b601f840160051c820191505b81811015610630575f815560010161061d565b50505b505050565b81516001600160401b03811115610651576106516105a0565b6106658161065f84546105b4565b846105ec565b6020601f821160018114610697575f83156106805750848201515b5f19600385901b1c1916600184901b178455610630565b5f84815260208120601f198516915b828110156106c657878501518255602094850194600190920191016106a6565b50848210156106e357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610702575f80fd5b81516001600160a01b0381168114610718575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561076e578085048111156107525761075261071f565b600184161561076057908102905b60019390931c928002610737565b935093915050565b5f8261078457506001610812565b8161079057505f610812565b81600181146107a657600281146107b0576107cc565b6001915050610812565b60ff8411156107c1576107c161071f565b50506001821b610812565b5060208310610133831016604e8410600b84101617156107ef575081810a610812565b6107fb5f198484610733565b805f190482111561080e5761080e61071f565b0290505b92915050565b5f61071860ff841683610776565b80820281158282048414176108125761081261071f565b5f8261085757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108125761081261071f565b60805160a0516117966108ba5f395f818161048e01528181610f3c01528181610fa3015261103801525f818161022101528181610767015281816112e6015261139c01526117965ff3fe6080604052600436106101bd575f3560e01c8063685fc568116100f2578063a457c2d711610092578063dd62ed3e11610062578063dd62ed3e146104cf578063dfa20f0a14610513578063e2f4560514610527578063f2fde38b1461053c575f80fd5b8063a457c2d71461043f578063a9059cbb1461045e578063b6fccf8a1461047d578063bea1dcf8146104b0575f80fd5b8063715018a6116100cd578063715018a6146103e5578063860aefcf146103f95780638da5cb5b1461040e57806395d89b411461042b575f80fd5b8063685fc5681461037d5780636ddd17131461039157806370a08231146103b1575f80fd5b8063214013ca1161015d57806336a1efe41161013857806336a1efe414610315578063395093511461032a5780635031595f146103495780635c5d34121461035e575f80fd5b8063214013ca146102c857806323b872dd146102db578063313ce567146102fa575f80fd5b8063095ea7b311610198578063095ea7b31461025b5780630c60fa251461028a57806318160ddd146102a05780631ff8d507146102b4575f80fd5b80630644e757146101c857806306fdde03146101ef5780630758d92414610210575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc61055b565b6040519081526020015b60405180910390f35b3480156101fa575f80fd5b506102036105cd565b6040516101e69190611404565b34801561021b575f80fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b348015610266575f80fd5b5061027a610275366004611450565b61065d565b60405190151581526020016101e6565b348015610295575f80fd5b5061029e610673565b005b3480156102ab575f80fd5b506002546101dc565b3480156102bf575f80fd5b5061029e6106ad565b61029e6102d636600461147a565b6106f8565b3480156102e6575f80fd5b5061027a6102f536600461149c565b610849565b348015610305575f80fd5b50604051600981526020016101e6565b348015610320575f80fd5b506101dc60095481565b348015610335575f80fd5b5061027a610344366004611450565b6108f9565b348015610354575f80fd5b506101dc600c5481565b348015610369575f80fd5b5061029e6103783660046114da565b610934565b348015610388575f80fd5b506101dc6109df565b34801561039c575f80fd5b50600a5461027a90600160a01b900460ff1681565b3480156103bc575f80fd5b506101dc6103cb36600461147a565b6001600160a01b03165f9081526020819052604090205490565b3480156103f0575f80fd5b5061029e610a01565b348015610404575f80fd5b506101dc60065481565b348015610419575f80fd5b506005546001600160a01b0316610243565b348015610436575f80fd5b50610203610a74565b34801561044a575f80fd5b5061027a610459366004611450565b610a83565b348015610469575f80fd5b5061027a610478366004611450565b610b1b565b348015610488575f80fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bb575f80fd5b50600a54610243906001600160a01b031681565b3480156104da575f80fd5b506101dc6104e93660046114fa565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561051e575f80fd5b5061029e610b27565b348015610532575f80fd5b506101dc60085481565b348015610547575f80fd5b5061029e61055636600461147a565b610bcf565b5f6028600c544361056c9190611545565b111561057757505f90565b600a600c54436105879190611545565b11156105935750600f90565b600c546105a09043611545565b5f036105ac5750605590565b6002600c54436105bc9190611545565b116105c75750602d90565b50601e90565b6060600380546105dc90611558565b80601f016020809104026020016040519081016040528092919081815260200182805461060890611558565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b5050505050905090565b5f610669338484610cb9565b5060015b92915050565b6005546001600160a01b031633146106a65760405162461bcd60e51b815260040161069d90611590565b60405180910390fd5b6003600655565b6005546001600160a01b031633146106d75760405162461bcd60e51b815260040161069d90611590565b600a805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146107225760405162461bcd60e51b815260040161069d90611590565b600c54156107655760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161069d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71947306107b4306001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290851660848201524260a482015260c40160606040518083038185885af115801561081a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061083f91906115c5565b505043600c555050565b5f610855848484610ddc565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f1981146108ee57828110156108e15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161069d565b6108ee8533858403610cb9565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161066991859061092f9086906115f0565b610cb9565b6005546001600160a01b0316331461095e5760405162461bcd60e51b815260040161069d90611590565b606461096960025490565b6109739190611603565b8111156109d45760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b606482015260840161069d565b600891909155600955565b5f6028600c54436109f09190611545565b11156109fb57505f90565b50600f90565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161069d90611590565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6060600480546105dc90611558565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610b045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161069d565b610b113385858403610cb9565b5060019392505050565b5f610669338484610ddc565b6005546001600160a01b0316331480610b4a5750600a546001600160a01b031633145b610b855760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b604482015260640161069d565b6040515f90339047908381818185875af1925050503d805f8114610bc4576040519150601f19603f3d011682016040523d82523d5f602084013e610bc9565b606091505b50505050565b6005546001600160a01b03163314610bf95760405162461bcd60e51b815260040161069d90611590565b6001600160a01b038116610c5e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d1b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069d565b6001600160a01b038216610d7c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e025760405162461bcd60e51b815260040161069d90611622565b6001600160a01b038216610e285760405162461bcd60e51b815260040161069d90611667565b5f600c54118015610e4757506005546001600160a01b03838116911614155b8015610e6157506005546001600160a01b03848116911614155b1561108c57600654600203610ed4576064610e7b60025490565b610e859190611603565b811115610ed45760405162461bcd60e51b815260206004820152601760248201527f5472616e73666572206c696d6974206578636565646564000000000000000000604482015260640161069d565b6001600160a01b0383165f908152600b602052604090205460ff16158015610f1457506001600160a01b0382165f908152600b602052604090205460ff16155b1561108c575f80610f236109df565b90505f610f2e61055b565b9050846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610f8d578115610f88576064610f7b83866116aa565b610f859190611603565b92505b610feb565b5f81118015610fcd5750856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b15610feb576064610fde82866116aa565b610fe89190611603565b92505b821561100957610ffc86308561109c565b6110068385611545565b93505b600a54600160a01b900460ff168015611025575060075460ff16155b80156110625750846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b15611088576007805460ff1916600117905561107d846111ef565b6007805460ff191690555b5050505b61109783838361109c565b505050565b6001600160a01b0383166110c25760405162461bcd60e51b815260040161069d90611622565b6001600160a01b0382166110e85760405162461bcd60e51b815260040161069d90611667565b6001600160a01b0383165f908152602081905260409020548181101561115f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161069d565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906111959084906115f0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e191815260200190565b60405180910390a350505050565b305f9081526020819052604090205460085481101561120c575050565b60095481111561121b57506009545b818111156112265750805b805f03611231575050565b61123a81611291565b600a546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611284576040519150601f19603f3d011682016040523d82523d5f602084013e611289565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112c4576112c46116c1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611340573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136491906116d5565b81600181518110611377576113776116c1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906113db9085905f908690309042906004016116f0565b5f604051808303815f87803b1580156113f2575f80fd5b505af1158015611289573d5f803e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461144d575f80fd5b50565b5f8060408385031215611461575f80fd5b823561146c81611439565b946020939093013593505050565b5f6020828403121561148a575f80fd5b813561149581611439565b9392505050565b5f805f606084860312156114ae575f80fd5b83356114b981611439565b925060208401356114c981611439565b929592945050506040919091013590565b5f80604083850312156114eb575f80fd5b50508035926020909101359150565b5f806040838503121561150b575f80fd5b823561151681611439565b9150602083013561152681611439565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561066d5761066d611531565b600181811c9082168061156c57607f821691505b60208210810361158a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f606084860312156115d7575f80fd5b5050815160208301516040909301519094929350919050565b8082018082111561066d5761066d611531565b5f8261161d57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761066d5761066d611531565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116e5575f80fd5b815161149581611439565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156117405783516001600160a01b0316835260209384019390920191600101611719565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122016ea15f4284ad5b6511e880199ef67b14dfa1fe3fa2d7bbacf84b6d3d66efc6c64736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c8063685fc568116100f2578063a457c2d711610092578063dd62ed3e11610062578063dd62ed3e146104cf578063dfa20f0a14610513578063e2f4560514610527578063f2fde38b1461053c575f80fd5b8063a457c2d71461043f578063a9059cbb1461045e578063b6fccf8a1461047d578063bea1dcf8146104b0575f80fd5b8063715018a6116100cd578063715018a6146103e5578063860aefcf146103f95780638da5cb5b1461040e57806395d89b411461042b575f80fd5b8063685fc5681461037d5780636ddd17131461039157806370a08231146103b1575f80fd5b8063214013ca1161015d57806336a1efe41161013857806336a1efe414610315578063395093511461032a5780635031595f146103495780635c5d34121461035e575f80fd5b8063214013ca146102c857806323b872dd146102db578063313ce567146102fa575f80fd5b8063095ea7b311610198578063095ea7b31461025b5780630c60fa251461028a57806318160ddd146102a05780631ff8d507146102b4575f80fd5b80630644e757146101c857806306fdde03146101ef5780630758d92414610210575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc61055b565b6040519081526020015b60405180910390f35b3480156101fa575f80fd5b506102036105cd565b6040516101e69190611404565b34801561021b575f80fd5b506102437f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101e6565b348015610266575f80fd5b5061027a610275366004611450565b61065d565b60405190151581526020016101e6565b348015610295575f80fd5b5061029e610673565b005b3480156102ab575f80fd5b506002546101dc565b3480156102bf575f80fd5b5061029e6106ad565b61029e6102d636600461147a565b6106f8565b3480156102e6575f80fd5b5061027a6102f536600461149c565b610849565b348015610305575f80fd5b50604051600981526020016101e6565b348015610320575f80fd5b506101dc60095481565b348015610335575f80fd5b5061027a610344366004611450565b6108f9565b348015610354575f80fd5b506101dc600c5481565b348015610369575f80fd5b5061029e6103783660046114da565b610934565b348015610388575f80fd5b506101dc6109df565b34801561039c575f80fd5b50600a5461027a90600160a01b900460ff1681565b3480156103bc575f80fd5b506101dc6103cb36600461147a565b6001600160a01b03165f9081526020819052604090205490565b3480156103f0575f80fd5b5061029e610a01565b348015610404575f80fd5b506101dc60065481565b348015610419575f80fd5b506005546001600160a01b0316610243565b348015610436575f80fd5b50610203610a74565b34801561044a575f80fd5b5061027a610459366004611450565b610a83565b348015610469575f80fd5b5061027a610478366004611450565b610b1b565b348015610488575f80fd5b506102437f0000000000000000000000006359d8958765702718abd402b9c60fa871e774be81565b3480156104bb575f80fd5b50600a54610243906001600160a01b031681565b3480156104da575f80fd5b506101dc6104e93660046114fa565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561051e575f80fd5b5061029e610b27565b348015610532575f80fd5b506101dc60085481565b348015610547575f80fd5b5061029e61055636600461147a565b610bcf565b5f6028600c544361056c9190611545565b111561057757505f90565b600a600c54436105879190611545565b11156105935750600f90565b600c546105a09043611545565b5f036105ac5750605590565b6002600c54436105bc9190611545565b116105c75750602d90565b50601e90565b6060600380546105dc90611558565b80601f016020809104026020016040519081016040528092919081815260200182805461060890611558565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b5050505050905090565b5f610669338484610cb9565b5060015b92915050565b6005546001600160a01b031633146106a65760405162461bcd60e51b815260040161069d90611590565b60405180910390fd5b6003600655565b6005546001600160a01b031633146106d75760405162461bcd60e51b815260040161069d90611590565b600a805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146107225760405162461bcd60e51b815260040161069d90611590565b600c54156107655760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161069d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71947306107b4306001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290851660848201524260a482015260c40160606040518083038185885af115801561081a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061083f91906115c5565b505043600c555050565b5f610855848484610ddc565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f1981146108ee57828110156108e15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161069d565b6108ee8533858403610cb9565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161066991859061092f9086906115f0565b610cb9565b6005546001600160a01b0316331461095e5760405162461bcd60e51b815260040161069d90611590565b606461096960025490565b6109739190611603565b8111156109d45760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b606482015260840161069d565b600891909155600955565b5f6028600c54436109f09190611545565b11156109fb57505f90565b50600f90565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161069d90611590565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6060600480546105dc90611558565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610b045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161069d565b610b113385858403610cb9565b5060019392505050565b5f610669338484610ddc565b6005546001600160a01b0316331480610b4a5750600a546001600160a01b031633145b610b855760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b604482015260640161069d565b6040515f90339047908381818185875af1925050503d805f8114610bc4576040519150601f19603f3d011682016040523d82523d5f602084013e610bc9565b606091505b50505050565b6005546001600160a01b03163314610bf95760405162461bcd60e51b815260040161069d90611590565b6001600160a01b038116610c5e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d1b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069d565b6001600160a01b038216610d7c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e025760405162461bcd60e51b815260040161069d90611622565b6001600160a01b038216610e285760405162461bcd60e51b815260040161069d90611667565b5f600c54118015610e4757506005546001600160a01b03838116911614155b8015610e6157506005546001600160a01b03848116911614155b1561108c57600654600203610ed4576064610e7b60025490565b610e859190611603565b811115610ed45760405162461bcd60e51b815260206004820152601760248201527f5472616e73666572206c696d6974206578636565646564000000000000000000604482015260640161069d565b6001600160a01b0383165f908152600b602052604090205460ff16158015610f1457506001600160a01b0382165f908152600b602052604090205460ff16155b1561108c575f80610f236109df565b90505f610f2e61055b565b9050846001600160a01b03167f0000000000000000000000006359d8958765702718abd402b9c60fa871e774be6001600160a01b031603610f8d578115610f88576064610f7b83866116aa565b610f859190611603565b92505b610feb565b5f81118015610fcd5750856001600160a01b03167f0000000000000000000000006359d8958765702718abd402b9c60fa871e774be6001600160a01b0316145b15610feb576064610fde82866116aa565b610fe89190611603565b92505b821561100957610ffc86308561109c565b6110068385611545565b93505b600a54600160a01b900460ff168015611025575060075460ff16155b80156110625750846001600160a01b03167f0000000000000000000000006359d8958765702718abd402b9c60fa871e774be6001600160a01b0316145b15611088576007805460ff1916600117905561107d846111ef565b6007805460ff191690555b5050505b61109783838361109c565b505050565b6001600160a01b0383166110c25760405162461bcd60e51b815260040161069d90611622565b6001600160a01b0382166110e85760405162461bcd60e51b815260040161069d90611667565b6001600160a01b0383165f908152602081905260409020548181101561115f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161069d565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906111959084906115f0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e191815260200190565b60405180910390a350505050565b305f9081526020819052604090205460085481101561120c575050565b60095481111561121b57506009545b818111156112265750805b805f03611231575050565b61123a81611291565b600a546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611284576040519150601f19603f3d011682016040523d82523d5f602084013e611289565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106112c4576112c46116c1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611340573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136491906116d5565b81600181518110611377576113776116c1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906113db9085905f908690309042906004016116f0565b5f604051808303815f87803b1580156113f2575f80fd5b505af1158015611289573d5f803e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461144d575f80fd5b50565b5f8060408385031215611461575f80fd5b823561146c81611439565b946020939093013593505050565b5f6020828403121561148a575f80fd5b813561149581611439565b9392505050565b5f805f606084860312156114ae575f80fd5b83356114b981611439565b925060208401356114c981611439565b929592945050506040919091013590565b5f80604083850312156114eb575f80fd5b50508035926020909101359150565b5f806040838503121561150b575f80fd5b823561151681611439565b9150602083013561152681611439565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561066d5761066d611531565b600181811c9082168061156c57607f821691505b60208210810361158a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f606084860312156115d7575f80fd5b5050815160208301516040909301519094929350919050565b8082018082111561066d5761066d611531565b5f8261161d57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761066d5761066d611531565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116e5575f80fd5b815161149581611439565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156117405783516001600160a01b0316835260209384019390920191600101611719565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122016ea15f4284ad5b6511e880199ef67b14dfa1fe3fa2d7bbacf84b6d3d66efc6c64736f6c634300081a0033

Deployed Bytecode Sourcemap

9809:5945:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:342;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;12410:342:0;;;;;;;;4186:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9847:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;801:32:1;;;783:51;;771:2;756:18;9847:37:0;619:221:1;5241:210:0;;;;;;;;;;-1:-1:-1;5241:210:0;;;;;:::i;:::-;;:::i;:::-;;;1518:14:1;;1511:22;1493:41;;1481:2;1466:18;5241:210:0;1353:187:1;14463:94:0;;;;;;;;;;;;;:::i;:::-;;4507:108;;;;;;;;;;-1:-1:-1;4595:12:0;;4507:108;;12160:86;;;;;;;;;;;;;:::i;14148:307::-;;;;;;:::i;:::-;;:::i;5459:620::-;;;;;;;;;;-1:-1:-1;5459:620:0;;;;;:::i;:::-;;:::i;11668:84::-;;;;;;;;;;-1:-1:-1;11668:84:0;;11743:1;2452:36:1;;2440:2;2425:18;11668:84:0;2310:184:1;10122:28:0;;;;;;;;;;;;;;;;6087:297;;;;;;;;;;-1:-1:-1;6087:297:0;;;;;:::i;:::-;;:::i;10297:32::-;;;;;;;;;;;;;;;;11889:263;;;;;;;;;;-1:-1:-1;11889:263:0;;;;;:::i;:::-;;:::i;12260:142::-;;;;;;;;;;;;;:::i;10195:30::-;;;;;;;;;;-1:-1:-1;10195:30:0;;;;-1:-1:-1;;;10195:30:0;;;;;;11760:119;;;;;;;;;;-1:-1:-1;11760:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;11853:18:0;11826:7;11853:18;;;;;;;;;;;;11760:119;8486:148;;;;;;;;;;;;;:::i;10020:25::-;;;;;;;;;;;;;;;;8272:79;;;;;;;;;;-1:-1:-1;8337:6:0;;-1:-1:-1;;;;;8337:6:0;8272:79;;4294:104;;;;;;;;;;;;;:::i;6392:482::-;;;;;;;;;;-1:-1:-1;6392:482:0;;;;;:::i;:::-;;:::i;4808:216::-;;;;;;;;;;-1:-1:-1;4808:216:0;;;;;:::i;:::-;;:::i;9891:27::-;;;;;;;;;;;;;;;10159;;;;;;;;;;-1:-1:-1;10159:27:0;;;;-1:-1:-1;;;;;10159:27:0;;;5032:201;;;;;;;;;;-1:-1:-1;5032:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5198:18:0;;;5166:7;5198:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5032:201;15479:233;;;;;;;;;;;;;:::i;10082:33::-;;;;;;;;;;;;;;;;8642:281;;;;;;;;;;-1:-1:-1;8642:281:0;;;;;:::i;:::-;;:::i;12410:342::-;12453:7;12511:2;12491:17;;12476:12;:32;;;;:::i;:::-;:37;12473:251;;;-1:-1:-1;12522:1:0;;12410:342::o;12473:251::-;12577:2;12557:17;;12542:12;:32;;;;:::i;:::-;:37;12539:185;;;-1:-1:-1;12588:2:0;;12410:342::o;12539:185::-;12624:17;;12609:32;;:12;:32;:::i;:::-;12645:1;12609:37;12606:118;;-1:-1:-1;12655:2:0;;12410:342::o;12606:118::-;12712:1;12691:17;;12676:12;:32;;;;:::i;:::-;:37;12673:51;;-1:-1:-1;12722:2:0;;12410:342::o;12673:51::-;-1:-1:-1;12742:2:0;;12410:342::o;4186:100::-;4240:13;4273:5;4266:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4186:100;:::o;5241:210::-;5360:4;5382:39;328:10;5405:7;5414:6;5382:8;:39::i;:::-;-1:-1:-1;5439:4:0;5241:210;;;;;:::o;14463:94::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;;;;;;;;;14548:1:::1;14539:6;:10:::0;14463:94::o;12160:86::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;12227:11:::1;::::0;;-1:-1:-1;;;;12212:26:0;::::1;-1:-1:-1::0;;;12227:11:0;;;::::1;;;12226:12;12212:26:::0;;::::1;;::::0;;12160:86::o;14148:307::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;14227:17:::1;::::0;:22;14219:51:::1;;;::::0;-1:-1:-1;;;14219:51:0;;4664:2:1;14219:51:0::1;::::0;::::1;4646:21:1::0;4703:2;4683:18;;;4676:30;-1:-1:-1;;;4722:18:1;;;4715:46;4778:18;;14219:51:0::1;4462:340:1::0;14219:51:0::1;14281:9;-1:-1:-1::0;;;;;14281:25:0::1;;14314:21;14345:4;14351:24;14369:4;-1:-1:-1::0;;;;;11853:18:0;11826:7;11853:18;;;;;;;;;;;;11760:119;14351:24:::1;14281:123;::::0;-1:-1:-1;;;;;;14281:123:0::1;::::0;;;;;;-1:-1:-1;;;;;5128:32:1;;;14281:123:0::1;::::0;::::1;5110:51:1::0;5177:18;;;5170:34;;;;14376:1:0::1;5220:18:1::0;;;5213:34;;;5263:18;;;5256:34;5327:32;;;5306:19;;;5299:61;14388:15:0::1;5376:19:1::0;;;5369:35;5082:19;;14281:123:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14435:12:0::1;14415:17;:32:::0;-1:-1:-1;;14148:307:0:o;5459:620::-;5599:4;5616:36;5626:6;5634:9;5645:6;5616:9;:36::i;:::-;-1:-1:-1;;;;;5692:19:0;;5665:24;5692:19;;;:11;:19;;;;;;;;328:10;5692:33;;;;;;;;-1:-1:-1;;5739:37:0;;5736:314;;5840:6;5820:16;:26;;5794:128;;;;-1:-1:-1;;;5794:128:0;;6078:2:1;5794:128:0;;;6060:21:1;6117:2;6097:18;;;6090:30;6156:34;6136:18;;;6129:62;-1:-1:-1;;;6207:18:1;;;6200:38;6255:19;;5794:128:0;5876:404:1;5794:128:0;5966:57;5975:6;328:10;6016:6;5997:16;:25;5966:8;:57::i;:::-;-1:-1:-1;6067:4:0;;5459:620;-1:-1:-1;;;;5459:620:0:o;6087:297::-;328:10;6202:4;6296:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6296:34:0;;;;;;;;;;6202:4;;6224:130;;6274:7;;6296:47;;6333:10;;6296:47;:::i;:::-;6224:8;:130::i;11889:263::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;12019:3:::1;12003:13;4595:12:::0;;;4507:108;12003:13:::1;:19;;;;:::i;:::-;11990:9;:32;;11982:86;;;::::0;-1:-1:-1;;;11982:86:0;;6839:2:1;11982:86:0::1;::::0;::::1;6821:21:1::0;6878:2;6858:18;;;6851:30;6917:34;6897:18;;;6890:62;-1:-1:-1;;;6968:18:1;;;6961:39;7017:19;;11982:86:0::1;6637:405:1::0;11982:86:0::1;12079:18;:29:::0;;;;12119:13:::1;:25:::0;11889:263::o;12260:142::-;12304:7;12362:2;12342:17;;12327:12;:32;;;;:::i;:::-;:37;12324:50;;;-1:-1:-1;12373:1:0;;12260:142::o;12324:50::-;-1:-1:-1;12392:2:0;;12260:142::o;8486:148::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;8577:6:::1;::::0;8556:40:::1;::::0;8593:1:::1;::::0;-1:-1:-1;;;;;8577:6:0::1;::::0;8556:40:::1;::::0;8593:1;;8556:40:::1;8607:6;:19:::0;;-1:-1:-1;;;;;;8607:19:0::1;::::0;;8486:148::o;4294:104::-;4350:13;4383:7;4376:14;;;;;:::i;6392:482::-;328:10;6512:4;6561:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6561:34:0;;;;;;;;;;6628:35;;;;6606:122;;;;-1:-1:-1;;;6606:122:0;;7249:2:1;6606:122:0;;;7231:21:1;7288:2;7268:18;;;7261:30;7327:34;7307:18;;;7300:62;-1:-1:-1;;;7378:18:1;;;7371:35;7423:19;;6606:122:0;7047:401:1;6606:122:0;6764:67;328:10;6787:7;6815:15;6796:16;:34;6764:8;:67::i;:::-;-1:-1:-1;6862:4:0;;6392:482;-1:-1:-1;;;6392:482:0:o;4808:216::-;4930:4;4952:42;328:10;4976:9;4987:6;4952:9;:42::i;15479:233::-;8337:6;;-1:-1:-1;;;;;8337:6:0;15530:10;:21;;:51;;-1:-1:-1;15569:12:0;;-1:-1:-1;;;;;15569:12:0;15555:10;:26;15530:51;15522:76;;;;-1:-1:-1;;;15522:76:0;;7655:2:1;15522:76:0;;;7637:21:1;7694:2;7674:18;;;7667:30;-1:-1:-1;;;7713:18:1;;;7706:42;7765:18;;15522:76:0;7453:336:1;15522:76:0;15646:58;;15609:12;;15654:10;;15678:21;;15609:12;15646:58;15609:12;15646:58;15678:21;15654:10;15646:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;15479:233:0:o;8642:281::-;8399:6;;-1:-1:-1;;;;;8399:6:0;328:10;8399:22;8391:67;;;;-1:-1:-1;;;8391:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8745:22:0;::::1;8723:110;;;::::0;-1:-1:-1;;;8723:110:0;;8206:2:1;8723:110:0::1;::::0;::::1;8188:21:1::0;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:36;8381:19;;8723:110:0::1;8004:402:1::0;8723:110:0::1;8870:6;::::0;8849:38:::1;::::0;-1:-1:-1;;;;;8849:38:0;;::::1;::::0;8870:6:::1;::::0;8849:38:::1;::::0;8870:6:::1;::::0;8849:38:::1;8898:6;:17:::0;;-1:-1:-1;;;;;;8898:17:0::1;-1:-1:-1::0;;;;;8898:17:0;;;::::1;::::0;;;::::1;::::0;;8642:281::o;7541:380::-;-1:-1:-1;;;;;7677:19:0;;7669:68;;;;-1:-1:-1;;;7669:68:0;;8613:2:1;7669:68:0;;;8595:21:1;8652:2;8632:18;;;8625:30;8691:34;8671:18;;;8664:62;-1:-1:-1;;;8742:18:1;;;8735:34;8786:19;;7669:68:0;8411:400:1;7669:68:0;-1:-1:-1;;;;;7756:21:0;;7748:68;;;;-1:-1:-1;;;7748:68:0;;9018:2:1;7748:68:0;;;9000:21:1;9057:2;9037:18;;;9030:30;9096:34;9076:18;;;9069:62;-1:-1:-1;;;9147:18:1;;;9140:32;9189:19;;7748:68:0;8816:398:1;7748:68:0;-1:-1:-1;;;;;7829:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7881:32;;160:25:1;;;7881:32:0;;133:18:1;7881:32:0;;;;;;;7541:380;;;:::o;12762:1378::-;-1:-1:-1;;;;;12894:18:0;;12886:68;;;;-1:-1:-1;;;12886:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12973:16:0;;12965:64;;;;-1:-1:-1;;;12965:64:0;;;;;;;:::i;:::-;13066:1;13046:17;;:21;:38;;;;-1:-1:-1;8337:6:0;;-1:-1:-1;;;;;13071:13:0;;;8337:6;;13071:13;;13046:38;:57;;;;-1:-1:-1;8337:6:0;;-1:-1:-1;;;;;13088:15:0;;;8337:6;;13088:15;;13046:57;13042:1045;;;13124:6;;13134:1;13124:11;13120:117;;13190:3;13174:13;4595:12;;;4507:108;13174:13;:19;;;;:::i;:::-;13164:6;:29;;13156:65;;;;-1:-1:-1;;;13156:65:0;;10231:2:1;13156:65:0;;;10213:21:1;10270:2;10250:18;;;10243:30;10309:25;10289:18;;;10282:53;10352:18;;13156:65:0;10029:347:1;13156:65:0;-1:-1:-1;;;;;13258:25:0;;;;;;:19;:25;;;;;;;;13257:26;:54;;;;-1:-1:-1;;;;;;13288:23:0;;;;;;:19;:23;;;;;;;;13287:24;13257:54;13253:823;;;13332:12;13367:11;13381:13;:11;:13::i;:::-;13367:27;;13413:11;13427:12;:10;:12::i;:::-;13413:26;;13470:2;-1:-1:-1;;;;;13464:8:0;:2;-1:-1:-1;;;;;13464:8:0;;13460:241;;13500:7;;13497:64;;13558:3;13542:12;13551:3;13542:6;:12;:::i;:::-;13541:20;;;;:::i;:::-;13534:27;;13497:64;13460:241;;;13614:1;13608:3;:7;:21;;;;;13625:4;-1:-1:-1;;;;;13619:10:0;:2;-1:-1:-1;;;;;13619:10:0;;13608:21;13604:97;;;13678:3;13662:12;13671:3;13662:6;:12;:::i;:::-;13661:20;;;;:::i;:::-;13654:27;;13604:97;13725:8;;13721:136;;13758:42;13774:4;13788;13795;13758:15;:42::i;:::-;13823:14;13833:4;13823:14;;:::i;:::-;;;13721:136;13884:11;;-1:-1:-1;;;13884:11:0;;;;:24;;;;-1:-1:-1;13900:8:0;;;;13899:9;13884:24;:36;;;;;13918:2;-1:-1:-1;;;;;13912:8:0;:2;-1:-1:-1;;;;;13912:8:0;;13884:36;13880:178;;;13945:8;:15;;-1:-1:-1;;13945:15:0;13956:4;13945:15;;;13983:16;13992:6;13983:8;:16::i;:::-;14022:8;:16;;-1:-1:-1;;14022:16:0;;;13880:178;13313:763;;;13253:823;14099:33;14115:4;14121:2;14125:6;14099:15;:33::i;:::-;12762:1378;;;:::o;6882:651::-;-1:-1:-1;;;;;7022:20:0;;7014:70;;;;-1:-1:-1;;;7014:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7103:23:0;;7095:71;;;;-1:-1:-1;;;7095:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7203:17:0;;7179:21;7203:17;;;;;;;;;;;7253:23;;;;7231:111;;;;-1:-1:-1;;;7231:111:0;;10756:2:1;7231:111:0;;;10738:21:1;10795:2;10775:18;;;10768:30;10834:34;10814:18;;;10807:62;-1:-1:-1;;;10885:18:1;;;10878:36;10931:19;;7231:111:0;10554:402:1;7231:111:0;-1:-1:-1;;;;;7378:17:0;;;:9;:17;;;;;;;;;;;7398:22;;;7378:42;;7442:20;;;;;;;;:30;;7414:6;;7378:9;7442:30;;7414:6;;7442:30;:::i;:::-;;;;;;;;7507:9;-1:-1:-1;;;;;7490:35:0;7499:6;-1:-1:-1;;;;;7490:35:0;;7518:6;7490:35;;;;160:25:1;;148:2;133:18;;14:177;7490:35:0;;;;;;;;7003:530;6882:651;;;:::o;14991:478::-;15085:4;15044:20;11853:18;;;;;;;;;;;15121;;15106:33;;15102:46;;;15141:7;14991:478;:::o;15102:46::-;15177:13;;15162:12;:28;15158:62;;;-1:-1:-1;15207:13:0;;15158:62;15250:6;15235:12;:21;15231:48;;;-1:-1:-1;15273:6:0;15231:48;15294:12;15310:1;15294:17;15290:30;;15313:7;14991:478;:::o;15290:30::-;15332;15349:12;15332:16;:30::i;:::-;15410:12;;:51;;15373:12;;-1:-1:-1;;;;;15410:12:0;;15435:21;;15373:12;15410:51;15373:12;15410:51;15435:21;15410:12;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14991:478:0:o;14565:416::-;14655:16;;;14669:1;14655:16;;;;;;;;14631:21;;14655:16;;;;;;;;;;-1:-1:-1;14655:16:0;14631:40;;14700:4;14682;14687:1;14682:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14682:23:0;;;-1:-1:-1;;;;;14682:23:0;;;;;14726:9;-1:-1:-1;;;;;14726:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14716:4;14721:1;14716:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14716:26:0;;;:7;;;;;;;;;:26;14755:218;;-1:-1:-1;;;14755:218:0;;:9;:60;;;;;;:218;;14830:11;;14856:1;;14900:4;;14927;;14947:15;;14755:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:418:1;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;845:131::-;-1:-1:-1;;;;;920:31:1;;910:42;;900:70;;966:1;963;956:12;900:70;845:131;:::o;981:367::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1165:9;1152:23;1184:31;1209:5;1184:31;:::i;:::-;1234:5;1312:2;1297:18;;;;1284:32;;-1:-1:-1;;;981:367:1:o;1545:247::-;1604:6;1657:2;1645:9;1636:7;1632:23;1628:32;1625:52;;;1673:1;1670;1663:12;1625:52;1712:9;1699:23;1731:31;1756:5;1731:31;:::i;:::-;1781:5;1545:247;-1:-1:-1;;;1545:247:1:o;1797:508::-;1874:6;1882;1890;1943:2;1931:9;1922:7;1918:23;1914:32;1911:52;;;1959:1;1956;1949:12;1911:52;1998:9;1985:23;2017:31;2042:5;2017:31;:::i;:::-;2067:5;-1:-1:-1;2124:2:1;2109:18;;2096:32;2137:33;2096:32;2137:33;:::i;:::-;1797:508;;2189:7;;-1:-1:-1;;;2269:2:1;2254:18;;;;2241:32;;1797:508::o;2499:346::-;2567:6;2575;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;-1:-1:-1;;2689:23:1;;;2809:2;2794:18;;;2781:32;;-1:-1:-1;2499:346:1:o;3058:388::-;3126:6;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3242:9;3229:23;3261:31;3286:5;3261:31;:::i;:::-;3311:5;-1:-1:-1;3368:2:1;3353:18;;3340:32;3381:33;3340:32;3381:33;:::i;:::-;3433:7;3423:17;;;3058:388;;;;;:::o;3451:127::-;3512:10;3507:3;3503:20;3500:1;3493:31;3543:4;3540:1;3533:15;3567:4;3564:1;3557:15;3583:128;3650:9;;;3671:11;;;3668:37;;;3685:18;;:::i;3716:380::-;3795:1;3791:12;;;;3838;;;3859:61;;3913:4;3905:6;3901:17;3891:27;;3859:61;3966:2;3958:6;3955:14;3935:18;3932:38;3929:161;;4012:10;4007:3;4003:20;4000:1;3993:31;4047:4;4044:1;4037:15;4075:4;4072:1;4065:15;3929:161;;3716:380;;;:::o;4101:356::-;4303:2;4285:21;;;4322:18;;;4315:30;4381:34;4376:2;4361:18;;4354:62;4448:2;4433:18;;4101:356::o;5415:456::-;5503:6;5511;5519;5572:2;5560:9;5551:7;5547:23;5543:32;5540:52;;;5588:1;5585;5578:12;5540:52;-1:-1:-1;;5633:16:1;;5739:2;5724:18;;5718:25;5835:2;5820:18;;;5814:25;5633:16;;5718:25;;-1:-1:-1;5814:25:1;5415:456;-1:-1:-1;5415:456:1:o;6285:125::-;6350:9;;;6371:10;;;6368:36;;;6384:18;;:::i;6415:217::-;6455:1;6481;6471:132;;6525:10;6520:3;6516:20;6513:1;6506:31;6560:4;6557:1;6550:15;6588:4;6585:1;6578:15;6471:132;-1:-1:-1;6617:9:1;;6415:217::o;9219:401::-;9421:2;9403:21;;;9460:2;9440:18;;;9433:30;9499:34;9494:2;9479:18;;9472:62;-1:-1:-1;;;9565:2:1;9550:18;;9543:35;9610:3;9595:19;;9219:401::o;9625:399::-;9827:2;9809:21;;;9866:2;9846:18;;;9839:30;9905:34;9900:2;9885:18;;9878:62;-1:-1:-1;;;9971:2:1;9956:18;;9949:33;10014:3;9999:19;;9625:399::o;10381:168::-;10454:9;;;10485;;10502:15;;;10496:22;;10482:37;10472:71;;10523:18;;:::i;11093:127::-;11154:10;11149:3;11145:20;11142:1;11135:31;11185:4;11182:1;11175:15;11209:4;11206:1;11199:15;11225:251;11295:6;11348:2;11336:9;11327:7;11323:23;11319:32;11316:52;;;11364:1;11361;11354:12;11316:52;11396:9;11390:16;11415:31;11440:5;11415:31;:::i;11481:959::-;11743:4;11791:3;11780:9;11776:19;11822:6;11811:9;11804:25;11865:6;11860:2;11849:9;11845:18;11838:34;11908:3;11903:2;11892:9;11888:18;11881:31;11932:6;11967;11961:13;11998:6;11990;11983:22;12036:3;12025:9;12021:19;12014:26;;12075:2;12067:6;12063:15;12049:29;;12096:1;12106:195;12120:6;12117:1;12114:13;12106:195;;;12185:13;;-1:-1:-1;;;;;12181:39:1;12169:52;;12250:2;12276:15;;;;12241:12;;;;12217:1;12135:9;12106:195;;;-1:-1:-1;;;;;;;12357:32:1;;;;12352:2;12337:18;;12330:60;-1:-1:-1;;12421:3:1;12406:19;12399:35;12318:3;11481:959;-1:-1:-1;;;11481:959:1:o

Swarm Source

ipfs://16ea15f4284ad5b6511e880199ef67b14dfa1fe3fa2d7bbacf84b6d3d66efc6c
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.