ETH Price: $2,520.77 (-5.05%)

Token

Extraterrestrial Floki (ETF)
 

Overview

Max Total Supply

1,000,000,000,000 ETF

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 ETF

Value
$0.00
0x980f851a939e6916fb955f0f1f1ae04354de821a
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:
ExtraterrestrialFloki

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
    ______     __             __                           __       _       __
   / ____/  __/ /__________ _/ /____  _____________  _____/ /______(_)___ _/ /
  / __/ | |/_/ __/ ___/ __ `/ __/ _ \/ ___/ ___/ _ \/ ___/ __/ ___/ / __ `/ / 
 / /____>  </ /_/ /  / /_/ / /_/  __/ /  / /  /  __(__  ) /_/ /  / / /_/ / /  
/_____/_/|_|\__/_/   \__,_/\__/\___/_/  /_/   \___/____/\__/_/  /_/\__,_/_/   
                                                                              
    ________      __   _ 
   / ____/ /___  / /__(_)
  / /_  / / __ \/ //_/ / 
 / __/ / / /_/ / ,< / /  
/_/   /_/\____/_/|_/_/          $ETF

Website: https://etfloki.com/
Telegram: https://t.me/ETFloki
Twitter: https://twitter.com/ETFLOKI

*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    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 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract ExtraterrestrialFloki is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;

    uint256 public swapTokensAtAmount;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    bool public lpBurnEnabled = false;
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    bool public limitsInEffect = true;

    /******************/

    // exlcude from fees
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    constructor() ERC20("Extraterrestrial Floki", "ETF") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 15;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 35;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1_000_000_000_000 * 1e9;

        maxTransactionAmount = (totalSupply) / 100;
        maxWallet = (totalSupply) / 100;

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0x259B77706396C341a57eEfAb5FDbbA2B282a9E8a); //

        // exclude from paying fees
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[marketingWallet] = true;

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function Removelimits() external onlyOwner returns (bool) {
        buyTotalFees = 0;
        buyMarketingFee = 0;
        buyLiquidityFee = 0;
        sellTotalFees = 0;
        sellMarketingFee = 0;
        sellLiquidityFee = 0;
        
        limitsInEffect = false;
        return true;
    }

        function Spotted() external onlyOwner returns (bool) {
        buyTotalFees = 0;
        buyMarketingFee = 15;
        buyLiquidityFee = 0;
        sellTotalFees = 0;
        sellMarketingFee = 20;
        sellLiquidityFee = 0;
        
        return true;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

    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] = uniswapV2Router.WETH();

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

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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"},{"inputs":[],"name":"Removelimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Spotted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506019600b55610e10600c55610708600e556001601860006101000a81548160ff0219169083151502179055503480156200005857600080fd5b506040518060400160405280601681526020017f4578747261746572726573747269616c20466c6f6b69000000000000000000008152506040518060400160405280600381526020017f45544600000000000000000000000000000000000000000000000000000000008152508160039081620000d6919062000ca5565b508060049081620000e8919062000ca5565b5050506000620000fd620007d660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000df6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000df6565b6040518363ffffffff1660e01b81526004016200030892919062000e39565b6020604051808303816000875af115801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e919062000df6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039660a0516001620007de60201b60201c565b6000600f905060008060239050600080683635c9adc5dea000009050606481620003c1919062000ec4565b600881905550606481620003d6919062000ec4565b600981905550612710600582620003ee919062000efc565b620003fa919062000ec4565b600781905550846011819055508360128190555060125460115462000420919062000f47565b601081905550826014819055508160158190555060155460145462000446919062000f47565b60138190555073259b77706396c341a57eefab5fdbba2b282a9e8a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016019600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60006200063b6200087f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007ca3382620008a960201b60201c565b50505050505062001033565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009129062000fe3565b60405180910390fd5b6200092f6000838362000a2160201b60201c565b806002600082825462000943919062000f47565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200099a919062000f47565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a01919062001016565b60405180910390a362000a1d6000838362000a2660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aad57607f821691505b60208210810362000ac35762000ac262000a65565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b2d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aee565b62000b39868362000aee565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b8662000b8062000b7a8462000b51565b62000b5b565b62000b51565b9050919050565b6000819050919050565b62000ba28362000b65565b62000bba62000bb18262000b8d565b84845462000afb565b825550505050565b600090565b62000bd162000bc2565b62000bde81848462000b97565b505050565b5b8181101562000c065762000bfa60008262000bc7565b60018101905062000be4565b5050565b601f82111562000c555762000c1f8162000ac9565b62000c2a8462000ade565b8101602085101562000c3a578190505b62000c5262000c498562000ade565b83018262000be3565b50505b505050565b600082821c905092915050565b600062000c7a6000198460080262000c5a565b1980831691505092915050565b600062000c95838362000c67565b9150826002028217905092915050565b62000cb08262000a2b565b67ffffffffffffffff81111562000ccc5762000ccb62000a36565b5b62000cd8825462000a94565b62000ce582828562000c0a565b600060209050601f83116001811462000d1d576000841562000d08578287015190505b62000d14858262000c87565b86555062000d84565b601f19841662000d2d8662000ac9565b60005b8281101562000d575784890151825560018201915060208501945060208101905062000d30565b8683101562000d77578489015162000d73601f89168262000c67565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dbe8262000d91565b9050919050565b62000dd08162000db1565b811462000ddc57600080fd5b50565b60008151905062000df08162000dc5565b92915050565b60006020828403121562000e0f5762000e0e62000d8c565b5b600062000e1f8482850162000ddf565b91505092915050565b62000e338162000db1565b82525050565b600060408201905062000e50600083018562000e28565b62000e5f602083018462000e28565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ed18262000b51565b915062000ede8362000b51565b92508262000ef15762000ef062000e66565b5b828204905092915050565b600062000f098262000b51565b915062000f168362000b51565b925082820262000f268162000b51565b9150828204841483151762000f405762000f3f62000e95565b5b5092915050565b600062000f548262000b51565b915062000f618362000b51565b925082820190508082111562000f7c5762000f7b62000e95565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fcb601f8362000f82565b915062000fd88262000f93565b602082019050919050565b6000602082019050818103600083015262000ffe8162000fbc565b9050919050565b620010108162000b51565b82525050565b60006020820190506200102d600083018462001005565b92915050565b60805160a0516139c56200109160003960008181610c730152818161257c015281816126350152612662015260008181610a6101528181612804015281816128e50152818161290c015281816129a801526129cf01526139c56000f3fe60806040526004361061023f5760003560e01c806375f0a8741161012e578063b62496f5116100ab578063e2f456051161006f578063e2f45605146108ba578063f11a24d3146108e5578063f2fde38b14610910578063f637434214610939578063f8b45b051461096457610246565b8063b62496f5146107bf578063c8c8ebe4146107fc578063d3458c1e14610827578063d85ba06314610852578063dd62ed3e1461087d57610246565b806395d89b41116100f257806395d89b41146106c45780639ec22c0e146106ef578063a457c2d71461071a578063a4c82a0014610757578063a9059cbb1461078257610246565b806375f0a874146105ed5780637bce5a04146106185780638da5cb5b14610643578063921369131461066e57806395ccc99c1461069957610246565b806327c8f835116101bc57806349bd5a5e1161018057806349bd5a5e146105185780634a62bb65146105435780636a486a8e1461056e57806370a0823114610599578063715018a6146105d657610246565b806327c8f8351461042f5780632c3e486c1461045a5780632e82f1a014610485578063313ce567146104b057806339509351146104db57610246565b8063184c16c511610203578063184c16c514610346578063199ffc72146103715780631a8145bb1461039c5780631f3fed8f146103c757806323b872dd146103f257610246565b806306fdde031461024b578063095ea7b31461027657806310d5de53146102b35780631694505e146102f057806318160ddd1461031b57610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061098f565b60405161026d9190612b0e565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612bc9565b610a21565b6040516102aa9190612c24565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190612c3f565b610a3f565b6040516102e79190612c24565b60405180910390f35b3480156102fc57600080fd5b50610305610a5f565b6040516103129190612ccb565b60405180910390f35b34801561032757600080fd5b50610330610a83565b60405161033d9190612cf5565b60405180910390f35b34801561035257600080fd5b5061035b610a8d565b6040516103689190612cf5565b60405180910390f35b34801561037d57600080fd5b50610386610a93565b6040516103939190612cf5565b60405180910390f35b3480156103a857600080fd5b506103b1610a99565b6040516103be9190612cf5565b60405180910390f35b3480156103d357600080fd5b506103dc610a9f565b6040516103e99190612cf5565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612d10565b610aa5565b6040516104269190612c24565b60405180910390f35b34801561043b57600080fd5b50610444610b9d565b6040516104519190612d72565b60405180910390f35b34801561046657600080fd5b5061046f610ba3565b60405161047c9190612cf5565b60405180910390f35b34801561049157600080fd5b5061049a610ba9565b6040516104a79190612c24565b60405180910390f35b3480156104bc57600080fd5b506104c5610bbc565b6040516104d29190612da9565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612bc9565b610bc5565b60405161050f9190612c24565b60405180910390f35b34801561052457600080fd5b5061052d610c71565b60405161053a9190612d72565b60405180910390f35b34801561054f57600080fd5b50610558610c95565b6040516105659190612c24565b60405180910390f35b34801561057a57600080fd5b50610583610ca8565b6040516105909190612cf5565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612c3f565b610cae565b6040516105cd9190612cf5565b60405180910390f35b3480156105e257600080fd5b506105eb610cf6565b005b3480156105f957600080fd5b50610602610e4e565b60405161060f9190612d72565b60405180910390f35b34801561062457600080fd5b5061062d610e74565b60405161063a9190612cf5565b60405180910390f35b34801561064f57600080fd5b50610658610e7a565b6040516106659190612d72565b60405180910390f35b34801561067a57600080fd5b50610683610ea4565b6040516106909190612cf5565b60405180910390f35b3480156106a557600080fd5b506106ae610eaa565b6040516106bb9190612c24565b60405180910390f35b3480156106d057600080fd5b506106d9610f79565b6040516106e69190612b0e565b60405180910390f35b3480156106fb57600080fd5b5061070461100b565b6040516107119190612cf5565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190612bc9565b611011565b60405161074e9190612c24565b60405180910390f35b34801561076357600080fd5b5061076c6110fc565b6040516107799190612cf5565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612bc9565b611102565b6040516107b69190612c24565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190612c3f565b611120565b6040516107f39190612c24565b60405180910390f35b34801561080857600080fd5b50610811611140565b60405161081e9190612cf5565b60405180910390f35b34801561083357600080fd5b5061083c611146565b6040516108499190612c24565b60405180910390f35b34801561085e57600080fd5b50610867611231565b6040516108749190612cf5565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190612dc4565b611237565b6040516108b19190612cf5565b60405180910390f35b3480156108c657600080fd5b506108cf6112be565b6040516108dc9190612cf5565b60405180910390f35b3480156108f157600080fd5b506108fa6112c4565b6040516109079190612cf5565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190612c3f565b6112ca565b005b34801561094557600080fd5b5061094e611490565b60405161095b9190612cf5565b60405180910390f35b34801561097057600080fd5b50610979611496565b6040516109869190612cf5565b60405180910390f35b60606003805461099e90612e33565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90612e33565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a35610a2e61149c565b84846114a4565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600e5481565b600b5481565b60175481565b60165481565b6000610ab284848461166d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610afd61149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612ed6565b60405180910390fd5b610b9185610b8961149c565b8584036114a4565b60019150509392505050565b61dead81565b600c5481565b600a60009054906101000a900460ff1681565b60006009905090565b6000610c67610bd261149c565b848460016000610be061149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c629190612f25565b6114a4565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601860009054906101000a900460ff1681565b60135481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cfe61149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b6000610eb461149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612fa5565b60405180910390fd5b6000601081905550600f601181905550600060128190555060006013819055506014808190555060006015819055506001905090565b606060048054610f8890612e33565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb490612e33565b80156110015780601f10610fd657610100808354040283529160200191611001565b820191906000526020600020905b815481529060010190602001808311610fe457829003601f168201915b5050505050905090565b600f5481565b6000806001600061102061149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490613037565b60405180910390fd5b6110f16110e861149c565b858584036114a4565b600191505092915050565b600d5481565b600061111661110f61149c565b848461166d565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60085481565b600061115061149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690612fa5565b60405180910390fd5b6000601081905550600060118190555060006012819055506000601381905550600060148190555060006015819055506000601860006101000a81548160ff0219169083151502179055506001905090565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b60125481565b6112d261149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135890612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c7906130c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a9061315b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906131ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116609190612cf5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d39061327f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613311565b60405180910390fd5b600081036117645761175f838360006120c7565b6120c2565b601860009054906101000a900460ff1615611b6a57611781610e7a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ef57506117bf610e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611862575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561187b5750600560149054906101000a900460ff16155b15611b6957601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119235750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ca5760085481111561196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906133a3565b60405180910390fd5b60095461197983610cae565b826119849190612f25565b11156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc9061340f565b60405180910390fd5b611b68565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a6d5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc57600854811115611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906134a1565b60405180910390fd5b611b67565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b6657600954611b1983610cae565b82611b249190612f25565b1115611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061340f565b60405180910390fd5b5b5b5b5b5b6000611b7530610cae565b905060006007548210159050808015611b9b5750600560149054906101000a900460ff16155b8015611bf15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c475750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c9d5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce1576001600560146101000a81548160ff021916908315150217905550611cc5612346565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611d475750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611d5f5750600a60009054906101000a900460ff165b8015611d7a5750600c54600d54611d769190612f25565b4210155b8015611dd05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ddf57611ddd612553565b505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e955750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9f57600090505b600081156120b257601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f0257506000601354115b15611f9c57611f2f6064611f216013548861271990919063ffffffff16565b61272f90919063ffffffff16565b905060135460155482611f4291906134c1565b611f4c9190613532565b60176000828254611f5d9190612f25565b9250508190555060135460145482611f7591906134c1565b611f7f9190613532565b60166000828254611f909190612f25565b9250508190555061208e565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ff757506000601054115b1561208d5761202460646120166010548861271990919063ffffffff16565b61272f90919063ffffffff16565b90506010546012548261203791906134c1565b6120419190613532565b601760008282546120529190612f25565b925050819055506010546011548261206a91906134c1565b6120749190613532565b601660008282546120859190612f25565b925050819055505b5b60008111156120a3576120a28730836120c7565b5b80856120af9190613563565b94505b6120bd8787876120c7565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d9061327f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613311565b60405180910390fd5b6121b0838383612745565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90613609565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c99190612f25565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232d9190612cf5565b60405180910390a361234084848461274a565b50505050565b600061235130610cae565b905060006016546017546123659190612f25565b90506000808314806123775750600082145b1561238457505050612551565b601460075461239391906134c1565b8311156123ac5760146007546123a991906134c1565b92505b6000600283601754866123bf91906134c1565b6123c99190613532565b6123d39190613532565b905060006123ea828661274f90919063ffffffff16565b905060004790506123fa82612765565b600061240f824761274f90919063ffffffff16565b9050600061243a8761242c6016548561271990919063ffffffff16565b61272f90919063ffffffff16565b90506000818361244a9190613563565b90506000601781905550600060168190555060008611801561246c5750600081115b156124b95761247b86826129a2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826017546040516124b093929190613629565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516124ff90613691565b60006040518083038185875af1925050503d806000811461253c576040519150601f19603f3d011682016040523d82523d6000602084013e612541565b606091505b5050809750505050505050505050505b565b600042600d8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016125b79190612d72565b602060405180830381865afa1580156125d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f891906136bb565b90506000612625612710612617600b548561271990919063ffffffff16565b61272f90919063ffffffff16565b9050600081111561265e5761265d7f000000000000000000000000000000000000000000000000000000000000000061dead836120c7565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b6000818361272791906134c1565b905092915050565b6000818361273d9190613532565b905092915050565b505050565b505050565b6000818361275d9190613563565b905092915050565b6000600267ffffffffffffffff811115612782576127816136e8565b5b6040519080825280602002602001820160405280156127b05781602001602082028036833780820191505090505b50905030816000815181106127c8576127c7613717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612891919061375b565b816001815181106128a5576128a4613717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061290a307f0000000000000000000000000000000000000000000000000000000000000000846114a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161296c959493929190613881565b600060405180830381600087803b15801561298657600080fd5b505af115801561299a573d6000803e3d6000fd5b505050505050565b6129cd307f0000000000000000000000000000000000000000000000000000000000000000846114a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612a34969594939291906138db565b60606040518083038185885af1158015612a52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a77919061393c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab8578082015181840152602081019050612a9d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ae082612a7e565b612aea8185612a89565b9350612afa818560208601612a9a565b612b0381612ac4565b840191505092915050565b60006020820190508181036000830152612b288184612ad5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b6082612b35565b9050919050565b612b7081612b55565b8114612b7b57600080fd5b50565b600081359050612b8d81612b67565b92915050565b6000819050919050565b612ba681612b93565b8114612bb157600080fd5b50565b600081359050612bc381612b9d565b92915050565b60008060408385031215612be057612bdf612b30565b5b6000612bee85828601612b7e565b9250506020612bff85828601612bb4565b9150509250929050565b60008115159050919050565b612c1e81612c09565b82525050565b6000602082019050612c396000830184612c15565b92915050565b600060208284031215612c5557612c54612b30565b5b6000612c6384828501612b7e565b91505092915050565b6000819050919050565b6000612c91612c8c612c8784612b35565b612c6c565b612b35565b9050919050565b6000612ca382612c76565b9050919050565b6000612cb582612c98565b9050919050565b612cc581612caa565b82525050565b6000602082019050612ce06000830184612cbc565b92915050565b612cef81612b93565b82525050565b6000602082019050612d0a6000830184612ce6565b92915050565b600080600060608486031215612d2957612d28612b30565b5b6000612d3786828701612b7e565b9350506020612d4886828701612b7e565b9250506040612d5986828701612bb4565b9150509250925092565b612d6c81612b55565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600060ff82169050919050565b612da381612d8d565b82525050565b6000602082019050612dbe6000830184612d9a565b92915050565b60008060408385031215612ddb57612dda612b30565b5b6000612de985828601612b7e565b9250506020612dfa85828601612b7e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e4b57607f821691505b602082108103612e5e57612e5d612e04565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ec0602883612a89565b9150612ecb82612e64565b604082019050919050565b60006020820190508181036000830152612eef81612eb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f3082612b93565b9150612f3b83612b93565b9250828201905080821115612f5357612f52612ef6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8f602083612a89565b9150612f9a82612f59565b602082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613021602583612a89565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130b3602683612a89565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613145602483612a89565b9150613150826130e9565b604082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131d7602283612a89565b91506131e28261317b565b604082019050919050565b60006020820190508181036000830152613206816131ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613269602583612a89565b91506132748261320d565b604082019050919050565b600060208201905081810360008301526132988161325c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132fb602383612a89565b91506133068261329f565b604082019050919050565b6000602082019050818103600083015261332a816132ee565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061338d603583612a89565b915061339882613331565b604082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006133f9601383612a89565b9150613404826133c3565b602082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061348b603683612a89565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b60006134cc82612b93565b91506134d783612b93565b92508282026134e581612b93565b915082820484148315176134fc576134fb612ef6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353d82612b93565b915061354883612b93565b92508261355857613557613503565b5b828204905092915050565b600061356e82612b93565b915061357983612b93565b925082820390508181111561359157613590612ef6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006135f3602683612a89565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b600060608201905061363e6000830186612ce6565b61364b6020830185612ce6565b6136586040830184612ce6565b949350505050565b600081905092915050565b50565b600061367b600083613660565b91506136868261366b565b600082019050919050565b600061369c8261366e565b9150819050919050565b6000815190506136b581612b9d565b92915050565b6000602082840312156136d1576136d0612b30565b5b60006136df848285016136a6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061375581612b67565b92915050565b60006020828403121561377157613770612b30565b5b600061377f84828501613746565b91505092915050565b6000819050919050565b60006137ad6137a86137a384613788565b612c6c565b612b93565b9050919050565b6137bd81613792565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137f881612b55565b82525050565b600061380a83836137ef565b60208301905092915050565b6000602082019050919050565b600061382e826137c3565b61383881856137ce565b9350613843836137df565b8060005b8381101561387457815161385b88826137fe565b975061386683613816565b925050600181019050613847565b5085935050505092915050565b600060a0820190506138966000830188612ce6565b6138a360208301876137b4565b81810360408301526138b58186613823565b90506138c46060830185612d63565b6138d16080830184612ce6565b9695505050505050565b600060c0820190506138f06000830189612d63565b6138fd6020830188612ce6565b61390a60408301876137b4565b61391760608301866137b4565b6139246080830185612d63565b61393160a0830184612ce6565b979650505050505050565b60008060006060848603121561395557613954612b30565b5b6000613963868287016136a6565b9350506020613974868287016136a6565b9250506040613985868287016136a6565b915050925092509256fea264697066735822122015df63dd7f6d7da3609176e87c439b889c5411af7dbd14ad9091ec97b189110f64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806375f0a8741161012e578063b62496f5116100ab578063e2f456051161006f578063e2f45605146108ba578063f11a24d3146108e5578063f2fde38b14610910578063f637434214610939578063f8b45b051461096457610246565b8063b62496f5146107bf578063c8c8ebe4146107fc578063d3458c1e14610827578063d85ba06314610852578063dd62ed3e1461087d57610246565b806395d89b41116100f257806395d89b41146106c45780639ec22c0e146106ef578063a457c2d71461071a578063a4c82a0014610757578063a9059cbb1461078257610246565b806375f0a874146105ed5780637bce5a04146106185780638da5cb5b14610643578063921369131461066e57806395ccc99c1461069957610246565b806327c8f835116101bc57806349bd5a5e1161018057806349bd5a5e146105185780634a62bb65146105435780636a486a8e1461056e57806370a0823114610599578063715018a6146105d657610246565b806327c8f8351461042f5780632c3e486c1461045a5780632e82f1a014610485578063313ce567146104b057806339509351146104db57610246565b8063184c16c511610203578063184c16c514610346578063199ffc72146103715780631a8145bb1461039c5780631f3fed8f146103c757806323b872dd146103f257610246565b806306fdde031461024b578063095ea7b31461027657806310d5de53146102b35780631694505e146102f057806318160ddd1461031b57610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061098f565b60405161026d9190612b0e565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612bc9565b610a21565b6040516102aa9190612c24565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190612c3f565b610a3f565b6040516102e79190612c24565b60405180910390f35b3480156102fc57600080fd5b50610305610a5f565b6040516103129190612ccb565b60405180910390f35b34801561032757600080fd5b50610330610a83565b60405161033d9190612cf5565b60405180910390f35b34801561035257600080fd5b5061035b610a8d565b6040516103689190612cf5565b60405180910390f35b34801561037d57600080fd5b50610386610a93565b6040516103939190612cf5565b60405180910390f35b3480156103a857600080fd5b506103b1610a99565b6040516103be9190612cf5565b60405180910390f35b3480156103d357600080fd5b506103dc610a9f565b6040516103e99190612cf5565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612d10565b610aa5565b6040516104269190612c24565b60405180910390f35b34801561043b57600080fd5b50610444610b9d565b6040516104519190612d72565b60405180910390f35b34801561046657600080fd5b5061046f610ba3565b60405161047c9190612cf5565b60405180910390f35b34801561049157600080fd5b5061049a610ba9565b6040516104a79190612c24565b60405180910390f35b3480156104bc57600080fd5b506104c5610bbc565b6040516104d29190612da9565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612bc9565b610bc5565b60405161050f9190612c24565b60405180910390f35b34801561052457600080fd5b5061052d610c71565b60405161053a9190612d72565b60405180910390f35b34801561054f57600080fd5b50610558610c95565b6040516105659190612c24565b60405180910390f35b34801561057a57600080fd5b50610583610ca8565b6040516105909190612cf5565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612c3f565b610cae565b6040516105cd9190612cf5565b60405180910390f35b3480156105e257600080fd5b506105eb610cf6565b005b3480156105f957600080fd5b50610602610e4e565b60405161060f9190612d72565b60405180910390f35b34801561062457600080fd5b5061062d610e74565b60405161063a9190612cf5565b60405180910390f35b34801561064f57600080fd5b50610658610e7a565b6040516106659190612d72565b60405180910390f35b34801561067a57600080fd5b50610683610ea4565b6040516106909190612cf5565b60405180910390f35b3480156106a557600080fd5b506106ae610eaa565b6040516106bb9190612c24565b60405180910390f35b3480156106d057600080fd5b506106d9610f79565b6040516106e69190612b0e565b60405180910390f35b3480156106fb57600080fd5b5061070461100b565b6040516107119190612cf5565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190612bc9565b611011565b60405161074e9190612c24565b60405180910390f35b34801561076357600080fd5b5061076c6110fc565b6040516107799190612cf5565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612bc9565b611102565b6040516107b69190612c24565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190612c3f565b611120565b6040516107f39190612c24565b60405180910390f35b34801561080857600080fd5b50610811611140565b60405161081e9190612cf5565b60405180910390f35b34801561083357600080fd5b5061083c611146565b6040516108499190612c24565b60405180910390f35b34801561085e57600080fd5b50610867611231565b6040516108749190612cf5565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190612dc4565b611237565b6040516108b19190612cf5565b60405180910390f35b3480156108c657600080fd5b506108cf6112be565b6040516108dc9190612cf5565b60405180910390f35b3480156108f157600080fd5b506108fa6112c4565b6040516109079190612cf5565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190612c3f565b6112ca565b005b34801561094557600080fd5b5061094e611490565b60405161095b9190612cf5565b60405180910390f35b34801561097057600080fd5b50610979611496565b6040516109869190612cf5565b60405180910390f35b60606003805461099e90612e33565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90612e33565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a35610a2e61149c565b84846114a4565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600e5481565b600b5481565b60175481565b60165481565b6000610ab284848461166d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610afd61149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612ed6565b60405180910390fd5b610b9185610b8961149c565b8584036114a4565b60019150509392505050565b61dead81565b600c5481565b600a60009054906101000a900460ff1681565b60006009905090565b6000610c67610bd261149c565b848460016000610be061149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c629190612f25565b6114a4565b6001905092915050565b7f00000000000000000000000012b753b82862ac4b9dda89b94c1e344d6b280d8281565b601860009054906101000a900460ff1681565b60135481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cfe61149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b6000610eb461149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612fa5565b60405180910390fd5b6000601081905550600f601181905550600060128190555060006013819055506014808190555060006015819055506001905090565b606060048054610f8890612e33565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb490612e33565b80156110015780601f10610fd657610100808354040283529160200191611001565b820191906000526020600020905b815481529060010190602001808311610fe457829003601f168201915b5050505050905090565b600f5481565b6000806001600061102061149c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490613037565b60405180910390fd5b6110f16110e861149c565b858584036114a4565b600191505092915050565b600d5481565b600061111661110f61149c565b848461166d565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60085481565b600061115061149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690612fa5565b60405180910390fd5b6000601081905550600060118190555060006012819055506000601381905550600060148190555060006015819055506000601860006101000a81548160ff0219169083151502179055506001905090565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b60125481565b6112d261149c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135890612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c7906130c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a9061315b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906131ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116609190612cf5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d39061327f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613311565b60405180910390fd5b600081036117645761175f838360006120c7565b6120c2565b601860009054906101000a900460ff1615611b6a57611781610e7a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ef57506117bf610e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611862575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561187b5750600560149054906101000a900460ff16155b15611b6957601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119235750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ca5760085481111561196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906133a3565b60405180910390fd5b60095461197983610cae565b826119849190612f25565b11156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc9061340f565b60405180910390fd5b611b68565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a6d5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc57600854811115611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906134a1565b60405180910390fd5b611b67565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b6657600954611b1983610cae565b82611b249190612f25565b1115611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061340f565b60405180910390fd5b5b5b5b5b5b6000611b7530610cae565b905060006007548210159050808015611b9b5750600560149054906101000a900460ff16155b8015611bf15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c475750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c9d5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce1576001600560146101000a81548160ff021916908315150217905550611cc5612346565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611d475750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611d5f5750600a60009054906101000a900460ff165b8015611d7a5750600c54600d54611d769190612f25565b4210155b8015611dd05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ddf57611ddd612553565b505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e955750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9f57600090505b600081156120b257601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f0257506000601354115b15611f9c57611f2f6064611f216013548861271990919063ffffffff16565b61272f90919063ffffffff16565b905060135460155482611f4291906134c1565b611f4c9190613532565b60176000828254611f5d9190612f25565b9250508190555060135460145482611f7591906134c1565b611f7f9190613532565b60166000828254611f909190612f25565b9250508190555061208e565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ff757506000601054115b1561208d5761202460646120166010548861271990919063ffffffff16565b61272f90919063ffffffff16565b90506010546012548261203791906134c1565b6120419190613532565b601760008282546120529190612f25565b925050819055506010546011548261206a91906134c1565b6120749190613532565b601660008282546120859190612f25565b925050819055505b5b60008111156120a3576120a28730836120c7565b5b80856120af9190613563565b94505b6120bd8787876120c7565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d9061327f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613311565b60405180910390fd5b6121b0838383612745565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90613609565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c99190612f25565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232d9190612cf5565b60405180910390a361234084848461274a565b50505050565b600061235130610cae565b905060006016546017546123659190612f25565b90506000808314806123775750600082145b1561238457505050612551565b601460075461239391906134c1565b8311156123ac5760146007546123a991906134c1565b92505b6000600283601754866123bf91906134c1565b6123c99190613532565b6123d39190613532565b905060006123ea828661274f90919063ffffffff16565b905060004790506123fa82612765565b600061240f824761274f90919063ffffffff16565b9050600061243a8761242c6016548561271990919063ffffffff16565b61272f90919063ffffffff16565b90506000818361244a9190613563565b90506000601781905550600060168190555060008611801561246c5750600081115b156124b95761247b86826129a2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826017546040516124b093929190613629565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516124ff90613691565b60006040518083038185875af1925050503d806000811461253c576040519150601f19603f3d011682016040523d82523d6000602084013e612541565b606091505b5050809750505050505050505050505b565b600042600d8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000012b753b82862ac4b9dda89b94c1e344d6b280d826040518263ffffffff1660e01b81526004016125b79190612d72565b602060405180830381865afa1580156125d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f891906136bb565b90506000612625612710612617600b548561271990919063ffffffff16565b61272f90919063ffffffff16565b9050600081111561265e5761265d7f00000000000000000000000012b753b82862ac4b9dda89b94c1e344d6b280d8261dead836120c7565b5b60007f00000000000000000000000012b753b82862ac4b9dda89b94c1e344d6b280d8290508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b6000818361272791906134c1565b905092915050565b6000818361273d9190613532565b905092915050565b505050565b505050565b6000818361275d9190613563565b905092915050565b6000600267ffffffffffffffff811115612782576127816136e8565b5b6040519080825280602002602001820160405280156127b05781602001602082028036833780820191505090505b50905030816000815181106127c8576127c7613717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612891919061375b565b816001815181106128a5576128a4613717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061290a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114a4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161296c959493929190613881565b600060405180830381600087803b15801561298657600080fd5b505af115801561299a573d6000803e3d6000fd5b505050505050565b6129cd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114a4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612a34969594939291906138db565b60606040518083038185885af1158015612a52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a77919061393c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab8578082015181840152602081019050612a9d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ae082612a7e565b612aea8185612a89565b9350612afa818560208601612a9a565b612b0381612ac4565b840191505092915050565b60006020820190508181036000830152612b288184612ad5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b6082612b35565b9050919050565b612b7081612b55565b8114612b7b57600080fd5b50565b600081359050612b8d81612b67565b92915050565b6000819050919050565b612ba681612b93565b8114612bb157600080fd5b50565b600081359050612bc381612b9d565b92915050565b60008060408385031215612be057612bdf612b30565b5b6000612bee85828601612b7e565b9250506020612bff85828601612bb4565b9150509250929050565b60008115159050919050565b612c1e81612c09565b82525050565b6000602082019050612c396000830184612c15565b92915050565b600060208284031215612c5557612c54612b30565b5b6000612c6384828501612b7e565b91505092915050565b6000819050919050565b6000612c91612c8c612c8784612b35565b612c6c565b612b35565b9050919050565b6000612ca382612c76565b9050919050565b6000612cb582612c98565b9050919050565b612cc581612caa565b82525050565b6000602082019050612ce06000830184612cbc565b92915050565b612cef81612b93565b82525050565b6000602082019050612d0a6000830184612ce6565b92915050565b600080600060608486031215612d2957612d28612b30565b5b6000612d3786828701612b7e565b9350506020612d4886828701612b7e565b9250506040612d5986828701612bb4565b9150509250925092565b612d6c81612b55565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600060ff82169050919050565b612da381612d8d565b82525050565b6000602082019050612dbe6000830184612d9a565b92915050565b60008060408385031215612ddb57612dda612b30565b5b6000612de985828601612b7e565b9250506020612dfa85828601612b7e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e4b57607f821691505b602082108103612e5e57612e5d612e04565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ec0602883612a89565b9150612ecb82612e64565b604082019050919050565b60006020820190508181036000830152612eef81612eb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f3082612b93565b9150612f3b83612b93565b9250828201905080821115612f5357612f52612ef6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8f602083612a89565b9150612f9a82612f59565b602082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613021602583612a89565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130b3602683612a89565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613145602483612a89565b9150613150826130e9565b604082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131d7602283612a89565b91506131e28261317b565b604082019050919050565b60006020820190508181036000830152613206816131ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613269602583612a89565b91506132748261320d565b604082019050919050565b600060208201905081810360008301526132988161325c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132fb602383612a89565b91506133068261329f565b604082019050919050565b6000602082019050818103600083015261332a816132ee565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061338d603583612a89565b915061339882613331565b604082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006133f9601383612a89565b9150613404826133c3565b602082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061348b603683612a89565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b60006134cc82612b93565b91506134d783612b93565b92508282026134e581612b93565b915082820484148315176134fc576134fb612ef6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353d82612b93565b915061354883612b93565b92508261355857613557613503565b5b828204905092915050565b600061356e82612b93565b915061357983612b93565b925082820390508181111561359157613590612ef6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006135f3602683612a89565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b600060608201905061363e6000830186612ce6565b61364b6020830185612ce6565b6136586040830184612ce6565b949350505050565b600081905092915050565b50565b600061367b600083613660565b91506136868261366b565b600082019050919050565b600061369c8261366e565b9150819050919050565b6000815190506136b581612b9d565b92915050565b6000602082840312156136d1576136d0612b30565b5b60006136df848285016136a6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061375581612b67565b92915050565b60006020828403121561377157613770612b30565b5b600061377f84828501613746565b91505092915050565b6000819050919050565b60006137ad6137a86137a384613788565b612c6c565b612b93565b9050919050565b6137bd81613792565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137f881612b55565b82525050565b600061380a83836137ef565b60208301905092915050565b6000602082019050919050565b600061382e826137c3565b61383881856137ce565b9350613843836137df565b8060005b8381101561387457815161385b88826137fe565b975061386683613816565b925050600181019050613847565b5085935050505092915050565b600060a0820190506138966000830188612ce6565b6138a360208301876137b4565b81810360408301526138b58186613823565b90506138c46060830185612d63565b6138d16080830184612ce6565b9695505050505050565b600060c0820190506138f06000830189612d63565b6138fd6020830188612ce6565b61390a60408301876137b4565b61391760608301866137b4565b6139246080830185612d63565b61393160a0830184612ce6565b979650505050505050565b60008060006060848603121561395557613954612b30565b5b6000613963868287016136a6565b9350506020613974868287016136a6565b9250506040613985868287016136a6565b915050925092509256fea264697066735822122015df63dd7f6d7da3609176e87c439b889c5411af7dbd14ad9091ec97b189110f64736f6c63430008130033

