ETH Price: $3,331.57 (-1.36%)

Token

NeymarInu (Neymar)
 

Overview

Max Total Supply

1,000,000,000 Neymar

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.1399722578933865 Neymar

Value
$0.00
0xb9e318945ce2bc1aa445b122198c5f921ba9ebcb
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:
NeymarInu

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-27
*/

// SPDX-License-Identifier: MIT

//                        _,aaadP""""""Ybaaaa,,_
//                    ,adP,__,,,aaaadP"""""Y888888a,_
//                 ,a8888888P"''             "Y8888888b,
//              _a888888888"                   `Y88888888b,
//            ,d888888888P'                       "888888888b,
//          ,88888888P"Y8,                       ,P'   `""Y888b,
//        ,d8888P"'     "Ya,                    ,P'         `Ya`b,
//       ,P88"'           `Ya,                 ,P'            `b`Yi
//      d",P                `"Y,              ,P'              `Y "i
//    ,P' P'                   "888888888888888b                `b "i
//   ,P' d'                    d8888888888888888b                `b `b
//   d' d'                    ,888888888888888888b                I, Y,
//  ,f ,f                    ,88888888888888888888b               `b, b
//  d' d'                    d888888888888888888888b              ,88,I
// ,P  8                    ,88888888888888888888888b,_          ,d8888
// d'  8,                   d8888888888888888888888P'`"Ya,_     ,d88888
// 8  d88b,             ,adP""Y888888888888888888P'      `""Ya, d88888P
// 8 ,88888b,       ,adP"'     `"Y8888888888888"'             `"888888I
// Y,88888888b, ,adP"'             ""Y888888P"                  888888'
// `888888888888P'                     ""YP"                    888888
//  I88888888888                          8                     88888I
//  `Y8888888888                          8                     88888'
//   `Y888888888                          8                     8888I
//    `Y88888888                          8                     8P"8'
//     `Y8888888,                         8                   ,d',d'
//      `b""""Y8b                         8                 ,d" ,d'
//        "b,   "Y,                       8               ,P" ,d"
//          "b,   "Ya,_                 ,d88ba,,___   _,aP" ,P"
//            "Ya_   ""Ya,_       _,,ad88888888888888P"' _,d"
//              `"Ya_    ""Yaaad88888888888888888888P _,d"'
//                  `"Ya,_     "Y888888888888888888P",d"'
//                     `""Ya,__`Y888888888888888P"""
//                          ``"""""""""""""''
/** Telegram : https://t.me/neymarinueth
* Website   : https://neymarinu.com/
* Twitter   : https://twitter.com/NeymarInu
*/

pragma solidity 0.8.15;

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

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

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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



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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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


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

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

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

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

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

