ETH Price: $3,372.71 (+2.99%)
Gas: 3 Gwei

Token

Ethereum Trust Foundation (ETF)
 

Overview

Max Total Supply

75,210,000,000 ETF

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
laikaforever.eth
Balance
0.3423427431640625 ETF

Value
$0.00
0x070aac7a0149ffd03245fe5f31e2ecb962635e79
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.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-14
*/

// SPDX-License-Identifier: MIT

/*



    ________  __                                      ______                __     ______                      __      __  _           
   / ____/ /_/ /_  ___  ________  __  ______ ___     /_  __/______  _______/ /_   / ____/___  __  ______  ____/ /___ _/ /_(_)___  ____ 
  / __/ / __/ __ \/ _ \/ ___/ _ \/ / / / __ `__ \     / / / ___/ / / / ___/ __/  / /_  / __ \/ / / / __ \/ __  / __ `/ __/ / __ \/ __ \
 / /___/ /_/ / / /  __/ /  /  __/ /_/ / / / / / /    / / / /  / /_/ (__  ) /_   / __/ / /_/ / /_/ / / / / /_/ / /_/ / /_/ / /_/ / / / /
/_____/\__/_/ /_/\___/_/   \___/\__,_/_/ /_/ /_/    /_/ /_/   \__,_/____/\__/  /_/    \____/\__,_/_/ /_/\__,_/\__,_/\__/_/\____/_/ /_/ 
                                                                                                                                       




Telegram
https://t.me/ethereumtrustfoundation

Twitter 
https://tinyurl.com/5ezh2ewa


---->   0% buy tax
---->   6% sell tax





      .       .    )        .           .
   .       *             .         .
               .                      .
   .       .                   .
                                *        .
      .   '               .              .
              _.---._   .            .     *
    *       .'       '.
        _.-~===========~-._
       (_______SEC_________)       .   *
  __  .'     \_______/   .'  ______        __
    |              .'  .'   |      |      |  |
    |             '         |      |      |  |
    |                       |      |   ___|  |_
  __|_______________________|__..--~~~~ XXX   ~--.
                    /|\
                   /   \
                  /  |  \
                 /       \
   \|/          /    |    \
               /           \
              /      |      \
             /               \
            /
           /       "BRING MY ETH BACK!"
          /    __               \
         /    /  \ /             \
        /    (\__/)  |            \
       /     _\__/_                \
      /     /      \ |              \
     /     / /   / /                 \
           \ |   \_\                  \
            \|____\_)                  \    \|/
             |    \
             | |\  \
             | |/  /
             |_/__/
            (__[__)

  8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
   8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8





                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                     0CLLCLffffLG0GGGGGGGGGGG00000                           C;;t   
    0fi;;;iiiiiiiiiiiiiiiiiiiiiiiiiiii:....  .  ,,..........,,,,,:1tffffffffffG              t  i   
  Gt;                                                              .......... ,L            Lit;1   
 G;                                                               .:11111i11;  .;1fLLLLLLLLf,:i:iCG 
 L                                                                ..,,,,,,,,,     .,::::,,,,.   ,;t 
 0:                                                        .,,,,:;tLLLLLLLLLf11fftfLLLLLLLLLff11C   
  L,         .  :;;i;.           .1ffffL1::;i1ttffffftti;;iC00000                                   
   G,        fLiG   0,  i:        f      00                                                         
    t      .:L GC0  Gi:i0f        :G                                                                
   0i     ,L000000000 GC 0:        i0                                                               
   1     .f               C.        10                                                              
  f.     t                 f.        i0                                                             
 C,     i0                  t.        :L                                                            
 t     .G                    f,        .iG                                                          
 0f1;;;t                      C:         .1C0                                                       
                               01.         .:tG                                                     
                                 Ci.         i0                                                     
                                   Ci.     .t0                                                      
                                     Gt,  ,L                                                        
                                       0L1G                                                         
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                      





 */