Deployed Bytecode Sourcemap

16799:11618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17985:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16890:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4559:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17427:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17281:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17788:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17748;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5420:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16993:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17337:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17241:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4459:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16948:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17830:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17635:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2208:148;;;;;;;;;;;;;:::i;:::-;;17085:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17559;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1566:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17670:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20681:272;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4347:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17481:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6255:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17389:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4826:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18057:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17166:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20361:308;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17525:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5034:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17124:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2511:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17708:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17208:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4239:100;4293:13;4326:5;4319:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:100;:::o;5218:194::-;5326:4;5343:39;5352:12;:10;:12::i;:::-;5366:7;5375:6;5343:8;:39::i;:::-;5400:4;5393:11;;5218:194;;;;:::o;17985:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;16890:51::-;;;:::o;4559:108::-;4620:7;4647:12;;4640:19;;4559:108;:::o;17427:47::-;;;;:::o;17281:36::-;;;;:::o;17788:33::-;;;;:::o;17748:::-;;;;:::o;5420:529::-;5560:4;5577:36;5587:6;5595:9;5606:6;5577:9;:36::i;:::-;5626:24;5653:11;:19;5665:6;5653:19;;;;;;;;;;;;;;;:33;5673:12;:10;:12::i;:::-;5653:33;;;;;;;;;;;;;;;;5626:60;;5739:6;5719:16;:26;;5697:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;5849:57;5858:6;5866:12;:10;:12::i;:::-;5899:6;5880:16;:25;5849:8;:57::i;:::-;5937:4;5930:11;;;5420:529;;;;;:::o;16993:53::-;17039:6;16993:53;:::o;17337:45::-;;;;:::o;17241:33::-;;;;;;;;;;;;;:::o;4459:92::-;4517:5;4542:1;4535:8;;4459:92;:::o;5957:290::-;6070:4;6087:130;6110:12;:10;:12::i;:::-;6137:7;6196:10;6159:11;:25;6171:12;:10;:12::i;:::-;6159:25;;;;;;;;;;;;;;;:34;6185:7;6159:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6087:8;:130::i;:::-;6235:4;6228:11;;5957:290;;;;:::o;16948:38::-;;;:::o;17830:33::-;;;;;;;;;;;;;:::o;17635:28::-;;;;:::o;4675:143::-;4765:7;4792:9;:18;4802:7;4792:18;;;;;;;;;;;;;;;;4785:25;;4675:143;;;:::o;2208:148::-;1788:12;:10;:12::i;:::-;1778:22;;:6;;;;;;;;;;;:22;;;1770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2315:1:::1;2278:40;;2299:6;;;;;;;;;;;2278:40;;;;;;;;;;;;2346:1;2329:6;;:19;;;;;;;;;;;;;;;;;;2208:148::o:0;17085:30::-;;;;;;;;;;;;;:::o;17559:::-;;;;:::o;1566:79::-;1604:7;1631:6;;;;;;;;;;;1624:13;;1566:79;:::o;17670:31::-;;;;:::o;20681:272::-;20728:4;1788:12;:10;:12::i;:::-;1778:22;;:6;;;;;;;;;;;:22;;;1770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20760:1:::1;20745:12;:16;;;;20790:2;20772:15;:20;;;;20821:1;20803:15;:19;;;;20849:1;20833:13;:17;;;;20880:2;20861:16:::0;:21:::1;;;;20912:1;20893:16;:20;;;;20941:4;20934:11;;20681:272:::0;:::o;4347:104::-;4403:13;4436:7;4429:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4347:104;:::o;17481:35::-;;;;:::o;6255:475::-;6373:4;6390:24;6417:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;:34;6443:7;6417:34;;;;;;;;;;;;;;;;6390:61;;6504:15;6484:16;:35;;6462:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6620:67;6629:12;:10;:12::i;:::-;6643:7;6671:15;6652:16;:34;6620:8;:67::i;:::-;6718:4;6711:11;;;6255:475;;;;:::o;17389:29::-;;;;:::o;4826:200::-;4937:4;4954:42;4964:12;:10;:12::i;:::-;4978:9;4989:6;4954:9;:42::i;:::-;5014:4;5007:11;;4826:200;;;;:::o;18057:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;17166:35::-;;;;:::o;20361:308::-;20413:4;1788:12;:10;:12::i;:::-;1778:22;;:6;;;;;;;;;;;:22;;;1770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20445:1:::1;20430:12;:16;;;;20475:1;20457:15;:19;;;;20505:1;20487:15;:19;;;;20533:1;20517:13;:17;;;;20564:1;20545:16;:20;;;;20595:1;20576:16;:20;;;;20634:5;20617:14;;:22;;;;;;;;;;;;;;;;;;20657:4;20650:11;;20361:308:::0;:::o;17525:27::-;;;;:::o;5034:176::-;5148:7;5175:11;:18;5187:5;5175:18;;;;;;;;;;;;;;;:27;5194:7;5175:27;;;;;;;;;;;;;;;;5168:34;;5034:176;;;;:::o;17124:33::-;;;;:::o;17596:30::-;;;;:::o;2511:281::-;1788:12;:10;:12::i;:::-;1778:22;;:6;;;;;;;;;;;:22;;;1770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2634:1:::1;2614:22;;:8;:22;;::::0;2592:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2747:8;2718:38;;2739:6;;;;;;;;;;;2718:38;;;;;;;;;;;;2776:8;2767:6;;:17;;;;;;;;;;;;;;;;;;2511:281:::0;:::o;17708:31::-;;;;:::o;17208:24::-;;;;:::o;836:98::-;889:7;916:10;909:17;;836:98;:::o;8522:380::-;8675:1;8658:19;;:5;:19;;;8650:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8756:1;8737:21;;:7;:21;;;8729:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8840:6;8810:11;:18;8822:5;8810:18;;;;;;;;;;;;;;;:27;8829:7;8810:27;;;;;;;;;;;;;;;:36;;;;8878:7;8862:32;;8871:5;8862:32;;;8887:6;8862:32;;;;;;:::i;:::-;;;;;;;;8522:380;;;:::o;21157:3809::-;21305:1;21289:18;;:4;:18;;;21281:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21382:1;21368:16;;:2;:16;;;21360:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21451:1;21441:6;:11;21437:93;;21469:28;21485:4;21491:2;21495:1;21469:15;:28::i;:::-;21512:7;;21437:93;21546:14;;;;;;;;;;;21542:1451;;;21607:7;:5;:7::i;:::-;21599:15;;:4;:15;;;;:49;;;;;21641:7;:5;:7::i;:::-;21635:13;;:2;:13;;;;21599:49;:86;;;;;21683:1;21669:16;;:2;:16;;;;21599:86;:128;;;;;21720:6;21706:21;;:2;:21;;;;21599:128;:158;;;;;21749:8;;;;;;;;;;;21748:9;21599:158;21577:1405;;;21846:25;:31;21872:4;21846:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21903:31;:35;21935:2;21903:35;;;;;;;;;;;;;;;;;;;;;;;;;21902:36;21846:92;21820:1147;;;22025:20;;22015:6;:30;;21981:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22233:9;;22216:13;22226:2;22216:9;:13::i;:::-;22207:6;:22;;;;:::i;:::-;:35;;22173:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21820:1147;;;22411:25;:29;22437:2;22411:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22466:31;:37;22498:4;22466:37;;;;;;;;;;;;;;;;;;;;;;;;;22465:38;22411:92;22385:582;;;22590:20;;22580:6;:30;;22546:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22385:582;;;22747:31;:35;22779:2;22747:35;;;;;;;;;;;;;;;;;;;;;;;;;22742:225;;22867:9;;22850:13;22860:2;22850:9;:13::i;:::-;22841:6;:22;;;;:::i;:::-;:35;;22807:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22742:225;22385:582;21820:1147;21577:1405;21542:1451;23005:28;23036:24;23054:4;23036:9;:24::i;:::-;23005:55;;23073:12;23112:18;;23088:20;:42;;23073:57;;23161:7;:33;;;;;23186:8;;;;;;;;;;;23185:9;23161:33;:82;;;;;23212:25;:31;23238:4;23212:31;;;;;;;;;;;;;;;;;;;;;;;;;23211:32;23161:82;:125;;;;;23261:19;:25;23281:4;23261:25;;;;;;;;;;;;;;;;;;;;;;;;;23260:26;23161:125;:166;;;;;23304:19;:23;23324:2;23304:23;;;;;;;;;;;;;;;;;;;;;;;;;23303:24;23161:166;23143:298;;;23365:4;23354:8;;:15;;;;;;;;;;;;;;;;;;23386:10;:8;:10::i;:::-;23424:5;23413:8;;:16;;;;;;;;;;;;;;;;;;23143:298;23472:8;;;;;;;;;;;23471:9;:55;;;;;23497:25;:29;23523:2;23497:29;;;;;;;;;;;;;;;;;;;;;;;;;23471:55;:85;;;;;23543:13;;;;;;;;;;;23471:85;:153;;;;;23609:15;;23592:14;;:32;;;;:::i;:::-;23573:15;:51;;23471:153;:196;;;;;23642:19;:25;23662:4;23642:25;;;;;;;;;;;;;;;;;;;;;;;;;23641:26;23471:196;23453:282;;;23694:29;:27;:29::i;:::-;;23453:282;23747:12;23763:8;;;;;;;;;;;23762:9;23747:24;;23873:19;:25;23893:4;23873:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23902:19;:23;23922:2;23902:23;;;;;;;;;;;;;;;;;;;;;;;;;23873:52;23869:100;;;23952:5;23942:15;;23869:100;23981:12;24086:7;24082:831;;;24138:25;:29;24164:2;24138:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24187:1;24171:13;;:17;24138:50;24134:630;;;24216:34;24246:3;24216:25;24227:13;;24216:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24209:41;;24319:13;;24299:16;;24292:4;:23;;;;:::i;:::-;24291:41;;;;:::i;:::-;24269:18;;:63;;;;;;;:::i;:::-;;;;;;;;24401:13;;24381:16;;24374:4;:23;;;;:::i;:::-;24373:41;;;;:::i;:::-;24351:18;;:63;;;;;;;:::i;:::-;;;;;;;;24134:630;;;24476:25;:31;24502:4;24476:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24526:1;24511:12;;:16;24476:51;24472:292;;;24555:33;24584:3;24555:24;24566:12;;24555:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24548:40;;24656:12;;24637:15;;24630:4;:22;;;;:::i;:::-;24629:39;;;;:::i;:::-;24607:18;;:61;;;;;;;:::i;:::-;;;;;;;;24736:12;;24717:15;;24710:4;:22;;;;:::i;:::-;24709:39;;;;:::i;:::-;24687:18;;:61;;;;;;;:::i;:::-;;;;;;;;24472:292;24134:630;24791:1;24784:4;:8;24780:91;;;24813:42;24829:4;24843;24850;24813:15;:42::i;:::-;24780:91;24897:4;24887:14;;;;;:::i;:::-;;;24082:831;24925:33;24941:4;24947:2;24951:6;24925:15;:33::i;:::-;21270:3696;;;;21157:3809;;;;:::o;6738:770::-;6896:1;6878:20;;:6;:20;;;6870:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6980:1;6959:23;;:9;:23;;;6951:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7035:47;7056:6;7064:9;7075:6;7035:20;:47::i;:::-;7095:21;7119:9;:17;7129:6;7119:17;;;;;;;;;;;;;;;;7095:41;;7186:6;7169:13;:23;;7147:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7330:6;7314:13;:22;7294:9;:17;7304:6;7294:17;;;;;;;;;;;;;;;:42;;;;7382:6;7358:9;:20;7368:9;7358:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7423:9;7406:35;;7415:6;7406:35;;;7434:6;7406:35;;;;;;:::i;:::-;;;;;;;;7454:46;7474:6;7482:9;7493:6;7454:19;:46::i;:::-;6859:649;6738:770;;;:::o;26096:1522::-;26135:23;26161:24;26179:4;26161:9;:24::i;:::-;26135:50;;26196:25;26245:18;;26224;;:39;;;;:::i;:::-;26196:67;;26274:12;26322:1;26303:15;:20;:46;;;;26348:1;26327:17;:22;26303:46;26299:85;;;26366:7;;;;;26299:85;26439:2;26418:18;;:23;;;;:::i;:::-;26400:15;:41;26396:115;;;26497:2;26476:18;;:23;;;;:::i;:::-;26458:41;;26396:115;26572:23;26685:1;26652:17;26617:18;;26599:15;:36;;;;:::i;:::-;26598:71;;;;:::i;:::-;:88;;;;:::i;:::-;26572:114;;26697:26;26726:36;26746:15;26726;:19;;:36;;;;:::i;:::-;26697:65;;26775:25;26803:21;26775:49;;26837:36;26854:18;26837:16;:36::i;:::-;26886:18;26907:44;26933:17;26907:21;:25;;:44;;;;:::i;:::-;26886:65;;26964:23;26990:81;27043:17;26990:34;27005:18;;26990:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26964:107;;27084:23;27123:15;27110:10;:28;;;;:::i;:::-;27084:54;;27172:1;27151:18;:22;;;;27205:1;27184:18;:22;;;;27241:1;27223:15;:19;:42;;;;;27264:1;27246:15;:19;27223:42;27219:278;;;27282:46;27295:15;27312;27282:12;:46::i;:::-;27348:137;27381:18;27418:15;27452:18;;27348:137;;;;;;;;:::i;:::-;;;;;;;;27219:278;27531:15;;;;;;;;;;;27523:29;;27574:21;27523:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27509:101;;;;;26124:1494;;;;;;;;;26096:1522;:::o;27626:788::-;27683:4;27717:15;27700:14;:32;;;;27787:28;27818:4;:14;;;27833:13;27818:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27787:60;;27897:20;27920:77;27981:5;27920:42;27945:16;;27920:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;27897:100;;28117:1;28102:12;:16;28098:110;;;28135:61;28151:13;28174:6;28183:12;28135:15;:61::i;:::-;28098:110;28283:19;28320:13;28283:51;;28345:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28372:12;;;;;;;;;;28402:4;28395:11;;;;;27626:788;:::o;10651:98::-;10709:7;10740:1;10736;:5;;;;:::i;:::-;10729:12;;10651:98;;;;:::o;10757:::-;10815:7;10846:1;10842;:5;;;;:::i;:::-;10835:12;;10757:98;;;;:::o;8910:125::-;;;;:::o;9043:124::-;;;;:::o;10545:98::-;10603:7;10634:1;10630;:5;;;;:::i;:::-;10623:12;;10545:98;;;;:::o;24974:589::-;25100:21;25138:1;25124:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25100:40;;25169:4;25151;25156:1;25151:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25195:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25185:4;25190:1;25185:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25230:62;25247:4;25262:15;25280:11;25230:8;:62::i;:::-;25331:15;:66;;;25412:11;25438:1;25482:4;25509;25529:15;25331:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25029:534;24974:589;:::o;25571:517::-;25719:62;25736:4;25751:15;25769:11;25719:8;:62::i;:::-;25824:15;:31;;;25863:9;25896:4;25916:11;25942:1;25985;17039:6;26054:15;25824:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25571:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:180::-;7046:77;7043:1;7036:88;7143:4;7140:1;7133:15;7167:4;7164:1;7157:15;7184:320;7228:6;7265:1;7259:4;7255:12;7245:22;;7312:1;7306:4;7302:12;7333:18;7323:81;;7389:4;7381:6;7377:17;7367:27;;7323:81;7451:2;7443:6;7440:14;7420:18;7417:38;7414:84;;7470:18;;:::i;:::-;7414:84;7235:269;7184:320;;;:::o;7510:227::-;7650:34;7646:1;7638:6;7634:14;7627:58;7719:10;7714:2;7706:6;7702:15;7695:35;7510:227;:::o;7743:366::-;7885:3;7906:67;7970:2;7965:3;7906:67;:::i;:::-;7899:74;;7982:93;8071:3;7982:93;:::i;:::-;8100:2;8095:3;8091:12;8084:19;;7743:366;;;:::o;8115:419::-;8281:4;8319:2;8308:9;8304:18;8296:26;;8368:9;8362:4;8358:20;8354:1;8343:9;8339:17;8332:47;8396:131;8522:4;8396:131;:::i;:::-;8388:139;;8115:419;;;:::o;8540:180::-;8588:77;8585:1;8578:88;8685:4;8682:1;8675:15;8709:4;8706:1;8699:15;8726:191;8766:3;8785:20;8803:1;8785:20;:::i;:::-;8780:25;;8819:20;8837:1;8819:20;:::i;:::-;8814:25;;8862:1;8859;8855:9;8848:16;;8883:3;8880:1;8877:10;8874:36;;;8890:18;;:::i;:::-;8874:36;8726:191;;;;:::o;8923:182::-;9063:34;9059:1;9051:6;9047:14;9040:58;8923:182;:::o;9111:366::-;9253:3;9274:67;9338:2;9333:3;9274:67;:::i;:::-;9267:74;;9350:93;9439:3;9350:93;:::i;:::-;9468:2;9463:3;9459:12;9452:19;;9111:366;;;:::o;9483:419::-;9649:4;9687:2;9676:9;9672:18;9664:26;;9736:9;9730:4;9726:20;9722:1;9711:9;9707:17;9700:47;9764:131;9890:4;9764:131;:::i;:::-;9756:139;;9483:419;;;:::o;9908:224::-;10048:34;10044:1;10036:6;10032:14;10025:58;10117:7;10112:2;10104:6;10100:15;10093:32;9908:224;:::o;10138:366::-;10280:3;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10377:93;10466:3;10377:93;:::i;:::-;10495:2;10490:3;10486:12;10479:19;;10138:366;;;:::o;10510:419::-;10676:4;10714:2;10703:9;10699:18;10691:26;;10763:9;10757:4;10753:20;10749:1;10738:9;10734:17;10727:47;10791:131;10917:4;10791:131;:::i;:::-;10783:139;;10510:419;;;:::o;10935:225::-;11075:34;11071:1;11063:6;11059:14;11052:58;11144:8;11139:2;11131:6;11127:15;11120:33;10935:225;:::o;11166:366::-;11308:3;11329:67;11393:2;11388:3;11329:67;:::i;:::-;11322:74;;11405:93;11494:3;11405:93;:::i;:::-;11523:2;11518:3;11514:12;11507:19;;11166:366;;;:::o;11538:419::-;11704:4;11742:2;11731:9;11727:18;11719:26;;11791:9;11785:4;11781:20;11777:1;11766:9;11762:17;11755:47;11819:131;11945:4;11819:131;:::i;:::-;11811:139;;11538:419;;;:::o;11963:223::-;12103:34;12099:1;12091:6;12087:14;12080:58;12172:6;12167:2;12159:6;12155:15;12148:31;11963:223;:::o;12192:366::-;12334:3;12355:67;12419:2;12414:3;12355:67;:::i;:::-;12348:74;;12431:93;12520:3;12431:93;:::i;:::-;12549:2;12544:3;12540:12;12533:19;;12192:366;;;:::o;12564:419::-;12730:4;12768:2;12757:9;12753:18;12745:26;;12817:9;12811:4;12807:20;12803:1;12792:9;12788:17;12781:47;12845:131;12971:4;12845:131;:::i;:::-;12837:139;;12564:419;;;:::o;12989:221::-;13129:34;13125:1;13117:6;13113:14;13106:58;13198:4;13193:2;13185:6;13181:15;13174:29;12989:221;:::o;13216:366::-;13358:3;13379:67;13443:2;13438:3;13379:67;:::i;:::-;13372:74;;13455:93;13544:3;13455:93;:::i;:::-;13573:2;13568:3;13564:12;13557:19;;13216:366;;;:::o;13588:419::-;13754:4;13792:2;13781:9;13777:18;13769:26;;13841:9;13835:4;13831:20;13827:1;13816:9;13812:17;13805:47;13869:131;13995:4;13869:131;:::i;:::-;13861:139;;13588:419;;;:::o;14013:224::-;14153:34;14149:1;14141:6;14137:14;14130:58;14222:7;14217:2;14209:6;14205:15;14198:32;14013:224;:::o;14243:366::-;14385:3;14406:67;14470:2;14465:3;14406:67;:::i;:::-;14399:74;;14482:93;14571:3;14482:93;:::i;:::-;14600:2;14595:3;14591:12;14584:19;;14243:366;;;:::o;14615:419::-;14781:4;14819:2;14808:9;14804:18;14796:26;;14868:9;14862:4;14858:20;14854:1;14843:9;14839:17;14832:47;14896:131;15022:4;14896:131;:::i;:::-;14888:139;;14615:419;;;:::o;15040:222::-;15180:34;15176:1;15168:6;15164:14;15157:58;15249:5;15244:2;15236:6;15232:15;15225:30;15040:222;:::o;15268:366::-;15410:3;15431:67;15495:2;15490:3;15431:67;:::i;:::-;15424:74;;15507:93;15596:3;15507:93;:::i;:::-;15625:2;15620:3;15616:12;15609:19;;15268:366;;;:::o;15640:419::-;15806:4;15844:2;15833:9;15829:18;15821:26;;15893:9;15887:4;15883:20;15879:1;15868:9;15864:17;15857:47;15921:131;16047:4;15921:131;:::i;:::-;15913:139;;15640:419;;;:::o;16065:240::-;16205:34;16201:1;16193:6;16189:14;16182:58;16274:23;16269:2;16261:6;16257:15;16250:48;16065:240;:::o;16311:366::-;16453:3;16474:67;16538:2;16533:3;16474:67;:::i;:::-;16467:74;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16311:366;;;:::o;16683:419::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16683:419;;;:::o;17108:169::-;17248:21;17244:1;17236:6;17232:14;17225:45;17108:169;:::o;17283:366::-;17425:3;17446:67;17510:2;17505:3;17446:67;:::i;:::-;17439:74;;17522:93;17611:3;17522:93;:::i;:::-;17640:2;17635:3;17631:12;17624:19;;17283:366;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:241::-;18220:34;18216:1;18208:6;18204:14;18197:58;18289:24;18284:2;18276:6;18272:15;18265:49;18080:241;:::o;18327:366::-;18469:3;18490:67;18554:2;18549:3;18490:67;:::i;:::-;18483:74;;18566:93;18655:3;18566:93;:::i;:::-;18684:2;18679:3;18675:12;18668:19;;18327:366;;;:::o;18699:419::-;18865:4;18903:2;18892:9;18888:18;18880:26;;18952:9;18946:4;18942:20;18938:1;18927:9;18923:17;18916:47;18980:131;19106:4;18980:131;:::i;:::-;18972:139;;18699:419;;;:::o;19124:410::-;19164:7;19187:20;19205:1;19187:20;:::i;:::-;19182:25;;19221:20;19239:1;19221:20;:::i;:::-;19216:25;;19276:1;19273;19269:9;19298:30;19316:11;19298:30;:::i;:::-;19287:41;;19477:1;19468:7;19464:15;19461:1;19458:22;19438:1;19431:9;19411:83;19388:139;;19507:18;;:::i;:::-;19388:139;19172:362;19124:410;;;;:::o;19540:180::-;19588:77;19585:1;19578:88;19685:4;19682:1;19675:15;19709:4;19706:1;19699:15;19726:185;19766:1;19783:20;19801:1;19783:20;:::i;:::-;19778:25;;19817:20;19835:1;19817:20;:::i;:::-;19812:25;;19856:1;19846:35;;19861:18;;:::i;:::-;19846:35;19903:1;19900;19896:9;19891:14;;19726:185;;;;:::o;19917:194::-;19957:4;19977:20;19995:1;19977:20;:::i;:::-;19972:25;;20011:20;20029:1;20011:20;:::i;:::-;20006:25;;20055:1;20052;20048:9;20040:17;;20079:1;20073:4;20070:11;20067:37;;;20084:18;;:::i;:::-;20067:37;19917:194;;;;:::o;20117:225::-;20257:34;20253:1;20245:6;20241:14;20234:58;20326:8;20321:2;20313:6;20309:15;20302:33;20117:225;:::o;20348:366::-;20490:3;20511:67;20575:2;20570:3;20511:67;:::i;:::-;20504:74;;20587:93;20676:3;20587:93;:::i;:::-;20705:2;20700:3;20696:12;20689:19;;20348:366;;;:::o;20720:419::-;20886:4;20924:2;20913:9;20909:18;20901:26;;20973:9;20967:4;20963:20;20959:1;20948:9;20944:17;20937:47;21001:131;21127:4;21001:131;:::i;:::-;20993:139;;20720:419;;;:::o;21145:442::-;21294:4;21332:2;21321:9;21317:18;21309:26;;21345:71;21413:1;21402:9;21398:17;21389:6;21345:71;:::i;:::-;21426:72;21494:2;21483:9;21479:18;21470:6;21426:72;:::i;:::-;21508;21576:2;21565:9;21561:18;21552:6;21508:72;:::i;:::-;21145:442;;;;;;:::o;21593:147::-;21694:11;21731:3;21716:18;;21593:147;;;;:::o;21746:114::-;;:::o;21866:398::-;22025:3;22046:83;22127:1;22122:3;22046:83;:::i;:::-;22039:90;;22138:93;22227:3;22138:93;:::i;:::-;22256:1;22251:3;22247:11;22240:18;;21866:398;;;:::o;22270:379::-;22454:3;22476:147;22619:3;22476:147;:::i;:::-;22469:154;;22640:3;22633:10;;22270:379;;;:::o;22655:143::-;22712:5;22743:6;22737:13;22728:22;;22759:33;22786:5;22759:33;:::i;:::-;22655:143;;;;:::o;22804:351::-;22874:6;22923:2;22911:9;22902:7;22898:23;22894:32;22891:119;;;22929:79;;:::i;:::-;22891:119;23049:1;23074:64;23130:7;23121:6;23110:9;23106:22;23074:64;:::i;:::-;23064:74;;23020:128;22804:351;;;;:::o;23161:180::-;23209:77;23206:1;23199:88;23306:4;23303:1;23296:15;23330:4;23327:1;23320:15;23347:180;23395:77;23392:1;23385:88;23492:4;23489:1;23482:15;23516:4;23513:1;23506:15;23533:143;23590:5;23621:6;23615:13;23606:22;;23637:33;23664:5;23637:33;:::i;:::-;23533:143;;;;:::o;23682:351::-;23752:6;23801:2;23789:9;23780:7;23776:23;23772:32;23769:119;;;23807:79;;:::i;:::-;23769:119;23927:1;23952:64;24008:7;23999:6;23988:9;23984:22;23952:64;:::i;:::-;23942:74;;23898:128;23682:351;;;;:::o;24039:85::-;24084:7;24113:5;24102:16;;24039:85;;;:::o;24130:158::-;24188:9;24221:61;24239:42;24248:32;24274:5;24248:32;:::i;:::-;24239:42;:::i;:::-;24221:61;:::i;:::-;24208:74;;24130:158;;;:::o;24294:147::-;24389:45;24428:5;24389:45;:::i;:::-;24384:3;24377:58;24294:147;;:::o;24447:114::-;24514:6;24548:5;24542:12;24532:22;;24447:114;;;:::o;24567:184::-;24666:11;24700:6;24695:3;24688:19;24740:4;24735:3;24731:14;24716:29;;24567:184;;;;:::o;24757:132::-;24824:4;24847:3;24839:11;;24877:4;24872:3;24868:14;24860:22;;24757:132;;;:::o;24895:108::-;24972:24;24990:5;24972:24;:::i;:::-;24967:3;24960:37;24895:108;;:::o;25009:179::-;25078:10;25099:46;25141:3;25133:6;25099:46;:::i;:::-;25177:4;25172:3;25168:14;25154:28;;25009:179;;;;:::o;25194:113::-;25264:4;25296;25291:3;25287:14;25279:22;;25194:113;;;:::o;25343:732::-;25462:3;25491:54;25539:5;25491:54;:::i;:::-;25561:86;25640:6;25635:3;25561:86;:::i;:::-;25554:93;;25671:56;25721:5;25671:56;:::i;:::-;25750:7;25781:1;25766:284;25791:6;25788:1;25785:13;25766:284;;;25867:6;25861:13;25894:63;25953:3;25938:13;25894:63;:::i;:::-;25887:70;;25980:60;26033:6;25980:60;:::i;:::-;25970:70;;25826:224;25813:1;25810;25806:9;25801:14;;25766:284;;;25770:14;26066:3;26059:10;;25467:608;;;25343:732;;;;:::o;26081:831::-;26344:4;26382:3;26371:9;26367:19;26359:27;;26396:71;26464:1;26453:9;26449:17;26440:6;26396:71;:::i;:::-;26477:80;26553:2;26542:9;26538:18;26529:6;26477:80;:::i;:::-;26604:9;26598:4;26594:20;26589:2;26578:9;26574:18;26567:48;26632:108;26735:4;26726:6;26632:108;:::i;:::-;26624:116;;26750:72;26818:2;26807:9;26803:18;26794:6;26750:72;:::i;:::-;26832:73;26900:3;26889:9;26885:19;26876:6;26832:73;:::i;:::-;26081:831;;;;;;;;:::o;26918:807::-;27167:4;27205:3;27194:9;27190:19;27182:27;;27219:71;27287:1;27276:9;27272:17;27263:6;27219:71;:::i;:::-;27300:72;27368:2;27357:9;27353:18;27344:6;27300:72;:::i;:::-;27382:80;27458:2;27447:9;27443:18;27434:6;27382:80;:::i;:::-;27472;27548:2;27537:9;27533:18;27524:6;27472:80;:::i;:::-;27562:73;27630:3;27619:9;27615:19;27606:6;27562:73;:::i;:::-;27645;27713:3;27702:9;27698:19;27689:6;27645:73;:::i;:::-;26918:807;;;;;;;;;:::o;27731:663::-;27819:6;27827;27835;27884:2;27872:9;27863:7;27859:23;27855:32;27852:119;;;27890:79;;:::i;:::-;27852:119;28010:1;28035:64;28091:7;28082:6;28071:9;28067:22;28035:64;:::i;:::-;28025:74;;27981:128;28148:2;28174:64;28230:7;28221:6;28210:9;28206:22;28174:64;:::i;:::-;28164:74;;28119:129;28287:2;28313:64;28369:7;28360:6;28349:9;28345:22;28313:64;:::i;:::-;28303:74;;28258:129;27731:663;;;;;:::o

Swarm Source

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