contract NeymarInu is ERC20, Ownable {

    uint256 public maxWalletAmount;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;

    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("NeymarInu", "Neymar") {

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

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

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

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyMarketingFee = 5;
        buyLiquidityFee = 1;

        buyTotalFees = buyMarketingFee + buyLiquidityFee ;

        sellMarketingFee = 11;
        sellLiquidityFee = 1;
        sellTotalFees = sellMarketingFee + sellLiquidityFee ;

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

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

        marketingAddress = 0x33A2D0d5b477c2C9dC9D94998b4aEEFbB4D4C0f9;
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop
     function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;

        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");
    }

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

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

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

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


    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }
      function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }

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

    function massManageBoughtEarly(address[] calldata wallets, bool flag) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            boughtEarly[wallets[i]] = flag;
        }
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;

        buyTotalFees = buyMarketingFee + buyLiquidityFee ;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }
      

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

  
    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

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

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

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                      
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;

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

        uint256 fees = 0;

        if(takeFee){

            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 90 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }

            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;

            }

            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;

            }

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

        	amount -= fees;
        }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {


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

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }
        (success,) = address(marketingAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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

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


    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006013556001601760006101000a81548160ff0219169083151502179055506000601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600981526020017f4e65796d6172496e7500000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e65796d617200000000000000000000000000000000000000000000000000008152508160039081620000e5919062000df3565b508060049081620000f7919062000df3565b50505060006200010c620005b760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000f44565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000f44565b6040518363ffffffff1660e01b81526004016200032992919062000f87565b6020604051808303816000875af115801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f919062000f44565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e4601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005bf60201b60201c565b62000419601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065560201b60201c565b60006b033b2e3c9fd0803ce8000000905060646002826200043b919062000fe3565b62000447919062001073565b6006819055506127106005826200045f919062000fe3565b6200046b919062001073565b60118190555060056008819055506001600981905550600954600854620004939190620010ab565b600781905550600b80819055506001600c81905550600c54600b54620004ba9190620010ab565b600a81905550620004d3836001620005bf60201b60201c565b620004e6306001620005bf60201b60201c565b620004fb61dead6001620005bf60201b60201c565b6200050e8360016200070860201b60201c565b620005213060016200070860201b60201c565b6200053661dead60016200070860201b60201c565b7333a2d0d5b477c2c9dc9d94998b4aeefbb4d4c0f9601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200059d83826200085560201b60201c565b620005ae83620009a560201b60201c565b5050506200132a565b600033905090565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200064992919062001125565b60405180910390a15050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006be8282620005bf60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000718620005b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a190620011b3565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008499190620011d5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008be9062001242565b60405180910390fd5b8060026000828254620008db9190620010ab565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009329190620010ab565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000999919062001275565b60405180910390a35050565b620009b5620005b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3e90620011b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ab9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab09062001308565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bfb57607f821691505b60208210810362000c115762000c1062000bb3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c7b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c3c565b62000c87868362000c3c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cd462000cce62000cc88462000c9f565b62000ca9565b62000c9f565b9050919050565b6000819050919050565b62000cf08362000cb3565b62000d0862000cff8262000cdb565b84845462000c49565b825550505050565b600090565b62000d1f62000d10565b62000d2c81848462000ce5565b505050565b5b8181101562000d545762000d4860008262000d15565b60018101905062000d32565b5050565b601f82111562000da35762000d6d8162000c17565b62000d788462000c2c565b8101602085101562000d88578190505b62000da062000d978562000c2c565b83018262000d31565b50505b505050565b600082821c905092915050565b600062000dc86000198460080262000da8565b1980831691505092915050565b600062000de3838362000db5565b9150826002028217905092915050565b62000dfe8262000b79565b67ffffffffffffffff81111562000e1a5762000e1962000b84565b5b62000e26825462000be2565b62000e3382828562000d58565b600060209050601f83116001811462000e6b576000841562000e56578287015190505b62000e62858262000dd5565b86555062000ed2565b601f19841662000e7b8662000c17565b60005b8281101562000ea55784890151825560018201915060208501945060208101905062000e7e565b8683101562000ec5578489015162000ec1601f89168262000db5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f0c8262000edf565b9050919050565b62000f1e8162000eff565b811462000f2a57600080fd5b50565b60008151905062000f3e8162000f13565b92915050565b60006020828403121562000f5d5762000f5c62000eda565b5b600062000f6d8482850162000f2d565b91505092915050565b62000f818162000eff565b82525050565b600060408201905062000f9e600083018562000f76565b62000fad602083018462000f76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ff08262000c9f565b915062000ffd8362000c9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001039576200103862000fb4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010808262000c9f565b91506200108d8362000c9f565b925082620010a0576200109f62001044565b5b828204905092915050565b6000620010b88262000c9f565b9150620010c58362000c9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010fd57620010fc62000fb4565b5b828201905092915050565b60008115159050919050565b6200111f8162001108565b82525050565b60006040820190506200113c600083018562000f76565b6200114b602083018462001114565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200119b60208362001152565b9150620011a88262001163565b602082019050919050565b60006020820190508181036000830152620011ce816200118c565b9050919050565b6000602082019050620011ec600083018462001114565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200122a601f8362001152565b91506200123782620011f2565b602082019050919050565b600060208201905081810360008301526200125d816200121b565b9050919050565b6200126f8162000c9f565b82525050565b60006020820190506200128c600083018462001264565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620012f060268362001152565b9150620012fd8262001292565b604082019050919050565b600060208201905081810360008301526200132381620012e1565b9050919050565b615b6c806200133a6000396000f3fe6080604052600436106102e85760003560e01c80637bce5a0411610190578063b62496f5116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610b4d578063f2fde38b14610b78578063f5648a4f14610ba1578063f637434214610bb8576102ef565b8063e2f4560514610ace578063e800dff714610af9578063ee40166e14610b22576102ef565b8063b62496f5146109ac578063bbc0c742146109e9578063c024666814610a14578063d257b34f14610a3d578063d85ba06314610a66578063dd62ed3e14610a91576102ef565b80639213691311610149578063a457c2d711610123578063a457c2d7146108dc578063a62068ce14610919578063a9059cbb14610944578063aa4bde2814610981576102ef565b8063921369131461085d57806395d89b41146108885780639a7a23d6146108b3576102ef565b80637bce5a041461073b57806382aa7c68146107665780638366e79a1461078f57806385ecfd28146107cc5780638da5cb5b14610809578063906e9dd014610834576102ef565b8063395093511161024f5780636a486a8e1161020857806370a08231116101e257806370a08231146106a7578063715018a6146106e4578063751039fc146106fb5780637571336a14610712576102ef565b80636a486a8e146106265780636b0a894c146106515780636ddd17131461067c576102ef565b80633950935114610528578063452ed4f1146105655780634a62bb651461059057806351f205e4146105bb57806358a6d531146105d257806366ca9b83146105fd576102ef565b806318160ddd116102a157806318160ddd146104165780631a8145bb146104415780631f3fed8f1461046c5780632307b4411461049757806323b872dd146104c0578063313ce567146104fd576102ef565b806302dbd8f8146102f457806306fdde031461031d5780630758d92414610348578063095ea7b31461037357806310d5de53146103b0578063130a2c3c146103ed576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b6004803603810190610316919061410a565b610be3565b005b34801561032957600080fd5b50610332610ce7565b60405161033f91906141e3565b60405180910390f35b34801561035457600080fd5b5061035d610d79565b60405161036a9190614284565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906142dd565b610d9f565b6040516103a79190614338565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190614353565b610dbd565b6040516103e49190614338565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190614411565b610ddd565b005b34801561042257600080fd5b5061042b610f19565b6040516104389190614480565b60405180910390f35b34801561044d57600080fd5b50610456610f23565b6040516104639190614480565b60405180910390f35b34801561047857600080fd5b50610481610f29565b60405161048e9190614480565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b9919061469c565b610f2f565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190614714565b6110be565b6040516104f49190614338565b60405180910390f35b34801561050957600080fd5b506105126111b6565b60405161051f9190614783565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906142dd565b6111bf565b60405161055c9190614338565b60405180910390f35b34801561057157600080fd5b5061057a61126b565b60405161058791906147ad565b60405180910390f35b34801561059c57600080fd5b506105a5611291565b6040516105b29190614338565b60405180910390f35b3480156105c757600080fd5b506105d06112a4565b005b3480156105de57600080fd5b506105e76113ff565b6040516105f49190614338565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061410a565b61140b565b005b34801561063257600080fd5b5061063b611510565b6040516106489190614480565b60405180910390f35b34801561065d57600080fd5b50610666611516565b6040516106739190614480565b60405180910390f35b34801561068857600080fd5b5061069161151c565b60405161069e9190614338565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614353565b61152f565b6040516106db9190614480565b60405180910390f35b3480156106f057600080fd5b506106f9611577565b005b34801561070757600080fd5b506107106116cf565b005b34801561071e57600080fd5b50610739600480360381019061073491906147c8565b6117af565b005b34801561074757600080fd5b50610750611937565b60405161075d9190614480565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190614808565b61193d565b005b34801561079b57600080fd5b506107b660048036038101906107b19190614835565b611aa4565b6040516107c39190614338565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614353565b611d58565b6040516108009190614338565b60405180910390f35b34801561081557600080fd5b5061081e611d78565b60405161082b91906147ad565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190614353565b611da2565b005b34801561086957600080fd5b50610872611eec565b60405161087f9190614480565b60405180910390f35b34801561089457600080fd5b5061089d611ef2565b6040516108aa91906141e3565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d591906147c8565b611f84565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b6120ff565b6040516109109190614338565b60405180910390f35b34801561092557600080fd5b5061092e6121ea565b60405161093b9190614480565b60405180910390f35b34801561095057600080fd5b5061096b600480360381019061096691906142dd565b6121f0565b6040516109789190614338565b60405180910390f35b34801561098d57600080fd5b5061099661220e565b6040516109a39190614480565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614353565b612214565b6040516109e09190614338565b60405180910390f35b3480156109f557600080fd5b506109fe612234565b604051610a0b9190614338565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a3691906147c8565b612247565b005b348015610a4957600080fd5b50610a646004803603810190610a5f9190614808565b612387565b005b348015610a7257600080fd5b50610a7b6124ef565b604051610a889190614480565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614835565b6124f5565b604051610ac59190614480565b60405180910390f35b348015610ada57600080fd5b50610ae361257c565b604051610af09190614480565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b91906147c8565b612582565b005b348015610b2e57600080fd5b50610b37612674565b604051610b449190614480565b60405180910390f35b348015610b5957600080fd5b50610b6261267a565b604051610b6f9190614480565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a9190614353565b612680565b005b348015610bad57600080fd5b50610bb6612846565b005b348015610bc457600080fd5b50610bcd61294e565b604051610bda9190614480565b60405180910390f35b610beb612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906148c1565b60405180910390fd5b81600b8190555080600c81905550600c54600b54610c989190614910565b600a81905550600a80541115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906149b2565b60405180910390fd5b5050565b606060038054610cf690614a01565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2290614a01565b8015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db3610dac612954565b848461295c565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b610de5612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906148c1565b60405180910390fd5b60005b83839050811015610f13578160156000868685818110610e9a57610e99614a32565b5b9050602002016020810190610eaf9190614353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f0b90614a61565b915050610e77565b50505050565b6000600254905090565b600e5481565b600d5481565b610f37612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906148c1565b60405180910390fd5b805182511461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190614af5565b60405180910390fd5b61025882511061104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690614b87565b60405180910390fd5b60005b82518110156110b95760008382815181106110705761106f614a32565b5b60200260200101519050600083838151811061108f5761108e614a32565b5b602002602001015190506110a4338383612b25565b505080806110b190614a61565b915050611052565b505050565b60006110cb848484612d8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611116612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90614c19565b60405180910390fd5b6111aa856111a2612954565b85840361295c565b60019150509392505050565b60006012905090565b60006112616111cc612954565b8484600160006111da612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125c9190614910565b61295c565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900460ff1681565b6112ac612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906148c1565b60405180910390fd5b6011546113473061152f565b1015611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90614cab565b60405180910390fd5b6001601060146101000a81548160ff0219169083151502179055506113ab613aa6565b6000601060146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516113f59190614480565b60405180910390a1565b60006014544310905090565b611413612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906148c1565b60405180910390fd5b81600881905550806009819055506009546008546114c09190614910565b600781905550600a600754111561150c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611503906149b2565b60405180910390fd5b5050565b600a5481565b60165481565b601760029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61157f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116d7612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906148c1565b60405180910390fd5b6000601760006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6117b7612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d906148c1565b60405180910390fd5b806118dc57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290614d3d565b60405180910390fd5b5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b611945612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906148c1565b60405180910390fd5b601760019054906101000a900460ff1615611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614da9565b60405180910390fd5b6001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff0219169083151502179055504360138190555080601354611a6f9190614910565b6014819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b6000611aae612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614e15565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1190614e81565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c5591906147ad565b602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190614eb6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611cd3929190614ee3565b6020604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190614f21565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611d49929190614ee3565b60405180910390a15092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611daa612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e30906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614fc0565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b606060048054611f0190614a01565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2d90614a01565b8015611f7a5780601f10611f4f57610100808354040283529160200191611f7a565b820191906000526020600020905b815481529060010190602001808311611f5d57829003601f168201915b5050505050905090565b611f8c612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612012906148c1565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a290615052565b60405180910390fd5b6120b58282613c5e565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000806001600061210e612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c2906150e4565b60405180910390fd5b6121df6121d6612954565b8585840361295c565b600191505092915050565b60145481565b60006122046121fd612954565b8484612d8e565b6001905092915050565b60065481565b601a6020528060005260406000206000915054906101000a900460ff1681565b601760019054906101000a900460ff1681565b61224f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d5906148c1565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161237b9190614338565b60405180910390a25050565b61238f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612415906148c1565b60405180910390fd5b620186a0600161242c610f19565b6124369190615104565b612440919061518d565b811015612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990615230565b60405180910390fd5b6103e8600161248f610f19565b6124999190615104565b6124a3919061518d565b8111156124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc906152c2565b60405180910390fd5b8060118190555050565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b61258a612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612619576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612610906148c1565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60095481565b612688612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90615354565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284e612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d4906148c1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612903906153a5565b60006040518083038185875af1925050503d8060008114612940576040519150601f19603f3d011682016040523d82523d6000602084013e612945565b606091505b50508091505050565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c29061542c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a31906154be565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b189190614480565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa906155e2565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8090615674565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1c9190614910565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d809190614480565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e63906155e2565b60405180910390fd5b60008111612eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea6906156e0565b60405180910390fd5b601760019054906101000a900460ff16612fa457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f645750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9a9061574c565b60405180910390fd5b5b600060145411156130b257601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158061303a575061300b611d78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80613072575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6130b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a890615804565b60405180910390fd5b5b601760009054906101000a900460ff1615613413576130cf611d78565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561313d575061310d611d78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131765750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131b0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132065750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561325c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561341257601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133045750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613366576006546133158361152f565b826133209190614910565b1115613361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335890615870565b60405180910390fd5b613411565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613410576006546133c38361152f565b826133ce9190614910565b111561340f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340690615870565b60405180910390fd5b5b5b5b5b600061341e3061152f565b9050600060115482101590508080156134435750601760029054906101000a900460ff165b801561345c5750601060149054906101000a900460ff16155b80156134b25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135085750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561355e5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a2576001601060146101000a81548160ff021916908315150217905550613586613aa6565b6000601060146101000a81548160ff0219169083151502179055505b600060019050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136495750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365357600090505b60008115613a92576136636113ff565b80156136b85750601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561370e5750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561371c57506000600754115b156138a257601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381c576001601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008282546137dd9190614910565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a8660405161381391906147ad565b60405180910390a15b6064605a8661382b9190615104565b613835919061518d565b9050600754600954826138489190615104565b613852919061518d565b600e60008282546138639190614910565b925050819055506007546008548261387b9190615104565b613885919061518d565b600d60008282546138969190614910565b92505081905550613a6e565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fd57506000600a54115b15613989576064600a54866139129190615104565b61391c919061518d565b9050600a54600c548261392f9190615104565b613939919061518d565b600e600082825461394a9190614910565b92505081905550600a54600b54826139629190615104565b61396c919061518d565b600d600082825461397d9190614910565b92505081905550613a6d565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139e457506000600754115b15613a6c576064600754866139f99190615104565b613a03919061518d565b905060075460095482613a169190615104565b613a20919061518d565b600e6000828254613a319190614910565b9250508190555060075460085482613a499190615104565b613a53919061518d565b600d6000828254613a649190614910565b925050819055505b5b5b6000811115613a8357613a82873083612b25565b5b8085613a8f9190615890565b94505b613a9d878787612b25565b50505050505050565b6000613ab13061152f565b90506000600d54600e54613ac59190614910565b90506000821480613ad65750600081145b15613ae2575050613c5c565b6014601154613af19190615104565b821115613b0a576014601154613b079190615104565b91505b600080600283600e5486613b1e9190615104565b613b28919061518d565b613b32919061518d565b9050613b488185613b439190615890565b613d09565b6000479050600081905060006002600e54613b63919061518d565b86613b6e9190615890565b600d5484613b7c9190615104565b613b86919061518d565b90508082613b949190615890565b91506000600e819055506000600d81905550600084118015613bb65750600082115b15613bc657613bc58483613f4c565b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c0c906153a5565b60006040518083038185875af1925050503d8060008114613c49576040519150601f19603f3d011682016040523d82523d6000602084013e613c4e565b606091505b505080955050505050505050505b565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613cbf828261402c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613d2657613d2561449b565b5b604051908082528060200260200182016040528015613d545781602001602082028036833780820191505090505b5090503081600081518110613d6c57613d6b614a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3791906158d9565b81600181518110613e4b57613e4a614a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613eb230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461295c565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f169594939291906159ff565b600060405180830381600087803b158015613f3057600080fd5b505af1158015613f44573d6000803e3d6000fd5b505050505050565b613f7930600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461295c565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613fe296959493929190615a59565b60606040518083038185885af1158015614000573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140259190615aba565b5050505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516140b4929190615b0d565b60405180910390a15050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6140e7816140d4565b81146140f257600080fd5b50565b600081359050614104816140de565b92915050565b60008060408385031215614121576141206140ca565b5b600061412f858286016140f5565b9250506020614140858286016140f5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614184578082015181840152602081019050614169565b83811115614193576000848401525b50505050565b6000601f19601f8301169050919050565b60006141b58261414a565b6141bf8185614155565b93506141cf818560208601614166565b6141d881614199565b840191505092915050565b600060208201905081810360008301526141fd81846141aa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061424a61424561424084614205565b614225565b614205565b9050919050565b600061425c8261422f565b9050919050565b600061426e82614251565b9050919050565b61427e81614263565b82525050565b60006020820190506142996000830184614275565b92915050565b60006142aa82614205565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b600080604083850312156142f4576142f36140ca565b5b6000614302858286016142c8565b9250506020614313858286016140f5565b9150509250929050565b60008115159050919050565b6143328161431d565b82525050565b600060208201905061434d6000830184614329565b92915050565b600060208284031215614369576143686140ca565b5b6000614377848285016142c8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143a5576143a4614380565b5b8235905067ffffffffffffffff8111156143c2576143c1614385565b5b6020830191508360208202830111156143de576143dd61438a565b5b9250929050565b6143ee8161431d565b81146143f957600080fd5b50565b60008135905061440b816143e5565b92915050565b60008060006040848603121561442a576144296140ca565b5b600084013567ffffffffffffffff811115614448576144476140cf565b5b6144548682870161438f565b93509350506020614467868287016143fc565b9150509250925092565b61447a816140d4565b82525050565b60006020820190506144956000830184614471565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6144d382614199565b810181811067ffffffffffffffff821117156144f2576144f161449b565b5b80604052505050565b60006145056140c0565b905061451182826144ca565b919050565b600067ffffffffffffffff8211156145315761453061449b565b5b602082029050602081019050919050565b600061455561455084614516565b6144fb565b905080838252602082019050602084028301858111156145785761457761438a565b5b835b818110156145a1578061458d88826142c8565b84526020840193505060208101905061457a565b5050509392505050565b600082601f8301126145c0576145bf614380565b5b81356145d0848260208601614542565b91505092915050565b600067ffffffffffffffff8211156145f4576145f361449b565b5b602082029050602081019050919050565b6000614618614613846145d9565b6144fb565b9050808382526020820190506020840283018581111561463b5761463a61438a565b5b835b81811015614664578061465088826140f5565b84526020840193505060208101905061463d565b5050509392505050565b600082601f83011261468357614682614380565b5b8135614693848260208601614605565b91505092915050565b600080604083850312156146b3576146b26140ca565b5b600083013567ffffffffffffffff8111156146d1576146d06140cf565b5b6146dd858286016145ab565b925050602083013567ffffffffffffffff8111156146fe576146fd6140cf565b5b61470a8582860161466e565b9150509250929050565b60008060006060848603121561472d5761472c6140ca565b5b600061473b868287016142c8565b935050602061474c868287016142c8565b925050604061475d868287016140f5565b9150509250925092565b600060ff82169050919050565b61477d81614767565b82525050565b60006020820190506147986000830184614774565b92915050565b6147a78161429f565b82525050565b60006020820190506147c2600083018461479e565b92915050565b600080604083850312156147df576147de6140ca565b5b60006147ed858286016142c8565b92505060206147fe858286016143fc565b9150509250929050565b60006020828403121561481e5761481d6140ca565b5b600061482c848285016140f5565b91505092915050565b6000806040838503121561484c5761484b6140ca565b5b600061485a858286016142c8565b925050602061486b858286016142c8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148ab602083614155565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061491b826140d4565b9150614926836140d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495b5761495a6148e1565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b600061499c601d83614155565b91506149a782614966565b602082019050919050565b600060208201905081810360008301526149cb8161498f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1957607f821691505b602082108103614a2c57614a2b6149d2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6c826140d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a9e57614a9d6148e1565b5b600182019050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614adf601e83614155565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614b71603683614155565b9150614b7c82614b15565b604082019050919050565b60006020820190508181036000830152614ba081614b64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c03602883614155565b9150614c0e82614ba7565b604082019050919050565b60006020820190508181036000830152614c3281614bf6565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614c95604083614155565b9150614ca082614c39565b604082019050919050565b60006020820190508181036000830152614cc481614c88565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614d27602783614155565b9150614d3282614ccb565b604082019050919050565b60006020820190508181036000830152614d5681614d1a565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614d93601783614155565b9150614d9e82614d5d565b602082019050919050565b60006020820190508181036000830152614dc281614d86565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614dff601a83614155565b9150614e0a82614dc9565b602082019050919050565b60006020820190508181036000830152614e2e81614df2565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614e6b601c83614155565b9150614e7682614e35565b602082019050919050565b60006020820190508181036000830152614e9a81614e5e565b9050919050565b600081519050614eb0816140de565b92915050565b600060208284031215614ecc57614ecb6140ca565b5b6000614eda84828501614ea1565b91505092915050565b6000604082019050614ef8600083018561479e565b614f056020830184614471565b9392505050565b600081519050614f1b816143e5565b92915050565b600060208284031215614f3757614f366140ca565b5b6000614f4584828501614f0c565b91505092915050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614faa602583614155565b9150614fb582614f4e565b604082019050919050565b60006020820190508181036000830152614fd981614f9d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061503c603983614155565b915061504782614fe0565b604082019050919050565b6000602082019050818103600083015261506b8161502f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150ce602583614155565b91506150d982615072565b604082019050919050565b600060208201905081810360008301526150fd816150c1565b9050919050565b600061510f826140d4565b915061511a836140d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615153576151526148e1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615198826140d4565b91506151a3836140d4565b9250826151b3576151b261515e565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061521a603583614155565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006152ac603483614155565b91506152b782615250565b604082019050919050565b600060208201905081810360008301526152db8161529f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061533e602683614155565b9150615349826152e2565b604082019050919050565b6000602082019050818103600083015261536d81615331565b9050919050565b600081905092915050565b50565b600061538f600083615374565b915061539a8261537f565b600082019050919050565b60006153b082615382565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615416602483614155565b9150615421826153ba565b604082019050919050565b6000602082019050818103600083015261544581615409565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154a8602283614155565b91506154b38261544c565b604082019050919050565b600060208201905081810360008301526154d78161549b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061553a602583614155565b9150615545826154de565b604082019050919050565b600060208201905081810360008301526155698161552d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155cc602383614155565b91506155d782615570565b604082019050919050565b600060208201905081810360008301526155fb816155bf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061565e602683614155565b915061566982615602565b604082019050919050565b6000602082019050818103600083015261568d81615651565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006156ca601d83614155565b91506156d582615694565b602082019050919050565b600060208201905081810360008301526156f9816156bd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615736601683614155565b915061574182615700565b602082019050919050565b6000602082019050818103600083015261576581615729565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006157ee604683614155565b91506157f98261576c565b606082019050919050565b6000602082019050818103600083015261581d816157e1565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061585a601883614155565b915061586582615824565b602082019050919050565b600060208201905081810360008301526158898161584d565b9050919050565b600061589b826140d4565b91506158a6836140d4565b9250828210156158b9576158b86148e1565b5b828203905092915050565b6000815190506158d3816142b1565b92915050565b6000602082840312156158ef576158ee6140ca565b5b60006158fd848285016158c4565b91505092915050565b6000819050919050565b600061592b61592661592184615906565b614225565b6140d4565b9050919050565b61593b81615910565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159768161429f565b82525050565b6000615988838361596d565b60208301905092915050565b6000602082019050919050565b60006159ac82615941565b6159b6818561594c565b93506159c18361595d565b8060005b838110156159f25781516159d9888261597c565b97506159e483615994565b9250506001810190506159c5565b5085935050505092915050565b600060a082019050615a146000830188614471565b615a216020830187615932565b8181036040830152615a3381866159a1565b9050615a42606083018561479e565b615a4f6080830184614471565b9695505050505050565b600060c082019050615a6e600083018961479e565b615a7b6020830188614471565b615a886040830187615932565b615a956060830186615932565b615aa2608083018561479e565b615aaf60a0830184614471565b979650505050505050565b600080600060608486031215615ad357615ad26140ca565b5b6000615ae186828701614ea1565b9350506020615af286828701614ea1565b9250506040615b0386828701614ea1565b9150509250925092565b6000604082019050615b22600083018561479e565b615b2f6020830184614329565b939250505056fea2646970667358221220452543711d55dc2e935130687e3ce009bd259ecb517d859ff8de91d9e165fdc764736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80637bce5a0411610190578063b62496f5116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610b4d578063f2fde38b14610b78578063f5648a4f14610ba1578063f637434214610bb8576102ef565b8063e2f4560514610ace578063e800dff714610af9578063ee40166e14610b22576102ef565b8063b62496f5146109ac578063bbc0c742146109e9578063c024666814610a14578063d257b34f14610a3d578063d85ba06314610a66578063dd62ed3e14610a91576102ef565b80639213691311610149578063a457c2d711610123578063a457c2d7146108dc578063a62068ce14610919578063a9059cbb14610944578063aa4bde2814610981576102ef565b8063921369131461085d57806395d89b41146108885780639a7a23d6146108b3576102ef565b80637bce5a041461073b57806382aa7c68146107665780638366e79a1461078f57806385ecfd28146107cc5780638da5cb5b14610809578063906e9dd014610834576102ef565b8063395093511161024f5780636a486a8e1161020857806370a08231116101e257806370a08231146106a7578063715018a6146106e4578063751039fc146106fb5780637571336a14610712576102ef565b80636a486a8e146106265780636b0a894c146106515780636ddd17131461067c576102ef565b80633950935114610528578063452ed4f1146105655780634a62bb651461059057806351f205e4146105bb57806358a6d531146105d257806366ca9b83146105fd576102ef565b806318160ddd116102a157806318160ddd146104165780631a8145bb146104415780631f3fed8f1461046c5780632307b4411461049757806323b872dd146104c0578063313ce567146104fd576102ef565b806302dbd8f8146102f457806306fdde031461031d5780630758d92414610348578063095ea7b31461037357806310d5de53146103b0578063130a2c3c146103ed576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b6004803603810190610316919061410a565b610be3565b005b34801561032957600080fd5b50610332610ce7565b60405161033f91906141e3565b60405180910390f35b34801561035457600080fd5b5061035d610d79565b60405161036a9190614284565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906142dd565b610d9f565b6040516103a79190614338565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190614353565b610dbd565b6040516103e49190614338565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190614411565b610ddd565b005b34801561042257600080fd5b5061042b610f19565b6040516104389190614480565b60405180910390f35b34801561044d57600080fd5b50610456610f23565b6040516104639190614480565b60405180910390f35b34801561047857600080fd5b50610481610f29565b60405161048e9190614480565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b9919061469c565b610f2f565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190614714565b6110be565b6040516104f49190614338565b60405180910390f35b34801561050957600080fd5b506105126111b6565b60405161051f9190614783565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906142dd565b6111bf565b60405161055c9190614338565b60405180910390f35b34801561057157600080fd5b5061057a61126b565b60405161058791906147ad565b60405180910390f35b34801561059c57600080fd5b506105a5611291565b6040516105b29190614338565b60405180910390f35b3480156105c757600080fd5b506105d06112a4565b005b3480156105de57600080fd5b506105e76113ff565b6040516105f49190614338565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061410a565b61140b565b005b34801561063257600080fd5b5061063b611510565b6040516106489190614480565b60405180910390f35b34801561065d57600080fd5b50610666611516565b6040516106739190614480565b60405180910390f35b34801561068857600080fd5b5061069161151c565b60405161069e9190614338565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614353565b61152f565b6040516106db9190614480565b60405180910390f35b3480156106f057600080fd5b506106f9611577565b005b34801561070757600080fd5b506107106116cf565b005b34801561071e57600080fd5b50610739600480360381019061073491906147c8565b6117af565b005b34801561074757600080fd5b50610750611937565b60405161075d9190614480565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190614808565b61193d565b005b34801561079b57600080fd5b506107b660048036038101906107b19190614835565b611aa4565b6040516107c39190614338565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614353565b611d58565b6040516108009190614338565b60405180910390f35b34801561081557600080fd5b5061081e611d78565b60405161082b91906147ad565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190614353565b611da2565b005b34801561086957600080fd5b50610872611eec565b60405161087f9190614480565b60405180910390f35b34801561089457600080fd5b5061089d611ef2565b6040516108aa91906141e3565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d591906147c8565b611f84565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b6120ff565b6040516109109190614338565b60405180910390f35b34801561092557600080fd5b5061092e6121ea565b60405161093b9190614480565b60405180910390f35b34801561095057600080fd5b5061096b600480360381019061096691906142dd565b6121f0565b6040516109789190614338565b60405180910390f35b34801561098d57600080fd5b5061099661220e565b6040516109a39190614480565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614353565b612214565b6040516109e09190614338565b60405180910390f35b3480156109f557600080fd5b506109fe612234565b604051610a0b9190614338565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a3691906147c8565b612247565b005b348015610a4957600080fd5b50610a646004803603810190610a5f9190614808565b612387565b005b348015610a7257600080fd5b50610a7b6124ef565b604051610a889190614480565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614835565b6124f5565b604051610ac59190614480565b60405180910390f35b348015610ada57600080fd5b50610ae361257c565b604051610af09190614480565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b91906147c8565b612582565b005b348015610b2e57600080fd5b50610b37612674565b604051610b449190614480565b60405180910390f35b348015610b5957600080fd5b50610b6261267a565b604051610b6f9190614480565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a9190614353565b612680565b005b348015610bad57600080fd5b50610bb6612846565b005b348015610bc457600080fd5b50610bcd61294e565b604051610bda9190614480565b60405180910390f35b610beb612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906148c1565b60405180910390fd5b81600b8190555080600c81905550600c54600b54610c989190614910565b600a81905550600a80541115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906149b2565b60405180910390fd5b5050565b606060038054610cf690614a01565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2290614a01565b8015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db3610dac612954565b848461295c565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b610de5612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906148c1565b60405180910390fd5b60005b83839050811015610f13578160156000868685818110610e9a57610e99614a32565b5b9050602002016020810190610eaf9190614353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f0b90614a61565b915050610e77565b50505050565b6000600254905090565b600e5481565b600d5481565b610f37612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906148c1565b60405180910390fd5b805182511461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190614af5565b60405180910390fd5b61025882511061104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690614b87565b60405180910390fd5b60005b82518110156110b95760008382815181106110705761106f614a32565b5b60200260200101519050600083838151811061108f5761108e614a32565b5b602002602001015190506110a4338383612b25565b505080806110b190614a61565b915050611052565b505050565b60006110cb848484612d8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611116612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90614c19565b60405180910390fd5b6111aa856111a2612954565b85840361295c565b60019150509392505050565b60006012905090565b60006112616111cc612954565b8484600160006111da612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125c9190614910565b61295c565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900460ff1681565b6112ac612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906148c1565b60405180910390fd5b6011546113473061152f565b1015611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90614cab565b60405180910390fd5b6001601060146101000a81548160ff0219169083151502179055506113ab613aa6565b6000601060146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516113f59190614480565b60405180910390a1565b60006014544310905090565b611413612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906148c1565b60405180910390fd5b81600881905550806009819055506009546008546114c09190614910565b600781905550600a600754111561150c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611503906149b2565b60405180910390fd5b5050565b600a5481565b60165481565b601760029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61157f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116d7612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906148c1565b60405180910390fd5b6000601760006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6117b7612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d906148c1565b60405180910390fd5b806118dc57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290614d3d565b60405180910390fd5b5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b611945612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906148c1565b60405180910390fd5b601760019054906101000a900460ff1615611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614da9565b60405180910390fd5b6001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff0219169083151502179055504360138190555080601354611a6f9190614910565b6014819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b6000611aae612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614e15565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1190614e81565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c5591906147ad565b602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190614eb6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611cd3929190614ee3565b6020604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190614f21565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611d49929190614ee3565b60405180910390a15092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611daa612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e30906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614fc0565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b606060048054611f0190614a01565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2d90614a01565b8015611f7a5780601f10611f4f57610100808354040283529160200191611f7a565b820191906000526020600020905b815481529060010190602001808311611f5d57829003601f168201915b5050505050905090565b611f8c612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612012906148c1565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a290615052565b60405180910390fd5b6120b58282613c5e565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000806001600061210e612954565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c2906150e4565b60405180910390fd5b6121df6121d6612954565b8585840361295c565b600191505092915050565b60145481565b60006122046121fd612954565b8484612d8e565b6001905092915050565b60065481565b601a6020528060005260406000206000915054906101000a900460ff1681565b601760019054906101000a900460ff1681565b61224f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d5906148c1565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161237b9190614338565b60405180910390a25050565b61238f612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612415906148c1565b60405180910390fd5b620186a0600161242c610f19565b6124369190615104565b612440919061518d565b811015612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990615230565b60405180910390fd5b6103e8600161248f610f19565b6124999190615104565b6124a3919061518d565b8111156124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc906152c2565b60405180910390fd5b8060118190555050565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b61258a612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612619576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612610906148c1565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60095481565b612688612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e906148c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90615354565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284e612954565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d4906148c1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612903906153a5565b60006040518083038185875af1925050503d8060008114612940576040519150601f19603f3d011682016040523d82523d6000602084013e612945565b606091505b50508091505050565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c29061542c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a31906154be565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b189190614480565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa906155e2565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8090615674565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1c9190614910565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d809190614480565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e63906155e2565b60405180910390fd5b60008111612eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea6906156e0565b60405180910390fd5b601760019054906101000a900460ff16612fa457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f645750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9a9061574c565b60405180910390fd5b5b600060145411156130b257601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158061303a575061300b611d78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80613072575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6130b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a890615804565b60405180910390fd5b5b601760009054906101000a900460ff1615613413576130cf611d78565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561313d575061310d611d78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131765750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131b0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132065750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561325c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561341257601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133045750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613366576006546133158361152f565b826133209190614910565b1115613361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335890615870565b60405180910390fd5b613411565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613410576006546133c38361152f565b826133ce9190614910565b111561340f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340690615870565b60405180910390fd5b5b5b5b5b600061341e3061152f565b9050600060115482101590508080156134435750601760029054906101000a900460ff165b801561345c5750601060149054906101000a900460ff16155b80156134b25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135085750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561355e5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a2576001601060146101000a81548160ff021916908315150217905550613586613aa6565b6000601060146101000a81548160ff0219169083151502179055505b600060019050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136495750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365357600090505b60008115613a92576136636113ff565b80156136b85750601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561370e5750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561371c57506000600754115b156138a257601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381c576001601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008282546137dd9190614910565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a8660405161381391906147ad565b60405180910390a15b6064605a8661382b9190615104565b613835919061518d565b9050600754600954826138489190615104565b613852919061518d565b600e60008282546138639190614910565b925050819055506007546008548261387b9190615104565b613885919061518d565b600d60008282546138969190614910565b92505081905550613a6e565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fd57506000600a54115b15613989576064600a54866139129190615104565b61391c919061518d565b9050600a54600c548261392f9190615104565b613939919061518d565b600e600082825461394a9190614910565b92505081905550600a54600b54826139629190615104565b61396c919061518d565b600d600082825461397d9190614910565b92505081905550613a6d565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139e457506000600754115b15613a6c576064600754866139f99190615104565b613a03919061518d565b905060075460095482613a169190615104565b613a20919061518d565b600e6000828254613a319190614910565b9250508190555060075460085482613a499190615104565b613a53919061518d565b600d6000828254613a649190614910565b925050819055505b5b5b6000811115613a8357613a82873083612b25565b5b8085613a8f9190615890565b94505b613a9d878787612b25565b50505050505050565b6000613ab13061152f565b90506000600d54600e54613ac59190614910565b90506000821480613ad65750600081145b15613ae2575050613c5c565b6014601154613af19190615104565b821115613b0a576014601154613b079190615104565b91505b600080600283600e5486613b1e9190615104565b613b28919061518d565b613b32919061518d565b9050613b488185613b439190615890565b613d09565b6000479050600081905060006002600e54613b63919061518d565b86613b6e9190615890565b600d5484613b7c9190615104565b613b86919061518d565b90508082613b949190615890565b91506000600e819055506000600d81905550600084118015613bb65750600082115b15613bc657613bc58483613f4c565b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c0c906153a5565b60006040518083038185875af1925050503d8060008114613c49576040519150601f19603f3d011682016040523d82523d6000602084013e613c4e565b606091505b505080955050505050505050505b565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613cbf828261402c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613d2657613d2561449b565b5b604051908082528060200260200182016040528015613d545781602001602082028036833780820191505090505b5090503081600081518110613d6c57613d6b614a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3791906158d9565b81600181518110613e4b57613e4a614a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613eb230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461295c565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f169594939291906159ff565b600060405180830381600087803b158015613f3057600080fd5b505af1158015613f44573d6000803e3d6000fd5b505050505050565b613f7930600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461295c565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613fe296959493929190615a59565b60606040518083038185885af1158015614000573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140259190615aba565b5050505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516140b4929190615b0d565b60405180910390a15050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6140e7816140d4565b81146140f257600080fd5b50565b600081359050614104816140de565b92915050565b60008060408385031215614121576141206140ca565b5b600061412f858286016140f5565b9250506020614140858286016140f5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614184578082015181840152602081019050614169565b83811115614193576000848401525b50505050565b6000601f19601f8301169050919050565b60006141b58261414a565b6141bf8185614155565b93506141cf818560208601614166565b6141d881614199565b840191505092915050565b600060208201905081810360008301526141fd81846141aa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061424a61424561424084614205565b614225565b614205565b9050919050565b600061425c8261422f565b9050919050565b600061426e82614251565b9050919050565b61427e81614263565b82525050565b60006020820190506142996000830184614275565b92915050565b60006142aa82614205565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b600080604083850312156142f4576142f36140ca565b5b6000614302858286016142c8565b9250506020614313858286016140f5565b9150509250929050565b60008115159050919050565b6143328161431d565b82525050565b600060208201905061434d6000830184614329565b92915050565b600060208284031215614369576143686140ca565b5b6000614377848285016142c8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143a5576143a4614380565b5b8235905067ffffffffffffffff8111156143c2576143c1614385565b5b6020830191508360208202830111156143de576143dd61438a565b5b9250929050565b6143ee8161431d565b81146143f957600080fd5b50565b60008135905061440b816143e5565b92915050565b60008060006040848603121561442a576144296140ca565b5b600084013567ffffffffffffffff811115614448576144476140cf565b5b6144548682870161438f565b93509350506020614467868287016143fc565b9150509250925092565b61447a816140d4565b82525050565b60006020820190506144956000830184614471565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6144d382614199565b810181811067ffffffffffffffff821117156144f2576144f161449b565b5b80604052505050565b60006145056140c0565b905061451182826144ca565b919050565b600067ffffffffffffffff8211156145315761453061449b565b5b602082029050602081019050919050565b600061455561455084614516565b6144fb565b905080838252602082019050602084028301858111156145785761457761438a565b5b835b818110156145a1578061458d88826142c8565b84526020840193505060208101905061457a565b5050509392505050565b600082601f8301126145c0576145bf614380565b5b81356145d0848260208601614542565b91505092915050565b600067ffffffffffffffff8211156145f4576145f361449b565b5b602082029050602081019050919050565b6000614618614613846145d9565b6144fb565b9050808382526020820190506020840283018581111561463b5761463a61438a565b5b835b81811015614664578061465088826140f5565b84526020840193505060208101905061463d565b5050509392505050565b600082601f83011261468357614682614380565b5b8135614693848260208601614605565b91505092915050565b600080604083850312156146b3576146b26140ca565b5b600083013567ffffffffffffffff8111156146d1576146d06140cf565b5b6146dd858286016145ab565b925050602083013567ffffffffffffffff8111156146fe576146fd6140cf565b5b61470a8582860161466e565b9150509250929050565b60008060006060848603121561472d5761472c6140ca565b5b600061473b868287016142c8565b935050602061474c868287016142c8565b925050604061475d868287016140f5565b9150509250925092565b600060ff82169050919050565b61477d81614767565b82525050565b60006020820190506147986000830184614774565b92915050565b6147a78161429f565b82525050565b60006020820190506147c2600083018461479e565b92915050565b600080604083850312156147df576147de6140ca565b5b60006147ed858286016142c8565b92505060206147fe858286016143fc565b9150509250929050565b60006020828403121561481e5761481d6140ca565b5b600061482c848285016140f5565b91505092915050565b6000806040838503121561484c5761484b6140ca565b5b600061485a858286016142c8565b925050602061486b858286016142c8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148ab602083614155565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061491b826140d4565b9150614926836140d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495b5761495a6148e1565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b600061499c601d83614155565b91506149a782614966565b602082019050919050565b600060208201905081810360008301526149cb8161498f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1957607f821691505b602082108103614a2c57614a2b6149d2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6c826140d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a9e57614a9d6148e1565b5b600182019050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614adf601e83614155565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614b71603683614155565b9150614b7c82614b15565b604082019050919050565b60006020820190508181036000830152614ba081614b64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c03602883614155565b9150614c0e82614ba7565b604082019050919050565b60006020820190508181036000830152614c3281614bf6565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614c95604083614155565b9150614ca082614c39565b604082019050919050565b60006020820190508181036000830152614cc481614c88565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614d27602783614155565b9150614d3282614ccb565b604082019050919050565b60006020820190508181036000830152614d5681614d1a565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614d93601783614155565b9150614d9e82614d5d565b602082019050919050565b60006020820190508181036000830152614dc281614d86565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614dff601a83614155565b9150614e0a82614dc9565b602082019050919050565b60006020820190508181036000830152614e2e81614df2565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614e6b601c83614155565b9150614e7682614e35565b602082019050919050565b60006020820190508181036000830152614e9a81614e5e565b9050919050565b600081519050614eb0816140de565b92915050565b600060208284031215614ecc57614ecb6140ca565b5b6000614eda84828501614ea1565b91505092915050565b6000604082019050614ef8600083018561479e565b614f056020830184614471565b9392505050565b600081519050614f1b816143e5565b92915050565b600060208284031215614f3757614f366140ca565b5b6000614f4584828501614f0c565b91505092915050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614faa602583614155565b9150614fb582614f4e565b604082019050919050565b60006020820190508181036000830152614fd981614f9d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061503c603983614155565b915061504782614fe0565b604082019050919050565b6000602082019050818103600083015261506b8161502f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150ce602583614155565b91506150d982615072565b604082019050919050565b600060208201905081810360008301526150fd816150c1565b9050919050565b600061510f826140d4565b915061511a836140d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615153576151526148e1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615198826140d4565b91506151a3836140d4565b9250826151b3576151b261515e565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061521a603583614155565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006152ac603483614155565b91506152b782615250565b604082019050919050565b600060208201905081810360008301526152db8161529f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061533e602683614155565b9150615349826152e2565b604082019050919050565b6000602082019050818103600083015261536d81615331565b9050919050565b600081905092915050565b50565b600061538f600083615374565b915061539a8261537f565b600082019050919050565b60006153b082615382565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615416602483614155565b9150615421826153ba565b604082019050919050565b6000602082019050818103600083015261544581615409565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154a8602283614155565b91506154b38261544c565b604082019050919050565b600060208201905081810360008301526154d78161549b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061553a602583614155565b9150615545826154de565b604082019050919050565b600060208201905081810360008301526155698161552d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155cc602383614155565b91506155d782615570565b604082019050919050565b600060208201905081810360008301526155fb816155bf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061565e602683614155565b915061566982615602565b604082019050919050565b6000602082019050818103600083015261568d81615651565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006156ca601d83614155565b91506156d582615694565b602082019050919050565b600060208201905081810360008301526156f9816156bd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615736601683614155565b915061574182615700565b602082019050919050565b6000602082019050818103600083015261576581615729565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006157ee604683614155565b91506157f98261576c565b606082019050919050565b6000602082019050818103600083015261581d816157e1565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061585a601883614155565b915061586582615824565b602082019050919050565b600060208201905081810360008301526158898161584d565b9050919050565b600061589b826140d4565b91506158a6836140d4565b9250828210156158b9576158b86148e1565b5b828203905092915050565b6000815190506158d3816142b1565b92915050565b6000602082840312156158ef576158ee6140ca565b5b60006158fd848285016158c4565b91505092915050565b6000819050919050565b600061592b61592661592184615906565b614225565b6140d4565b9050919050565b61593b81615910565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159768161429f565b82525050565b6000615988838361596d565b60208301905092915050565b6000602082019050919050565b60006159ac82615941565b6159b6818561594c565b93506159c18361595d565b8060005b838110156159f25781516159d9888261597c565b97506159e483615994565b9250506001810190506159c5565b5085935050505092915050565b600060a082019050615a146000830188614471565b615a216020830187615932565b8181036040830152615a3381866159a1565b9050615a42606083018561479e565b615a4f6080830184614471565b9695505050505050565b600060c082019050615a6e600083018961479e565b615a7b6020830188614471565b615a886040830187615932565b615a956060830186615932565b615aa2608083018561479e565b615aaf60a0830184614471565b979650505050505050565b600080600060608486031215615ad357615ad26140ca565b5b6000615ae186828701614ea1565b9350506020615af286828701614ea1565b9250506040615b0386828701614ea1565b9150509250925092565b6000604082019050615b22600083018561479e565b615b2f6020830184614329565b939250505056fea2646970667358221220452543711d55dc2e935130687e3ce009bd259ecb517d859ff8de91d9e165fdc764736f6c634300080f0033

Deployed Bytecode Sourcemap

12395:14105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15775:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7225:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12781:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8139:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13293:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18450:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7546:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12739:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12699;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17556:618;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8316:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7445:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8816:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12815:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13115:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26183:312;;;;;;;;;;;;;:::i;:::-;;22803:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18665:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12588:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13083:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13195:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7662:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5982:150;;;;;;;;;;;;;:::i;:::-;;16674:115;;;;;;;;;;;;;:::i;:::-;;18182:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12514:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16292:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25204:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13032:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5768:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25898:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12623:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7333:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18994:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9039:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12992:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7797:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13364:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13155:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16102:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16859:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12480:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7980:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12873:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17430:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12948:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12551:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6140:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25730:160;;;;;;;;;;;;;:::i;:::-;;12661:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15775:319;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:13:::1;15875:16;:32;;;;15937:13;15918:16;:32;;;;15998:16;;15979;;:35;;;;:::i;:::-;15963:13;:51;;;;16050:2;16033:13:::0;::::1;:19;;16025:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15775:319:::0;;:::o;7225:100::-;7279:13;7312:5;7305:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7225:100;:::o;12781:27::-;;;;;;;;;;;;;:::o;8139:169::-;8222:4;8239:39;8248:12;:10;:12::i;:::-;8262:7;8271:6;8239:8;:39::i;:::-;8296:4;8289:11;;8139:169;;;;:::o;13293:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18450:207::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18554:9:::1;18550:100;18573:7;;:14;;18569:1;:18;18550:100;;;18634:4;18608:11;:23;18620:7;;18628:1;18620:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18608:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18589:3;;;;;:::i;:::-;;;;18550:100;;;;18450:207:::0;;;:::o;7546:108::-;7607:7;7634:12;;7627:19;;7546:108;:::o;12739:33::-;;;;:::o;12699:::-;;;;:::o;17556:618::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17698:15:::1;:22;17680:7;:14;:40;17672:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17791:3;17774:7;:14;:20;17766:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17966:9;17962:205;17985:7;:14;17981:1;:18;17962:205;;;18020:14;18037:7;18045:1;18037:10;;;;;;;;:::i;:::-;;;;;;;;18020:27;;18062:14;18079:15;18095:1;18079:18;;;;;;;;:::i;:::-;;;;;;;;18062:35;;18112:43;18128:10;18140:6;18148;18112:15;:43::i;:::-;18005:162;;18001:3;;;;;:::i;:::-;;;;17962:205;;;;17556:618:::0;;:::o;8316:492::-;8456:4;8473:36;8483:6;8491:9;8502:6;8473:9;:36::i;:::-;8522:24;8549:11;:19;8561:6;8549:19;;;;;;;;;;;;;;;:33;8569:12;:10;:12::i;:::-;8549:33;;;;;;;;;;;;;;;;8522:60;;8621:6;8601:16;:26;;8593:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8708:57;8717:6;8725:12;:10;:12::i;:::-;8758:6;8739:16;:25;8708:8;:57::i;:::-;8796:4;8789:11;;;8316:492;;;;;:::o;7445:93::-;7503:5;7528:2;7521:9;;7445:93;:::o;8816:215::-;8904:4;8921:80;8930:12;:10;:12::i;:::-;8944:7;8990:10;8953:11;:25;8965:12;:10;:12::i;:::-;8953:25;;;;;;;;;;;;;;;:34;8979:7;8953:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8921:8;:80::i;:::-;9019:4;9012:11;;8816:215;;;;:::o;12815:21::-;;;;;;;;;;;;;:::o;13115:33::-;;;;;;;;;;;;;:::o;26183:312::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26274:18:::1;;26246:24;26264:4;26246:9;:24::i;:::-;:46;;26238:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;26383:4;26372:8;;:15;;;;;;;;;;;;;;;;;;26398:10;:8;:10::i;:::-;26430:5;26419:8;;:16;;;;;;;;;;;;;;;;;;26451:36;26471:15;26451:36;;;;;;:::i;:::-;;;;;;;;26183:312::o:0;22803:120::-;22859:4;22897:18;;22882:12;:33;22875:40;;22803:120;:::o;18665:313::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18782:13:::1;18764:15;:31;;;;18824:13;18806:15;:31;;;;18883:15;;18865;;:33;;;;:::i;:::-;18850:12;:48;;;;18934:2;18918:12;;:18;;18910:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18665:313:::0;;:::o;12588:28::-;;;;:::o;13083:25::-;;;;:::o;13195:31::-;;;;;;;;;;;;;:::o;7662:127::-;7736:7;7763:9;:18;7773:7;7763:18;;;;;;;;;;;;;;;;7756:25;;7662:127;;;:::o;5982:150::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6091:1:::1;6054:40;;6075:6;;;;;;;;;;;6054:40;;;;;;;;;;;;6122:1;6105:6;;:19;;;;;;;;;;;;;;;;;;5982:150::o:0;16674:115::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16745:5:::1;16728:14;;:22;;;;;;;;;;;;;;;;;;16766:15;;;;;;;;;;16674:115::o:0;18182:260::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18278:4:::1;18274:104;;18316:6;;;;;;;;;;;18306:16;;:6;:16;;::::0;18298:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18274:104;18430:4;18388:31;:39;18420:6;18388:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18182:260:::0;;:::o;12514:30::-;;;;:::o;16292:330::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16374:13:::1;;;;;;;;;;;16373:14;16365:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16442:4;16426:13;;:20;;;;;;;;;;;;;;;;;;16471:4;16457:11;;:18;;;;;;;;;;;;;;;;;;16507:12;16486:18;:33;;;;16572:10;16551:18;;:31;;;;:::i;:::-;16530:18;:52;;;;16598:16;;;;;;;;;;16292:330:::0;:::o;25204:456::-;25291:10;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25340:1:::1;25322:20;;:6;:20;;::::0;25314:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25410:4;25392:23;;:6;:23;;::::0;25384:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25459:24;25493:6;25486:24;;;25519:4;25486:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25459:66;;25551:6;25544:23;;;25568:3;25573:16;25544:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25536:54;;25606:46;25627:6;25635:16;25606:46;;;;;;;:::i;:::-;;;;;;;;25303:357;25204:456:::0;;;;:::o;13032:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5768:79::-;5806:7;5833:6;;;;;;;;;;;5826:13;;5768:79;:::o;25898:231::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26021:1:::1;25992:31;;:17;:31;;::::0;25984:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26103:17;26076:16;;:45;;;;;;;;;;;;;;;;;;25898:231:::0;:::o;12623:31::-;;;;:::o;7333:104::-;7389:13;7422:7;7415:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7333:104;:::o;18994:295::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19103:6:::1;;;;;;;;;;;19095:14;;:4;:14;;::::0;19087:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19184:41;19213:4;19219:5;19184:28;:41::i;:::-;19275:5;19241:40;;19269:4;19241:40;;;;;;;;;;;;18994:295:::0;;:::o;9039:413::-;9132:4;9149:24;9176:11;:25;9188:12;:10;:12::i;:::-;9176:25;;;;;;;;;;;;;;;:34;9202:7;9176:34;;;;;;;;;;;;;;;;9149:61;;9249:15;9229:16;:35;;9221:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9342:67;9351:12;:10;:12::i;:::-;9365:7;9393:15;9374:16;:34;9342:8;:67::i;:::-;9440:4;9433:11;;;9039:413;;;;:::o;12992:33::-;;;;:::o;7797:175::-;7883:4;7900:42;7910:12;:10;:12::i;:::-;7924:9;7935:6;7900:9;:42::i;:::-;7960:4;7953:11;;7797:175;;;;:::o;12441:30::-;;;;:::o;13364:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;13155:33::-;;;;;;;;;;;;;:::o;16102:182::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16218:8:::1;16187:19;:28;16207:7;16187:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16258:7;16242:34;;;16267:8;16242:34;;;;;;:::i;:::-;;;;;;;;16102:182:::0;;:::o;16859:346::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16982:6:::1;16978:1;16962:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;16949:9;:39;;16941:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;17097:4;17093:1;17077:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17064:9;:37;;17056:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;17189:9;17168:18;:30;;;;16859:346:::0;:::o;12480:27::-;;;;:::o;7980:151::-;8069:7;8096:11;:18;8108:5;8096:18;;;;;;;;;;;;;;;:27;8115:7;8096:27;;;;;;;;;;;;;;;;8089:34;;7980:151;;;;:::o;12873:33::-;;;;:::o;17430:118::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17536:4:::1;17514:11;:19;17526:6;17514:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17430:118:::0;;:::o;12948:37::-;;;;:::o;12551:30::-;;;;:::o;6140:244::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6249:1:::1;6229:22;;:8;:22;;::::0;6221:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6339:8;6310:38;;6331:6;;;;;;;;;;;6310:38;;;;;;;;;;;;6368:8;6359:6;;:17;;;;;;;;;;;;;;;;;;6140:244:::0;:::o;25730:160::-;5905:12;:10;:12::i;:::-;5895:22;;:6;;;;;;;;;;;:22;;;5887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25788:12:::1;25832:10;25824:24;;25856:21;25824:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25811:71;;;;;25777:113;25730:160::o:0;12661:31::-;;;;:::o;5100:98::-;5153:7;5180:10;5173:17;;5100:98;:::o;10939:380::-;11092:1;11075:19;;:5;:19;;;11067:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11173:1;11154:21;;:7;:21;;;11146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11257:6;11227:11;:18;11239:5;11227:18;;;;;;;;;;;;;;;:27;11246:7;11227:27;;;;;;;;;;;;;;;:36;;;;11295:7;11279:32;;11288:5;11279:32;;;11304:6;11279:32;;;;;;:::i;:::-;;;;;;;;10939:380;;;:::o;9460:614::-;9618:1;9600:20;;:6;:20;;;9592:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9702:1;9681:23;;:9;:23;;;9673:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9757:21;9781:9;:17;9791:6;9781:17;;;;;;;;;;;;;;;;9757:41;;9834:6;9817:13;:23;;9809:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9955:6;9939:13;:22;9919:9;:17;9929:6;9919:17;;;;;;;;;;;;;;;:42;;;;10007:6;9983:9;:20;9993:9;9983:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10048:9;10031:35;;10040:6;10031:35;;;10059:6;10031:35;;;;;;:::i;:::-;;;;;;;;9581:493;9460:614;;;:::o;19549:3246::-;19665:1;19649:18;;:4;:18;;;19641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19742:1;19728:16;;:2;:16;;;19720:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19812:1;19803:6;:10;19795:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19864:13;;;;;;;;;;;19860:132;;19901:19;:25;19921:4;19901:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19930:19;:23;19950:2;19930:23;;;;;;;;;;;;;;;;;;;;;;;;;19901:52;19893:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19860:132;20028:1;20007:18;;:22;20004:196;;;20054:11;:17;20066:4;20054:17;;;;;;;;;;;;;;;;;;;;;;;;;20053:18;:35;;;;20081:7;:5;:7::i;:::-;20075:13;;:2;:13;;;20053:35;:60;;;;20106:6;20092:21;;:2;:21;;;20053:60;20045:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;20004:196;20215:14;;;;;;;;;;;20212:659;;;20257:7;:5;:7::i;:::-;20249:15;;:4;:15;;;;:32;;;;;20274:7;:5;:7::i;:::-;20268:13;;:2;:13;;;;20249:32;:52;;;;;20299:1;20285:16;;:2;:16;;;;20249:52;:77;;;;;20319:6;20305:21;;:2;:21;;;;20249:77;:107;;;;;20331:19;:25;20351:4;20331:25;;;;;;;;;;;;;;;;;;;;;;;;;20330:26;20249:107;:135;;;;;20361:19;:23;20381:2;20361:23;;;;;;;;;;;;;;;;;;;;;;;;;20360:24;20249:135;20245:615;;;20438:25;:31;20464:4;20438:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20474:31;:35;20506:2;20474:35;;;;;;;;;;;;;;;;;;;;;;;;;20473:36;20438:71;20434:411;;;20596:15;;20579:13;20589:2;20579:9;:13::i;:::-;20570:6;:22;;;;:::i;:::-;:41;;20562:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20434:411;;;20688:31;:35;20720:2;20688:35;;;;;;;;;;;;;;;;;;;;;;;;;20683:162;;20781:15;;20764:13;20774:2;20764:9;:13::i;:::-;20755:6;:22;;;;:::i;:::-;:41;;20747:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20683:162;20434:411;20245:615;20212:659;20883:28;20914:24;20932:4;20914:9;:24::i;:::-;20883:55;;20951:12;20990:18;;20966:20;:42;;20951:57;;21024:7;:22;;;;;21035:11;;;;;;;;;;;21024:22;:35;;;;;21051:8;;;;;;;;;;;21050:9;21024:35;:71;;;;;21064:25;:31;21090:4;21064:31;;;;;;;;;;;;;;;;;;;;;;;;;21063:32;21024:71;:101;;;;;21100:19;:25;21120:4;21100:25;;;;;;;;;;;;;;;;;;;;;;;;;21099:26;21024:101;:129;;;;;21130:19;:23;21150:2;21130:23;;;;;;;;;;;;;;;;;;;;;;;;;21129:24;21024:129;21021:236;;;21181:4;21170:8;;:15;;;;;;;;;;;;;;;;;;21202:10;:8;:10::i;:::-;21240:5;21229:8;;:16;;;;;;;;;;;;;;;;;;21021:236;21269:12;21284:4;21269:19;;21304;:25;21324:4;21304:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21333:19;:23;21353:2;21333:23;;;;;;;;;;;;;;;;;;;;;;;;;21304:52;21301:99;;;21383:5;21373:15;;21301:99;21412:12;21444:7;21441:1301;;;21472:25;:23;:25::i;:::-;:60;;;;;21501:25;:31;21527:4;21501:31;;;;;;;;;;;;;;;;;;;;;;;;;21472:60;:94;;;;;21537:25;:29;21563:2;21537:29;;;;;;;;;;;;;;;;;;;;;;;;;21536:30;21472:94;:114;;;;;21585:1;21570:12;;:16;21472:114;21469:1129;;;21612:11;:15;21624:2;21612:15;;;;;;;;;;;;;;;;;;;;;;;;;21608:171;;21669:4;21651:11;:15;21663:2;21651:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;21710:1;21696:10;;:15;;;;;;;:::i;:::-;;;;;;;;21739:20;21756:2;21739:20;;;;;;:::i;:::-;;;;;;;;21608:171;21820:3;21815:2;21806:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;21799:24;;21886:12;;21868:15;;21861:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21839:18;;:59;;;;;;;:::i;:::-;;;;;;;;21964:12;;21946:15;;21939:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21917:18;;:59;;;;;;;:::i;:::-;;;;;;;;21469:1129;;;22017:25;:29;22043:2;22017:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22066:1;22050:13;;:17;22017:50;22013:585;;;22119:3;22103:13;;22094:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;22087:35;;22189:13;;22170:16;;22163:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22141:18;;:61;;;;;;;:::i;:::-;;;;;;;;22269:13;;22250:16;;22243:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22221:18;;:61;;;;;;;:::i;:::-;;;;;;;;22013:585;;;22324:25;:31;22350:4;22324:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22374:1;22359:12;;:16;22324:51;22321:277;;;22424:3;22409:12;;22400:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;22393:34;;22490:12;;22472:15;;22465:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22443:18;;:59;;;;;;;:::i;:::-;;;;;;;;22568:12;;22550:15;;22543:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22521:18;;:59;;;;;;;:::i;:::-;;;;;;;;22321:277;22013:585;21469:1129;22624:1;22617:4;:8;22614:89;;;22645:42;22661:4;22675;22682;22645:15;:42::i;:::-;22614:89;22726:4;22716:14;;;;;:::i;:::-;;;21441:1301;22754:33;22770:4;22776:2;22780:6;22754:15;:33::i;:::-;19628:3167;;;;19549:3246;;;:::o;24029:1167::-;24072:23;24098:24;24116:4;24098:9;:24::i;:::-;24072:50;;24133:25;24182:18;;24161;;:39;;;;:::i;:::-;24133:67;;24236:1;24217:15;:20;:46;;;;24262:1;24241:17;:22;24217:46;24214:60;;;24266:7;;;;24214:60;24328:2;24307:18;;:23;;;;:::i;:::-;24289:15;:41;24286:113;;;24385:2;24364:18;;:23;;;;:::i;:::-;24346:41;;24286:113;24411:12;24485:23;24570:1;24550:17;24529:18;;24511:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;24485:86;;24584:51;24619:15;24601;:33;;;;:::i;:::-;24584:16;:51::i;:::-;24648:18;24669:21;24648:42;;24701:23;24727:10;24701:36;;24750:23;24851:1;24832:18;;:20;;;;:::i;:::-;24811:17;:42;;;;:::i;:::-;24789:18;;24776:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;24750:104;;24886:15;24867:34;;;;;:::i;:::-;;;24935:1;24914:18;:22;;;;24968:1;24947:18;:22;;;;25003:1;24985:15;:19;:42;;;;;25026:1;25008:15;:19;24985:42;24982:119;;;25043:46;25056:15;25073;25043:12;:46::i;:::-;24982:119;25132:16;;;;;;;;;;;25124:30;;25162:21;25124:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25111:77;;;;;24057:1139;;;;;;;24029:1167;:::o;19297:240::-;19414:5;19380:25;:31;19406:4;19380:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19432;19459:4;19465:5;19432:26;:39::i;:::-;19523:5;19489:40;;19517:4;19489:40;;;;;;;;;;;;19297:240;;:::o;22931:573::-;23059:21;23097:1;23083:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23059:40;;23128:4;23110;23115:1;23110:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23154:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23144:4;23149:1;23144:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;23183:56;23200:4;23215:9;;;;;;;;;;;23227:11;23183:8;:56::i;:::-;23278:9;;;;;;;;;;;:60;;;23353:11;23379:1;23423:4;23450;23470:15;23278:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22986:518;22931:573;:::o;23512:509::-;23660:56;23677:4;23692:9;;;;;;;;;;;23704:11;23660:8;:56::i;:::-;23759:9;;;;;;;;;;;:25;;;23792:9;23825:4;23845:11;23871:1;23914;23965:6;23987:15;23759:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23512:509;;:::o;17213:207::-;17343:10;17301:31;:39;17333:6;17301:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;17369:43;17393:6;17401:10;17369:43;;;;;;;:::i;:::-;;;;;;;;17213:207;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:60::-;2720:3;2741:5;2734:12;;2692:60;;;:::o;2758:142::-;2808:9;2841:53;2859:34;2868:24;2886:5;2868:24;:::i;:::-;2859:34;:::i;:::-;2841:53;:::i;:::-;2828:66;;2758:142;;;:::o;2906:126::-;2956:9;2989:37;3020:5;2989:37;:::i;:::-;2976:50;;2906:126;;;:::o;3038:144::-;3106:9;3139:37;3170:5;3139:37;:::i;:::-;3126:50;;3038:144;;;:::o;3188:167::-;3293:55;3342:5;3293:55;:::i;:::-;3288:3;3281:68;3188:167;;:::o;3361:258::-;3472:4;3510:2;3499:9;3495:18;3487:26;;3523:89;3609:1;3598:9;3594:17;3585:6;3523:89;:::i;:::-;3361:258;;;;:::o;3625:96::-;3662:7;3691:24;3709:5;3691:24;:::i;:::-;3680:35;;3625:96;;;:::o;3727:122::-;3800:24;3818:5;3800:24;:::i;:::-;3793:5;3790:35;3780:63;;3839:1;3836;3829:12;3780:63;3727:122;:::o;3855:139::-;3901:5;3939:6;3926:20;3917:29;;3955:33;3982:5;3955:33;:::i;:::-;3855:139;;;;:::o;4000:474::-;4068:6;4076;4125:2;4113:9;4104:7;4100:23;4096:32;4093:119;;;4131:79;;:::i;:::-;4093:119;4251:1;4276:53;4321:7;4312:6;4301:9;4297:22;4276:53;:::i;:::-;4266:63;;4222:117;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;4000:474;;;;;:::o;4480:90::-;4514:7;4557:5;4550:13;4543:21;4532:32;;4480:90;;;:::o;4576:109::-;4657:21;4672:5;4657:21;:::i;:::-;4652:3;4645:34;4576:109;;:::o;4691:210::-;4778:4;4816:2;4805:9;4801:18;4793:26;;4829:65;4891:1;4880:9;4876:17;4867:6;4829:65;:::i;:::-;4691:210;;;;:::o;4907:329::-;4966:6;5015:2;5003:9;4994:7;4990:23;4986:32;4983:119;;;5021:79;;:::i;:::-;4983:119;5141:1;5166:53;5211:7;5202:6;5191:9;5187:22;5166:53;:::i;:::-;5156:63;;5112:117;4907:329;;;;:::o;5242:117::-;5351:1;5348;5341:12;5365:117;5474:1;5471;5464:12;5488:117;5597:1;5594;5587:12;5628:568;5701:8;5711:6;5761:3;5754:4;5746:6;5742:17;5738:27;5728:122;;5769:79;;:::i;:::-;5728:122;5882:6;5869:20;5859:30;;5912:18;5904:6;5901:30;5898:117;;;5934:79;;:::i;:::-;5898:117;6048:4;6040:6;6036:17;6024:29;;6102:3;6094:4;6086:6;6082:17;6072:8;6068:32;6065:41;6062:128;;;6109:79;;:::i;:::-;6062:128;5628:568;;;;;:::o;6202:116::-;6272:21;6287:5;6272:21;:::i;:::-;6265:5;6262:32;6252:60;;6308:1;6305;6298:12;6252:60;6202:116;:::o;6324:133::-;6367:5;6405:6;6392:20;6383:29;;6421:30;6445:5;6421:30;:::i;:::-;6324:133;;;;:::o;6463:698::-;6555:6;6563;6571;6620:2;6608:9;6599:7;6595:23;6591:32;6588:119;;;6626:79;;:::i;:::-;6588:119;6774:1;6763:9;6759:17;6746:31;6804:18;6796:6;6793:30;6790:117;;;6826:79;;:::i;:::-;6790:117;6939:80;7011:7;7002:6;6991:9;6987:22;6939:80;:::i;:::-;6921:98;;;;6717:312;7068:2;7094:50;7136:7;7127:6;7116:9;7112:22;7094:50;:::i;:::-;7084:60;;7039:115;6463:698;;;;;:::o;7167:118::-;7254:24;7272:5;7254:24;:::i;:::-;7249:3;7242:37;7167:118;;:::o;7291:222::-;7384:4;7422:2;7411:9;7407:18;7399:26;;7435:71;7503:1;7492:9;7488:17;7479:6;7435:71;:::i;:::-;7291:222;;;;:::o;7519:180::-;7567:77;7564:1;7557:88;7664:4;7661:1;7654:15;7688:4;7685:1;7678:15;7705:281;7788:27;7810:4;7788:27;:::i;:::-;7780:6;7776:40;7918:6;7906:10;7903:22;7882:18;7870:10;7867:34;7864:62;7861:88;;;7929:18;;:::i;:::-;7861:88;7969:10;7965:2;7958:22;7748:238;7705:281;;:::o;7992:129::-;8026:6;8053:20;;:::i;:::-;8043:30;;8082:33;8110:4;8102:6;8082:33;:::i;:::-;7992:129;;;:::o;8127:311::-;8204:4;8294:18;8286:6;8283:30;8280:56;;;8316:18;;:::i;:::-;8280:56;8366:4;8358:6;8354:17;8346:25;;8426:4;8420;8416:15;8408:23;;8127:311;;;:::o;8461:710::-;8557:5;8582:81;8598:64;8655:6;8598:64;:::i;:::-;8582:81;:::i;:::-;8573:90;;8683:5;8712:6;8705:5;8698:21;8746:4;8739:5;8735:16;8728:23;;8799:4;8791:6;8787:17;8779:6;8775:30;8828:3;8820:6;8817:15;8814:122;;;8847:79;;:::i;:::-;8814:122;8962:6;8945:220;8979:6;8974:3;8971:15;8945:220;;;9054:3;9083:37;9116:3;9104:10;9083:37;:::i;:::-;9078:3;9071:50;9150:4;9145:3;9141:14;9134:21;;9021:144;9005:4;9000:3;8996:14;8989:21;;8945:220;;;8949:21;8563:608;;8461:710;;;;;:::o;9194:370::-;9265:5;9314:3;9307:4;9299:6;9295:17;9291:27;9281:122;;9322:79;;:::i;:::-;9281:122;9439:6;9426:20;9464:94;9554:3;9546:6;9539:4;9531:6;9527:17;9464:94;:::i;:::-;9455:103;;9271:293;9194:370;;;;:::o;9570:311::-;9647:4;9737:18;9729:6;9726:30;9723:56;;;9759:18;;:::i;:::-;9723:56;9809:4;9801:6;9797:17;9789:25;;9869:4;9863;9859:15;9851:23;;9570:311;;;:::o;9904:710::-;10000:5;10025:81;10041:64;10098:6;10041:64;:::i;:::-;10025:81;:::i;:::-;10016:90;;10126:5;10155:6;10148:5;10141:21;10189:4;10182:5;10178:16;10171:23;;10242:4;10234:6;10230:17;10222:6;10218:30;10271:3;10263:6;10260:15;10257:122;;;10290:79;;:::i;:::-;10257:122;10405:6;10388:220;10422:6;10417:3;10414:15;10388:220;;;10497:3;10526:37;10559:3;10547:10;10526:37;:::i;:::-;10521:3;10514:50;10593:4;10588:3;10584:14;10577:21;;10464:144;10448:4;10443:3;10439:14;10432:21;;10388:220;;;10392:21;10006:608;;9904:710;;;;;:::o;10637:370::-;10708:5;10757:3;10750:4;10742:6;10738:17;10734:27;10724:122;;10765:79;;:::i;:::-;10724:122;10882:6;10869:20;10907:94;10997:3;10989:6;10982:4;10974:6;10970:17;10907:94;:::i;:::-;10898:103;;10714:293;10637:370;;;;:::o;11013:894::-;11131:6;11139;11188:2;11176:9;11167:7;11163:23;11159:32;11156:119;;;11194:79;;:::i;:::-;11156:119;11342:1;11331:9;11327:17;11314:31;11372:18;11364:6;11361:30;11358:117;;;11394:79;;:::i;:::-;11358:117;11499:78;11569:7;11560:6;11549:9;11545:22;11499:78;:::i;:::-;11489:88;;11285:302;11654:2;11643:9;11639:18;11626:32;11685:18;11677:6;11674:30;11671:117;;;11707:79;;:::i;:::-;11671:117;11812:78;11882:7;11873:6;11862:9;11858:22;11812:78;:::i;:::-;11802:88;;11597:303;11013:894;;;;;:::o;11913:619::-;11990:6;11998;12006;12055:2;12043:9;12034:7;12030:23;12026:32;12023:119;;;12061:79;;:::i;:::-;12023:119;12181:1;12206:53;12251:7;12242:6;12231:9;12227:22;12206:53;:::i;:::-;12196:63;;12152:117;12308:2;12334:53;12379:7;12370:6;12359:9;12355:22;12334:53;:::i;:::-;12324:63;;12279:118;12436:2;12462:53;12507:7;12498:6;12487:9;12483:22;12462:53;:::i;:::-;12452:63;;12407:118;11913:619;;;;;:::o;12538:86::-;12573:7;12613:4;12606:5;12602:16;12591:27;;12538:86;;;:::o;12630:112::-;12713:22;12729:5;12713:22;:::i;:::-;12708:3;12701:35;12630:112;;:::o;12748:214::-;12837:4;12875:2;12864:9;12860:18;12852:26;;12888:67;12952:1;12941:9;12937:17;12928:6;12888:67;:::i;:::-;12748:214;;;;:::o;12968:118::-;13055:24;13073:5;13055:24;:::i;:::-;13050:3;13043:37;12968:118;;:::o;13092:222::-;13185:4;13223:2;13212:9;13208:18;13200:26;;13236:71;13304:1;13293:9;13289:17;13280:6;13236:71;:::i;:::-;13092:222;;;;:::o;13320:468::-;13385:6;13393;13442:2;13430:9;13421:7;13417:23;13413:32;13410:119;;;13448:79;;:::i;:::-;13410:119;13568:1;13593:53;13638:7;13629:6;13618:9;13614:22;13593:53;:::i;:::-;13583:63;;13539:117;13695:2;13721:50;13763:7;13754:6;13743:9;13739:22;13721:50;:::i;:::-;13711:60;;13666:115;13320:468;;;;;:::o;13794:329::-;13853:6;13902:2;13890:9;13881:7;13877:23;13873:32;13870:119;;;13908:79;;:::i;:::-;13870:119;14028:1;14053:53;14098:7;14089:6;14078:9;14074:22;14053:53;:::i;:::-;14043:63;;13999:117;13794:329;;;;:::o;14129:474::-;14197:6;14205;14254:2;14242:9;14233:7;14229:23;14225:32;14222:119;;;14260:79;;:::i;:::-;14222:119;14380:1;14405:53;14450:7;14441:6;14430:9;14426:22;14405:53;:::i;:::-;14395:63;;14351:117;14507:2;14533:53;14578:7;14569:6;14558:9;14554:22;14533:53;:::i;:::-;14523:63;;14478:118;14129:474;;;;;:::o;14609:182::-;14749:34;14745:1;14737:6;14733:14;14726:58;14609:182;:::o;14797:366::-;14939:3;14960:67;15024:2;15019:3;14960:67;:::i;:::-;14953:74;;15036:93;15125:3;15036:93;:::i;:::-;15154:2;15149:3;15145:12;15138:19;;14797:366;;;:::o;15169:419::-;15335:4;15373:2;15362:9;15358:18;15350:26;;15422:9;15416:4;15412:20;15408:1;15397:9;15393:17;15386:47;15450:131;15576:4;15450:131;:::i;:::-;15442:139;;15169:419;;;:::o;15594:180::-;15642:77;15639:1;15632:88;15739:4;15736:1;15729:15;15763:4;15760:1;15753:15;15780:305;15820:3;15839:20;15857:1;15839:20;:::i;:::-;15834:25;;15873:20;15891:1;15873:20;:::i;:::-;15868:25;;16027:1;15959:66;15955:74;15952:1;15949:81;15946:107;;;16033:18;;:::i;:::-;15946:107;16077:1;16074;16070:9;16063:16;;15780:305;;;;:::o;16091:179::-;16231:31;16227:1;16219:6;16215:14;16208:55;16091:179;:::o;16276:366::-;16418:3;16439:67;16503:2;16498:3;16439:67;:::i;:::-;16432:74;;16515:93;16604:3;16515:93;:::i;:::-;16633:2;16628:3;16624:12;16617:19;;16276:366;;;:::o;16648:419::-;16814:4;16852:2;16841:9;16837:18;16829:26;;16901:9;16895:4;16891:20;16887:1;16876:9;16872:17;16865:47;16929:131;17055:4;16929:131;:::i;:::-;16921:139;;16648:419;;;:::o;17073:180::-;17121:77;17118:1;17111:88;17218:4;17215:1;17208:15;17242:4;17239:1;17232:15;17259:320;17303:6;17340:1;17334:4;17330:12;17320:22;;17387:1;17381:4;17377:12;17408:18;17398:81;;17464:4;17456:6;17452:17;17442:27;;17398:81;17526:2;17518:6;17515:14;17495:18;17492:38;17489:84;;17545:18;;:::i;:::-;17489:84;17310:269;17259:320;;;:::o;17585:180::-;17633:77;17630:1;17623:88;17730:4;17727:1;17720:15;17754:4;17751:1;17744:15;17771:233;17810:3;17833:24;17851:5;17833:24;:::i;:::-;17824:33;;17879:66;17872:5;17869:77;17866:103;;17949:18;;:::i;:::-;17866:103;17996:1;17989:5;17985:13;17978:20;;17771:233;;;:::o;18010:180::-;18150:32;18146:1;18138:6;18134:14;18127:56;18010:180;:::o;18196:366::-;18338:3;18359:67;18423:2;18418:3;18359:67;:::i;:::-;18352:74;;18435:93;18524:3;18435:93;:::i;:::-;18553:2;18548:3;18544:12;18537:19;;18196:366;;;:::o;18568:419::-;18734:4;18772:2;18761:9;18757:18;18749:26;;18821:9;18815:4;18811:20;18807:1;18796:9;18792:17;18785:47;18849:131;18975:4;18849:131;:::i;:::-;18841:139;;18568:419;;;:::o;18993:241::-;19133:34;19129:1;19121:6;19117:14;19110:58;19202:24;19197:2;19189:6;19185:15;19178:49;18993:241;:::o;19240:366::-;19382:3;19403:67;19467:2;19462:3;19403:67;:::i;:::-;19396:74;;19479:93;19568:3;19479:93;:::i;:::-;19597:2;19592:3;19588:12;19581:19;;19240:366;;;:::o;19612:419::-;19778:4;19816:2;19805:9;19801:18;19793:26;;19865:9;19859:4;19855:20;19851:1;19840:9;19836:17;19829:47;19893:131;20019:4;19893:131;:::i;:::-;19885:139;;19612:419;;;:::o;20037:227::-;20177:34;20173:1;20165:6;20161:14;20154:58;20246:10;20241:2;20233:6;20229:15;20222:35;20037:227;:::o;20270:366::-;20412:3;20433:67;20497:2;20492:3;20433:67;:::i;:::-;20426:74;;20509:93;20598:3;20509:93;:::i;:::-;20627:2;20622:3;20618:12;20611:19;;20270:366;;;:::o;20642:419::-;20808:4;20846:2;20835:9;20831:18;20823:26;;20895:9;20889:4;20885:20;20881:1;20870:9;20866:17;20859:47;20923:131;21049:4;20923:131;:::i;:::-;20915:139;;20642:419;;;:::o;21067:251::-;21207:34;21203:1;21195:6;21191:14;21184:58;21276:34;21271:2;21263:6;21259:15;21252:59;21067:251;:::o;21324:366::-;21466:3;21487:67;21551:2;21546:3;21487:67;:::i;:::-;21480:74;;21563:93;21652:3;21563:93;:::i;:::-;21681:2;21676:3;21672:12;21665:19;;21324:366;;;:::o;21696:419::-;21862:4;21900:2;21889:9;21885:18;21877:26;;21949:9;21943:4;21939:20;21935:1;21924:9;21920:17;21913:47;21977:131;22103:4;21977:131;:::i;:::-;21969:139;;21696:419;;;:::o;22121:226::-;22261:34;22257:1;22249:6;22245:14;22238:58;22330:9;22325:2;22317:6;22313:15;22306:34;22121:226;:::o;22353:366::-;22495:3;22516:67;22580:2;22575:3;22516:67;:::i;:::-;22509:74;;22592:93;22681:3;22592:93;:::i;:::-;22710:2;22705:3;22701:12;22694:19;;22353:366;;;:::o;22725:419::-;22891:4;22929:2;22918:9;22914:18;22906:26;;22978:9;22972:4;22968:20;22964:1;22953:9;22949:17;22942:47;23006:131;23132:4;23006:131;:::i;:::-;22998:139;;22725:419;;;:::o;23150:173::-;23290:25;23286:1;23278:6;23274:14;23267:49;23150:173;:::o;23329:366::-;23471:3;23492:67;23556:2;23551:3;23492:67;:::i;:::-;23485:74;;23568:93;23657:3;23568:93;:::i;:::-;23686:2;23681:3;23677:12;23670:19;;23329:366;;;:::o;23701:419::-;23867:4;23905:2;23894:9;23890:18;23882:26;;23954:9;23948:4;23944:20;23940:1;23929:9;23925:17;23918:47;23982:131;24108:4;23982:131;:::i;:::-;23974:139;;23701:419;;;:::o;24126:176::-;24266:28;24262:1;24254:6;24250:14;24243:52;24126:176;:::o;24308:366::-;24450:3;24471:67;24535:2;24530:3;24471:67;:::i;:::-;24464:74;;24547:93;24636:3;24547:93;:::i;:::-;24665:2;24660:3;24656:12;24649:19;;24308:366;;;:::o;24680:419::-;24846:4;24884:2;24873:9;24869:18;24861:26;;24933:9;24927:4;24923:20;24919:1;24908:9;24904:17;24897:47;24961:131;25087:4;24961:131;:::i;:::-;24953:139;;24680:419;;;:::o;25105:178::-;25245:30;25241:1;25233:6;25229:14;25222:54;25105:178;:::o;25289:366::-;25431:3;25452:67;25516:2;25511:3;25452:67;:::i;:::-;25445:74;;25528:93;25617:3;25528:93;:::i;:::-;25646:2;25641:3;25637:12;25630:19;;25289:366;;;:::o;25661:419::-;25827:4;25865:2;25854:9;25850:18;25842:26;;25914:9;25908:4;25904:20;25900:1;25889:9;25885:17;25878:47;25942:131;26068:4;25942:131;:::i;:::-;25934:139;;25661:419;;;:::o;26086:143::-;26143:5;26174:6;26168:13;26159:22;;26190:33;26217:5;26190:33;:::i;:::-;26086:143;;;;:::o;26235:351::-;26305:6;26354:2;26342:9;26333:7;26329:23;26325:32;26322:119;;;26360:79;;:::i;:::-;26322:119;26480:1;26505:64;26561:7;26552:6;26541:9;26537:22;26505:64;:::i;:::-;26495:74;;26451:128;26235:351;;;;:::o;26592:332::-;26713:4;26751:2;26740:9;26736:18;26728:26;;26764:71;26832:1;26821:9;26817:17;26808:6;26764:71;:::i;:::-;26845:72;26913:2;26902:9;26898:18;26889:6;26845:72;:::i;:::-;26592:332;;;;;:::o;26930:137::-;26984:5;27015:6;27009:13;27000:22;;27031:30;27055:5;27031:30;:::i;:::-;26930:137;;;;:::o;27073:345::-;27140:6;27189:2;27177:9;27168:7;27164:23;27160:32;27157:119;;;27195:79;;:::i;:::-;27157:119;27315:1;27340:61;27393:7;27384:6;27373:9;27369:22;27340:61;:::i;:::-;27330:71;;27286:125;27073:345;;;;:::o;27424:224::-;27564:34;27560:1;27552:6;27548:14;27541:58;27633:7;27628:2;27620:6;27616:15;27609:32;27424:224;:::o;27654:366::-;27796:3;27817:67;27881:2;27876:3;27817:67;:::i;:::-;27810:74;;27893:93;27982:3;27893:93;:::i;:::-;28011:2;28006:3;28002:12;27995:19;;27654:366;;;:::o;28026:419::-;28192:4;28230:2;28219:9;28215:18;28207:26;;28279:9;28273:4;28269:20;28265:1;28254:9;28250:17;28243:47;28307:131;28433:4;28307:131;:::i;:::-;28299:139;;28026:419;;;:::o;28451:244::-;28591:34;28587:1;28579:6;28575:14;28568:58;28660:27;28655:2;28647:6;28643:15;28636:52;28451:244;:::o;28701:366::-;28843:3;28864:67;28928:2;28923:3;28864:67;:::i;:::-;28857:74;;28940:93;29029:3;28940:93;:::i;:::-;29058:2;29053:3;29049:12;29042:19;;28701:366;;;:::o;29073:419::-;29239:4;29277:2;29266:9;29262:18;29254:26;;29326:9;29320:4;29316:20;29312:1;29301:9;29297:17;29290:47;29354:131;29480:4;29354:131;:::i;:::-;29346:139;;29073:419;;;:::o;29498:224::-;29638:34;29634:1;29626:6;29622:14;29615:58;29707:7;29702:2;29694:6;29690:15;29683:32;29498:224;:::o;29728:366::-;29870:3;29891:67;29955:2;29950:3;29891:67;:::i;:::-;29884:74;;29967:93;30056:3;29967:93;:::i;:::-;30085:2;30080:3;30076:12;30069:19;;29728:366;;;:::o;30100:419::-;30266:4;30304:2;30293:9;30289:18;30281:26;;30353:9;30347:4;30343:20;30339:1;30328:9;30324:17;30317:47;30381:131;30507:4;30381:131;:::i;:::-;30373:139;;30100:419;;;:::o;30525:348::-;30565:7;30588:20;30606:1;30588:20;:::i;:::-;30583:25;;30622:20;30640:1;30622:20;:::i;:::-;30617:25;;30810:1;30742:66;30738:74;30735:1;30732:81;30727:1;30720:9;30713:17;30709:105;30706:131;;;30817:18;;:::i;:::-;30706:131;30865:1;30862;30858:9;30847:20;;30525:348;;;;:::o;30879:180::-;30927:77;30924:1;30917:88;31024:4;31021:1;31014:15;31048:4;31045:1;31038:15;31065:185;31105:1;31122:20;31140:1;31122:20;:::i;:::-;31117:25;;31156:20;31174:1;31156:20;:::i;:::-;31151:25;;31195:1;31185:35;;31200:18;;:::i;:::-;31185:35;31242:1;31239;31235:9;31230:14;;31065:185;;;;:::o;31256:240::-;31396:34;31392:1;31384:6;31380:14;31373:58;31465:23;31460:2;31452:6;31448:15;31441:48;31256:240;:::o;31502:366::-;31644:3;31665:67;31729:2;31724:3;31665:67;:::i;:::-;31658:74;;31741:93;31830:3;31741:93;:::i;:::-;31859:2;31854:3;31850:12;31843:19;;31502:366;;;:::o;31874:419::-;32040:4;32078:2;32067:9;32063:18;32055:26;;32127:9;32121:4;32117:20;32113:1;32102:9;32098:17;32091:47;32155:131;32281:4;32155:131;:::i;:::-;32147:139;;31874:419;;;:::o;32299:239::-;32439:34;32435:1;32427:6;32423:14;32416:58;32508:22;32503:2;32495:6;32491:15;32484:47;32299:239;:::o;32544:366::-;32686:3;32707:67;32771:2;32766:3;32707:67;:::i;:::-;32700:74;;32783:93;32872:3;32783:93;:::i;:::-;32901:2;32896:3;32892:12;32885:19;;32544:366;;;:::o;32916:419::-;33082:4;33120:2;33109:9;33105:18;33097:26;;33169:9;33163:4;33159:20;33155:1;33144:9;33140:17;33133:47;33197:131;33323:4;33197:131;:::i;:::-;33189:139;;32916:419;;;:::o;33341:225::-;33481:34;33477:1;33469:6;33465:14;33458:58;33550:8;33545:2;33537:6;33533:15;33526:33;33341:225;:::o;33572:366::-;33714:3;33735:67;33799:2;33794:3;33735:67;:::i;:::-;33728:74;;33811:93;33900:3;33811:93;:::i;:::-;33929:2;33924:3;33920:12;33913:19;;33572:366;;;:::o;33944:419::-;34110:4;34148:2;34137:9;34133:18;34125:26;;34197:9;34191:4;34187:20;34183:1;34172:9;34168:17;34161:47;34225:131;34351:4;34225:131;:::i;:::-;34217:139;;33944:419;;;:::o;34369:147::-;34470:11;34507:3;34492:18;;34369:147;;;;:::o;34522:114::-;;:::o;34642:398::-;34801:3;34822:83;34903:1;34898:3;34822:83;:::i;:::-;34815:90;;34914:93;35003:3;34914:93;:::i;:::-;35032:1;35027:3;35023:11;35016:18;;34642:398;;;:::o;35046:379::-;35230:3;35252:147;35395:3;35252:147;:::i;:::-;35245:154;;35416:3;35409:10;;35046:379;;;:::o;35431:223::-;35571:34;35567:1;35559:6;35555:14;35548:58;35640:6;35635:2;35627:6;35623:15;35616:31;35431:223;:::o;35660:366::-;35802:3;35823:67;35887:2;35882:3;35823:67;:::i;:::-;35816:74;;35899:93;35988:3;35899:93;:::i;:::-;36017:2;36012:3;36008:12;36001:19;;35660:366;;;:::o;36032:419::-;36198:4;36236:2;36225:9;36221:18;36213:26;;36285:9;36279:4;36275:20;36271:1;36260:9;36256:17;36249:47;36313:131;36439:4;36313:131;:::i;:::-;36305:139;;36032:419;;;:::o;36457:221::-;36597:34;36593:1;36585:6;36581:14;36574:58;36666:4;36661:2;36653:6;36649:15;36642:29;36457:221;:::o;36684:366::-;36826:3;36847:67;36911:2;36906:3;36847:67;:::i;:::-;36840:74;;36923:93;37012:3;36923:93;:::i;:::-;37041:2;37036:3;37032:12;37025:19;;36684:366;;;:::o;37056:419::-;37222:4;37260:2;37249:9;37245:18;37237:26;;37309:9;37303:4;37299:20;37295:1;37284:9;37280:17;37273:47;37337:131;37463:4;37337:131;:::i;:::-;37329:139;;37056:419;;;:::o;37481:224::-;37621:34;37617:1;37609:6;37605:14;37598:58;37690:7;37685:2;37677:6;37673:15;37666:32;37481:224;:::o;37711:366::-;37853:3;37874:67;37938:2;37933:3;37874:67;:::i;:::-;37867:74;;37950:93;38039:3;37950:93;:::i;:::-;38068:2;38063:3;38059:12;38052:19;;37711:366;;;:::o;38083:419::-;38249:4;38287:2;38276:9;38272:18;38264:26;;38336:9;38330:4;38326:20;38322:1;38311:9;38307:17;38300:47;38364:131;38490:4;38364:131;:::i;:::-;38356:139;;38083:419;;;:::o;38508:222::-;38648:34;38644:1;38636:6;38632:14;38625:58;38717:5;38712:2;38704:6;38700:15;38693:30;38508:222;:::o;38736:366::-;38878:3;38899:67;38963:2;38958:3;38899:67;:::i;:::-;38892:74;;38975:93;39064:3;38975:93;:::i;:::-;39093:2;39088:3;39084:12;39077:19;;38736:366;;;:::o;39108:419::-;39274:4;39312:2;39301:9;39297:18;39289:26;;39361:9;39355:4;39351:20;39347:1;39336:9;39332:17;39325:47;39389:131;39515:4;39389:131;:::i;:::-;39381:139;;39108:419;;;:::o;39533:225::-;39673:34;39669:1;39661:6;39657:14;39650:58;39742:8;39737:2;39729:6;39725:15;39718:33;39533:225;:::o;39764:366::-;39906:3;39927:67;39991:2;39986:3;39927:67;:::i;:::-;39920:74;;40003:93;40092:3;40003:93;:::i;:::-;40121:2;40116:3;40112:12;40105:19;;39764:366;;;:::o;40136:419::-;40302:4;40340:2;40329:9;40325:18;40317:26;;40389:9;40383:4;40379:20;40375:1;40364:9;40360:17;40353:47;40417:131;40543:4;40417:131;:::i;:::-;40409:139;;40136:419;;;:::o;40561:179::-;40701:31;40697:1;40689:6;40685:14;40678:55;40561:179;:::o;40746:366::-;40888:3;40909:67;40973:2;40968:3;40909:67;:::i;:::-;40902:74;;40985:93;41074:3;40985:93;:::i;:::-;41103:2;41098:3;41094:12;41087:19;;40746:366;;;:::o;41118:419::-;41284:4;41322:2;41311:9;41307:18;41299:26;;41371:9;41365:4;41361:20;41357:1;41346:9;41342:17;41335:47;41399:131;41525:4;41399:131;:::i;:::-;41391:139;;41118:419;;;:::o;41543:172::-;41683:24;41679:1;41671:6;41667:14;41660:48;41543:172;:::o;41721:366::-;41863:3;41884:67;41948:2;41943:3;41884:67;:::i;:::-;41877:74;;41960:93;42049:3;41960:93;:::i;:::-;42078:2;42073:3;42069:12;42062:19;;41721:366;;;:::o;42093:419::-;42259:4;42297:2;42286:9;42282:18;42274:26;;42346:9;42340:4;42336:20;42332:1;42321:9;42317:17;42310:47;42374:131;42500:4;42374:131;:::i;:::-;42366:139;;42093:419;;;:::o;42518:294::-;42658:34;42654:1;42646:6;42642:14;42635:58;42727:34;42722:2;42714:6;42710:15;42703:59;42796:8;42791:2;42783:6;42779:15;42772:33;42518:294;:::o;42818:366::-;42960:3;42981:67;43045:2;43040:3;42981:67;:::i;:::-;42974:74;;43057:93;43146:3;43057:93;:::i;:::-;43175:2;43170:3;43166:12;43159:19;;42818:366;;;:::o;43190:419::-;43356:4;43394:2;43383:9;43379:18;43371:26;;43443:9;43437:4;43433:20;43429:1;43418:9;43414:17;43407:47;43471:131;43597:4;43471:131;:::i;:::-;43463:139;;43190:419;;;:::o;43615:174::-;43755:26;43751:1;43743:6;43739:14;43732:50;43615:174;:::o;43795:366::-;43937:3;43958:67;44022:2;44017:3;43958:67;:::i;:::-;43951:74;;44034:93;44123:3;44034:93;:::i;:::-;44152:2;44147:3;44143:12;44136:19;;43795:366;;;:::o;44167:419::-;44333:4;44371:2;44360:9;44356:18;44348:26;;44420:9;44414:4;44410:20;44406:1;44395:9;44391:17;44384:47;44448:131;44574:4;44448:131;:::i;:::-;44440:139;;44167:419;;;:::o;44592:191::-;44632:4;44652:20;44670:1;44652:20;:::i;:::-;44647:25;;44686:20;44704:1;44686:20;:::i;:::-;44681:25;;44725:1;44722;44719:8;44716:34;;;44730:18;;:::i;:::-;44716:34;44775:1;44772;44768:9;44760:17;;44592:191;;;;:::o;44789:143::-;44846:5;44877:6;44871:13;44862:22;;44893:33;44920:5;44893:33;:::i;:::-;44789:143;;;;:::o;44938:351::-;45008:6;45057:2;45045:9;45036:7;45032:23;45028:32;45025:119;;;45063:79;;:::i;:::-;45025:119;45183:1;45208:64;45264:7;45255:6;45244:9;45240:22;45208:64;:::i;:::-;45198:74;;45154:128;44938:351;;;;:::o;45295:85::-;45340:7;45369:5;45358:16;;45295:85;;;:::o;45386:158::-;45444:9;45477:61;45495:42;45504:32;45530:5;45504:32;:::i;:::-;45495:42;:::i;:::-;45477:61;:::i;:::-;45464:74;;45386:158;;;:::o;45550:147::-;45645:45;45684:5;45645:45;:::i;:::-;45640:3;45633:58;45550:147;;:::o;45703:114::-;45770:6;45804:5;45798:12;45788:22;;45703:114;;;:::o;45823:184::-;45922:11;45956:6;45951:3;45944:19;45996:4;45991:3;45987:14;45972:29;;45823:184;;;;:::o;46013:132::-;46080:4;46103:3;46095:11;;46133:4;46128:3;46124:14;46116:22;;46013:132;;;:::o;46151:108::-;46228:24;46246:5;46228:24;:::i;:::-;46223:3;46216:37;46151:108;;:::o;46265:179::-;46334:10;46355:46;46397:3;46389:6;46355:46;:::i;:::-;46433:4;46428:3;46424:14;46410:28;;46265:179;;;;:::o;46450:113::-;46520:4;46552;46547:3;46543:14;46535:22;;46450:113;;;:::o;46599:732::-;46718:3;46747:54;46795:5;46747:54;:::i;:::-;46817:86;46896:6;46891:3;46817:86;:::i;:::-;46810:93;;46927:56;46977:5;46927:56;:::i;:::-;47006:7;47037:1;47022:284;47047:6;47044:1;47041:13;47022:284;;;47123:6;47117:13;47150:63;47209:3;47194:13;47150:63;:::i;:::-;47143:70;;47236:60;47289:6;47236:60;:::i;:::-;47226:70;;47082:224;47069:1;47066;47062:9;47057:14;;47022:284;;;47026:14;47322:3;47315:10;;46723:608;;;46599:732;;;;:::o;47337:831::-;47600:4;47638:3;47627:9;47623:19;47615:27;;47652:71;47720:1;47709:9;47705:17;47696:6;47652:71;:::i;:::-;47733:80;47809:2;47798:9;47794:18;47785:6;47733:80;:::i;:::-;47860:9;47854:4;47850:20;47845:2;47834:9;47830:18;47823:48;47888:108;47991:4;47982:6;47888:108;:::i;:::-;47880:116;;48006:72;48074:2;48063:9;48059:18;48050:6;48006:72;:::i;:::-;48088:73;48156:3;48145:9;48141:19;48132:6;48088:73;:::i;:::-;47337:831;;;;;;;;:::o;48174:807::-;48423:4;48461:3;48450:9;48446:19;48438:27;;48475:71;48543:1;48532:9;48528:17;48519:6;48475:71;:::i;:::-;48556:72;48624:2;48613:9;48609:18;48600:6;48556:72;:::i;:::-;48638:80;48714:2;48703:9;48699:18;48690:6;48638:80;:::i;:::-;48728;48804:2;48793:9;48789:18;48780:6;48728:80;:::i;:::-;48818:73;48886:3;48875:9;48871:19;48862:6;48818:73;:::i;:::-;48901;48969:3;48958:9;48954:19;48945:6;48901:73;:::i;:::-;48174:807;;;;;;;;;:::o;48987:663::-;49075:6;49083;49091;49140:2;49128:9;49119:7;49115:23;49111:32;49108:119;;;49146:79;;:::i;:::-;49108:119;49266:1;49291:64;49347:7;49338:6;49327:9;49323:22;49291:64;:::i;:::-;49281:74;;49237:128;49404:2;49430:64;49486:7;49477:6;49466:9;49462:22;49430:64;:::i;:::-;49420:74;;49375:129;49543:2;49569:64;49625:7;49616:6;49605:9;49601:22;49569:64;:::i;:::-;49559:74;;49514:129;48987:663;;;;;:::o;49656:320::-;49771:4;49809:2;49798:9;49794:18;49786:26;;49822:71;49890:1;49879:9;49875:17;49866:6;49822:71;:::i;:::-;49903:66;49965:2;49954:9;49950:18;49941:6;49903:66;:::i;:::-;49656:320;;;;;:::o

Swarm Source

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