pragma solidity 0.8.17;

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.
     *
     * 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:
     * 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.
     *
     * 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
    );
}

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 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) private _balances;

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

    uint256 private _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 transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    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 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 transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function _createInitialSupply(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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);
    }

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

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(
        bool confirmRenounce
    ) external virtual onlyOwner {
        require(confirmRenounce, "Please confirm renounce!");
        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 ILpPair {
    function sync() external;
}

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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    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 dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    address public communityAddress;
    address public daoAddress;
    address public foundationAddress;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    uint256 public sellTotalFees;
    uint256 public sellCommunityFee;
    uint256 public sellLiquidityFee;

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;

    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;

    uint256 public tokensForCommunity;
    uint256 public tokensForLiquidity;

    uint256 public buyTotalFees;
    uint256 public buyCommunityFee;
    uint256 public buyLiquidityFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event TradingEnabled();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(uint256 ethReceived);

    event TransferForeignToken(address token, uint256 amount);

    constructor() payable ERC20("Ethereum Trust Foundation", "ETF") {
        address newOwner = msg.sender;

        address _dexRouter;
        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

        // initialize router
        dexRouter = IDexRouter(_dexRouter);

        // // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 69000000000 * 10 ** 18; // 69 billion

        maxBuyAmount = (totalSupply * 20) / 100;
        maxSellAmount = (totalSupply * 3) / 100;
        maxWallet = (totalSupply * 15) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        buyCommunityFee = 0;
        buyLiquidityFee = 0;
        buyTotalFees = buyCommunityFee + buyLiquidityFee;
        sellCommunityFee = 5;
        sellLiquidityFee = 1;
        sellTotalFees = sellCommunityFee + sellLiquidityFee;

        communityAddress = address(0x79B4cfA593B7794a7F9e54911731101E7F0afd5f);
        foundationAddress = address(0xdf1fa21aaD71C50E642FcA3Aa4332da17BbEA409);
        daoAddress = address(0xdA0E7f1ED2c10DA06bd1ebc0D38E3d667E07cc85);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(communityAddress), true);
        _excludeFromMaxTransaction(address(daoAddress), true);
        _excludeFromMaxTransaction(address(foundationAddress), true);
        _excludeFromMaxTransaction(address(dexRouter), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(communityAddress), true);
        excludeFromFees(address(daoAddress), true);
        excludeFromFees(address(foundationAddress), true);
        excludeFromFees(address(dexRouter), true);
        _createInitialSupply(communityAddress, (totalSupply * 3) / 100);
        _createInitialSupply(daoAddress, (totalSupply * 3) / 100);
        _createInitialSupply(foundationAddress, (totalSupply * 3) / 100);
        _createInitialSupply(address(this), totalSupply);

        transferOwnership(newOwner);
    }

    receive() external payable {}

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _communityFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyCommunityFee = _communityFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyCommunityFee + buyLiquidityFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function _excludeFromMaxTransaction(
        address updAds,
        bool isExcluded
    ) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(
        address updAds,
        bool isEx
    ) external onlyOwner {
        if (!isEx) {
            require(
                updAds != lpPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) external onlyOwner {
        require(
            pair != lpPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateSellFees(
        uint256 _communityFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellCommunityFee = _communityFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellCommunityFee + sellLiquidityFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");
    }

    // zero out the fees

    function zeroFee() external {
        require(msg.sender == address(daoAddress), "nope");

        sellCommunityFee = 0;
        sellLiquidityFee = 0;
        sellTotalFees = 0;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    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");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(
                _isExcludedFromFees[from] || _isExcludedFromFees[to],
                "Trading is not active."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number - 2 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForCommunity += (fees * sellCommunityFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForCommunity += (fees * buyCommunityFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(daoAddress),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForCommunity;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForCommunity = (ethBalance * tokensForCommunity) /
            (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForCommunity;

        tokensForLiquidity = 0;
        tokensForCommunity = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }
        emit SwapAndLiquify(address(this).balance);

        (success, ) = address(daoAddress).call{value: address(this).balance}(
            ""
        );
    }

    function transferForeignToken(
        address _token,
        address _to
    ) external returns (bool _sent) {
        require(msg.sender == address(daoAddress), "nope");
        require(_token != address(0), "_token address cannot be 0");
        require(
            _token != address(this) || !tradingActive,
            "Can't withdraw native tokens while trading is active"
        );
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external {
        require(msg.sender == address(daoAddress), "nope");
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function setDaoAddress(address _daoAddress) external {
        require(msg.sender == address(daoAddress), "nope");
        daoAddress = payable(_daoAddress);
    }

    // and we're off :)

    function enableTrading(uint256 blocksForPenalty) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty;
        emit TradingEnabled();
    }

    function addLP() external onlyOwner {
        // add the liquidity
        require(address(this).balance > 0, "ETH!");
        require(balanceOf(address(this)) > 0, "TOKENS!");

        _approve(address(this), address(dexRouter), balanceOf(address(this)));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(daoAddress),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function restoreLimits() external onlyOwner {
        limitsInEffect = true;
    }

    function updateMaxBuyLimit(uint256 _limit) external onlyOwner {
        maxBuyAmount = _limit;
    }

    function updateMaxSellLimit(uint256 _limit) external onlyOwner {
        maxSellAmount = _limit;
    }

    function updateMaxWallet(uint256 _limit) external onlyOwner {
        maxWallet = _limit;
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLP","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"foundationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restoreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_daoAddress","type":"address"}],"name":"setDaoAddress","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":"tokensForCommunity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"updateMaxBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"updateMaxSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600b805462ffffff60a01b1916600160a01b179055600d805460ff191660011790556000601455601960809081527f457468657265756d20547275737420466f756e646174696f6e0000000000000060a052610100604052600360c08181526222aa2360e91b60e052906200007583826200097f565b5060046200008482826200097f565b5050506000620000996200057760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000906000805160206200366c833981519152908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000a4b565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef919062000a4b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000263919062000a4b565b600780546001600160a01b0319166001600160a01b039290921691821790556200028f9060016200057b565b600754620002a8906001600160a01b03166001620005de565b6bdef376571332906a880000006064620002c482601462000a93565b620002d0919062000ab3565b6011556064620002e282600362000a93565b620002ee919062000ab3565b60125560646200030082600f62000a93565b6200030c919062000ab3565b6013556127106200031f82600562000a93565b6200032b919062000ab3565b60085560006019819055601a81905562000346908062000ad6565b6018556005600f81905560016010819055620003629162000ad6565b600e55600980546001600160a01b03199081167379b4cfa593b7794a7f9e54911731101e7f0afd5f17909155600b8054821673df1fa21aad71c50e642fca3aa4332da17bbea409179055600a805490911673da0e7f1ed2c10da06bd1ebc0d38e3d667e07cc85179055620003d88360016200057b565b620003e53060016200057b565b620003f461dead60016200057b565b6009546200040d906001600160a01b031660016200057b565b600a5462000426906001600160a01b031660016200057b565b600b546200043f906001600160a01b031660016200057b565b60065462000458906001600160a01b031660016200057b565b620004658360016200064a565b620004723060016200064a565b6200048161dead60016200064a565b6009546200049a906001600160a01b031660016200064a565b600a54620004b3906001600160a01b031660016200064a565b600b54620004cc906001600160a01b031660016200064a565b600654620004e5906001600160a01b031660016200064a565b60095462000517906001600160a01b031660646200050584600362000a93565b62000511919062000ab3565b620006f8565b600a5462000537906001600160a01b031660646200050584600362000a93565b600b5462000557906001600160a01b031660646200050584600362000a93565b620005633082620006f8565b6200056e83620007dd565b50505062000aec565b3390565b6001600160a01b0382166000818152601c6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556200060e82826200057b565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620006995760405162461bcd60e51b815260206004820181905260248201526000805160206200364c83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000690565b806002600082825462000764919062000ad6565b90915550506001600160a01b038216600090815260208190526040812080548392906200079390849062000ad6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620008285760405162461bcd60e51b815260206004820181905260248201526000805160206200364c833981519152604482015260640162000690565b6001600160a01b0381166200088f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000690565b6005546040516001600160a01b038084169216906000805160206200366c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200090557607f821691505b6020821081036200092657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200097a57600081815260208120601f850160051c81016020861015620009555750805b601f850160051c820191505b81811015620009765782815560010162000961565b5050505b505050565b81516001600160401b038111156200099b576200099b620008da565b620009b381620009ac8454620008f0565b846200092c565b602080601f831160018114620009eb5760008415620009d25750858301515b600019600386901b1c1916600185901b17855562000976565b600085815260208120601f198616915b8281101562000a1c57888601518255948401946001909101908401620009fb565b508582101562000a3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a5e57600080fd5b81516001600160a01b038116811462000a7657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000aad5762000aad62000a7d565b92915050565b60008262000ad157634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000aad5762000aad62000a7d565b612b508062000afc6000396000f3fe60806040526004361061037a5760003560e01c806386e476dd116101d1578063bc37e1a311610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f146109d4578063f6374342146109e9578063f8b45b05146109ff578063fcf07c6b14610a1557600080fd5b8063e884f26014610973578063ee40166e14610988578063f11a24d31461099e578063f2fde38b146109b457600080fd5b8063c876d0b9116100dc578063c876d0b9146108e7578063d85ba06314610901578063dd62ed3e14610917578063e2f456051461095d57600080fd5b8063bc37e1a31461089c578063bf6146cd146108b1578063c0246668146108c757600080fd5b8063a457c2d71161016f578063b53aee9711610149578063b53aee971461081f578063b62496f514610835578063b8fad14714610865578063bbc0c7421461087b57600080fd5b8063a457c2d7146107c9578063a62068ce146107e9578063a9059cbb146107ff57600080fd5b806395d89b41116101ab57806395d89b411461075f5780639a3cac6a146107745780639a7a23d614610794578063a28e86d3146107b457600080fd5b806386e476dd1461070b57806388e765ff1461072b5780638da5cb5b1461074157600080fd5b8063452ed4f1116102ab57806370a08231116102495780637dee3290116102235780637dee32901461068b5780637e926b4b146106ab57806382aa7c68146106cb5780638366e79a146106eb57600080fd5b806370a0823114610636578063751039fc146106565780637571336a1461066b57600080fd5b806366ca9b831161028557806366ca9b83146105c957806366d602ae146105e95780636a486a8e146105ff5780636ddd17131461061557600080fd5b8063452ed4f1146105715780634a62bb651461059157806358a6d531146105b257600080fd5b80631a8145bb1161031857806323b872dd116102f257806323b872dd146105005780632bd182d314610520578063313ce56714610535578063395093511461055157600080fd5b80631a8145bb146104aa5780631c499ab0146104c05780632131c68c146104e057600080fd5b8063095ea7b311610354578063095ea7b31461040b57806310d5de531461043b5780631604b6d41461046b57806318160ddd1461048b57600080fd5b806302dbd8f81461038657806306fdde03146103a85780630758d924146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a1366004612689565b610a35565b005b3480156103b457600080fd5b506103bd610ad5565b6040516103ca91906126ab565b60405180910390f35b3480156103df57600080fd5b506006546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b34801561041757600080fd5b5061042b610426366004612711565b610b67565b60405190151581526020016103ca565b34801561044757600080fd5b5061042b61045636600461273d565b601c6020526000908152604090205460ff1681565b34801561047757600080fd5b506103a6610486366004612761565b610b7e565b34801561049757600080fd5b506002545b6040519081526020016103ca565b3480156104b657600080fd5b5061049c60175481565b3480156104cc57600080fd5b506103a66104db366004612761565b610bad565b3480156104ec57600080fd5b50600a546103f3906001600160a01b031681565b34801561050c57600080fd5b5061042b61051b36600461277a565b610bdc565b34801561052c57600080fd5b506103a6610c86565b34801561054157600080fd5b50604051601281526020016103ca565b34801561055d57600080fd5b5061042b61056c366004612711565b610cc1565b34801561057d57600080fd5b506007546103f3906001600160a01b031681565b34801561059d57600080fd5b50600b5461042b90600160a01b900460ff1681565b3480156105be57600080fd5b50601554431061042b565b3480156105d557600080fd5b506103a66105e4366004612689565b610cfd565b3480156105f557600080fd5b5061049c60125481565b34801561060b57600080fd5b5061049c600e5481565b34801561062157600080fd5b50600b5461042b90600160b01b900460ff1681565b34801561064257600080fd5b5061049c61065136600461273d565b610d90565b34801561066257600080fd5b506103a6610dab565b34801561067757600080fd5b506103a66106863660046127c9565b610de4565b34801561069757600080fd5b506103a66106a6366004612761565b610eac565b3480156106b757600080fd5b506103a66106c6366004612802565b610edb565b3480156106d757600080fd5b506103a66106e6366004612761565b610f9d565b3480156106f757600080fd5b5061042b61070636600461281f565b611076565b34801561071757600080fd5b506009546103f3906001600160a01b031681565b34801561073757600080fd5b5061049c60115481565b34801561074d57600080fd5b506005546001600160a01b03166103f3565b34801561076b57600080fd5b506103bd6112b2565b34801561078057600080fd5b506103a661078f36600461273d565b6112c1565b3480156107a057600080fd5b506103a66107af3660046127c9565b61130d565b3480156107c057600080fd5b506103a6611401565b3480156107d557600080fd5b5061042b6107e4366004612711565b611440565b3480156107f557600080fd5b5061049c60155481565b34801561080b57600080fd5b5061042b61081a366004612711565b6114d9565b34801561082b57600080fd5b5061049c600f5481565b34801561084157600080fd5b5061042b61085036600461273d565b601d6020526000908152604090205460ff1681565b34801561087157600080fd5b5061049c60195481565b34801561088757600080fd5b50600b5461042b90600160a81b900460ff1681565b3480156108a857600080fd5b506103a66114e6565b3480156108bd57600080fd5b5061049c60165481565b3480156108d357600080fd5b506103a66108e23660046127c9565b611640565b3480156108f357600080fd5b50600d5461042b9060ff1681565b34801561090d57600080fd5b5061049c60185481565b34801561092357600080fd5b5061049c61093236600461281f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096957600080fd5b5061049c60085481565b34801561097f57600080fd5b506103a66116c9565b34801561099457600080fd5b5061049c60145481565b3480156109aa57600080fd5b5061049c601a5481565b3480156109c057600080fd5b506103a66109cf36600461273d565b6116ff565b3480156109e057600080fd5b506103a66117ea565b3480156109f557600080fd5b5061049c60105481565b348015610a0b57600080fd5b5061049c60135481565b348015610a2157600080fd5b50600b546103f3906001600160a01b031681565b6005546001600160a01b03163314610a685760405162461bcd60e51b8152600401610a5f9061284d565b60405180910390fd5b600f8290556010819055610a7c8183612898565b600e819055600a1015610ad15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610a5f565b5050565b606060038054610ae4906128ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b10906128ab565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b5050505050905090565b6000610b74338484611861565b5060015b92915050565b6005546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610a5f9061284d565b601255565b6005546001600160a01b03163314610bd75760405162461bcd60e51b8152600401610a5f9061284d565b601355565b6000610be9848484611985565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c6e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a5f565b610c7b8533858403611861565b506001949350505050565b600a546001600160a01b03163314610cb05760405162461bcd60e51b8152600401610a5f906128e5565b6000600f8190556010819055600e55565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b74918590610cf8908690612898565b611861565b6005546001600160a01b03163314610d275760405162461bcd60e51b8152600401610a5f9061284d565b6019829055601a819055610d3b8183612898565b601881905560141015610ad15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a5f565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610a5f9061284d565b600b805460ff60a01b19169055565b6005546001600160a01b03163314610e0e5760405162461bcd60e51b8152600401610a5f9061284d565b80610e81576007546001600160a01b0390811690831603610e815760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a5f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ed65760405162461bcd60e51b8152600401610a5f9061284d565b601155565b6005546001600160a01b03163314610f055760405162461bcd60e51b8152600401610a5f9061284d565b80610f525760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610a5f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b03163314610fc75760405162461bcd60e51b8152600401610a5f9061284d565b600b54600160a81b900460ff16156110215760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a5f565b600b805461ffff60a81b191661010160a81b179055436014819055611047908290612898565b6015556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150565b600a546000906001600160a01b031633146110a35760405162461bcd60e51b8152600401610a5f906128e5565b6001600160a01b0383166110f95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a5f565b6001600160a01b0383163014158061111b5750600b54600160a81b900460ff16155b6111845760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610a5f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190612903565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611266919061291c565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610ae4906128ab565b600a546001600160a01b031633146112eb5760405162461bcd60e51b8152600401610a5f906128e5565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113375760405162461bcd60e51b8152600401610a5f9061284d565b6007546001600160a01b03908116908316036113bb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a5f565b6113c58282612112565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b0316331461142b5760405162461bcd60e51b8152600401610a5f9061284d565b600b805460ff60a01b1916600160a01b179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a5f565b6114cf3385858403611861565b5060019392505050565b6000610b74338484611985565b6005546001600160a01b031633146115105760405162461bcd60e51b8152600401610a5f9061284d565b600047116115495760405162461bcd60e51b8152600401610a5f906020808252600490820152634554482160e01b604082015260600190565b600061155430610d90565b1161158b5760405162461bcd60e51b8152602060048201526007602482015266544f4b454e532160c81b6044820152606401610a5f565b6006546115a69030906001600160a01b0316610cf882610d90565b6006546001600160a01b031663f305d71947306115c281610d90565b600a546040516001600160e01b031960e087901b1681526115f893929160009182916001600160a01b0316904290600401612939565b60606040518083038185885af1158015611616573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163b9190612974565b505050565b6005546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610a5f9061284d565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116f35760405162461bcd60e51b8152600401610a5f9061284d565b600d805460ff19169055565b6005546001600160a01b031633146117295760405162461bcd60e51b8152600401610a5f9061284d565b6001600160a01b03811661178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a5f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031633146118145760405162461bcd60e51b8152600401610a5f906128e5565b604051600090339047908381818185875af1925050503d8060008114611856576040519150601f19603f3d011682016040523d82523d6000602084013e61185b565b606091505b50505050565b6001600160a01b0383166118c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a5f565b6001600160a01b0382166119245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a5f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119ab5760405162461bcd60e51b8152600401610a5f906129a2565b6001600160a01b0382166119d15760405162461bcd60e51b8152600401610a5f906129e7565b60008111611a215760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a5f565b600b54600160a81b900460ff16611ab6576001600160a01b0383166000908152601b602052604090205460ff1680611a7157506001600160a01b0382166000908152601b602052604090205460ff165b611ab65760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a5f565b600b54600160a01b900460ff1615611e9b576005546001600160a01b03848116911614801590611af457506005546001600160a01b03838116911614155b8015611b0b57506001600160a01b03821661dead14155b8015611b3057506001600160a01b0383166000908152601b602052604090205460ff16155b8015611b5557506001600160a01b0382166000908152601b602052604090205460ff16155b15611e9b57600d5460ff1615611c6e576006546001600160a01b03838116911614801590611b9157506007546001600160a01b03838116911614155b15611c6e57611ba1600243612a2a565b326000908152600c6020526040902054108015611bdf5750611bc4600243612a2a565b6001600160a01b0383166000908152600c6020526040902054105b611c495760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a5f565b326000908152600c602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff168015611caf57506001600160a01b0382166000908152601c602052604090205460ff16155b15611d7657601154811115611d175760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a5f565b601354611d2383610d90565b611d2d9083612898565b1115611d715760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a5f565b611e9b565b6001600160a01b0382166000908152601d602052604090205460ff168015611db757506001600160a01b0383166000908152601c602052604090205460ff16155b15611e2157601254811115611d715760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a5f565b6001600160a01b0382166000908152601c602052604090205460ff16611e9b57601354611e4d83610d90565b611e579083612898565b1115611e9b5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a5f565b6000611ea630610d90565b60085490915081108015908190611ec65750600b54600160b01b900460ff165b8015611edc5750600754600160a01b900460ff16155b8015611f0057506001600160a01b0384166000908152601d602052604090205460ff165b15611f2e576007805460ff60a01b1916600160a01b179055611f20612140565b6007805460ff60a01b191690555b6001600160a01b0385166000908152601b602052604090205460019060ff1680611f7057506001600160a01b0385166000908152601b602052604090205460ff165b15611f79575060005b600081156120fe576001600160a01b0386166000908152601d602052604090205460ff168015611fab57506000600e54115b15612033576064600e5486611fc09190612a3d565b611fca9190612a54565b9050600e5460105482611fdd9190612a3d565b611fe79190612a54565b60176000828254611ff89190612898565b9091555050600e54600f5461200d9083612a3d565b6120179190612a54565b601660008282546120289190612898565b909155506120e09050565b6001600160a01b0387166000908152601d602052604090205460ff16801561205d57506000601854115b156120e0576064601854866120729190612a3d565b61207c9190612a54565b9050601854601a548261208f9190612a3d565b6120999190612a54565b601760008282546120aa9190612898565b90915550506018546019546120bf9083612a3d565b6120c99190612a54565b601660008282546120da9190612898565b90915550505b80156120f1576120f18730836122d5565b6120fb8186612a2a565b94505b6121098787876122d5565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556113c5828261242a565b600061214b30610d90565b9050600060165460175461215f9190612898565b905081158061216c575080155b15612175575050565b60085461218390600a612a3d565b82111561219b5760085461219890600a612a3d565b91505b600080600283601754866121af9190612a3d565b6121b99190612a54565b6121c39190612a54565b90506121d76121d28286612a2a565b61248d565b601754479081906000906121ed90600290612a54565b6121f79087612a2a565b6016546122049085612a3d565b61220e9190612a54565b905061221a8183612a2a565b60006017819055601655915083158015906122355750600082115b156122445761224484836125e7565b6040514781527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a1600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146122c4576040519150601f19603f3d011682016040523d82523d6000602084013e6122c9565b606091505b50505050505050505050565b6001600160a01b0383166122fb5760405162461bcd60e51b8152600401610a5f906129a2565b6001600160a01b0382166123215760405162461bcd60e51b8152600401610a5f906129e7565b6001600160a01b038316600090815260208190526040902054818110156123995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a5f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906123d0908490612898565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161241c91815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601c6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124c2576124c2612a76565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190612a8c565b8160018151811061255257612552612a76565b6001600160a01b0392831660209182029290920101526006546125789130911684611861565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906125b1908590600090869030904290600401612aa9565b600060405180830381600087803b1580156125cb57600080fd5b505af11580156125df573d6000803e3d6000fd5b505050505050565b6006546125ff9030906001600160a01b031684611861565b600654600a5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261263f9230928992600092839216904290600401612939565b60606040518083038185885af115801561265d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126829190612974565b5050505050565b6000806040838503121561269c57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156126d8578581018301518582016040015282016126bc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461270e57600080fd5b50565b6000806040838503121561272457600080fd5b823561272f816126f9565b946020939093013593505050565b60006020828403121561274f57600080fd5b813561275a816126f9565b9392505050565b60006020828403121561277357600080fd5b5035919050565b60008060006060848603121561278f57600080fd5b833561279a816126f9565b925060208401356127aa816126f9565b929592945050506040919091013590565b801515811461270e57600080fd5b600080604083850312156127dc57600080fd5b82356127e7816126f9565b915060208301356127f7816127bb565b809150509250929050565b60006020828403121561281457600080fd5b813561275a816127bb565b6000806040838503121561283257600080fd5b823561283d816126f9565b915060208301356127f7816126f9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7857610b78612882565b600181811c908216806128bf57607f821691505b6020821081036128df57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600490820152636e6f706560e01b604082015260600190565b60006020828403121561291557600080fd5b5051919050565b60006020828403121561292e57600080fd5b815161275a816127bb565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561298957600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b7857610b78612882565b8082028115828204841417610b7857610b78612882565b600082612a7157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a9e57600080fd5b815161275a816126f9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612af95784516001600160a01b031683529383019391830191600101612ad4565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207dacd583f03d119d4c61bbe3fc7c12d141a44ddaad1325d50f31972095def6bd64736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806386e476dd116101d1578063bc37e1a311610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f146109d4578063f6374342146109e9578063f8b45b05146109ff578063fcf07c6b14610a1557600080fd5b8063e884f26014610973578063ee40166e14610988578063f11a24d31461099e578063f2fde38b146109b457600080fd5b8063c876d0b9116100dc578063c876d0b9146108e7578063d85ba06314610901578063dd62ed3e14610917578063e2f456051461095d57600080fd5b8063bc37e1a31461089c578063bf6146cd146108b1578063c0246668146108c757600080fd5b8063a457c2d71161016f578063b53aee9711610149578063b53aee971461081f578063b62496f514610835578063b8fad14714610865578063bbc0c7421461087b57600080fd5b8063a457c2d7146107c9578063a62068ce146107e9578063a9059cbb146107ff57600080fd5b806395d89b41116101ab57806395d89b411461075f5780639a3cac6a146107745780639a7a23d614610794578063a28e86d3146107b457600080fd5b806386e476dd1461070b57806388e765ff1461072b5780638da5cb5b1461074157600080fd5b8063452ed4f1116102ab57806370a08231116102495780637dee3290116102235780637dee32901461068b5780637e926b4b146106ab57806382aa7c68146106cb5780638366e79a146106eb57600080fd5b806370a0823114610636578063751039fc146106565780637571336a1461066b57600080fd5b806366ca9b831161028557806366ca9b83146105c957806366d602ae146105e95780636a486a8e146105ff5780636ddd17131461061557600080fd5b8063452ed4f1146105715780634a62bb651461059157806358a6d531146105b257600080fd5b80631a8145bb1161031857806323b872dd116102f257806323b872dd146105005780632bd182d314610520578063313ce56714610535578063395093511461055157600080fd5b80631a8145bb146104aa5780631c499ab0146104c05780632131c68c146104e057600080fd5b8063095ea7b311610354578063095ea7b31461040b57806310d5de531461043b5780631604b6d41461046b57806318160ddd1461048b57600080fd5b806302dbd8f81461038657806306fdde03146103a85780630758d924146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a1366004612689565b610a35565b005b3480156103b457600080fd5b506103bd610ad5565b6040516103ca91906126ab565b60405180910390f35b3480156103df57600080fd5b506006546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b34801561041757600080fd5b5061042b610426366004612711565b610b67565b60405190151581526020016103ca565b34801561044757600080fd5b5061042b61045636600461273d565b601c6020526000908152604090205460ff1681565b34801561047757600080fd5b506103a6610486366004612761565b610b7e565b34801561049757600080fd5b506002545b6040519081526020016103ca565b3480156104b657600080fd5b5061049c60175481565b3480156104cc57600080fd5b506103a66104db366004612761565b610bad565b3480156104ec57600080fd5b50600a546103f3906001600160a01b031681565b34801561050c57600080fd5b5061042b61051b36600461277a565b610bdc565b34801561052c57600080fd5b506103a6610c86565b34801561054157600080fd5b50604051601281526020016103ca565b34801561055d57600080fd5b5061042b61056c366004612711565b610cc1565b34801561057d57600080fd5b506007546103f3906001600160a01b031681565b34801561059d57600080fd5b50600b5461042b90600160a01b900460ff1681565b3480156105be57600080fd5b50601554431061042b565b3480156105d557600080fd5b506103a66105e4366004612689565b610cfd565b3480156105f557600080fd5b5061049c60125481565b34801561060b57600080fd5b5061049c600e5481565b34801561062157600080fd5b50600b5461042b90600160b01b900460ff1681565b34801561064257600080fd5b5061049c61065136600461273d565b610d90565b34801561066257600080fd5b506103a6610dab565b34801561067757600080fd5b506103a66106863660046127c9565b610de4565b34801561069757600080fd5b506103a66106a6366004612761565b610eac565b3480156106b757600080fd5b506103a66106c6366004612802565b610edb565b3480156106d757600080fd5b506103a66106e6366004612761565b610f9d565b3480156106f757600080fd5b5061042b61070636600461281f565b611076565b34801561071757600080fd5b506009546103f3906001600160a01b031681565b34801561073757600080fd5b5061049c60115481565b34801561074d57600080fd5b506005546001600160a01b03166103f3565b34801561076b57600080fd5b506103bd6112b2565b34801561078057600080fd5b506103a661078f36600461273d565b6112c1565b3480156107a057600080fd5b506103a66107af3660046127c9565b61130d565b3480156107c057600080fd5b506103a6611401565b3480156107d557600080fd5b5061042b6107e4366004612711565b611440565b3480156107f557600080fd5b5061049c60155481565b34801561080b57600080fd5b5061042b61081a366004612711565b6114d9565b34801561082b57600080fd5b5061049c600f5481565b34801561084157600080fd5b5061042b61085036600461273d565b601d6020526000908152604090205460ff1681565b34801561087157600080fd5b5061049c60195481565b34801561088757600080fd5b50600b5461042b90600160a81b900460ff1681565b3480156108a857600080fd5b506103a66114e6565b3480156108bd57600080fd5b5061049c60165481565b3480156108d357600080fd5b506103a66108e23660046127c9565b611640565b3480156108f357600080fd5b50600d5461042b9060ff1681565b34801561090d57600080fd5b5061049c60185481565b34801561092357600080fd5b5061049c61093236600461281f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096957600080fd5b5061049c60085481565b34801561097f57600080fd5b506103a66116c9565b34801561099457600080fd5b5061049c60145481565b3480156109aa57600080fd5b5061049c601a5481565b3480156109c057600080fd5b506103a66109cf36600461273d565b6116ff565b3480156109e057600080fd5b506103a66117ea565b3480156109f557600080fd5b5061049c60105481565b348015610a0b57600080fd5b5061049c60135481565b348015610a2157600080fd5b50600b546103f3906001600160a01b031681565b6005546001600160a01b03163314610a685760405162461bcd60e51b8152600401610a5f9061284d565b60405180910390fd5b600f8290556010819055610a7c8183612898565b600e819055600a1015610ad15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610a5f565b5050565b606060038054610ae4906128ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b10906128ab565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b5050505050905090565b6000610b74338484611861565b5060015b92915050565b6005546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610a5f9061284d565b601255565b6005546001600160a01b03163314610bd75760405162461bcd60e51b8152600401610a5f9061284d565b601355565b6000610be9848484611985565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c6e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a5f565b610c7b8533858403611861565b506001949350505050565b600a546001600160a01b03163314610cb05760405162461bcd60e51b8152600401610a5f906128e5565b6000600f8190556010819055600e55565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b74918590610cf8908690612898565b611861565b6005546001600160a01b03163314610d275760405162461bcd60e51b8152600401610a5f9061284d565b6019829055601a819055610d3b8183612898565b601881905560141015610ad15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610a5f565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610a5f9061284d565b600b805460ff60a01b19169055565b6005546001600160a01b03163314610e0e5760405162461bcd60e51b8152600401610a5f9061284d565b80610e81576007546001600160a01b0390811690831603610e815760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a5f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ed65760405162461bcd60e51b8152600401610a5f9061284d565b601155565b6005546001600160a01b03163314610f055760405162461bcd60e51b8152600401610a5f9061284d565b80610f525760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610a5f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b03163314610fc75760405162461bcd60e51b8152600401610a5f9061284d565b600b54600160a81b900460ff16156110215760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a5f565b600b805461ffff60a81b191661010160a81b179055436014819055611047908290612898565b6015556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150565b600a546000906001600160a01b031633146110a35760405162461bcd60e51b8152600401610a5f906128e5565b6001600160a01b0383166110f95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a5f565b6001600160a01b0383163014158061111b5750600b54600160a81b900460ff16155b6111845760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610a5f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190612903565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611266919061291c565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610ae4906128ab565b600a546001600160a01b031633146112eb5760405162461bcd60e51b8152600401610a5f906128e5565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113375760405162461bcd60e51b8152600401610a5f9061284d565b6007546001600160a01b03908116908316036113bb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a5f565b6113c58282612112565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b0316331461142b5760405162461bcd60e51b8152600401610a5f9061284d565b600b805460ff60a01b1916600160a01b179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a5f565b6114cf3385858403611861565b5060019392505050565b6000610b74338484611985565b6005546001600160a01b031633146115105760405162461bcd60e51b8152600401610a5f9061284d565b600047116115495760405162461bcd60e51b8152600401610a5f906020808252600490820152634554482160e01b604082015260600190565b600061155430610d90565b1161158b5760405162461bcd60e51b8152602060048201526007602482015266544f4b454e532160c81b6044820152606401610a5f565b6006546115a69030906001600160a01b0316610cf882610d90565b6006546001600160a01b031663f305d71947306115c281610d90565b600a546040516001600160e01b031960e087901b1681526115f893929160009182916001600160a01b0316904290600401612939565b60606040518083038185885af1158015611616573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163b9190612974565b505050565b6005546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610a5f9061284d565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116f35760405162461bcd60e51b8152600401610a5f9061284d565b600d805460ff19169055565b6005546001600160a01b031633146117295760405162461bcd60e51b8152600401610a5f9061284d565b6001600160a01b03811661178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a5f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031633146118145760405162461bcd60e51b8152600401610a5f906128e5565b604051600090339047908381818185875af1925050503d8060008114611856576040519150601f19603f3d011682016040523d82523d6000602084013e61185b565b606091505b50505050565b6001600160a01b0383166118c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a5f565b6001600160a01b0382166119245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a5f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119ab5760405162461bcd60e51b8152600401610a5f906129a2565b6001600160a01b0382166119d15760405162461bcd60e51b8152600401610a5f906129e7565b60008111611a215760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a5f565b600b54600160a81b900460ff16611ab6576001600160a01b0383166000908152601b602052604090205460ff1680611a7157506001600160a01b0382166000908152601b602052604090205460ff165b611ab65760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a5f565b600b54600160a01b900460ff1615611e9b576005546001600160a01b03848116911614801590611af457506005546001600160a01b03838116911614155b8015611b0b57506001600160a01b03821661dead14155b8015611b3057506001600160a01b0383166000908152601b602052604090205460ff16155b8015611b5557506001600160a01b0382166000908152601b602052604090205460ff16155b15611e9b57600d5460ff1615611c6e576006546001600160a01b03838116911614801590611b9157506007546001600160a01b03838116911614155b15611c6e57611ba1600243612a2a565b326000908152600c6020526040902054108015611bdf5750611bc4600243612a2a565b6001600160a01b0383166000908152600c6020526040902054105b611c495760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a5f565b326000908152600c602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff168015611caf57506001600160a01b0382166000908152601c602052604090205460ff16155b15611d7657601154811115611d175760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a5f565b601354611d2383610d90565b611d2d9083612898565b1115611d715760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a5f565b611e9b565b6001600160a01b0382166000908152601d602052604090205460ff168015611db757506001600160a01b0383166000908152601c602052604090205460ff16155b15611e2157601254811115611d715760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a5f565b6001600160a01b0382166000908152601c602052604090205460ff16611e9b57601354611e4d83610d90565b611e579083612898565b1115611e9b5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a5f565b6000611ea630610d90565b60085490915081108015908190611ec65750600b54600160b01b900460ff165b8015611edc5750600754600160a01b900460ff16155b8015611f0057506001600160a01b0384166000908152601d602052604090205460ff165b15611f2e576007805460ff60a01b1916600160a01b179055611f20612140565b6007805460ff60a01b191690555b6001600160a01b0385166000908152601b602052604090205460019060ff1680611f7057506001600160a01b0385166000908152601b602052604090205460ff165b15611f79575060005b600081156120fe576001600160a01b0386166000908152601d602052604090205460ff168015611fab57506000600e54115b15612033576064600e5486611fc09190612a3d565b611fca9190612a54565b9050600e5460105482611fdd9190612a3d565b611fe79190612a54565b60176000828254611ff89190612898565b9091555050600e54600f5461200d9083612a3d565b6120179190612a54565b601660008282546120289190612898565b909155506120e09050565b6001600160a01b0387166000908152601d602052604090205460ff16801561205d57506000601854115b156120e0576064601854866120729190612a3d565b61207c9190612a54565b9050601854601a548261208f9190612a3d565b6120999190612a54565b601760008282546120aa9190612898565b90915550506018546019546120bf9083612a3d565b6120c99190612a54565b601660008282546120da9190612898565b90915550505b80156120f1576120f18730836122d5565b6120fb8186612a2a565b94505b6121098787876122d5565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556113c5828261242a565b600061214b30610d90565b9050600060165460175461215f9190612898565b905081158061216c575080155b15612175575050565b60085461218390600a612a3d565b82111561219b5760085461219890600a612a3d565b91505b600080600283601754866121af9190612a3d565b6121b99190612a54565b6121c39190612a54565b90506121d76121d28286612a2a565b61248d565b601754479081906000906121ed90600290612a54565b6121f79087612a2a565b6016546122049085612a3d565b61220e9190612a54565b905061221a8183612a2a565b60006017819055601655915083158015906122355750600082115b156122445761224484836125e7565b6040514781527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a1600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146122c4576040519150601f19603f3d011682016040523d82523d6000602084013e6122c9565b606091505b50505050505050505050565b6001600160a01b0383166122fb5760405162461bcd60e51b8152600401610a5f906129a2565b6001600160a01b0382166123215760405162461bcd60e51b8152600401610a5f906129e7565b6001600160a01b038316600090815260208190526040902054818110156123995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a5f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906123d0908490612898565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161241c91815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601c6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124c2576124c2612a76565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190612a8c565b8160018151811061255257612552612a76565b6001600160a01b0392831660209182029290920101526006546125789130911684611861565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906125b1908590600090869030904290600401612aa9565b600060405180830381600087803b1580156125cb57600080fd5b505af11580156125df573d6000803e3d6000fd5b505050505050565b6006546125ff9030906001600160a01b031684611861565b600654600a5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261263f9230928992600092839216904290600401612939565b60606040518083038185885af115801561265d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126829190612974565b5050505050565b6000806040838503121561269c57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156126d8578581018301518582016040015282016126bc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461270e57600080fd5b50565b6000806040838503121561272457600080fd5b823561272f816126f9565b946020939093013593505050565b60006020828403121561274f57600080fd5b813561275a816126f9565b9392505050565b60006020828403121561277357600080fd5b5035919050565b60008060006060848603121561278f57600080fd5b833561279a816126f9565b925060208401356127aa816126f9565b929592945050506040919091013590565b801515811461270e57600080fd5b600080604083850312156127dc57600080fd5b82356127e7816126f9565b915060208301356127f7816127bb565b809150509250929050565b60006020828403121561281457600080fd5b813561275a816127bb565b6000806040838503121561283257600080fd5b823561283d816126f9565b915060208301356127f7816126f9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7857610b78612882565b600181811c908216806128bf57607f821691505b6020821081036128df57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600490820152636e6f706560e01b604082015260600190565b60006020828403121561291557600080fd5b5051919050565b60006020828403121561292e57600080fd5b815161275a816127bb565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561298957600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b7857610b78612882565b8082028115828204841417610b7857610b78612882565b600082612a7157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a9e57600080fd5b815161275a816126f9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612af95784516001600160a01b031683529383019391830191600101612ad4565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207dacd583f03d119d4c61bbe3fc7c12d141a44ddaad1325d50f31972095def6bd64736f6c63430008110033

Deployed Bytecode Sourcemap

16516:15903:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22297:342;;;;;;;;;;-1:-1:-1;22297:342:0;;;;;:::i;:::-;;:::i;:::-;;10445:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16554:27;;;;;;;;;;-1:-1:-1;16554:27:0;;;;-1:-1:-1;;;;;16554:27:0;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;16554:27:0;820:221:1;11425:194:0;;;;;;;;;;-1:-1:-1;11425:194:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;11425:194:0;1502:187:1;17586:63:0;;;;;;;;;;-1:-1:-1;17586:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;32207:104;;;;;;;;;;-1:-1:-1;32207:104:0;;;;;:::i;:::-;;:::i;10766:108::-;;;;;;;;;;-1:-1:-1;10854:12:0;;10766:108;;;2277:25:1;;;2265:2;2250:18;10766:108:0;2131:177:1;17375:33:0;;;;;;;;;;;;;;;;32319:97;;;;;;;;;;-1:-1:-1;32319:97:0;;;;;:::i;:::-;;:::i;16724:25::-;;;;;;;;;;-1:-1:-1;16724:25:0;;;;-1:-1:-1;;;;;16724:25:0;;;12408:529;;;;;;;;;;-1:-1:-1;12408:529:0;;;;;:::i;:::-;;:::i;22675:189::-;;;;;;;;;;;;;:::i;10665:93::-;;;;;;;;;;-1:-1:-1;10665:93:0;;10748:2;3124:36:1;;3112:2;3097:18;10665:93:0;2982:184:1;11627:290:0;;;;;;;;;;-1:-1:-1;11627:290:0;;;;;:::i;:::-;;:::i;16588:21::-;;;;;;;;;;-1:-1:-1;16588:21:0;;;;-1:-1:-1;;;;;16588:21:0;;;16795:33;;;;;;;;;;-1:-1:-1;16795:33:0;;;;-1:-1:-1;;;16795:33:0;;;;;;27318:121;;;;;;;;;;-1:-1:-1;27413:18:0;;27398:12;:33;27318:121;;20848:335;;;;;;;;;;-1:-1:-1;20848:335:0;;;;;:::i;:::-;;:::i;17181:28::-;;;;;;;;;;;;;;;;17034;;;;;;;;;;;;;;;;16875:31;;;;;;;;;;-1:-1:-1;16875:31:0;;;;-1:-1:-1;;;16875:31:0;;;;;;11090:143;;;;;;;;;;-1:-1:-1;11090:143:0;;;;;:::i;:::-;;:::i;31913:84::-;;;;;;;;;;;;;:::i;21590:336::-;;;;;;;;;;-1:-1:-1;21590:336:0;;;;;:::i;:::-;;:::i;32097:102::-;;;;;;;;;;-1:-1:-1;32097:102:0;;;;;:::i;:::-;;:::i;14873:249::-;;;;;;;;;;-1:-1:-1;14873:249:0;;;;;:::i;:::-;;:::i;30991:342::-;;;;;;;;;;-1:-1:-1;30991:342:0;;;;;:::i;:::-;;:::i;29865:611::-;;;;;;;;;;-1:-1:-1;29865:611:0;;;;;:::i;:::-;;:::i;16686:31::-;;;;;;;;;;-1:-1:-1;16686:31:0;;;;-1:-1:-1;;;;;16686:31:0;;;17147:27;;;;;;;;;;;;;;;;14659:79;;;;;;;;;;-1:-1:-1;14724:6:0;;-1:-1:-1;;;;;14724:6:0;14659:79;;10553:104;;;;;;;;;;;;;:::i;30790:166::-;;;;;;;;;;-1:-1:-1;30790:166:0;;;;;:::i;:::-;;:::i;21934:355::-;;;;;;;;;;-1:-1:-1;21934:355:0;;;;;:::i;:::-;;:::i;32005:84::-;;;;;;;;;;;;;:::i;11925:475::-;;;;;;;;;;-1:-1:-1;11925:475:0;;;;;:::i;:::-;;:::i;17293:33::-;;;;;;;;;;;;;;;;10882:200;;;;;;;;;;-1:-1:-1;10882:200:0;;;;;:::i;:::-;;:::i;17069:31::-;;;;;;;;;;;;;;;;17656:57;;;;;;;;;;-1:-1:-1;17656:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17451:30;;;;;;;;;;;;;;;;16835:33;;;;;;;;;;-1:-1:-1;16835:33:0;;;;-1:-1:-1;;;16835:33:0;;;;;;31341:564;;;;;;;;;;;;;:::i;17335:33::-;;;;;;;;;;;;;;;;22872:182;;;;;;;;;;-1:-1:-1;22872:182:0;;;;;:::i;:::-;;:::i;16986:39::-;;;;;;;;;;-1:-1:-1;16986:39:0;;;;;;;;17417:27;;;;;;;;;;;;;;;;11241:176;;;;;;;;;;-1:-1:-1;11241:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;11382:18:0;;;11355:7;11382:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11241:176;16646:33;;;;;;;;;;;;;;;;21244:98;;;;;;;;;;;;;:::i;17249:37::-;;;;;;;;;;;;;;;;17488:30;;;;;;;;;;;;;;;;15130:281;;;;;;;;;;-1:-1:-1;15130:281:0;;;;;:::i;:::-;;:::i;30546:236::-;;;;;;;;;;;;;:::i;17107:31::-;;;;;;;;;;;;;;;;17216:24;;;;;;;;;;;;;;;;16756:32;;;;;;;;;;-1:-1:-1;16756:32:0;;;;-1:-1:-1;;;;;16756:32:0;;;22297:342;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;;;;;;;;;22422:16:::1;:32:::0;;;22465:16:::1;:32:::0;;;22524:35:::1;22484:13:::0;22441;22524:35:::1;:::i;:::-;22508:13;:51:::0;;;22595:2:::1;-1:-1:-1::0;22578:19:0::1;22570:61;;;::::0;-1:-1:-1;;;22570:61:0;;5145:2:1;22570:61:0::1;::::0;::::1;5127:21:1::0;5184:2;5164:18;;;5157:30;5223:31;5203:18;;;5196:59;5272:18;;22570:61:0::1;4943:353:1::0;22570:61:0::1;22297:342:::0;;:::o;10445:100::-;10499:13;10532:5;10525:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10445:100;:::o;11425:194::-;11533:4;11550:39;9347:10;11573:7;11582:6;11550:8;:39::i;:::-;-1:-1:-1;11607:4:0;11425:194;;;;;:::o;32207:104::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;32281:13:::1;:22:::0;32207:104::o;32319:97::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;32390:9:::1;:18:::0;32319:97::o;12408:529::-;12548:4;12565:36;12575:6;12583:9;12594:6;12565:9;:36::i;:::-;-1:-1:-1;;;;;12641:19:0;;12614:24;12641:19;;;:11;:19;;;;;;;;9347:10;12641:33;;;;;;;;12707:26;;;;12685:116;;;;-1:-1:-1;;;12685:116:0;;5888:2:1;12685:116:0;;;5870:21:1;5927:2;5907:18;;;5900:30;5966:34;5946:18;;;5939:62;-1:-1:-1;;;6017:18:1;;;6010:38;6065:19;;12685:116:0;5686:404:1;12685:116:0;12837:57;12846:6;9347:10;12887:6;12868:16;:25;12837:8;:57::i;:::-;-1:-1:-1;12925:4:0;;12408:529;-1:-1:-1;;;;12408:529:0:o;22675:189::-;22744:10;;-1:-1:-1;;;;;22744:10:0;22722;:33;22714:50;;;;-1:-1:-1;;;22714:50:0;;;;;;;:::i;:::-;22796:1;22777:16;:20;;;22808:16;:20;;;22839:13;:17;22675:189::o;11627:290::-;9347:10;11740:4;11829:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11829:34:0;;;;;;;;;;11740:4;;11757:130;;11807:7;;11829:47;;11866:10;;11829:47;:::i;:::-;11757:8;:130::i;20848:335::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;20972:15:::1;:31:::0;;;21014:15:::1;:31:::0;;;21071:33:::1;21032:13:::0;20990;21071:33:::1;:::i;:::-;21056:12;:48:::0;;;21139:2:::1;-1:-1:-1::0;21123:18:0::1;21115:60;;;::::0;-1:-1:-1;;;21115:60:0;;6629:2:1;21115:60:0::1;::::0;::::1;6611:21:1::0;6668:2;6648:18;;;6641:30;6707:31;6687:18;;;6680:59;6756:18;;21115:60:0::1;6427:353:1::0;11090:143:0;-1:-1:-1;;;;;11207:18:0;11180:7;11207:18;;;;;;;;;;;;11090:143::o;31913:84::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;31967:14:::1;:22:::0;;-1:-1:-1;;;;31967:22:0::1;::::0;;31913:84::o;21590:336::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;21712:4:::1;21707:155;;21769:6;::::0;-1:-1:-1;;;;;21769:6:0;;::::1;21759:16:::0;;::::1;::::0;21733:117:::1;;;::::0;-1:-1:-1;;;21733:117:0;;6987:2:1;21733:117:0::1;::::0;::::1;6969:21:1::0;7026:2;7006:18;;;6999:30;7065:34;7045:18;;;7038:62;-1:-1:-1;;;7116:18:1;;;7109:37;7163:19;;21733:117:0::1;6785:403:1::0;21733:117:0::1;-1:-1:-1::0;;;;;21872:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21872:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21590:336::o;32097:102::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;32170:12:::1;:21:::0;32097:102::o;14873:249::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;14984:15:::1;14976:52;;;::::0;-1:-1:-1;;;14976:52:0;;7395:2:1;14976:52:0::1;::::0;::::1;7377:21:1::0;7434:2;7414:18;;;7407:30;7473:26;7453:18;;;7446:54;7517:18;;14976:52:0::1;7193:348:1::0;14976:52:0::1;15065:6;::::0;15044:40:::1;::::0;15081:1:::1;::::0;-1:-1:-1;;;;;15065:6:0::1;::::0;15044:40:::1;::::0;15081:1;;15044:40:::1;-1:-1:-1::0;15095:6:0::1;:19:::0;;-1:-1:-1;;;;;;15095:19:0::1;::::0;;14873:249::o;30991:342::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;31079:13:::1;::::0;-1:-1:-1;;;31079:13:0;::::1;;;31078:14;31070:50;;;::::0;-1:-1:-1;;;31070:50:0;;7748:2:1;31070:50:0::1;::::0;::::1;7730:21:1::0;7787:2;7767:18;;;7760:30;7826:25;7806:18;;;7799:53;7869:18;;31070:50:0::1;7546:347:1::0;31070:50:0::1;31131:13;:20:::0;;-1:-1:-1;;;;31162:18:0;-1:-1:-1;;;31162:18:0;;;31212:12:::1;31191:18;:33:::0;;;31256:37:::1;::::0;31277:16;;31256:37:::1;:::i;:::-;31235:18;:58:::0;31309:16:::1;::::0;::::1;::::0;;;::::1;30991:342:::0;:::o;29865:611::-;30020:10;;29967;;-1:-1:-1;;;;;30020:10:0;29998;:33;29990:50;;;;-1:-1:-1;;;29990:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30059:20:0;;30051:59;;;;-1:-1:-1;;;30051:59:0;;8100:2:1;30051:59:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:28;8158:18;;;8151:56;8224:18;;30051:59:0;7898:350:1;30051:59:0;-1:-1:-1;;;;;30143:23:0;;30161:4;30143:23;;;:41;;-1:-1:-1;30171:13:0;;-1:-1:-1;;;30171:13:0;;;;30170:14;30143:41;30121:143;;;;-1:-1:-1;;;30121:143:0;;8455:2:1;30121:143:0;;;8437:21:1;8494:2;8474:18;;;8467:30;8533:34;8513:18;;;8506:62;-1:-1:-1;;;8584:18:1;;;8577:50;8644:19;;30121:143:0;8253:416:1;30121:143:0;30302:39;;-1:-1:-1;;;30302:39:0;;30335:4;30302:39;;;984:51:1;30275:24:0;;-1:-1:-1;;;;;30302:24:0;;;;;957:18:1;;30302:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30360:46;;-1:-1:-1;;;30360:46:0;;-1:-1:-1;;;;;9055:32:1;;;30360:46:0;;;9037:51:1;9104:18;;;9097:34;;;30275:66:0;;-1:-1:-1;30360:23:0;;;;;;9010:18:1;;30360:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30422;;;-1:-1:-1;;;;;9055:32:1;;9037:51;;9119:2;9104:18;;9097:34;;;30352:54:0;;-1:-1:-1;30422:46:0;;9010:18:1;30422:46:0;;;;;;;29979:497;29865:611;;;;:::o;10553:104::-;10609:13;10642:7;10635:14;;;;;:::i;30790:166::-;30884:10;;-1:-1:-1;;;;;30884:10:0;30862;:33;30854:50;;;;-1:-1:-1;;;30854:50:0;;;;;;;:::i;:::-;30915:10;:33;;-1:-1:-1;;;;;;30915:33:0;-1:-1:-1;;;;;30915:33:0;;;;;;;;;;30790:166::o;21934:355::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;22082:6:::1;::::0;-1:-1:-1;;;;;22082:6:0;;::::1;22074:14:::0;;::::1;::::0;22052:121:::1;;;::::0;-1:-1:-1;;;22052:121:0;;9594:2:1;22052:121:0::1;::::0;::::1;9576:21:1::0;9633:2;9613:18;;;9606:30;9672:34;9652:18;;;9645:62;9743:27;9723:18;;;9716:55;9788:19;;22052:121:0::1;9392:421:1::0;22052:121:0::1;22184:41;22213:4;22219:5;22184:28;:41::i;:::-;22241:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;22241:40:0;::::1;::::0;::::1;::::0;;;::::1;21934:355:::0;;:::o;32005:84::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;32060:14:::1;:21:::0;;-1:-1:-1;;;;32060:21:0::1;-1:-1:-1::0;;;32060:21:0::1;::::0;;32005:84::o;11925:475::-;9347:10;12043:4;12087:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12087:34:0;;;;;;;;;;12154:35;;;;12132:122;;;;-1:-1:-1;;;12132:122:0;;10020:2:1;12132:122:0;;;10002:21:1;10059:2;10039:18;;;10032:30;10098:34;10078:18;;;10071:62;-1:-1:-1;;;10149:18:1;;;10142:35;10194:19;;12132:122:0;9818:401:1;12132:122:0;12290:67;9347:10;12313:7;12341:15;12322:16;:34;12290:8;:67::i;:::-;-1:-1:-1;12388:4:0;;11925:475;-1:-1:-1;;;11925:475:0:o;10882:200::-;10993:4;11010:42;9347:10;11034:9;11045:6;11010:9;:42::i;31341:564::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;31450:1:::1;31426:21;:25;31418:42;;;;-1:-1:-1::0;;;31418:42:0::1;;;;;;10426:2:1::0;10408:21;;;10465:1;10445:18;;;10438:29;-1:-1:-1;;;10498:2:1;10483:18;;10476:34;10542:2;10527:18;;10224:327;31418:42:0::1;31506:1;31479:24;31497:4;31479:9;:24::i;:::-;:28;31471:48;;;::::0;-1:-1:-1;;;31471:48:0;;10758:2:1;31471:48:0::1;::::0;::::1;10740:21:1::0;10797:1;10777:18;;;10770:29;-1:-1:-1;;;10815:18:1;;;10808:37;10862:18;;31471:48:0::1;10556:330:1::0;31471:48:0::1;31564:9;::::0;31532:69:::1;::::0;31549:4:::1;::::0;-1:-1:-1;;;;;31564:9:0::1;31576:24;31549:4:::0;31576:9:::1;:24::i;31532:69::-;31614:9;::::0;-1:-1:-1;;;;;31614:9:0::1;:25;31647:21;31692:4;31712:24;31692:4:::0;31712:9:::1;:24::i;:::-;31845:10;::::0;31614:283:::1;::::0;-1:-1:-1;;;;;;31614:283:0::1;::::0;;;;;;::::1;::::0;;;31751:1:::1;::::0;;;-1:-1:-1;;;;;31845:10:0::1;::::0;31871:15:::1;::::0;31614:283:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31341:564::o:0;22872:182::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22957:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22957:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23012:34;;1642:41:1;;;23012:34:0::1;::::0;1615:18:1;23012:34:0::1;;;;;;;22872:182:::0;;:::o;21244:98::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;21306:20:::1;:28:::0;;-1:-1:-1;;21306:28:0::1;::::0;;21244:98::o;15130:281::-;14786:6;;-1:-1:-1;;;;;14786:6:0;9347:10;14786:22;14778:67;;;;-1:-1:-1;;;14778:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15233:22:0;::::1;15211:110;;;::::0;-1:-1:-1;;;15211:110:0;;12016:2:1;15211:110:0::1;::::0;::::1;11998:21:1::0;12055:2;12035:18;;;12028:30;12094:34;12074:18;;;12067:62;-1:-1:-1;;;12145:18:1;;;12138:36;12191:19;;15211:110:0::1;11814:402:1::0;15211:110:0::1;15358:6;::::0;15337:38:::1;::::0;-1:-1:-1;;;;;15337:38:0;;::::1;::::0;15358:6:::1;::::0;15337:38:::1;::::0;15358:6:::1;::::0;15337:38:::1;15386:6;:17:::0;;-1:-1:-1;;;;;;15386:17:0::1;-1:-1:-1::0;;;;;15386:17:0;;;::::1;::::0;;;::::1;::::0;;15130:281::o;30546:236::-;30624:10;;-1:-1:-1;;;;;30624:10:0;30602;:33;30594:50;;;;-1:-1:-1;;;30594:50:0;;;;;;;:::i;:::-;30692:82;;30655:12;;30700:10;;30724:21;;30655:12;30692:82;30655:12;30692:82;30724:21;30700:10;30692:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;30546:236:0:o;13269:380::-;-1:-1:-1;;;;;13405:19:0;;13397:68;;;;-1:-1:-1;;;13397:68:0;;12633:2:1;13397:68:0;;;12615:21:1;12672:2;12652:18;;;12645:30;12711:34;12691:18;;;12684:62;-1:-1:-1;;;12762:18:1;;;12755:34;12806:19;;13397:68:0;12431:400:1;13397:68:0;-1:-1:-1;;;;;13484:21:0;;13476:68;;;;-1:-1:-1;;;13476:68:0;;13038:2:1;13476:68:0;;;13020:21:1;13077:2;13057:18;;;13050:30;13116:34;13096:18;;;13089:62;-1:-1:-1;;;13167:18:1;;;13160:32;13209:19;;13476:68:0;12836:398:1;13476:68:0;-1:-1:-1;;;;;13557:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13609:32;;2277:25:1;;;13609:32:0;;2250:18:1;13609:32:0;;;;;;;13269:380;;;:::o;23062:4248::-;-1:-1:-1;;;;;23194:18:0;;23186:68;;;;-1:-1:-1;;;23186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23273:16:0;;23265:64;;;;-1:-1:-1;;;23265:64:0;;;;;;;:::i;:::-;23357:1;23348:6;:10;23340:52;;;;-1:-1:-1;;;23340:52:0;;14251:2:1;23340:52:0;;;14233:21:1;14290:2;14270:18;;;14263:30;14329:31;14309:18;;;14302:59;14378:18;;23340:52:0;14049:353:1;23340:52:0;23410:13;;-1:-1:-1;;;23410:13:0;;;;23405:183;;-1:-1:-1;;;;;23466:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23495:23:0;;;;;;:19;:23;;;;;;;;23466:52;23440:136;;;;-1:-1:-1;;;23440:136:0;;14609:2:1;23440:136:0;;;14591:21:1;14648:2;14628:18;;;14621:30;-1:-1:-1;;;14667:18:1;;;14660:52;14729:18;;23440:136:0;14407:346:1;23440:136:0;23604:14;;-1:-1:-1;;;23604:14:0;;;;23600:2148;;;14724:6;;-1:-1:-1;;;;;23657:15:0;;;14724:6;;23657:15;;;;:49;;-1:-1:-1;14724:6:0;;-1:-1:-1;;;;;23693:13:0;;;14724:6;;23693:13;;23657:49;:91;;;;-1:-1:-1;;;;;;23727:21:0;;23741:6;23727:21;;23657:91;:138;;;;-1:-1:-1;;;;;;23770:25:0;;;;;;:19;:25;;;;;;;;23769:26;23657:138;:183;;;;-1:-1:-1;;;;;;23817:23:0;;;;;;:19;:23;;;;;;;;23816:24;23657:183;23635:2102;;;23879:20;;;;23875:692;;;23942:9;;-1:-1:-1;;;;;23928:24:0;;;23942:9;;23928:24;;;;:49;;-1:-1:-1;23970:6:0;;-1:-1:-1;;;;;23956:21:0;;;23970:6;;23956:21;;23928:49;23924:624;;;24119:16;24134:1;24119:12;:16;:::i;:::-;24073:9;24044:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;24240:16:0;24255:1;24240:12;:16;:::i;:::-;-1:-1:-1;;;;;24172:32:0;;;;;;:28;:32;;;;;;:84;24044:212;24006:363;;;;-1:-1:-1;;;24006:363:0;;15093:2:1;24006:363:0;;;15075:21:1;15132:2;15112:18;;;15105:30;15171:34;15151:18;;;15144:62;-1:-1:-1;;;15222:18:1;;;15215:51;15283:19;;24006:363:0;14891:417:1;24006:363:0;24425:9;24396:39;;;;:28;:39;;;;;;24438:12;24396:54;;;;-1:-1:-1;;;;;24477:32:0;;;;;;:47;23924:624;-1:-1:-1;;;;;24641:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;24698:35:0;;;;;;:31;:35;;;;;;;;24697:36;24641:92;24615:1107;;;24820:12;;24810:6;:22;;24776:148;;;;-1:-1:-1;;;24776:148:0;;15515:2:1;24776:148:0;;;15497:21:1;15554:2;15534:18;;;15527:30;15593:34;15573:18;;;15566:62;-1:-1:-1;;;15644:18:1;;;15637:38;15692:19;;24776:148:0;15313:404:1;24776:148:0;25007:9;;24990:13;25000:2;24990:9;:13::i;:::-;24981:22;;:6;:22;:::i;:::-;:35;;24947:140;;;;-1:-1:-1;;;24947:140:0;;15924:2:1;24947:140:0;;;15906:21:1;15963:2;15943:18;;;15936:30;-1:-1:-1;;;15982:18:1;;;15975:49;16041:18;;24947:140:0;15722:343:1;24947:140:0;24615:1107;;;-1:-1:-1;;;;;25185:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25240:37:0;;;;;;:31;:37;;;;;;;;25239:38;25185:92;25159:563;;;25364:13;;25354:6;:23;;25320:151;;;;-1:-1:-1;;;25320:151:0;;16272:2:1;25320:151:0;;;16254:21:1;16311:2;16291:18;;;16284:30;16350:34;16330:18;;;16323:62;-1:-1:-1;;;16401:18:1;;;16394:40;16451:19;;25320:151:0;16070:406:1;25159:563:0;-1:-1:-1;;;;;25502:35:0;;;;;;:31;:35;;;;;;;;25497:225;;25622:9;;25605:13;25615:2;25605:9;:13::i;:::-;25596:22;;:6;:22;:::i;:::-;:35;;25562:140;;;;-1:-1:-1;;;25562:140:0;;15924:2:1;25562:140:0;;;15906:21:1;15963:2;15943:18;;;15936:30;-1:-1:-1;;;15982:18:1;;;15975:49;16041:18;;25562:140:0;15722:343:1;25562:140:0;25760:28;25791:24;25809:4;25791:9;:24::i;:::-;25867:18;;25760:55;;-1:-1:-1;25843:42:0;;;;;;;25916:22;;-1:-1:-1;25927:11:0;;-1:-1:-1;;;25927:11:0;;;;25916:22;:35;;;;-1:-1:-1;25943:8:0;;-1:-1:-1;;;25943:8:0;;;;25942:9;25916:35;:68;;;;-1:-1:-1;;;;;;25955:29:0;;;;;;:25;:29;;;;;;;;25916:68;25898:196;;;26011:8;:15;;-1:-1:-1;;;;26011:15:0;-1:-1:-1;;;26011:15:0;;;26041:10;:8;:10::i;:::-;26066:8;:16;;-1:-1:-1;;;;26066:16:0;;;25898:196;-1:-1:-1;;;;;26225:25:0;;26106:12;26225:25;;;:19;:25;;;;;;26121:4;;26225:25;;;:52;;-1:-1:-1;;;;;;26254:23:0;;;;;;:19;:23;;;;;;;;26225:52;26221:100;;;-1:-1:-1;26304:5:0;26221:100;26333:12;26438:7;26434:823;;;-1:-1:-1;;;;;26490:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26539:1;26523:13;;:17;26490:50;26486:622;;;26595:3;26578:13;;26569:6;:22;;;;:::i;:::-;26568:30;;;;:::i;:::-;26561:37;;26667:13;;26647:16;;26640:4;:23;;;;:::i;:::-;26639:41;;;;:::i;:::-;26617:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;26749:13:0;;26729:16;;26722:23;;:4;:23;:::i;:::-;26721:41;;;;:::i;:::-;26699:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;26486:622:0;;-1:-1:-1;26486:622:0;;-1:-1:-1;;;;;26824:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26874:1;26859:12;;:16;26824:51;26820:288;;;26929:3;26913:12;;26904:6;:21;;;;:::i;:::-;26903:29;;;;:::i;:::-;26896:36;;27000:12;;26981:15;;26974:4;:22;;;;:::i;:::-;26973:39;;;;:::i;:::-;26951:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27080:12:0;;27061:15;;27054:22;;:4;:22;:::i;:::-;27053:39;;;;:::i;:::-;27031:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;26820:288:0;27128:8;;27124:91;;27157:42;27173:4;27187;27194;27157:15;:42::i;:::-;27231:14;27241:4;27231:14;;:::i;:::-;;;26434:823;27269:33;27285:4;27291:2;27295:6;27269:15;:33::i;:::-;23175:4135;;;;23062:4248;;;:::o;20604:236::-;-1:-1:-1;;;;;20687:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;20687:39:0;;;;;;;20737;20687:31;:39;20737:26;:39::i;28547:1310::-;28586:23;28612:24;28630:4;28612:9;:24::i;:::-;28586:50;;28647:25;28696:18;;28675;;:39;;;;:::i;:::-;28647:67;-1:-1:-1;28731:20:0;;;:46;;-1:-1:-1;28755:22:0;;28731:46;28727:85;;;28794:7;;28547:1310::o;28727:85::-;28846:18;;:23;;28867:2;28846:23;:::i;:::-;28828:15;:41;28824:115;;;28904:18;;:23;;28925:2;28904:23;:::i;:::-;28886:41;;28824:115;28951:12;29025:23;29138:1;29105:17;29070:18;;29052:15;:36;;;;:::i;:::-;29051:71;;;;:::i;:::-;:88;;;;:::i;:::-;29025:114;-1:-1:-1;29152:51:0;29169:33;29025:114;29169:15;:33;:::i;:::-;29152:16;:51::i;:::-;29415:18;;29237:21;;;;29216:18;;29415:22;;29436:1;;29415:22;:::i;:::-;29394:44;;:17;:44;:::i;:::-;29358:18;;29345:31;;:10;:31;:::i;:::-;29344:95;;;;:::i;:::-;29318:121;-1:-1:-1;29452:34:0;29318:121;29452:34;;:::i;:::-;29520:1;29499:18;:22;;;29532:18;:22;29452:34;-1:-1:-1;29571:19:0;;;;;:42;;;29612:1;29594:15;:19;29571:42;29567:121;;;29630:46;29643:15;29660;29630:12;:46::i;:::-;29703:37;;29718:21;2277:25:1;;29703:37:0;;2265:2:1;2250:18;29703:37:0;;;;;;;29775:10;;29767:82;;-1:-1:-1;;;;;29775:10:0;;;;29799:21;;29767:82;;;;29799:21;29775:10;29767:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;28547:1310:0:o;13657:651::-;-1:-1:-1;;;;;13797:20:0;;13789:70;;;;-1:-1:-1;;;13789:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13878:23:0;;13870:71;;;;-1:-1:-1;;;13870:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13978:17:0;;13954:21;13978:17;;;;;;;;;;;14028:23;;;;14006:111;;;;-1:-1:-1;;;14006:111:0;;17078:2:1;14006:111:0;;;17060:21:1;17117:2;17097:18;;;17090:30;17156:34;17136:18;;;17129:62;-1:-1:-1;;;17207:18:1;;;17200:36;17253:19;;14006:111:0;16876:402:1;14006:111:0;-1:-1:-1;;;;;14153:17:0;;;:9;:17;;;;;;;;;;;14173:22;;;14153:42;;14217:20;;;;;;;;:30;;14189:6;;14153:9;14217:30;;14189:6;;14217:30;:::i;:::-;;;;;;;;14282:9;-1:-1:-1;;;;;14265:35:0;14274:6;-1:-1:-1;;;;;14265:35:0;;14293:6;14265:35;;;;2277:25:1;;2265:2;2250:18;;2131:177;14265:35:0;;;;;;;;13778:530;13657:651;;;:::o;21350:232::-;-1:-1:-1;;;;;21463:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;21463:52:0;;;;;;;;;;21531:43;;17451:51:1;;;17518:18;;;17511:50;21531:43:0;;17424:18:1;21531:43:0;;;;;;;21350:232;;:::o;27447:571::-;27597:16;;;27611:1;27597:16;;;;;;;;27573:21;;27597:16;;;;;;;;;;-1:-1:-1;27597:16:0;27573:40;;27642:4;27624;27629:1;27624:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27624:23:0;;;:7;;;;;;;;;;:23;;;;27668:9;;:16;;;-1:-1:-1;;;27668:16:0;;;;:9;;;;;:14;;:16;;;;;27624:7;;27668:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27658:4;27663:1;27658:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27658:26:0;;;:7;;;;;;;;;:26;27729:9;;27697:56;;27714:4;;27729:9;27741:11;27697:8;:56::i;:::-;27792:9;;:218;;-1:-1:-1;;;27792:218:0;;-1:-1:-1;;;;;27792:9:0;;;;:60;;:218;;27867:11;;27792:9;;27937:4;;27964;;27984:15;;27792:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27502:516;27447:571;:::o;28026:513::-;28206:9;;28174:56;;28191:4;;-1:-1:-1;;;;;28206:9:0;28218:11;28174:8;:56::i;:::-;28273:9;;28479:10;;28273:258;;-1:-1:-1;;;28273:258:0;;-1:-1:-1;;;;;28273:9:0;;;;:25;;28306:9;;28273:258;;28339:4;;28359:11;;28273:9;;;;28479:10;;28505:15;;28273:258;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28026:513;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;1946:180::-;2005:6;2058:2;2046:9;2037:7;2033:23;2029:32;2026:52;;;2074:1;2071;2064:12;2026:52;-1:-1:-1;2097:23:1;;1946:180;-1:-1:-1;1946:180:1:o;2521:456::-;2598:6;2606;2614;2667:2;2655:9;2646:7;2642:23;2638:32;2635:52;;;2683:1;2680;2673:12;2635:52;2722:9;2709:23;2741:31;2766:5;2741:31;:::i;:::-;2791:5;-1:-1:-1;2848:2:1;2833:18;;2820:32;2861:33;2820:32;2861:33;:::i;:::-;2521:456;;2913:7;;-1:-1:-1;;;2967:2:1;2952:18;;;;2939:32;;2521:456::o;3171:118::-;3257:5;3250:13;3243:21;3236:5;3233:32;3223:60;;3279:1;3276;3269:12;3294:382;3359:6;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;3475:9;3462:23;3494:31;3519:5;3494:31;:::i;:::-;3544:5;-1:-1:-1;3601:2:1;3586:18;;3573:32;3614:30;3573:32;3614:30;:::i;:::-;3663:7;3653:17;;;3294:382;;;;;:::o;3681:241::-;3737:6;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;3845:9;3832:23;3864:28;3886:5;3864:28;:::i;3927:388::-;3995:6;4003;4056:2;4044:9;4035:7;4031:23;4027:32;4024:52;;;4072:1;4069;4062:12;4024:52;4111:9;4098:23;4130:31;4155:5;4130:31;:::i;:::-;4180:5;-1:-1:-1;4237:2:1;4222:18;;4209:32;4250:33;4209:32;4250:33;:::i;4320:356::-;4522:2;4504:21;;;4541:18;;;4534:30;4600:34;4595:2;4580:18;;4573:62;4667:2;4652:18;;4320:356::o;4681:127::-;4742:10;4737:3;4733:20;4730:1;4723:31;4773:4;4770:1;4763:15;4797:4;4794:1;4787:15;4813:125;4878:9;;;4899:10;;;4896:36;;;4912:18;;:::i;5301:380::-;5380:1;5376:12;;;;5423;;;5444:61;;5498:4;5490:6;5486:17;5476:27;;5444:61;5551:2;5543:6;5540:14;5520:18;5517:38;5514:161;;5597:10;5592:3;5588:20;5585:1;5578:31;5632:4;5629:1;5622:15;5660:4;5657:1;5650:15;5514:161;;5301:380;;;:::o;6095:327::-;6297:2;6279:21;;;6336:1;6316:18;;;6309:29;-1:-1:-1;;;6369:2:1;6354:18;;6347:34;6413:2;6398:18;;6095:327::o;8674:184::-;8744:6;8797:2;8785:9;8776:7;8772:23;8768:32;8765:52;;;8813:1;8810;8803:12;8765:52;-1:-1:-1;8836:16:1;;8674:184;-1:-1:-1;8674:184:1:o;9142:245::-;9209:6;9262:2;9250:9;9241:7;9237:23;9233:32;9230:52;;;9278:1;9275;9268:12;9230:52;9310:9;9304:16;9329:28;9351:5;9329:28;:::i;10891:607::-;-1:-1:-1;;;;;11250:15:1;;;11232:34;;11297:2;11282:18;;11275:34;;;;11340:2;11325:18;;11318:34;;;;11383:2;11368:18;;11361:34;;;;11432:15;;;11426:3;11411:19;;11404:44;11212:3;11464:19;;11457:35;;;;11181:3;11166:19;;10891:607::o;11503:306::-;11591:6;11599;11607;11660:2;11648:9;11639:7;11635:23;11631:32;11628:52;;;11676:1;11673;11666:12;11628:52;11705:9;11699:16;11689:26;;11755:2;11744:9;11740:18;11734:25;11724:35;;11799:2;11788:9;11784:18;11778:25;11768:35;;11503:306;;;;;:::o;13239:401::-;13441:2;13423:21;;;13480:2;13460:18;;;13453:30;13519:34;13514:2;13499:18;;13492:62;-1:-1:-1;;;13585:2:1;13570:18;;13563:35;13630:3;13615:19;;13239:401::o;13645:399::-;13847:2;13829:21;;;13886:2;13866:18;;;13859:30;13925:34;13920:2;13905:18;;13898:62;-1:-1:-1;;;13991:2:1;13976:18;;13969:33;14034:3;14019:19;;13645:399::o;14758:128::-;14825:9;;;14846:11;;;14843:37;;;14860:18;;:::i;16481:168::-;16554:9;;;16585;;16602:15;;;16596:22;;16582:37;16572:71;;16623:18;;:::i;16654:217::-;16694:1;16720;16710:132;;16764:10;16759:3;16755:20;16752:1;16745:31;16799:4;16796:1;16789:15;16827:4;16824:1;16817:15;16710:132;-1:-1:-1;16856:9:1;;16654:217::o;17704:127::-;17765:10;17760:3;17756:20;17753:1;17746:31;17796:4;17793:1;17786:15;17820:4;17817:1;17810:15;17836:251;17906:6;17959:2;17947:9;17938:7;17934:23;17930:32;17927:52;;;17975:1;17972;17965:12;17927:52;18007:9;18001:16;18026:31;18051:5;18026:31;:::i;18092:980::-;18354:4;18402:3;18391:9;18387:19;18433:6;18422:9;18415:25;18459:2;18497:6;18492:2;18481:9;18477:18;18470:34;18540:3;18535:2;18524:9;18520:18;18513:31;18564:6;18599;18593:13;18630:6;18622;18615:22;18668:3;18657:9;18653:19;18646:26;;18707:2;18699:6;18695:15;18681:29;;18728:1;18738:195;18752:6;18749:1;18746:13;18738:195;;;18817:13;;-1:-1:-1;;;;;18813:39:1;18801:52;;18908:15;;;;18873:12;;;;18849:1;18767:9;18738:195;;;-1:-1:-1;;;;;;;18989:32:1;;;;18984:2;18969:18;;18962:60;-1:-1:-1;;;19053:3:1;19038:19;19031:35;18950:3;18092:980;-1:-1:-1;;;18092:980:1:o

Swarm Source

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