ETH Price: $3,686.66 (+2.65%)

Token

ERC-20: ECHO BOT (ECHO)
 

Overview

Max Total Supply

1,000,000,000 ECHO

Holders

589

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,550,467.871809288 ECHO

Value
$0.00
0x26fd03bd43e3a50a2b86bd0dc2cf88b7db144b22
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:
ECHO

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

Empower your trades with Echo.

https://t.me/echobotfinance

EchoBot.biz

https://twitter.com/echofinancebot

*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.11;

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ECHO is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public ExcludedFromWalletRestrictions;

    mapping (address => bool) private _isSniper;
    
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;    

    uint256 private startingSupply = 1_000_000_000;

    string private _name = "ECHO BOT";
    string private _symbol = "ECHO";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 2000, sellFee: 2000, transferFee: 0});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 500, maxSell: 500, maxTransfer: 500});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint tokenFee;
    uint TreasuryFee;
    uint RevenueFee;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, tokenFee: 0, TreasuryFee: 1000, RevenueFee: 0});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // UNISWAP ROUTER
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    
    address payable public _treasuryWallet = payable(0xbE47c9aa991189EeadD5279A90f447729aEC326A);  // Treasury, receives taxes
    address payable public _revenueWallet = payable(0x2858f2C1D89e547c66302ffBCF311109Ec8347C9);  // This wallet will deploy the revenue share dApp.
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 2;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_treasuryWallet] = true;
        _isExcludedFromFees[DEAD] = true;

        _liquidityHolders[owner()] = true;
        _liquidityHolders[_treasuryWallet] = true;
        _liquidityHolders[_revenueWallet] = true;

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        

        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }


    function excludeFromWalletRestrictions(address excludeAddress) public onlyOwner{
        ExcludedFromWalletRestrictions[excludeAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address includeAddress) public onlyOwner{
        ExcludedFromWalletRestrictions[includeAddress] = false;
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function init() external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = 1;
        snipeBlockAmt = 0;
    }

    // function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
    //     _isSniper[account] = enabled;
    // }

    // we are not racists

    function setRatios(uint _liquidity, uint _TreasuryFee, uint _RevenueFee , uint _tokenFee) external onlyOwner {
        require ( (_liquidity + _TreasuryFee + _RevenueFee + _tokenFee) == 1000, "!1K"); // to change the ratio, it must require the sum equal 1000
        Ratios.liquidity = _liquidity;
        Ratios.TreasuryFee = _TreasuryFee;
        Ratios.RevenueFee = _RevenueFee;
        Ratios.tokenFee = _tokenFee;
}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    // function setWallets(address payable treasuryWallet, address payable revenueWallet) external onlyOwner {
    //     _treasuryWallet = payable(treasuryWallet);
    //     _revenueWallet = payable(revenueWallet);
    // }
    // removed 

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {

            if(!(ExcludedFromWalletRestrictions[from] || ExcludedFromWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }
        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.TreasuryFee + Ratios.RevenueFee == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.TreasuryFee + Ratios.RevenueFee) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.TreasuryFee + Ratios.RevenueFee) ) / 2;

        bool success;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            uint ethBal = address(this).balance;
            uint ethBalForOperations = ((ethBal * Ratios.TreasuryFee) / (Ratios.TreasuryFee + Ratios.RevenueFee));

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

            // _revenueWallet.transfer(address(this).balance);

        }
    }

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _treasuryWallet,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 0) {
                _liqAddBlock = block.number; // removed + 5000
            } else {
                _liqAddBlock = block.number;
            }
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniper(from) || isSniper(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniper[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {currentFee = Fees.sellFee;}

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 tokenFeeAmt = (amount * currentFee * Ratios.tokenFee) / (Ratios.tokenFee + Ratios.liquidity + Ratios.TreasuryFee + Ratios.RevenueFee ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - tokenFeeAmt;
        _tOwned[_treasuryWallet] += tokenFeeAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, _treasuryWallet, tokenFeeAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - tokenFeeAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"tokenFee","type":"uint256"},{"internalType":"uint256","name":"TreasuryFee","type":"uint256"},{"internalType":"uint256","name":"RevenueFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_revenueWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"includeAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_TreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_RevenueFee","type":"uint256"},{"internalType":"uint256","name":"_tokenFee","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556001600960006101000a81548160ff021916908315150217905550633b9aca00600b556040518060400160405280600881526020017f4543484f20424f54000000000000000000000000000000000000000000000000815250600c90805190602001906200007992919062000d35565b506040518060400160405280600481526020017f4543484f00000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c792919062000d35565b5060405180606001604052806107d081526020016107d081526020016000815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806101f481526020016101f481526020016101f481525060116000820151816000015560208201518160010155604082015181600201555050604051806080016040528060008152602001600081526020016103e88152602001600081525060146000820151816000015560208201518160010155604082015181600201556060820151816003015550506009600a620001af919062000f7f565b600b54620001be919062000fd0565b60185573be47c9aa991189eeadd5279a90f447729aec326a601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732858f2c1d89e547c66302ffbcf311109ec8347c9601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601d60156101000a81548160ff0219169083151502179055506002601e556064601f55601f54601e54601854620002a5919062000fd0565b620002b1919062001060565b60205560026021556064602255602254602154601854620002d3919062000fd0565b620002df919062001060565b6023556127106005601854620002f6919062000fd0565b62000302919062001060565b6024556103e8600560185462000319919062000fd0565b62000325919062001060565b6025556001602660006101000a81548160ff0219169083151502179055506000602660016101000a81548160ff0219169083151502179055506000602755600060285560006029556000602a556000602b556000602c55601854600160006200039362000b3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fa919062001102565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a9919062001102565b306040518363ffffffff1660e01b8152600401620005c992919062001145565b6020604051808303816000875af1158015620005e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060f919062001102565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620007a262000b3960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093562000b3960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ab262000a8e62000b3160201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60185462000b6260201b60201c565b62000ac262000b3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000b23919062001183565b60405180910390a362001288565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcc9062001201565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3f9062001201565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d28919062001183565b60405180910390a3505050565b82805462000d439062001252565b90600052602060002090601f01602090048101928262000d67576000855562000db3565b82601f1062000d8257805160ff191683800117855562000db3565b8280016001018555821562000db3579182015b8281111562000db257825182559160200191906001019062000d95565b5b50905062000dc2919062000dc6565b5090565b5b8082111562000de157600081600090555060010162000dc7565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e735780860481111562000e4b5762000e4a62000de5565b5b600185161562000e5b5780820291505b808102905062000e6b8562000e14565b945062000e2b565b94509492505050565b60008262000e8e576001905062000f61565b8162000e9e576000905062000f61565b816001811462000eb7576002811462000ec25762000ef8565b600191505062000f61565b60ff84111562000ed75762000ed662000de5565b5b8360020a91508482111562000ef15762000ef062000de5565b5b5062000f61565b5060208310610133831016604e8410600b841016171562000f325782820a90508381111562000f2c5762000f2b62000de5565b5b62000f61565b62000f41848484600162000e21565b9250905081840481111562000f5b5762000f5a62000de5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f8c8262000f68565b915062000f998362000f72565b925062000fc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e7c565b905092915050565b600062000fdd8262000f68565b915062000fea8362000f68565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001026576200102562000de5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200106d8262000f68565b91506200107a8362000f68565b9250826200108d576200108c62001031565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010ca826200109d565b9050919050565b620010dc81620010bd565b8114620010e857600080fd5b50565b600081519050620010fc81620010d1565b92915050565b6000602082840312156200111b576200111a62001098565b5b60006200112b84828501620010eb565b91505092915050565b6200113f81620010bd565b82525050565b60006040820190506200115c600083018562001134565b6200116b602083018462001134565b9392505050565b6200117d8162000f68565b82525050565b60006020820190506200119a600083018462001172565b92915050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000620011e9601383620011a0565b9150620011f682620011b1565b602082019050919050565b600060208201905081810360008301526200121c81620011da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200126b57607f821691505b6020821081141562001282576200128162001223565b5b50919050565b61500280620012986000396000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063bc9cc736116100b6578063e1c7392a1161007a578063e1c7392a14610912578063e79d416014610929578063e83e34b114610954578063e9dae5ed14610981578063eafb5a3c146109aa578063fb78680d146109d35761025c565b8063bc9cc7361461081b578063c49b9a8014610846578063ce8b79c91461086f578063d1d2b9be14610898578063dd62ed3e146108d55761025c565b806395d89b41116100fd57806395d89b411461071f578063a457c2d71461074a578063a9059cbb14610787578063b5f7bfa2146107c4578063bc1323e8146107f25761025c565b806370a082311461064c578063715018a61461068957806380c581d1146106a0578063893d20e8146106c95780638da5cb5b146106f45761025c565b8063313ce567116101d25780634a74bb02116101965780634a74bb021461052a5780634fb2e45d146105555780634fbee1931461057e57806350a8e016146105bb578063571ac8b0146105e6578063590ffdce146106235761025c565b8063313ce56714610441578063395093511461046c5780633aaa36e6146104a95780633f3cf56c146104d6578063452ed4f1146104ff5761025c565b80631793fe4e116102195780631793fe4e1461035c57806318160ddd1461038557806323b872dd146103b057806326003957146103ed578063269d1faa146104165761025c565b806303fd2a451461026157806306fdde031461028c5780630758d924146102b7578063095ea7b3146102e25780630f3a325f1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109fc565b6040516102839190613dde565b60405180910390f35b34801561029857600080fd5b506102a1610a02565b6040516102ae9190613e92565b60405180910390f35b3480156102c357600080fd5b506102cc610a94565b6040516102d99190613f13565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190613f95565b610aba565b6040516103169190613ff0565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061400b565b610ad8565b6040516103539190613ff0565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614038565b610b2e565b005b34801561039157600080fd5b5061039a610c56565b6040516103a791906140ae565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906140c9565b610c60565b6040516103e49190613ff0565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f919061411c565b610dad565b005b34801561042257600080fd5b5061042b610ebd565b604051610438919061417d565b60405180910390f35b34801561044d57600080fd5b50610456610ee3565b60405161046391906141b4565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613f95565b610eec565b6040516104a09190613ff0565b60405180910390f35b3480156104b557600080fd5b506104be610f98565b6040516104cd939291906141cf565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f8919061411c565b610fb0565b005b34801561050b57600080fd5b506105146110c0565b6040516105219190613dde565b60405180910390f35b34801561053657600080fd5b5061053f6110e6565b60405161054c9190613ff0565b60405180910390f35b34801561056157600080fd5b5061057c6004803603810190610577919061400b565b6110f9565b005b34801561058a57600080fd5b506105a560048036038101906105a0919061400b565b6114b2565b6040516105b29190613ff0565b60405180910390f35b3480156105c757600080fd5b506105d0611508565b6040516105dd9190613ff0565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061400b565b61151b565b60405161061a9190613ff0565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190614232565b61154e565b005b34801561065857600080fd5b50610673600480360381019061066e919061400b565b61163e565b60405161068091906140ae565b60405180910390f35b34801561069557600080fd5b5061069e611687565b005b3480156106ac57600080fd5b506106c760048036038101906106c29190614232565b611805565b005b3480156106d557600080fd5b506106de6119c5565b6040516106eb9190613dde565b60405180910390f35b34801561070057600080fd5b506107096119d4565b6040516107169190613dde565b60405180910390f35b34801561072b57600080fd5b506107346119fd565b6040516107419190613e92565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c9190613f95565b611a8f565b60405161077e9190613ff0565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190613f95565b611b3b565b6040516107bb9190613ff0565b60405180910390f35b3480156107d057600080fd5b506107d9611b5a565b6040516107e99493929190614272565b60405180910390f35b3480156107fe57600080fd5b506108196004803603810190610814919061400b565b611b78565b005b34801561082757600080fd5b50610830611c68565b60405161083d919061417d565b60405180910390f35b34801561085257600080fd5b5061086d600480360381019061086891906142b7565b611c8e565b005b34801561087b57600080fd5b506108966004803603810190610891919061400b565b611d77565b005b3480156108a457600080fd5b506108bf60048036038101906108ba919061400b565b611e67565b6040516108cc9190613ff0565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906142e4565b611e87565b60405161090991906140ae565b60405180910390f35b34801561091e57600080fd5b50610927611f0e565b005b34801561093557600080fd5b5061093e611ffa565b60405161094b91906140ae565b60405180910390f35b34801561096057600080fd5b50610969612000565b604051610978939291906141cf565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190614324565b612018565b005b3480156109b657600080fd5b506109d160048036038101906109cc919061400b565b61213a565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190614038565b61258c565b005b61dead81565b6060600c8054610a11906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d906143a6565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ace610ac7612665565b848461266d565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b36612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614424565b60405180910390fd5b6103e881838587610bd49190614473565b610bde9190614473565b610be89190614473565b14610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90614515565b60405180910390fd5b8360146000018190555082601460020181905550816014600301819055508060146001018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d995781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190614535565b925050819055505b610da4848484612838565b90509392505050565b610db5612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990614424565b60405180910390fd5b60008183601854610e539190614569565b610e5d91906145f2565b905061012c601854610e6f91906145f2565b811015610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890614695565b60405180910390fd5b80602381905550505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b6000610f8e610ef9612665565b848460046000610f07612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f899190614473565b61266d565b6001905092915050565b600e8060000154908060010154908060020154905083565b610fb8612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90614424565b60405180910390fd5b600081836018546110569190614569565b61106091906145f2565b905061012c60185461107291906145f2565b8110156110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90614695565b60405180910390fd5b80602081905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b611101612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614727565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690614727565b60405180910390fd5b61129a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061154e565b6112a581600161154e565b6112ce60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061139a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b11156113f5576113f360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113ee60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b612838565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611547827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aba565b9050919050565b611556612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90614424565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61168f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390614424565b60405180910390fd5b61174760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061154e565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61180d612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614424565b60405180910390fd5b600015158115151415611904576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119c1565b6000600354146119615762093a80600354426119209190614535565b11611960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195790614793565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b60006119cf6119d4565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611a0c906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a38906143a6565b8015611a855780601f10611a5a57610100808354040283529160200191611a85565b820191906000526020600020905b815481529060010190602001808311611a6857829003601f168201915b5050505050905090565b6000611b31611a9c612665565b848460046000611aaa612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2c9190614535565b61266d565b6001905092915050565b6000611b4f611b48612665565b8484612838565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611b80612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490614424565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c96612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614424565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d6c9190613ff0565b60405180910390a150565b611d7f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614424565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f16612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9a90614424565b60405180910390fd5b600060275414611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906147ff565b60405180910390fd5b60016027819055506000602b81905550565b602c5481565b60118060000154908060010154908060020154905083565b612020612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490614424565b60405180910390fd5b60116000015483111580156120c757506011600101548211155b80156120d857506011600201548111155b612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e9061486b565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b612142612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690614424565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224591906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d091906148a0565b6040518363ffffffff1660e01b81526004016122ed9291906148cd565b602060405180830381865afa15801561230a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232e91906148a0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612504578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d491906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f91906148a0565b6040518363ffffffff1660e01b815260040161247c9291906148cd565b6020604051808303816000875af115801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf91906148a0565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612546565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612594612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261890614424565b60405180910390fd5b82846018546126309190614569565b61263a91906145f2565b602481905550808260185461264f9190614569565b61265991906145f2565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d490614942565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490614942565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161282b91906140ae565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a0906149ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906149ae565b60405180910390fd5b6000821161295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614a1a565b60405180910390fd5b6129668484612d6f565b15612bf657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bf557600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afc57602054821115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614a86565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf45760235482612ba88561163e565b612bb29190614473565b1115612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90614af2565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ca757600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d5957601d60149054906101000a900460ff16158015612d225750601d60159054906101000a900460ff165b15612d58576000612d323061163e565b90506024548110612d56576025548110612d4c5760255490505b612d5581612f46565b5b505b5b612d6585858584613235565b9150509392505050565b6000612d796119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de75750612db76119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ecd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000601460030154601460020154601460000154612f7f9190614473565b612f899190614473565b1415612f9457613217565b60006002601460030154601460020154601460000154612fb49190614473565b612fbe9190614473565b60146000015484612fcf9190614569565b612fd991906145f2565b612fe391906145f2565b905060008183612ff39190614535565b9050612ffe81613598565b6000479050600060026014600301546014600201546014600001546130239190614473565b61302d9190614473565b6014600001548461303e9190614569565b61304891906145f2565b61305291906145f2565b90506000808511156130a45761306885836137ae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161309b939291906141cf565b60405180910390a15b600085876130b29190614535565b111561321157600047905060006014600301546014600201546130d59190614473565b601460020154836130e69190614569565b6130f091906145f2565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161313890614b43565b60006040518083038185875af1925050503d8060008114613175576040519150601f19603f3d011682016040523d82523d6000602084013e61317a565b606091505b505080935050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131c690614b43565b60006040518083038185875af1925050503d8060008114613203576040519150601f19603f3d011682016040523d82523d6000602084013e613208565b606091505b50508093505050505b50505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff161561345f5761325585610ad8565b80613265575061326484610ad8565b5b156132a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329c90614ba4565b60405180910390fd5b602660019054906101000a900460ff1661332b576132c38585613881565b602660019054906101000a900460ff161580156132e657506132e58585612d6f565b5b15613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90614c36565b60405180910390fd5b61345e565b60006028541180156133865750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561339857506133978585612d6f565b5b1561345d57602b54602854436133ae9190614535565b101561345c576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061341f90614c56565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516134539190613dde565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ae9190614535565b925050819055506000826134c257836134ce565b6134cd868686613a2a565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461351f9190614473565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358391906140ae565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156135b5576135b4614c9f565b5b6040519080825280602002602001820160405280156135e35781602001602082028036833780820191505090505b50905030816000815181106135fb576135fa614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c691906148a0565b816001815181106136da576136d9614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613778959493929190614df6565b600060405180830381600087803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190614e71565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a9190614ee7565b5050505050565b602660019054906101000a900460ff16156138d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c890614fac565b60405180910390fd5b6138db8282612d6f565b1580156139355750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613a26576000602b54146139505743602881905550613958565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613a1d9190613ff0565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a9057600e600101549050613afd565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613af357600e600001549050613afc565b600e6002015490505b5b613b078585612d6f565b15613b2b5760006027541480613b205750600160275414155b15613b2a57600080fd5b5b6000612710601460030154601460020154601460000154601460010154613b529190614473565b613b5c9190614473565b613b669190614473565b6014600101548487613b789190614569565b613b829190614569565b613b8c91906145f2565b613b9691906145f2565b90506000816127108487613baa9190614569565b613bb491906145f2565b613bbe9190614535565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c319190614473565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c879190614473565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d0d91906140ae565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d7291906140ae565b60405180910390a3818186613d879190614535565b613d919190614535565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc882613d9d565b9050919050565b613dd881613dbd565b82525050565b6000602082019050613df36000830184613dcf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e33578082015181840152602081019050613e18565b83811115613e42576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6482613df9565b613e6e8185613e04565b9350613e7e818560208601613e15565b613e8781613e48565b840191505092915050565b60006020820190508181036000830152613eac8184613e59565b905092915050565b6000819050919050565b6000613ed9613ed4613ecf84613d9d565b613eb4565b613d9d565b9050919050565b6000613eeb82613ebe565b9050919050565b6000613efd82613ee0565b9050919050565b613f0d81613ef2565b82525050565b6000602082019050613f286000830184613f04565b92915050565b600080fd5b613f3c81613dbd565b8114613f4757600080fd5b50565b600081359050613f5981613f33565b92915050565b6000819050919050565b613f7281613f5f565b8114613f7d57600080fd5b50565b600081359050613f8f81613f69565b92915050565b60008060408385031215613fac57613fab613f2e565b5b6000613fba85828601613f4a565b9250506020613fcb85828601613f80565b9150509250929050565b60008115159050919050565b613fea81613fd5565b82525050565b60006020820190506140056000830184613fe1565b92915050565b60006020828403121561402157614020613f2e565b5b600061402f84828501613f4a565b91505092915050565b6000806000806080858703121561405257614051613f2e565b5b600061406087828801613f80565b945050602061407187828801613f80565b935050604061408287828801613f80565b925050606061409387828801613f80565b91505092959194509250565b6140a881613f5f565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000806000606084860312156140e2576140e1613f2e565b5b60006140f086828701613f4a565b935050602061410186828701613f4a565b925050604061411286828701613f80565b9150509250925092565b6000806040838503121561413357614132613f2e565b5b600061414185828601613f80565b925050602061415285828601613f80565b9150509250929050565b600061416782613d9d565b9050919050565b6141778161415c565b82525050565b6000602082019050614192600083018461416e565b92915050565b600060ff82169050919050565b6141ae81614198565b82525050565b60006020820190506141c960008301846141a5565b92915050565b60006060820190506141e4600083018661409f565b6141f1602083018561409f565b6141fe604083018461409f565b949350505050565b61420f81613fd5565b811461421a57600080fd5b50565b60008135905061422c81614206565b92915050565b6000806040838503121561424957614248613f2e565b5b600061425785828601613f4a565b92505060206142688582860161421d565b9150509250929050565b6000608082019050614287600083018761409f565b614294602083018661409f565b6142a1604083018561409f565b6142ae606083018461409f565b95945050505050565b6000602082840312156142cd576142cc613f2e565b5b60006142db8482850161421d565b91505092915050565b600080604083850312156142fb576142fa613f2e565b5b600061430985828601613f4a565b925050602061431a85828601613f4a565b9150509250929050565b60008060006060848603121561433d5761433c613f2e565b5b600061434b86828701613f80565b935050602061435c86828701613f80565b925050604061436d86828701613f80565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143be57607f821691505b602082108114156143d2576143d1614377565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061440e601083613e04565b9150614419826143d8565b602082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061447e82613f5f565b915061448983613f5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144be576144bd614444565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b60006144ff600383613e04565b915061450a826144c9565b602082019050919050565b6000602082019050818103600083015261452e816144f2565b9050919050565b600061454082613f5f565b915061454b83613f5f565b92508282101561455e5761455d614444565b5b828203905092915050565b600061457482613f5f565b915061457f83613f5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145b8576145b7614444565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145fd82613f5f565b915061460883613f5f565b925082614618576146176145c3565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b600061467f602583613e04565b915061468a82614623565b604082019050919050565b600060208201905081810360008301526146ae81614672565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000614711603d83613e04565b915061471c826146b5565b604082019050919050565b6000602082019050818103600083015261474081614704565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b600061477d601283613e04565b915061478882614747565b602082019050919050565b600060208201905081810360008301526147ac81614770565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b60006147e9600683613e04565b91506147f4826147b3565b602082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614855601783613e04565b91506148608261481f565b602082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b60008151905061489a81613f33565b92915050565b6000602082840312156148b6576148b5613f2e565b5b60006148c48482850161488b565b91505092915050565b60006040820190506148e26000830185613dcf565b6148ef6020830184613dcf565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600061492c601383613e04565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614998601483613e04565b91506149a382614962565b602082019050919050565b600060208201905081810360008301526149c78161498b565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614a04600883613e04565b9150614a0f826149ce565b602082019050919050565b60006020820190508181036000830152614a33816149f7565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614a70601883613e04565b9150614a7b82614a3a565b602082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614adc601a83613e04565b9150614ae782614aa6565b602082019050919050565b60006020820190508181036000830152614b0b81614acf565b9050919050565b600081905092915050565b50565b6000614b2d600083614b12565b9150614b3882614b1d565b600082019050919050565b6000614b4e82614b20565b9150819050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614b8e601083613e04565b9150614b9982614b58565b602082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614c20602583613e04565b9150614c2b82614bc4565b604082019050919050565b60006020820190508181036000830152614c4f81614c13565b9050919050565b6000614c6182613f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9457614c93614444565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614d22614d1d614d1884614cfd565b613eb4565b613f5f565b9050919050565b614d3281614d07565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d6d81613dbd565b82525050565b6000614d7f8383614d64565b60208301905092915050565b6000602082019050919050565b6000614da382614d38565b614dad8185614d43565b9350614db883614d54565b8060005b83811015614de9578151614dd08882614d73565b9750614ddb83614d8b565b925050600181019050614dbc565b5085935050505092915050565b600060a082019050614e0b600083018861409f565b614e186020830187614d29565b8181036040830152614e2a8186614d98565b9050614e396060830185613dcf565b614e46608083018461409f565b9695505050505050565b6000614e5b82613ee0565b9050919050565b614e6b81614e50565b82525050565b600060c082019050614e866000830189613dcf565b614e93602083018861409f565b614ea06040830187614d29565b614ead6060830186614d29565b614eba6080830185614e62565b614ec760a083018461409f565b979650505050505050565b600081519050614ee181613f69565b92915050565b600080600060608486031215614f0057614eff613f2e565b5b6000614f0e86828701614ed2565b9350506020614f1f86828701614ed2565b9250506040614f3086828701614ed2565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614f96602383613e04565b9150614fa182614f3a565b604082019050919050565b60006020820190508181036000830152614fc581614f89565b905091905056fea264697066735822122078af3da82dde787388084e8e123b0a7070010853d37872cd861e9cb8b784028464736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806370a0823111610139578063bc9cc736116100b6578063e1c7392a1161007a578063e1c7392a14610912578063e79d416014610929578063e83e34b114610954578063e9dae5ed14610981578063eafb5a3c146109aa578063fb78680d146109d35761025c565b8063bc9cc7361461081b578063c49b9a8014610846578063ce8b79c91461086f578063d1d2b9be14610898578063dd62ed3e146108d55761025c565b806395d89b41116100fd57806395d89b411461071f578063a457c2d71461074a578063a9059cbb14610787578063b5f7bfa2146107c4578063bc1323e8146107f25761025c565b806370a082311461064c578063715018a61461068957806380c581d1146106a0578063893d20e8146106c95780638da5cb5b146106f45761025c565b8063313ce567116101d25780634a74bb02116101965780634a74bb021461052a5780634fb2e45d146105555780634fbee1931461057e57806350a8e016146105bb578063571ac8b0146105e6578063590ffdce146106235761025c565b8063313ce56714610441578063395093511461046c5780633aaa36e6146104a95780633f3cf56c146104d6578063452ed4f1146104ff5761025c565b80631793fe4e116102195780631793fe4e1461035c57806318160ddd1461038557806323b872dd146103b057806326003957146103ed578063269d1faa146104165761025c565b806303fd2a451461026157806306fdde031461028c5780630758d924146102b7578063095ea7b3146102e25780630f3a325f1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109fc565b6040516102839190613dde565b60405180910390f35b34801561029857600080fd5b506102a1610a02565b6040516102ae9190613e92565b60405180910390f35b3480156102c357600080fd5b506102cc610a94565b6040516102d99190613f13565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190613f95565b610aba565b6040516103169190613ff0565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061400b565b610ad8565b6040516103539190613ff0565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614038565b610b2e565b005b34801561039157600080fd5b5061039a610c56565b6040516103a791906140ae565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906140c9565b610c60565b6040516103e49190613ff0565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f919061411c565b610dad565b005b34801561042257600080fd5b5061042b610ebd565b604051610438919061417d565b60405180910390f35b34801561044d57600080fd5b50610456610ee3565b60405161046391906141b4565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613f95565b610eec565b6040516104a09190613ff0565b60405180910390f35b3480156104b557600080fd5b506104be610f98565b6040516104cd939291906141cf565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f8919061411c565b610fb0565b005b34801561050b57600080fd5b506105146110c0565b6040516105219190613dde565b60405180910390f35b34801561053657600080fd5b5061053f6110e6565b60405161054c9190613ff0565b60405180910390f35b34801561056157600080fd5b5061057c6004803603810190610577919061400b565b6110f9565b005b34801561058a57600080fd5b506105a560048036038101906105a0919061400b565b6114b2565b6040516105b29190613ff0565b60405180910390f35b3480156105c757600080fd5b506105d0611508565b6040516105dd9190613ff0565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061400b565b61151b565b60405161061a9190613ff0565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190614232565b61154e565b005b34801561065857600080fd5b50610673600480360381019061066e919061400b565b61163e565b60405161068091906140ae565b60405180910390f35b34801561069557600080fd5b5061069e611687565b005b3480156106ac57600080fd5b506106c760048036038101906106c29190614232565b611805565b005b3480156106d557600080fd5b506106de6119c5565b6040516106eb9190613dde565b60405180910390f35b34801561070057600080fd5b506107096119d4565b6040516107169190613dde565b60405180910390f35b34801561072b57600080fd5b506107346119fd565b6040516107419190613e92565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c9190613f95565b611a8f565b60405161077e9190613ff0565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190613f95565b611b3b565b6040516107bb9190613ff0565b60405180910390f35b3480156107d057600080fd5b506107d9611b5a565b6040516107e99493929190614272565b60405180910390f35b3480156107fe57600080fd5b506108196004803603810190610814919061400b565b611b78565b005b34801561082757600080fd5b50610830611c68565b60405161083d919061417d565b60405180910390f35b34801561085257600080fd5b5061086d600480360381019061086891906142b7565b611c8e565b005b34801561087b57600080fd5b506108966004803603810190610891919061400b565b611d77565b005b3480156108a457600080fd5b506108bf60048036038101906108ba919061400b565b611e67565b6040516108cc9190613ff0565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906142e4565b611e87565b60405161090991906140ae565b60405180910390f35b34801561091e57600080fd5b50610927611f0e565b005b34801561093557600080fd5b5061093e611ffa565b60405161094b91906140ae565b60405180910390f35b34801561096057600080fd5b50610969612000565b604051610978939291906141cf565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190614324565b612018565b005b3480156109b657600080fd5b506109d160048036038101906109cc919061400b565b61213a565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190614038565b61258c565b005b61dead81565b6060600c8054610a11906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d906143a6565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ace610ac7612665565b848461266d565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b36612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614424565b60405180910390fd5b6103e881838587610bd49190614473565b610bde9190614473565b610be89190614473565b14610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90614515565b60405180910390fd5b8360146000018190555082601460020181905550816014600301819055508060146001018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d995781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190614535565b925050819055505b610da4848484612838565b90509392505050565b610db5612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990614424565b60405180910390fd5b60008183601854610e539190614569565b610e5d91906145f2565b905061012c601854610e6f91906145f2565b811015610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890614695565b60405180910390fd5b80602381905550505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b6000610f8e610ef9612665565b848460046000610f07612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f899190614473565b61266d565b6001905092915050565b600e8060000154908060010154908060020154905083565b610fb8612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90614424565b60405180910390fd5b600081836018546110569190614569565b61106091906145f2565b905061012c60185461107291906145f2565b8110156110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90614695565b60405180910390fd5b80602081905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b611101612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614727565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690614727565b60405180910390fd5b61129a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061154e565b6112a581600161154e565b6112ce60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061139a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b11156113f5576113f360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113ee60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163e565b612838565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611547827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aba565b9050919050565b611556612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90614424565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61168f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390614424565b60405180910390fd5b61174760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061154e565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61180d612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614424565b60405180910390fd5b600015158115151415611904576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119c1565b6000600354146119615762093a80600354426119209190614535565b11611960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195790614793565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b60006119cf6119d4565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611a0c906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a38906143a6565b8015611a855780601f10611a5a57610100808354040283529160200191611a85565b820191906000526020600020905b815481529060010190602001808311611a6857829003601f168201915b5050505050905090565b6000611b31611a9c612665565b848460046000611aaa612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2c9190614535565b61266d565b6001905092915050565b6000611b4f611b48612665565b8484612838565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611b80612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490614424565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c96612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614424565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d6c9190613ff0565b60405180910390a150565b611d7f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614424565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f16612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9a90614424565b60405180910390fd5b600060275414611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906147ff565b60405180910390fd5b60016027819055506000602b81905550565b602c5481565b60118060000154908060010154908060020154905083565b612020612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490614424565b60405180910390fd5b60116000015483111580156120c757506011600101548211155b80156120d857506011600201548111155b612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e9061486b565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b612142612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690614424565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224591906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d091906148a0565b6040518363ffffffff1660e01b81526004016122ed9291906148cd565b602060405180830381865afa15801561230a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232e91906148a0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612504578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d491906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f91906148a0565b6040518363ffffffff1660e01b815260040161247c9291906148cd565b6020604051808303816000875af115801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf91906148a0565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612546565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612594612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261890614424565b60405180910390fd5b82846018546126309190614569565b61263a91906145f2565b602481905550808260185461264f9190614569565b61265991906145f2565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d490614942565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490614942565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161282b91906140ae565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a0906149ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906149ae565b60405180910390fd5b6000821161295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614a1a565b60405180910390fd5b6129668484612d6f565b15612bf657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bf557600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afc57602054821115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614a86565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf45760235482612ba88561163e565b612bb29190614473565b1115612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90614af2565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ca757600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d5957601d60149054906101000a900460ff16158015612d225750601d60159054906101000a900460ff165b15612d58576000612d323061163e565b90506024548110612d56576025548110612d4c5760255490505b612d5581612f46565b5b505b5b612d6585858584613235565b9150509392505050565b6000612d796119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de75750612db76119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ecd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000601460030154601460020154601460000154612f7f9190614473565b612f899190614473565b1415612f9457613217565b60006002601460030154601460020154601460000154612fb49190614473565b612fbe9190614473565b60146000015484612fcf9190614569565b612fd991906145f2565b612fe391906145f2565b905060008183612ff39190614535565b9050612ffe81613598565b6000479050600060026014600301546014600201546014600001546130239190614473565b61302d9190614473565b6014600001548461303e9190614569565b61304891906145f2565b61305291906145f2565b90506000808511156130a45761306885836137ae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161309b939291906141cf565b60405180910390a15b600085876130b29190614535565b111561321157600047905060006014600301546014600201546130d59190614473565b601460020154836130e69190614569565b6130f091906145f2565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161313890614b43565b60006040518083038185875af1925050503d8060008114613175576040519150601f19603f3d011682016040523d82523d6000602084013e61317a565b606091505b505080935050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131c690614b43565b60006040518083038185875af1925050503d8060008114613203576040519150601f19603f3d011682016040523d82523d6000602084013e613208565b606091505b50508093505050505b50505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff161561345f5761325585610ad8565b80613265575061326484610ad8565b5b156132a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329c90614ba4565b60405180910390fd5b602660019054906101000a900460ff1661332b576132c38585613881565b602660019054906101000a900460ff161580156132e657506132e58585612d6f565b5b15613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90614c36565b60405180910390fd5b61345e565b60006028541180156133865750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561339857506133978585612d6f565b5b1561345d57602b54602854436133ae9190614535565b101561345c576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061341f90614c56565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516134539190613dde565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ae9190614535565b925050819055506000826134c257836134ce565b6134cd868686613a2a565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461351f9190614473565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358391906140ae565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156135b5576135b4614c9f565b5b6040519080825280602002602001820160405280156135e35781602001602082028036833780820191505090505b50905030816000815181106135fb576135fa614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c691906148a0565b816001815181106136da576136d9614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613778959493929190614df6565b600060405180830381600087803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190614e71565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a9190614ee7565b5050505050565b602660019054906101000a900460ff16156138d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c890614fac565b60405180910390fd5b6138db8282612d6f565b1580156139355750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613a26576000602b54146139505743602881905550613958565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613a1d9190613ff0565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a9057600e600101549050613afd565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613af357600e600001549050613afc565b600e6002015490505b5b613b078585612d6f565b15613b2b5760006027541480613b205750600160275414155b15613b2a57600080fd5b5b6000612710601460030154601460020154601460000154601460010154613b529190614473565b613b5c9190614473565b613b669190614473565b6014600101548487613b789190614569565b613b829190614569565b613b8c91906145f2565b613b9691906145f2565b90506000816127108487613baa9190614569565b613bb491906145f2565b613bbe9190614535565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c319190614473565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c879190614473565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d0d91906140ae565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d7291906140ae565b60405180910390a3818186613d879190614535565b613d919190614535565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc882613d9d565b9050919050565b613dd881613dbd565b82525050565b6000602082019050613df36000830184613dcf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e33578082015181840152602081019050613e18565b83811115613e42576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6482613df9565b613e6e8185613e04565b9350613e7e818560208601613e15565b613e8781613e48565b840191505092915050565b60006020820190508181036000830152613eac8184613e59565b905092915050565b6000819050919050565b6000613ed9613ed4613ecf84613d9d565b613eb4565b613d9d565b9050919050565b6000613eeb82613ebe565b9050919050565b6000613efd82613ee0565b9050919050565b613f0d81613ef2565b82525050565b6000602082019050613f286000830184613f04565b92915050565b600080fd5b613f3c81613dbd565b8114613f4757600080fd5b50565b600081359050613f5981613f33565b92915050565b6000819050919050565b613f7281613f5f565b8114613f7d57600080fd5b50565b600081359050613f8f81613f69565b92915050565b60008060408385031215613fac57613fab613f2e565b5b6000613fba85828601613f4a565b9250506020613fcb85828601613f80565b9150509250929050565b60008115159050919050565b613fea81613fd5565b82525050565b60006020820190506140056000830184613fe1565b92915050565b60006020828403121561402157614020613f2e565b5b600061402f84828501613f4a565b91505092915050565b6000806000806080858703121561405257614051613f2e565b5b600061406087828801613f80565b945050602061407187828801613f80565b935050604061408287828801613f80565b925050606061409387828801613f80565b91505092959194509250565b6140a881613f5f565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000806000606084860312156140e2576140e1613f2e565b5b60006140f086828701613f4a565b935050602061410186828701613f4a565b925050604061411286828701613f80565b9150509250925092565b6000806040838503121561413357614132613f2e565b5b600061414185828601613f80565b925050602061415285828601613f80565b9150509250929050565b600061416782613d9d565b9050919050565b6141778161415c565b82525050565b6000602082019050614192600083018461416e565b92915050565b600060ff82169050919050565b6141ae81614198565b82525050565b60006020820190506141c960008301846141a5565b92915050565b60006060820190506141e4600083018661409f565b6141f1602083018561409f565b6141fe604083018461409f565b949350505050565b61420f81613fd5565b811461421a57600080fd5b50565b60008135905061422c81614206565b92915050565b6000806040838503121561424957614248613f2e565b5b600061425785828601613f4a565b92505060206142688582860161421d565b9150509250929050565b6000608082019050614287600083018761409f565b614294602083018661409f565b6142a1604083018561409f565b6142ae606083018461409f565b95945050505050565b6000602082840312156142cd576142cc613f2e565b5b60006142db8482850161421d565b91505092915050565b600080604083850312156142fb576142fa613f2e565b5b600061430985828601613f4a565b925050602061431a85828601613f4a565b9150509250929050565b60008060006060848603121561433d5761433c613f2e565b5b600061434b86828701613f80565b935050602061435c86828701613f80565b925050604061436d86828701613f80565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143be57607f821691505b602082108114156143d2576143d1614377565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061440e601083613e04565b9150614419826143d8565b602082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061447e82613f5f565b915061448983613f5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144be576144bd614444565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b60006144ff600383613e04565b915061450a826144c9565b602082019050919050565b6000602082019050818103600083015261452e816144f2565b9050919050565b600061454082613f5f565b915061454b83613f5f565b92508282101561455e5761455d614444565b5b828203905092915050565b600061457482613f5f565b915061457f83613f5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145b8576145b7614444565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145fd82613f5f565b915061460883613f5f565b925082614618576146176145c3565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b600061467f602583613e04565b915061468a82614623565b604082019050919050565b600060208201905081810360008301526146ae81614672565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000614711603d83613e04565b915061471c826146b5565b604082019050919050565b6000602082019050818103600083015261474081614704565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b600061477d601283613e04565b915061478882614747565b602082019050919050565b600060208201905081810360008301526147ac81614770565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b60006147e9600683613e04565b91506147f4826147b3565b602082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614855601783613e04565b91506148608261481f565b602082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b60008151905061489a81613f33565b92915050565b6000602082840312156148b6576148b5613f2e565b5b60006148c48482850161488b565b91505092915050565b60006040820190506148e26000830185613dcf565b6148ef6020830184613dcf565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600061492c601383613e04565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614998601483613e04565b91506149a382614962565b602082019050919050565b600060208201905081810360008301526149c78161498b565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614a04600883613e04565b9150614a0f826149ce565b602082019050919050565b60006020820190508181036000830152614a33816149f7565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614a70601883613e04565b9150614a7b82614a3a565b602082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614adc601a83613e04565b9150614ae782614aa6565b602082019050919050565b60006020820190508181036000830152614b0b81614acf565b9050919050565b600081905092915050565b50565b6000614b2d600083614b12565b9150614b3882614b1d565b600082019050919050565b6000614b4e82614b20565b9150819050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614b8e601083613e04565b9150614b9982614b58565b602082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614c20602583613e04565b9150614c2b82614bc4565b604082019050919050565b60006020820190508181036000830152614c4f81614c13565b9050919050565b6000614c6182613f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9457614c93614444565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614d22614d1d614d1884614cfd565b613eb4565b613f5f565b9050919050565b614d3281614d07565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d6d81613dbd565b82525050565b6000614d7f8383614d64565b60208301905092915050565b6000602082019050919050565b6000614da382614d38565b614dad8185614d43565b9350614db883614d54565b8060005b83811015614de9578151614dd08882614d73565b9750614ddb83614d8b565b925050600181019050614dbc565b5085935050505092915050565b600060a082019050614e0b600083018861409f565b614e186020830187614d29565b8181036040830152614e2a8186614d98565b9050614e396060830185613dcf565b614e46608083018461409f565b9695505050505050565b6000614e5b82613ee0565b9050919050565b614e6b81614e50565b82525050565b600060c082019050614e866000830189613dcf565b614e93602083018861409f565b614ea06040830187614d29565b614ead6060830186614d29565b614eba6080830185614e62565b614ec760a083018461409f565b979650505050505050565b600081519050614ee181613f69565b92915050565b600080600060608486031215614f0057614eff613f2e565b5b6000614f0e86828701614ed2565b9350506020614f1f86828701614ed2565b9250506040614f3086828701614ed2565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614f96602383613e04565b9150614fa182614f3a565b604082019050919050565b60006020820190508181036000830152614fc581614f89565b905091905056fea264697066735822122078af3da82dde787388084e8e123b0a7070010853d37872cd861e9cb8b784028464736f6c634300080b0033

Deployed Bytecode Sourcemap

3766:19785:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5780:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10831:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5593:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11444:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14358:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14802:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10566:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12058:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15901:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5866:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10655:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12372:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4722:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15641:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5635:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6178:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9352:652;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13755:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6739:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11930:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13888:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11144:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10012:195;;;;;;;;;;;;;:::i;:::-;;13337:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10917:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9265:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10741:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12595:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11269:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5220:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14191:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5994:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16712:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14032:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4228:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11003:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14472:148;;;;;;;;;;;;;:::i;:::-;;7007:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4944:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15236:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12828:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16166:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5780:73;5811:42;5780:73;:::o;10831:80::-;10879:13;10903:5;10896:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10831:80;:::o;5593:35::-;;;;;;;;;;;;;:::o;11444:161::-;11519:4;11536:39;11545:12;:10;:12::i;:::-;11559:7;11568:6;11536:8;:39::i;:::-;11593:4;11586:11;;11444:161;;;;:::o;14358:106::-;14414:4;14438:9;:18;14448:7;14438:18;;;;;;;;;;;;;;;;;;;;;;;;;14431:25;;14358:106;;;:::o;14802:426::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14989:4:::1;14975:9;14961:11;14946:12;14933:10;:25;;;;:::i;:::-;:39;;;;:::i;:::-;:51;;;;:::i;:::-;14932:61;14922:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15090:10;15071:6;:16;;:29;;;;15132:12;15111:6;:18;;:33;;;;15175:11;15155:6;:17;;:31;;;;15215:9;15197:6;:15;;:27;;;;14802:426:::0;;;;:::o;10566:83::-;10621:7;10639;;10632:14;;10566:83;:::o;12058:306::-;12158:4;12214:17;12179:11;:19;12191:6;12179:19;;;;;;;;;;;;;;;:31;12199:10;12179:31;;;;;;;;;;;;;;;;:52;12175:126;;12283:6;12248:11;:19;12260:6;12248:19;;;;;;;;;;;;;;;:31;12268:10;12248:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12175:126;12320:36;12330:6;12338:9;12349:6;12320:9;:36::i;:::-;12313:43;;12058:306;;;;;:::o;15901:257::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15985:13:::1;16023:7;16012;16002;;:17;;;;:::i;:::-;16001:29;;;;:::i;:::-;15985:45;;16069:3;16059:7;;:13;;;;:::i;:::-;16049:5;:24;;16041:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16143:5;16126:14;:22;;;;15974:184;15901:257:::0;;:::o;5866:92::-;;;;;;;;;;;;;:::o;10655:80::-;10707:5;5484:1;10716:16;;10655:80;:::o;12372:215::-;12460:4;12477:80;12486:12;:10;:12::i;:::-;12500:7;12546:10;12509:11;:25;12521:12;:10;:12::i;:::-;12509:25;;;;;;;;;;;;;;;:34;12535:7;12509:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12477:8;:80::i;:::-;12575:4;12568:11;;12372:215;;;;:::o;4722:78::-;;;;;;;;;;;;;;;;;;;:::o;15641:252::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15724:13:::1;15762:7;15751;15741;;:17;;;;:::i;:::-;15740:29;;;;:::i;:::-;15724:45;;15808:3;15798:7;;:13;;;;:::i;:::-;15788:5;:24;;15780:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15880:5;15865:12;:20;;;;15713:180;15641:252:::0;;:::o;5635:21::-;;;;;;;;;;;;;:::o;6178:41::-;;;;;;;;;;;;;:::o;9352:652::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9453:1:::1;9433:22;;:8;:22;;;;9425:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;5811:42;9540:16;;:8;:16;;;;9532:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9633:34;9653:6;::::0;::::1;;;;;;;;9661:5;9633:19;:34::i;:::-;9678:35;9698:8;9708:4;9678:19;:35::i;:::-;9768:17;9778:6;::::0;::::1;;;;;;;;9768:9;:17::i;:::-;9736:11;:19;9748:6:::0;::::1;;;;;;;;;;9736:19;;;;;;;;;;;;;;;:29;9756:8;9736:29;;;;;;;;;;;;;;;:49;;;;9819:1;9799:17;9809:6;::::0;::::1;;;;;;;;9799:9;:17::i;:::-;:21;9796:99;;;9837:46;9847:6;::::0;::::1;;;;;;;;9855:8;9865:17;9875:6;::::0;::::1;;;;;;;;9865:9;:17::i;:::-;9837:9;:46::i;:::-;;9796:99;9924:8;9915:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9977:8;9948:38;;9969:6;::::0;::::1;;;;;;;;9948:38;;;;;;;;;;;;9352:652:::0;:::o;13755:125::-;13820:4;13844:19;:28;13864:7;13844:28;;;;;;;;;;;;;;;;;;;;;;;;;13837:35;;13755:125;;;:::o;6739:36::-;;;;;;;;;;;;;:::o;11930:120::-;11983:4;12007:35;12015:7;12024:17;12007:7;:35::i;:::-;12000:42;;11930:120;;;:::o;13888:134::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14007:7:::1;13976:19;:28;13996:7;13976:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13888:134:::0;;:::o;11144:117::-;11210:7;11237;:16;11245:7;11237:16;;;;;;;;;;;;;;;;11230:23;;11144:117;;;:::o;10012:195::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:34:::1;10099:6;::::0;::::1;;;;;;;;10107:5;10079:19;:34::i;:::-;10141:1;10124:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10196:1;10159:40;;10180:6;::::0;::::1;;;;;;;;10159:40;;;;;;;;;;;;10012:195::o:0;13337:410::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13429:5:::1;13418:16;;:7;:16;;;13414:326;;;13467:5;13451:7;:13;13459:4;13451:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13414:326;;;13530:1;13509:17;;:22;13505:139;;13598:7;13578:17;;13560:15;:35;;;;:::i;:::-;:45;13552:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:139;13674:4;13658:7;:13;13666:4;13658:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13713:15;13693:17;:35;;;;13414:326;13337:410:::0;;:::o;10917:80::-;10969:7;10987;:5;:7::i;:::-;10980:14;;10917:80;:::o;9265:79::-;9303:7;9330:6;;;;;;;;;;;9323:13;;9265:79;:::o;10741:84::-;10791:13;10815:7;10808:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10741:84;:::o;12595:225::-;12688:4;12705:85;12714:12;:10;:12::i;:::-;12728:7;12774:15;12737:11;:25;12749:12;:10;:12::i;:::-;12737:25;;;;;;;;;;;;;;;:34;12763:7;12737:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;12705:8;:85::i;:::-;12808:4;12801:11;;12595:225;;;;:::o;11269:167::-;11347:4;11364:42;11374:12;:10;:12::i;:::-;11388:9;11399:6;11364:9;:42::i;:::-;;11424:4;11417:11;;11269:167;;;;:::o;5220:115::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14191:159::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14337:5:::1;14288:30;:46;14319:14;14288:46;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;14191:159:::0;:::o;5994:91::-;;;;;;;;;;;;;:::o;16712:171::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16813:8:::1;16789:21;;:32;;;;;;;;;;;;;;;;;;16837:38;16866:8;16837:38;;;;;;:::i;:::-;;;;;;;;16712:171:::0;:::o;14032:151::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14171:4:::1;14122:30;:46;14153:14;14122:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14032:151:::0;:::o;4228:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;11003:133::-;11087:7;11105:11;:19;11117:6;11105:19;;;;;;;;;;;;;;;:28;11125:7;11105:28;;;;;;;;;;;;;;;;11098:35;;11003:133;;;;:::o;14472:148::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14544:1:::1;14527:13;;:18;14518:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14583:1;14567:13;:17;;;;14611:1;14595:13;:17;;;;14472:148::o:0;7007:32::-;;;;:::o;4944:83::-;;;;;;;;;;;;;;;;;;;:::o;15236:397::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15351:7:::1;:14;;;15340:7;:25;;:73;;;;;15398:7;:15;;;15386:8;:27;;15340:73;:129;;;;;15450:7;:19;;;15434:12;:35;;15340:129;15332:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;15540:7;15526:4;:11;;:21;;;;15574:8;15559:4;:12;;:23;;;;15613:12;15594:4;:16;;:31;;;;15236:397:::0;;;:::o;12828:501::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12899:29:::1;12950:9;12899:61;;12971:16;13008:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12990:47;;;13046:4;13053:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12990:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12971:100;;13106:1;13086:22;;:8;:22;;;13082:207;;;13152:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13134:50;;;13193:4;13200:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13134:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13125:6;;:93;;;;;;;;;;;;;;;;;;13082:207;;;13269:8;13260:6;;:17;;;;;;;;;;;;;;;;;;13082:207;13311:10;13299:9;;:22;;;;;;;;;;;;;;;;;;12888:441;;12828:501:::0;:::o;16166:289::-;7616:12;:10;:12::i;:::-;7606:22;;:6;;;;;;;;;;:22;;;7598:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16366:16:::1;16346;16336:7;;:26;;;;:::i;:::-;16335:47;;;;:::i;:::-;16319:13;:63;;;;16434:13;16417;16407:7;;:23;;;;:::i;:::-;16406:41;;;;:::i;:::-;16393:10;:54;;;;16166:289:::0;;;;:::o;230:107::-;275:15;318:10;303:26;;230:107;:::o;11613:309::-;11725:1;11707:20;;:6;:20;;;;11699:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11789:1;11770:21;;:7;:21;;;;11762:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11859:6;11828:11;:19;11840:6;11828:19;;;;;;;;;;;;;;;:28;11848:7;11828:28;;;;;;;;;;;;;;;:37;;;;11898:7;11881:33;;11890:6;11881:33;;;11907:6;11881:33;;;;;;:::i;:::-;;;;;;;;11613:309;;;:::o;17222:1433::-;17301:4;17342:1;17326:18;;:4;:18;;;;17318:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17402:1;17388:16;;:2;:16;;;;17380:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:1;17448:6;:10;17440:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;17485:20;17496:4;17502:2;17485:10;:20::i;:::-;17482:496;;;17529:30;:36;17560:4;17529:36;;;;;;;;;;;;;;;;;;;;;;;;;:74;;;;17569:30;:34;17600:2;17569:34;;;;;;;;;;;;;;;;;;;;;;;;;17529:74;17524:429;;17628:7;:13;17636:4;17628:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;17645:7;:11;17653:2;17645:11;;;;;;;;;;;;;;;;;;;;;;;;;17628:28;17625:130;;;17694:12;;17684:6;:22;;17676:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17625:130;5707:42;17776:20;;:2;:20;;;;:36;;;;;17801:7;:11;17809:2;17801:11;;;;;;;;;;;;;;;;;;;;;;;;;17800:12;17776:36;17773:163;;;17871:14;;17861:6;17845:13;17855:2;17845:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17837:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17773:163;17524:429;17482:496;17988:12;18003:4;17988:19;;18021;:25;18041:4;18021:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18050:19;:23;18070:2;18050:23;;;;;;;;;;;;;;;;;;;;;;;;;18021:52;18018:98;;;18099:5;18089:15;;18018:98;18132:7;:11;18140:2;18132:11;;;;;;;;;;;;;;;;;;;;;;;;;18128:457;;;18165:16;;;;;;;;;;;18164:17;:59;;;;;18202:21;;;;;;;;;;;18164:59;18160:408;;;18258:28;18289:24;18307:4;18289:9;:24::i;:::-;18258:55;;18360:13;;18336:20;:37;18332:221;;18425:10;;18401:20;:34;18398:77;;18462:10;;18439:33;;18398:77;18497:36;18512:20;18497:14;:36::i;:::-;18332:221;18239:329;18160:408;18128:457;18603:44;18621:4;18627:2;18631:6;18639:7;18603:17;:44::i;:::-;18596:51;;;17222:1433;;;;;:::o;16891:323::-;16959:4;16991:7;:5;:7::i;:::-;16983:15;;:4;:15;;;;:45;;;;;17021:7;:5;:7::i;:::-;17015:13;;:2;:13;;;;16983:45;:84;;;;;17046:17;:21;17064:2;17046:21;;;;;;;;;;;;;;;;;;;;;;;;;17045:22;16983:84;:125;;;;;17085:17;:23;17103:4;17085:23;;;;;;;;;;;;;;;;;;;;;;;;;17084:24;16983:125;:152;;;;;5811:42;17125:10;;:2;:10;;;;16983:152;:185;;;;;17166:1;17152:16;;:2;:16;;;;16983:185;:223;;;;;17201:4;17185:21;;:4;:21;;;;16983:223;16976:230;;16891:323;;;;:::o;18663:1308::-;7499:4;7480:16;;:23;;;;;;;;;;;;;;;;;;18813:1:::1;18792:6;:17;;;18771:6;:18;;;18752:6;:16;;;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:62;18748:88;;;18829:7;;18748:88;18846:17;18975:1;18952:6;:17;;;18931:6;:18;;;18912:6;:16;;;:37;;;;:::i;:::-;:57;;;;:::i;:::-;18891:6;:16;;;18868:20;:39;;;;:::i;:::-;18867:103;;;;:::i;:::-;18866:110;;;;:::i;:::-;18846:130;;18989:20;19035:9;19012:20;:32;;;;:::i;:::-;18989:55;;19055:30;19072:12;19055:16;:30::i;:::-;19098:22;19123:21;19098:46;;19155:24;19285:1;19262:6;:17;;;19241:6;:18;;;19222:6;:16;;;:37;;;;:::i;:::-;:57;;;;:::i;:::-;19201:6;:16;;;19184:14;:33;;;;:::i;:::-;19183:97;;;;:::i;:::-;19182:104;;;;:::i;:::-;19155:131;;19299:12;19340:1:::0;19328:9:::1;:13;19324:161;;;19358:41;19371:9;19382:16;19358:12;:41::i;:::-;19419:54;19434:9;19445:16;19463:9;19419:54;;;;;;;;:::i;:::-;;;;;;;;19324:161;19534:1;19522:9;19499:20;:32;;;;:::i;:::-;:36;19495:469;;;19552:11;19566:21;19552:35;;19602:24;19684:6;:17;;;19663:6;:18;;;:38;;;;:::i;:::-;19640:6;:18;;;19631:6;:27;;;;:::i;:::-;19630:72;;;;:::i;:::-;19602:101;;19741:15;;;;;;;;;;;19733:29;;19770:19;19733:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19720:74;;;;;19830:14;;;;;;;;;;;19822:28;;19858:21;19822:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19809:75;;;;;19537:427;;19495:469;18737:1234;;;;;7514:1;7545:5:::0;7526:16;;:24;;;;;;;;;;;;;;;;;;18663:1308;:::o;21387:1181::-;21487:4;21508:16;;;;;;;;;;;21504:819;;;21544:14;21553:4;21544:8;:14::i;:::-;:30;;;;21562:12;21571:2;21562:8;:12::i;:::-;21544:30;21540:97;;;21595:26;;;;;;;;;;:::i;:::-;;;;;;;;21540:97;21658:16;;;;;;;;;;;21653:659;;21695:28;21714:4;21720:2;21695:18;:28::i;:::-;21747:16;;;;;;;;;;;21746:17;:41;;;;;21767:20;21778:4;21784:2;21767:10;:20::i;:::-;21746:41;21742:137;;;21812:47;;;;;;;;;;:::i;:::-;;;;;;;;21742:137;21653:659;;;21938:1;21923:12;;:16;:55;;;;;21965:7;:13;21973:4;21965:13;;;;;;;;;;;;;;;;;;;;;;;;;21923:55;:101;;;;;22004:20;22015:4;22021:2;22004:10;:20::i;:::-;21923:101;21919:378;;;22101:13;;22086:12;;22071;:27;;;;:::i;:::-;:43;22067:211;;;22159:4;22143:9;:13;22153:2;22143:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;22190:13;;:16;;;;;;;;;:::i;:::-;;;;;;22238;22251:2;22238:16;;;;;;:::i;:::-;;;;;;;;22067:211;21919:378;21653:659;21504:819;22352:6;22335:7;:13;22343:4;22335:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;22369:22;22395:7;22394:48;;22436:6;22394:48;;;22406:27;22416:4;22422:2;22426:6;22406:9;:27::i;:::-;22394:48;22369:73;;22472:14;22457:7;:11;22465:2;22457:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22519:2;22504:34;;22513:4;22504:34;;;22523:14;22504:34;;;;;;:::i;:::-;;;;;;;;22556:4;22549:11;;;21387:1181;;;;;;:::o;19979:417::-;20046:21;20084:1;20070:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20046:40;;20115:4;20097;20102:1;20097:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20141:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20131:4;20136:1;20131:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20170:9;;;;;;;;;;;:60;;;20245:11;20271:1;20315:4;20342;20362:15;20170:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20035:361;19979:417;:::o;20404:343::-;20485:9;;;;;;;;;;;:25;;;20518:9;20551:4;20571:11;20597:1;20640;20683:15;;;;;;;;;;;20713;20485:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20404:343;;:::o;20755:624::-;20837:16;;;;;;;;;;;20836:17;20828:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20909:20;20920:4;20926:2;20909:10;:20::i;:::-;20908:21;:37;;;;;20939:6;;;;;;;;;;;20933:12;;:2;:12;;;20908:37;20904:468;;;20983:1;20966:13;;:18;20962:172;;21020:12;21005;:27;;;;20962:172;;;21106:12;21091;:27;;;;20962:172;21174:4;21148:17;:23;21166:4;21148:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21212:4;21193:16;;:23;;;;;;;;;;;;;;;;;;21246:15;21231:12;:30;;;;21302:4;21278:21;;:28;;;;;;;;;;;;;;;;;;21326:34;21355:4;21326:34;;;;;;:::i;:::-;;;;;;;;20904:468;20755:624;;:::o;22576:972::-;22655:7;22675:18;22716:6;;;;;;;;;;;22710:12;;:2;:12;;;22706:160;;;22738:4;:12;;;22725:25;;22706:160;;;22781:6;;;;;;;;;;;22773:14;;:4;:14;;;22769:97;;;22803:4;:11;;;22790:24;;22769:97;;;22848:4;:16;;;22835:29;;22769:97;22706:160;22882:20;22893:4;22899:2;22882:10;:20::i;:::-;22878:142;;;22939:1;22922:13;;:18;:42;;;;22962:1;22944:13;;:20;;22922:42;22918:91;;;22985:8;;;22918:91;22878:142;23030:19;5388:5;23153:6;:17;;;23132:6;:18;;;23113:6;:16;;;23095:6;:15;;;:34;;;;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;23075:6;:15;;;23062:10;23053:6;:19;;;;:::i;:::-;:37;;;;:::i;:::-;23052:120;;;;:::i;:::-;:139;;;;:::i;:::-;23030:161;;23202:17;23265:11;5388:5;23232:10;23223:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;23222:54;;;;:::i;:::-;23202:74;;23315:11;23287:7;:24;23295:15;;;;;;;;;;;23287:24;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;23364:9;23337:7;:22;23353:4;23337:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;23405:15;;;;;;;;;;;23390:44;;23399:4;23390:44;;;23422:11;23390:44;;;;;;:::i;:::-;;;;;;;;23473:4;23450:40;;23459:4;23450:40;;;23480:9;23450:40;;;;;;:::i;:::-;;;;;;;;23529:11;23517:9;23508:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;23501:39;;;;;22576:972;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:60::-;2011:3;2032:5;2025:12;;1983:60;;;:::o;2049:142::-;2099:9;2132:53;2150:34;2159:24;2177:5;2159:24;:::i;:::-;2150:34;:::i;:::-;2132:53;:::i;:::-;2119:66;;2049:142;;;:::o;2197:126::-;2247:9;2280:37;2311:5;2280:37;:::i;:::-;2267:50;;2197:126;;;:::o;2329:152::-;2405:9;2438:37;2469:5;2438:37;:::i;:::-;2425:50;;2329:152;;;:::o;2487:183::-;2600:63;2657:5;2600:63;:::i;:::-;2595:3;2588:76;2487:183;;:::o;2676:274::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2846:97;2940:1;2929:9;2925:17;2916:6;2846:97;:::i;:::-;2676:274;;;;:::o;3037:117::-;3146:1;3143;3136:12;3283:122;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:77::-;3593:7;3622:5;3611:16;;3556:77;;;:::o;3639:122::-;3712:24;3730:5;3712:24;:::i;:::-;3705:5;3702:35;3692:63;;3751:1;3748;3741:12;3692:63;3639:122;:::o;3767:139::-;3813:5;3851:6;3838:20;3829:29;;3867:33;3894:5;3867:33;:::i;:::-;3767:139;;;;:::o;3912:474::-;3980:6;3988;4037:2;4025:9;4016:7;4012:23;4008:32;4005:119;;;4043:79;;:::i;:::-;4005:119;4163:1;4188:53;4233:7;4224:6;4213:9;4209:22;4188:53;:::i;:::-;4178:63;;4134:117;4290:2;4316:53;4361:7;4352:6;4341:9;4337:22;4316:53;:::i;:::-;4306:63;;4261:118;3912:474;;;;;:::o;4392:90::-;4426:7;4469:5;4462:13;4455:21;4444:32;;4392:90;;;:::o;4488:109::-;4569:21;4584:5;4569:21;:::i;:::-;4564:3;4557:34;4488:109;;:::o;4603:210::-;4690:4;4728:2;4717:9;4713:18;4705:26;;4741:65;4803:1;4792:9;4788:17;4779:6;4741:65;:::i;:::-;4603:210;;;;:::o;4819:329::-;4878:6;4927:2;4915:9;4906:7;4902:23;4898:32;4895:119;;;4933:79;;:::i;:::-;4895:119;5053:1;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5024:117;4819:329;;;;:::o;5154:765::-;5240:6;5248;5256;5264;5313:3;5301:9;5292:7;5288:23;5284:33;5281:120;;;5320:79;;:::i;:::-;5281:120;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5567:2;5593:53;5638:7;5629:6;5618:9;5614:22;5593:53;:::i;:::-;5583:63;;5538:118;5695:2;5721:53;5766:7;5757:6;5746:9;5742:22;5721:53;:::i;:::-;5711:63;;5666:118;5823:2;5849:53;5894:7;5885:6;5874:9;5870:22;5849:53;:::i;:::-;5839:63;;5794:118;5154:765;;;;;;;:::o;5925:118::-;6012:24;6030:5;6012:24;:::i;:::-;6007:3;6000:37;5925:118;;:::o;6049:222::-;6142:4;6180:2;6169:9;6165:18;6157:26;;6193:71;6261:1;6250:9;6246:17;6237:6;6193:71;:::i;:::-;6049:222;;;;:::o;6277:619::-;6354:6;6362;6370;6419:2;6407:9;6398:7;6394:23;6390:32;6387:119;;;6425:79;;:::i;:::-;6387:119;6545:1;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6516:117;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6800:2;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6771:118;6277:619;;;;;:::o;6902:474::-;6970:6;6978;7027:2;7015:9;7006:7;7002:23;6998:32;6995:119;;;7033:79;;:::i;:::-;6995:119;7153:1;7178:53;7223:7;7214:6;7203:9;7199:22;7178:53;:::i;:::-;7168:63;;7124:117;7280:2;7306:53;7351:7;7342:6;7331:9;7327:22;7306:53;:::i;:::-;7296:63;;7251:118;6902:474;;;;;:::o;7382:104::-;7427:7;7456:24;7474:5;7456:24;:::i;:::-;7445:35;;7382:104;;;:::o;7492:142::-;7595:32;7621:5;7595:32;:::i;:::-;7590:3;7583:45;7492:142;;:::o;7640:254::-;7749:4;7787:2;7776:9;7772:18;7764:26;;7800:87;7884:1;7873:9;7869:17;7860:6;7800:87;:::i;:::-;7640:254;;;;:::o;7900:86::-;7935:7;7975:4;7968:5;7964:16;7953:27;;7900:86;;;:::o;7992:112::-;8075:22;8091:5;8075:22;:::i;:::-;8070:3;8063:35;7992:112;;:::o;8110:214::-;8199:4;8237:2;8226:9;8222:18;8214:26;;8250:67;8314:1;8303:9;8299:17;8290:6;8250:67;:::i;:::-;8110:214;;;;:::o;8330:442::-;8479:4;8517:2;8506:9;8502:18;8494:26;;8530:71;8598:1;8587:9;8583:17;8574:6;8530:71;:::i;:::-;8611:72;8679:2;8668:9;8664:18;8655:6;8611:72;:::i;:::-;8693;8761:2;8750:9;8746:18;8737:6;8693:72;:::i;:::-;8330:442;;;;;;:::o;8778:116::-;8848:21;8863:5;8848:21;:::i;:::-;8841:5;8838:32;8828:60;;8884:1;8881;8874:12;8828:60;8778:116;:::o;8900:133::-;8943:5;8981:6;8968:20;8959:29;;8997:30;9021:5;8997:30;:::i;:::-;8900:133;;;;:::o;9039:468::-;9104:6;9112;9161:2;9149:9;9140:7;9136:23;9132:32;9129:119;;;9167:79;;:::i;:::-;9129:119;9287:1;9312:53;9357:7;9348:6;9337:9;9333:22;9312:53;:::i;:::-;9302:63;;9258:117;9414:2;9440:50;9482:7;9473:6;9462:9;9458:22;9440:50;:::i;:::-;9430:60;;9385:115;9039:468;;;;;:::o;9513:553::-;9690:4;9728:3;9717:9;9713:19;9705:27;;9742:71;9810:1;9799:9;9795:17;9786:6;9742:71;:::i;:::-;9823:72;9891:2;9880:9;9876:18;9867:6;9823:72;:::i;:::-;9905;9973:2;9962:9;9958:18;9949:6;9905:72;:::i;:::-;9987;10055:2;10044:9;10040:18;10031:6;9987:72;:::i;:::-;9513:553;;;;;;;:::o;10072:323::-;10128:6;10177:2;10165:9;10156:7;10152:23;10148:32;10145:119;;;10183:79;;:::i;:::-;10145:119;10303:1;10328:50;10370:7;10361:6;10350:9;10346:22;10328:50;:::i;:::-;10318:60;;10274:114;10072:323;;;;:::o;10401:474::-;10469:6;10477;10526:2;10514:9;10505:7;10501:23;10497:32;10494:119;;;10532:79;;:::i;:::-;10494:119;10652:1;10677:53;10722:7;10713:6;10702:9;10698:22;10677:53;:::i;:::-;10667:63;;10623:117;10779:2;10805:53;10850:7;10841:6;10830:9;10826:22;10805:53;:::i;:::-;10795:63;;10750:118;10401:474;;;;;:::o;10881:619::-;10958:6;10966;10974;11023:2;11011:9;11002:7;10998:23;10994:32;10991:119;;;11029:79;;:::i;:::-;10991:119;11149:1;11174:53;11219:7;11210:6;11199:9;11195:22;11174:53;:::i;:::-;11164:63;;11120:117;11276:2;11302:53;11347:7;11338:6;11327:9;11323:22;11302:53;:::i;:::-;11292:63;;11247:118;11404:2;11430:53;11475:7;11466:6;11455:9;11451:22;11430:53;:::i;:::-;11420:63;;11375:118;10881:619;;;;;:::o;11506:180::-;11554:77;11551:1;11544:88;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11692:320;11736:6;11773:1;11767:4;11763:12;11753:22;;11820:1;11814:4;11810:12;11841:18;11831:81;;11897:4;11889:6;11885:17;11875:27;;11831:81;11959:2;11951:6;11948:14;11928:18;11925:38;11922:84;;;11978:18;;:::i;:::-;11922:84;11743:269;11692:320;;;:::o;12018:166::-;12158:18;12154:1;12146:6;12142:14;12135:42;12018:166;:::o;12190:366::-;12332:3;12353:67;12417:2;12412:3;12353:67;:::i;:::-;12346:74;;12429:93;12518:3;12429:93;:::i;:::-;12547:2;12542:3;12538:12;12531:19;;12190:366;;;:::o;12562:419::-;12728:4;12766:2;12755:9;12751:18;12743:26;;12815:9;12809:4;12805:20;12801:1;12790:9;12786:17;12779:47;12843:131;12969:4;12843:131;:::i;:::-;12835:139;;12562:419;;;:::o;12987:180::-;13035:77;13032:1;13025:88;13132:4;13129:1;13122:15;13156:4;13153:1;13146:15;13173:305;13213:3;13232:20;13250:1;13232:20;:::i;:::-;13227:25;;13266:20;13284:1;13266:20;:::i;:::-;13261:25;;13420:1;13352:66;13348:74;13345:1;13342:81;13339:107;;;13426:18;;:::i;:::-;13339:107;13470:1;13467;13463:9;13456:16;;13173:305;;;;:::o;13484:153::-;13624:5;13620:1;13612:6;13608:14;13601:29;13484:153;:::o;13643:365::-;13785:3;13806:66;13870:1;13865:3;13806:66;:::i;:::-;13799:73;;13881:93;13970:3;13881:93;:::i;:::-;13999:2;13994:3;13990:12;13983:19;;13643:365;;;:::o;14014:419::-;14180:4;14218:2;14207:9;14203:18;14195:26;;14267:9;14261:4;14257:20;14253:1;14242:9;14238:17;14231:47;14295:131;14421:4;14295:131;:::i;:::-;14287:139;;14014:419;;;:::o;14439:191::-;14479:4;14499:20;14517:1;14499:20;:::i;:::-;14494:25;;14533:20;14551:1;14533:20;:::i;:::-;14528:25;;14572:1;14569;14566:8;14563:34;;;14577:18;;:::i;:::-;14563:34;14622:1;14619;14615:9;14607:17;;14439:191;;;;:::o;14636:348::-;14676:7;14699:20;14717:1;14699:20;:::i;:::-;14694:25;;14733:20;14751:1;14733:20;:::i;:::-;14728:25;;14921:1;14853:66;14849:74;14846:1;14843:81;14838:1;14831:9;14824:17;14820:105;14817:131;;;14928:18;;:::i;:::-;14817:131;14976:1;14973;14969:9;14958:20;;14636:348;;;;:::o;14990:180::-;15038:77;15035:1;15028:88;15135:4;15132:1;15125:15;15159:4;15156:1;15149:15;15176:185;15216:1;15233:20;15251:1;15233:20;:::i;:::-;15228:25;;15267:20;15285:1;15267:20;:::i;:::-;15262:25;;15306:1;15296:35;;15311:18;;:::i;:::-;15296:35;15353:1;15350;15346:9;15341:14;;15176:185;;;;:::o;15367:224::-;15507:34;15503:1;15495:6;15491:14;15484:58;15576:7;15571:2;15563:6;15559:15;15552:32;15367:224;:::o;15597:366::-;15739:3;15760:67;15824:2;15819:3;15760:67;:::i;:::-;15753:74;;15836:93;15925:3;15836:93;:::i;:::-;15954:2;15949:3;15945:12;15938:19;;15597:366;;;:::o;15969:419::-;16135:4;16173:2;16162:9;16158:18;16150:26;;16222:9;16216:4;16212:20;16208:1;16197:9;16193:17;16186:47;16250:131;16376:4;16250:131;:::i;:::-;16242:139;;15969:419;;;:::o;16394:248::-;16534:34;16530:1;16522:6;16518:14;16511:58;16603:31;16598:2;16590:6;16586:15;16579:56;16394:248;:::o;16648:366::-;16790:3;16811:67;16875:2;16870:3;16811:67;:::i;:::-;16804:74;;16887:93;16976:3;16887:93;:::i;:::-;17005:2;17000:3;16996:12;16989:19;;16648:366;;;:::o;17020:419::-;17186:4;17224:2;17213:9;17209:18;17201:26;;17273:9;17267:4;17263:20;17259:1;17248:9;17244:17;17237:47;17301:131;17427:4;17301:131;:::i;:::-;17293:139;;17020:419;;;:::o;17445:168::-;17585:20;17581:1;17573:6;17569:14;17562:44;17445:168;:::o;17619:366::-;17761:3;17782:67;17846:2;17841:3;17782:67;:::i;:::-;17775:74;;17858:93;17947:3;17858:93;:::i;:::-;17976:2;17971:3;17967:12;17960:19;;17619:366;;;:::o;17991:419::-;18157:4;18195:2;18184:9;18180:18;18172:26;;18244:9;18238:4;18234:20;18230:1;18219:9;18215:17;18208:47;18272:131;18398:4;18272:131;:::i;:::-;18264:139;;17991:419;;;:::o;18416:156::-;18556:8;18552:1;18544:6;18540:14;18533:32;18416:156;:::o;18578:365::-;18720:3;18741:66;18805:1;18800:3;18741:66;:::i;:::-;18734:73;;18816:93;18905:3;18816:93;:::i;:::-;18934:2;18929:3;18925:12;18918:19;;18578:365;;;:::o;18949:419::-;19115:4;19153:2;19142:9;19138:18;19130:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19230:131;19356:4;19230:131;:::i;:::-;19222:139;;18949:419;;;:::o;19374:173::-;19514:25;19510:1;19502:6;19498:14;19491:49;19374:173;:::o;19553:366::-;19695:3;19716:67;19780:2;19775:3;19716:67;:::i;:::-;19709:74;;19792:93;19881:3;19792:93;:::i;:::-;19910:2;19905:3;19901:12;19894:19;;19553:366;;;:::o;19925:419::-;20091:4;20129:2;20118:9;20114:18;20106:26;;20178:9;20172:4;20168:20;20164:1;20153:9;20149:17;20142:47;20206:131;20332:4;20206:131;:::i;:::-;20198:139;;19925:419;;;:::o;20350:143::-;20407:5;20438:6;20432:13;20423:22;;20454:33;20481:5;20454:33;:::i;:::-;20350:143;;;;:::o;20499:351::-;20569:6;20618:2;20606:9;20597:7;20593:23;20589:32;20586:119;;;20624:79;;:::i;:::-;20586:119;20744:1;20769:64;20825:7;20816:6;20805:9;20801:22;20769:64;:::i;:::-;20759:74;;20715:128;20499:351;;;;:::o;20856:332::-;20977:4;21015:2;21004:9;21000:18;20992:26;;21028:71;21096:1;21085:9;21081:17;21072:6;21028:71;:::i;:::-;21109:72;21177:2;21166:9;21162:18;21153:6;21109:72;:::i;:::-;20856:332;;;;;:::o;21194:169::-;21334:21;21330:1;21322:6;21318:14;21311:45;21194:169;:::o;21369:366::-;21511:3;21532:67;21596:2;21591:3;21532:67;:::i;:::-;21525:74;;21608:93;21697:3;21608:93;:::i;:::-;21726:2;21721:3;21717:12;21710:19;;21369:366;;;:::o;21741:419::-;21907:4;21945:2;21934:9;21930:18;21922:26;;21994:9;21988:4;21984:20;21980:1;21969:9;21965:17;21958:47;22022:131;22148:4;22022:131;:::i;:::-;22014:139;;21741:419;;;:::o;22166:170::-;22306:22;22302:1;22294:6;22290:14;22283:46;22166:170;:::o;22342:366::-;22484:3;22505:67;22569:2;22564:3;22505:67;:::i;:::-;22498:74;;22581:93;22670:3;22581:93;:::i;:::-;22699:2;22694:3;22690:12;22683:19;;22342:366;;;:::o;22714:419::-;22880:4;22918:2;22907:9;22903:18;22895:26;;22967:9;22961:4;22957:20;22953:1;22942:9;22938:17;22931:47;22995:131;23121:4;22995:131;:::i;:::-;22987:139;;22714:419;;;:::o;23139:158::-;23279:10;23275:1;23267:6;23263:14;23256:34;23139:158;:::o;23303:365::-;23445:3;23466:66;23530:1;23525:3;23466:66;:::i;:::-;23459:73;;23541:93;23630:3;23541:93;:::i;:::-;23659:2;23654:3;23650:12;23643:19;;23303:365;;;:::o;23674:419::-;23840:4;23878:2;23867:9;23863:18;23855:26;;23927:9;23921:4;23917:20;23913:1;23902:9;23898:17;23891:47;23955:131;24081:4;23955:131;:::i;:::-;23947:139;;23674:419;;;:::o;24099:174::-;24239:26;24235:1;24227:6;24223:14;24216:50;24099:174;:::o;24279:366::-;24421:3;24442:67;24506:2;24501:3;24442:67;:::i;:::-;24435:74;;24518:93;24607:3;24518:93;:::i;:::-;24636:2;24631:3;24627:12;24620:19;;24279:366;;;:::o;24651:419::-;24817:4;24855:2;24844:9;24840:18;24832:26;;24904:9;24898:4;24894:20;24890:1;24879:9;24875:17;24868:47;24932:131;25058:4;24932:131;:::i;:::-;24924:139;;24651:419;;;:::o;25076:176::-;25216:28;25212:1;25204:6;25200:14;25193:52;25076:176;:::o;25258:366::-;25400:3;25421:67;25485:2;25480:3;25421:67;:::i;:::-;25414:74;;25497:93;25586:3;25497:93;:::i;:::-;25615:2;25610:3;25606:12;25599:19;;25258:366;;;:::o;25630:419::-;25796:4;25834:2;25823:9;25819:18;25811:26;;25883:9;25877:4;25873:20;25869:1;25858:9;25854:17;25847:47;25911:131;26037:4;25911:131;:::i;:::-;25903:139;;25630:419;;;:::o;26055:147::-;26156:11;26193:3;26178:18;;26055:147;;;;:::o;26208:114::-;;:::o;26328:398::-;26487:3;26508:83;26589:1;26584:3;26508:83;:::i;:::-;26501:90;;26600:93;26689:3;26600:93;:::i;:::-;26718:1;26713:3;26709:11;26702:18;;26328:398;;;:::o;26732:379::-;26916:3;26938:147;27081:3;26938:147;:::i;:::-;26931:154;;27102:3;27095:10;;26732:379;;;:::o;27117:166::-;27257:18;27253:1;27245:6;27241:14;27234:42;27117:166;:::o;27289:366::-;27431:3;27452:67;27516:2;27511:3;27452:67;:::i;:::-;27445:74;;27528:93;27617:3;27528:93;:::i;:::-;27646:2;27641:3;27637:12;27630:19;;27289:366;;;:::o;27661:419::-;27827:4;27865:2;27854:9;27850:18;27842:26;;27914:9;27908:4;27904:20;27900:1;27889:9;27885:17;27878:47;27942:131;28068:4;27942:131;:::i;:::-;27934:139;;27661:419;;;:::o;28086:224::-;28226:34;28222:1;28214:6;28210:14;28203:58;28295:7;28290:2;28282:6;28278:15;28271:32;28086:224;:::o;28316:366::-;28458:3;28479:67;28543:2;28538:3;28479:67;:::i;:::-;28472:74;;28555:93;28644:3;28555:93;:::i;:::-;28673:2;28668:3;28664:12;28657:19;;28316:366;;;:::o;28688:419::-;28854:4;28892:2;28881:9;28877:18;28869:26;;28941:9;28935:4;28931:20;28927:1;28916:9;28912:17;28905:47;28969:131;29095:4;28969:131;:::i;:::-;28961:139;;28688:419;;;:::o;29113:233::-;29152:3;29175:24;29193:5;29175:24;:::i;:::-;29166:33;;29221:66;29214:5;29211:77;29208:103;;;29291:18;;:::i;:::-;29208:103;29338:1;29331:5;29327:13;29320:20;;29113:233;;;:::o;29352:180::-;29400:77;29397:1;29390:88;29497:4;29494:1;29487:15;29521:4;29518:1;29511:15;29538:180;29586:77;29583:1;29576:88;29683:4;29680:1;29673:15;29707:4;29704:1;29697:15;29724:85;29769:7;29798:5;29787:16;;29724:85;;;:::o;29815:158::-;29873:9;29906:61;29924:42;29933:32;29959:5;29933:32;:::i;:::-;29924:42;:::i;:::-;29906:61;:::i;:::-;29893:74;;29815:158;;;:::o;29979:147::-;30074:45;30113:5;30074:45;:::i;:::-;30069:3;30062:58;29979:147;;:::o;30132:114::-;30199:6;30233:5;30227:12;30217:22;;30132:114;;;:::o;30252:184::-;30351:11;30385:6;30380:3;30373:19;30425:4;30420:3;30416:14;30401:29;;30252:184;;;;:::o;30442:132::-;30509:4;30532:3;30524:11;;30562:4;30557:3;30553:14;30545:22;;30442:132;;;:::o;30580:108::-;30657:24;30675:5;30657:24;:::i;:::-;30652:3;30645:37;30580:108;;:::o;30694:179::-;30763:10;30784:46;30826:3;30818:6;30784:46;:::i;:::-;30862:4;30857:3;30853:14;30839:28;;30694:179;;;;:::o;30879:113::-;30949:4;30981;30976:3;30972:14;30964:22;;30879:113;;;:::o;31028:732::-;31147:3;31176:54;31224:5;31176:54;:::i;:::-;31246:86;31325:6;31320:3;31246:86;:::i;:::-;31239:93;;31356:56;31406:5;31356:56;:::i;:::-;31435:7;31466:1;31451:284;31476:6;31473:1;31470:13;31451:284;;;31552:6;31546:13;31579:63;31638:3;31623:13;31579:63;:::i;:::-;31572:70;;31665:60;31718:6;31665:60;:::i;:::-;31655:70;;31511:224;31498:1;31495;31491:9;31486:14;;31451:284;;;31455:14;31751:3;31744:10;;31152:608;;;31028:732;;;;:::o;31766:831::-;32029:4;32067:3;32056:9;32052:19;32044:27;;32081:71;32149:1;32138:9;32134:17;32125:6;32081:71;:::i;:::-;32162:80;32238:2;32227:9;32223:18;32214:6;32162:80;:::i;:::-;32289:9;32283:4;32279:20;32274:2;32263:9;32259:18;32252:48;32317:108;32420:4;32411:6;32317:108;:::i;:::-;32309:116;;32435:72;32503:2;32492:9;32488:18;32479:6;32435:72;:::i;:::-;32517:73;32585:3;32574:9;32570:19;32561:6;32517:73;:::i;:::-;31766:831;;;;;;;;:::o;32603:134::-;32661:9;32694:37;32725:5;32694:37;:::i;:::-;32681:50;;32603:134;;;:::o;32743:147::-;32838:45;32877:5;32838:45;:::i;:::-;32833:3;32826:58;32743:147;;:::o;32896:823::-;33153:4;33191:3;33180:9;33176:19;33168:27;;33205:71;33273:1;33262:9;33258:17;33249:6;33205:71;:::i;:::-;33286:72;33354:2;33343:9;33339:18;33330:6;33286:72;:::i;:::-;33368:80;33444:2;33433:9;33429:18;33420:6;33368:80;:::i;:::-;33458;33534:2;33523:9;33519:18;33510:6;33458:80;:::i;:::-;33548:81;33624:3;33613:9;33609:19;33600:6;33548:81;:::i;:::-;33639:73;33707:3;33696:9;33692:19;33683:6;33639:73;:::i;:::-;32896:823;;;;;;;;;:::o;33725:143::-;33782:5;33813:6;33807:13;33798:22;;33829:33;33856:5;33829:33;:::i;:::-;33725:143;;;;:::o;33874:663::-;33962:6;33970;33978;34027:2;34015:9;34006:7;34002:23;33998:32;33995:119;;;34033:79;;:::i;:::-;33995:119;34153:1;34178:64;34234:7;34225:6;34214:9;34210:22;34178:64;:::i;:::-;34168:74;;34124:128;34291:2;34317:64;34373:7;34364:6;34353:9;34349:22;34317:64;:::i;:::-;34307:74;;34262:129;34430:2;34456:64;34512:7;34503:6;34492:9;34488:22;34456:64;:::i;:::-;34446:74;;34401:129;33874:663;;;;;:::o;34543:222::-;34683:34;34679:1;34671:6;34667:14;34660:58;34752:5;34747:2;34739:6;34735:15;34728:30;34543:222;:::o;34771:366::-;34913:3;34934:67;34998:2;34993:3;34934:67;:::i;:::-;34927:74;;35010:93;35099:3;35010:93;:::i;:::-;35128:2;35123:3;35119:12;35112:19;;34771:366;;;:::o;35143:419::-;35309:4;35347:2;35336:9;35332:18;35324:26;;35396:9;35390:4;35386:20;35382:1;35371:9;35367:17;35360:47;35424:131;35550:4;35424:131;:::i;:::-;35416:139;;35143:419;;;:::o

Swarm Source

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