ETH Price: $3,515.23 (+0.42%)
Gas: 3 Gwei

Token

ZIPBOT (ZIPBOT)
 

Overview

Max Total Supply

10,000,000 ZIPBOT

Holders

238

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
430,124.625690527091847955 ZIPBOT

Value
$0.00
0xb79c9814b2a8d6bd420c4a31c9320c9612b6b94b
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:
ZIPBOT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// $ZIPBOT
//
// twitter.com/zipbot_xyz 
// t.me/zipbot_xyz
// zipbot.xyz
// https://zip-bot.gitbook.io/zip-bot-features/



pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

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

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

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

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 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 ZIPBOT is ERC20, Ownable {

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingWalletAddress;


    uint256 public tradingActiveBlock = 0; 
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public blacklisted;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;


    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public tokensForMarketing;


    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 OwnerForcedSwapBack(uint256 timestamp);

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


    constructor() ERC20("ZIPBOT", "ZIPBOT") {

        address newOwner = msg.sender;

        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 = 10000000 * 1e18;

        maxBuyAmount = totalSupply * 5 / 100;
        maxSellAmount = totalSupply * 5 / 100;
        maxWalletAmount = totalSupply * 5 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyMarketingFee = 25;
        buyTotalFees = buyMarketingFee;

        sellMarketingFee = 25;
        sellTotalFees = sellMarketingFee;

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

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

        marketingWalletAddress = address(newOwner);
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

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

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

    function manageBlacklisted(address wallet, bool flag) external onlyOwner {
        blacklisted[wallet] = flag;
    }

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

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

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

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

    // change the minimum amount of tokens to sell from fees
    function changeSwapTokensAtAmount(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 excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function changeBuyFees(uint256 _marketingFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyMarketingFee ;
        require(buyTotalFees <= 100, "Must keep fees at 100% or less");
    }

    function changeSellFees(uint256 _marketingFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellMarketingFee;
        require(sellTotalFees <= 100, "Must keep fees at 100% or less");
    }


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

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

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

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

        if(blockForPenaltyEnd > 0){
            require(!blacklisted[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 <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= 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 any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }

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

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 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 = tokensForMarketing;

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

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

        bool success;

        swapTokensForEth(contractBalance);

        tokensForMarketing = 0;

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


    function setMarketingAddress(address _marketingWalletAddress) external onlyOwner {
        require(_marketingWalletAddress != address(0), "_marketingWalletAddress address cannot be 0");
        marketingWalletAddress = payable(_marketingWalletAddress);
    }
    function forceConvertToETH() external onlyOwner {
        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":[],"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":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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"changeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"changeMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"changeMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"changeMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"changeSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"changeSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","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":"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":"forceConvertToETH","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":"manageBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":"_marketingWalletAddress","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":"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":"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"},{"stateMutability":"payable","type":"receive"}]

60806040525f600a55600160105f6101000a81548160ff0219169083151502179055505f601060016101000a81548160ff0219169083151502179055505f601060026101000a81548160ff02191690831515021790555034801562000062575f80fd5b506040518060400160405280600681526020017f5a4950424f5400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5a4950424f5400000000000000000000000000000000000000000000000000008152508160039081620000e0919062000db5565b508060049081620000f2919062000db5565b5050505f62000106620005a460201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026f919062000efe565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002fb919062000efe565b6040518363ffffffff1660e01b81526004016200031a92919062000f3f565b6020604051808303815f875af115801562000337573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035d919062000efe565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005ab60201b60201c565b6200040460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200063e60201b60201c565b5f6a084595161401484a0000009050606460058262000424919062000f97565b6200043091906200100e565b600d81905550606460058262000447919062000f97565b6200045391906200100e565b600e8190555060646005826200046a919062000f97565b6200047691906200100e565b600f819055506127106005826200048e919062000f97565b6200049a91906200100e565b60088190555060196014819055506014546013819055506019601281905550601254601181905550620004d5836001620005ab60201b60201c565b620004e8306001620005ab60201b60201c565b620004fd61dead6001620005ab60201b60201c565b62000510836001620006ee60201b60201c565b62000523306001620006ee60201b60201c565b6200053861dead6001620006ee60201b60201c565b8260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058a83826200083760201b60201c565b6200059b836200098160201b60201c565b5050506200128d565b5f33905090565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200063292919062001061565b60405180910390a15050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006a48282620005ab60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006fe620005a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200078f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078690620010ea565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200082b91906200110a565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089f9062001173565b60405180910390fd5b8060025f828254620008bb919062001193565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200090f919062001193565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009759190620011de565b60405180910390a35050565b62000991620005a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1990620010ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8a906200126d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bcd57607f821691505b60208210810362000be35762000be262000b88565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c0a565b62000c53868362000c0a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c9d62000c9762000c918462000c6b565b62000c74565b62000c6b565b9050919050565b5f819050919050565b62000cb88362000c7d565b62000cd062000cc78262000ca4565b84845462000c16565b825550505050565b5f90565b62000ce662000cd8565b62000cf381848462000cad565b505050565b5b8181101562000d1a5762000d0e5f8262000cdc565b60018101905062000cf9565b5050565b601f82111562000d695762000d338162000be9565b62000d3e8462000bfb565b8101602085101562000d4e578190505b62000d6662000d5d8562000bfb565b83018262000cf8565b50505b505050565b5f82821c905092915050565b5f62000d8b5f198460080262000d6e565b1980831691505092915050565b5f62000da5838362000d7a565b9150826002028217905092915050565b62000dc08262000b51565b67ffffffffffffffff81111562000ddc5762000ddb62000b5b565b5b62000de8825462000bb5565b62000df582828562000d1e565b5f60209050601f83116001811462000e2b575f841562000e16578287015190505b62000e22858262000d98565b86555062000e91565b601f19841662000e3b8662000be9565b5f5b8281101562000e645784890151825560018201915060208501945060208101905062000e3d565b8683101562000e84578489015162000e80601f89168262000d7a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ec88262000e9d565b9050919050565b62000eda8162000ebc565b811462000ee5575f80fd5b50565b5f8151905062000ef88162000ecf565b92915050565b5f6020828403121562000f165762000f1562000e99565b5b5f62000f258482850162000ee8565b91505092915050565b62000f398162000ebc565b82525050565b5f60408201905062000f545f83018562000f2e565b62000f63602083018462000f2e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000fa38262000c6b565b915062000fb08362000c6b565b925082820262000fc08162000c6b565b9150828204841483151762000fda5762000fd962000f6a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200101a8262000c6b565b9150620010278362000c6b565b9250826200103a576200103962000fe1565b5b828204905092915050565b5f8115159050919050565b6200105b8162001045565b82525050565b5f604082019050620010765f83018562000f2e565b62001085602083018462001050565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620010d26020836200108c565b9150620010df826200109c565b602082019050919050565b5f6020820190508181035f8301526200110381620010c4565b9050919050565b5f6020820190506200111f5f83018462001050565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200115b601f836200108c565b9150620011688262001125565b602082019050919050565b5f6020820190508181035f8301526200118c816200114d565b9050919050565b5f6200119f8262000c6b565b9150620011ac8362000c6b565b9250828201905080821115620011c757620011c662000f6a565b5b92915050565b620011d88162000c6b565b82525050565b5f602082019050620011f35f830184620011cd565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f620012556026836200108c565b91506200126282620011f9565b604082019050919050565b5f6020820190508181035f830152620012868162001247565b9050919050565b615036806200129b5f395ff3fe608060405260043610610296575f3560e01c806380c76ed511610159578063a9059cbb116100c0578063dbac26e911610079578063dbac26e9146109af578063dd62ed3e146109eb578063e2f4560514610a27578063ee40166e14610a51578063f2fde38b14610a7b578063fa05db0f14610aa35761029d565b8063a9059cbb14610891578063aa4bde28146108cd578063b62496f5146108f7578063bbc0c74214610933578063c02466681461095d578063d85ba063146109855761029d565b8063906e9dd011610112578063906e9dd01461078757806392136913146107af57806395d89b41146107d95780639a7a23d614610803578063a457c2d71461082b578063a62068ce146108675761029d565b806380c76ed5146106a557806381bfdcca146106cd578063875c2af8146106f557806388e765ff1461071d5780638a8c523c146107475780638da5cb5b1461075d5761029d565b8063452ed4f1116101fd5780636ddd1713116101b65780636ddd1713146105c157806370a08231146105eb578063715018a614610627578063751039fc1461063d5780637571336a146106535780637bce5a041461067b5761029d565b8063452ed4f1146104db5780634a62bb65146105055780634ffba49e1461052f5780635b3222051461054557806366d602ae1461056d5780636a486a8e146105975761029d565b80631d5cd5451161024f5780631d5cd545146103bf5780631f3fed8f146103e757806323b872dd146104115780632970d9e91461044d578063313ce56714610475578063395093511461049f5761029d565b806306fdde03146102a15780630758d924146102cb578063095ea7b3146102f557806309d6bf0a1461033157806310d5de531461035957806318160ddd146103955761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610acb565b6040516102c29190613a9a565b60405180910390f35b3480156102d6575f80fd5b506102df610b5b565b6040516102ec9190613b34565b60405180910390f35b348015610300575f80fd5b5061031b60048036038101906103169190613bc3565b610b80565b6040516103289190613c1b565b60405180910390f35b34801561033c575f80fd5b5061035760048036038101906103529190613c34565b610b9d565b005b348015610364575f80fd5b5061037f600480360381019061037a9190613c5f565b610d04565b60405161038c9190613c1b565b60405180910390f35b3480156103a0575f80fd5b506103a9610d21565b6040516103b69190613c99565b60405180910390f35b3480156103ca575f80fd5b506103e560048036038101906103e09190613c34565b610d2a565b005b3480156103f2575f80fd5b506103fb610e8c565b6040516104089190613c99565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190613cb2565b610e92565b6040516104449190613c1b565b60405180910390f35b348015610458575f80fd5b50610473600480360381019061046e9190613d2c565b610f84565b005b348015610480575f80fd5b50610489611072565b6040516104969190613d85565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190613bc3565b61107a565b6040516104d29190613c1b565b60405180910390f35b3480156104e6575f80fd5b506104ef611121565b6040516104fc9190613dad565b60405180910390f35b348015610510575f80fd5b50610519611146565b6040516105269190613c1b565b60405180910390f35b34801561053a575f80fd5b50610543611158565b005b348015610550575f80fd5b5061056b60048036038101906105669190613c34565b611264565b005b348015610578575f80fd5b506105816113c6565b60405161058e9190613c99565b60405180910390f35b3480156105a2575f80fd5b506105ab6113cc565b6040516105b89190613c99565b60405180910390f35b3480156105cc575f80fd5b506105d56113d2565b6040516105e29190613c1b565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c9190613c5f565b6113e5565b60405161061e9190613c99565b60405180910390f35b348015610632575f80fd5b5061063b61142a565b005b348015610648575f80fd5b5061065161157d565b005b34801561065e575f80fd5b5061067960048036038101906106749190613d2c565b61165a565b005b348015610686575f80fd5b5061068f6117dd565b60405161069c9190613c99565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190613e27565b6117e3565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190613c34565b61191a565b005b348015610700575f80fd5b5061071b60048036038101906107169190613c34565b611a7c565b005b348015610728575f80fd5b50610731611b6b565b60405161073e9190613c99565b60405180910390f35b348015610752575f80fd5b5061075b611b71565b005b348015610768575f80fd5b50610771611ccb565b60405161077e9190613dad565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a89190613c5f565b611cf3565b005b3480156107ba575f80fd5b506107c3611e3a565b6040516107d09190613c99565b60405180910390f35b3480156107e4575f80fd5b506107ed611e40565b6040516107fa9190613a9a565b60405180910390f35b34801561080e575f80fd5b5061082960048036038101906108249190613d2c565b611ed0565b005b348015610836575f80fd5b50610851600480360381019061084c9190613bc3565b612049565b60405161085e9190613c1b565b60405180910390f35b348015610872575f80fd5b5061087b61212f565b6040516108889190613c99565b60405180910390f35b34801561089c575f80fd5b506108b760048036038101906108b29190613bc3565b612135565b6040516108c49190613c1b565b60405180910390f35b3480156108d8575f80fd5b506108e1612152565b6040516108ee9190613c99565b60405180910390f35b348015610902575f80fd5b5061091d60048036038101906109189190613c5f565b612158565b60405161092a9190613c1b565b60405180910390f35b34801561093e575f80fd5b50610947612175565b6040516109549190613c1b565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e9190613d2c565b612188565b005b348015610990575f80fd5b506109996122c4565b6040516109a69190613c99565b60405180910390f35b3480156109ba575f80fd5b506109d560048036038101906109d09190613c5f565b6122ca565b6040516109e29190613c1b565b60405180910390f35b3480156109f6575f80fd5b50610a116004803603810190610a0c9190613e84565b6122e7565b604051610a1e9190613c99565b60405180910390f35b348015610a32575f80fd5b50610a3b612369565b604051610a489190613c99565b60405180910390f35b348015610a5c575f80fd5b50610a6561236f565b604051610a729190613c99565b60405180910390f35b348015610a86575f80fd5b50610aa16004803603810190610a9c9190613c5f565b612375565b005b348015610aae575f80fd5b50610ac96004803603810190610ac49190613c34565b612537565b005b606060038054610ada90613eef565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0690613eef565b8015610b515780601f10610b2857610100808354040283529160200191610b51565b820191905f5260205f20905b815481529060010190602001808311610b3457829003601f168201915b5050505050905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b93610b8c612626565b848461262d565b6001905092915050565b610ba5612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613f69565b60405180910390fd5b620186a06001610c41610d21565b610c4b9190613fb4565b610c559190614022565b811015610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e906140c2565b60405180910390fd5b6103e86001610ca4610d21565b610cae9190613fb4565b610cb89190614022565b811115610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190614150565b60405180910390fd5b8060088190555050565b6017602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b610d32612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790613f69565b60405180910390fd5b670de0b6b3a76400006103e86002610dd6610d21565b610de09190613fb4565b610dea9190614022565b610df49190614022565b811015610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d906141de565b60405180910390fd5b670de0b6b3a764000081610e4a9190613fb4565b600d819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600d54604051610e819190613c99565b60405180910390a150565b60155481565b5f610e9e8484846127f0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ee5612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061426c565b60405180910390fd5b610f7885610f70612626565b85840361262d565b60019150509392505050565b610f8c612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613f69565b60405180910390fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f611117611086612626565b848460015f611093612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611112919061428a565b61262d565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900460ff1681565b611160612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613f69565b60405180910390fd5b6001600760146101000a81548160ff02191690831515021790555061121161334e565b5f600760146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb324260405161125a9190613c99565b60405180910390a1565b61126c612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613f69565b60405180910390fd5b670de0b6b3a76400006103e86002611310610d21565b61131a9190613fb4565b6113249190614022565b61132e9190614022565b811015611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679061432d565b60405180910390fd5b670de0b6b3a7640000816113849190613fb4565b600e819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e600e546040516113bb9190613c99565b60405180910390a150565b600e5481565b60115481565b601060029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611432612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611585612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a90613f69565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611662612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613f69565b60405180910390fd5b806117855760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906143bb565b60405180910390fd5b5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60145481565b6117eb612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613f69565b60405180910390fd5b5f5b838390508110156119145781600c5f86868581811061189d5761189c6143d9565b5b90506020020160208101906118b29190613c5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061190c90614406565b91505061187b565b50505050565b611922612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790613f69565b60405180910390fd5b670de0b6b3a76400006103e860036119c6610d21565b6119d09190613fb4565b6119da9190614022565b6119e49190614022565b811015611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d906144bd565b60405180910390fd5b670de0b6b3a764000081611a3a9190613fb4565b600f819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600f54604051611a719190613c99565b60405180910390a150565b611a84612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0990613f69565b60405180910390fd5b8060128190555060125460118190555060646011541115611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f90614525565b60405180910390fd5b50565b600d5481565b611b79612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90613f69565b60405180910390fd5b601060019054906101000a900460ff1615611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e9061458d565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555043600a81905550600a54600b819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cfb612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8090613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee9061461b565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b606060048054611e4f90613eef565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7b90613eef565b8015611ec65780601f10611e9d57610100808354040283529160200191611ec6565b820191905f5260205f20905b815481529060010190602001808311611ea957829003601f168201915b5050505050905090565b611ed8612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90613f69565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec906146a9565b60405180910390fd5b611fff8282613442565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f8060015f612056612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614737565b60405180910390fd5b61212461211b612626565b8585840361262d565b600191505092915050565b600b5481565b5f612148612141612626565b84846127f0565b6001905092915050565b600f5481565b6018602052805f5260405f205f915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b612190612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221590613f69565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122b89190613c1b565b60405180910390a25050565b60135481565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600a5481565b61237d612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61253f612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c490613f69565b60405180910390fd5b8060148190555060145460138190555060646013541115612623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261a90614525565b60405180910390fd5b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361269b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269290614853565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612700906148e1565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127e39190613c99565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128559061496f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c3906149fd565b60405180910390fd5b5f811161290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290590614a65565b60405180910390fd5b601060019054906101000a900460ff166129fd5760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129bd575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f390614acd565b60405180910390fd5b5b5f600b541115612b0757600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580612a8f5750612a60611ccb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612ac7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90614b81565b60405180910390fd5b5b60105f9054906101000a900460ff1615612f8957612b23611ccb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b915750612b61611ccb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c03575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c56575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ca9575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f885760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612df257600d54811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614c0f565b60405180910390fd5b600f54612da1836113e5565b82612dac919061428a565b1115612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de490614c77565b60405180910390fd5b612f87565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e8f575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ede57600e54811115612ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed090614d05565b60405180910390fd5b612f86565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f8557600f54612f38836113e5565b82612f43919061428a565b1115612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b90614c77565b60405180910390fd5b5b5b5b5b5b5f612f93306113e5565b90505f6008548210159050808015612fb75750601060029054906101000a900460ff165b8015612fd05750600760149054906101000a900460ff16155b8015613023575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613076575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130c9575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561310c576001600760146101000a81548160ff0219169083151502179055506130f161334e565b5f600760146101000a81548160ff0219169083151502179055505b5f6001905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806131ac575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156131b5575f90505b5f811561333a5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561321357505f601154115b1561326b576064601154866132289190613fb4565b6132329190614022565b9050601154601254826132459190613fb4565b61324f9190614022565b60155f82825461325f919061428a565b92505081905550613317565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132c257505f601354115b15613316576064601354866132d79190613fb4565b6132e19190614022565b9050601354601454826132f49190613fb4565b6132fe9190614022565b60155f82825461330e919061428a565b925050819055505b5b5f81111561332b5761332a8730836134ea565b5b80856133379190614d23565b94505b6133458787876134ea565b50505050505050565b5f613358306113e5565b90505f60155490505f82148061336d57505f81145b15613379575050613440565b60146008546133889190613fb4565b8211156133a157601460085461339e9190613fb4565b91505b5f6133ab83613749565b5f60158190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133f790614d83565b5f6040518083038185875af1925050503d805f8114613431576040519150601f19603f3d011682016040523d82523d5f602084013e613436565b606091505b5050809150505050505b565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506134a0828261397f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354f9061496f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd906149fd565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364090614e07565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136d7919061428a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161373b9190613c99565b60405180910390a350505050565b5f600267ffffffffffffffff81111561376557613764614e25565b5b6040519080825280602002602001820160405280156137935781602001602082028036833780820191505090505b50905030815f815181106137aa576137a96143d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138729190614e66565b81600181518110613886576138856143d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138ec3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461262d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161394e959493929190614f81565b5f604051808303815f87803b158015613965575f80fd5b505af1158015613977573d5f803e3d5ffd5b505050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613a04929190614fd9565b60405180910390a15050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613a47578082015181840152602081019050613a2c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613a6c82613a10565b613a768185613a1a565b9350613a86818560208601613a2a565b613a8f81613a52565b840191505092915050565b5f6020820190508181035f830152613ab28184613a62565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613afc613af7613af284613aba565b613ad9565b613aba565b9050919050565b5f613b0d82613ae2565b9050919050565b5f613b1e82613b03565b9050919050565b613b2e81613b14565b82525050565b5f602082019050613b475f830184613b25565b92915050565b5f80fd5b5f80fd5b5f613b5f82613aba565b9050919050565b613b6f81613b55565b8114613b79575f80fd5b50565b5f81359050613b8a81613b66565b92915050565b5f819050919050565b613ba281613b90565b8114613bac575f80fd5b50565b5f81359050613bbd81613b99565b92915050565b5f8060408385031215613bd957613bd8613b4d565b5b5f613be685828601613b7c565b9250506020613bf785828601613baf565b9150509250929050565b5f8115159050919050565b613c1581613c01565b82525050565b5f602082019050613c2e5f830184613c0c565b92915050565b5f60208284031215613c4957613c48613b4d565b5b5f613c5684828501613baf565b91505092915050565b5f60208284031215613c7457613c73613b4d565b5b5f613c8184828501613b7c565b91505092915050565b613c9381613b90565b82525050565b5f602082019050613cac5f830184613c8a565b92915050565b5f805f60608486031215613cc957613cc8613b4d565b5b5f613cd686828701613b7c565b9350506020613ce786828701613b7c565b9250506040613cf886828701613baf565b9150509250925092565b613d0b81613c01565b8114613d15575f80fd5b50565b5f81359050613d2681613d02565b92915050565b5f8060408385031215613d4257613d41613b4d565b5b5f613d4f85828601613b7c565b9250506020613d6085828601613d18565b9150509250929050565b5f60ff82169050919050565b613d7f81613d6a565b82525050565b5f602082019050613d985f830184613d76565b92915050565b613da781613b55565b82525050565b5f602082019050613dc05f830184613d9e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613de757613de6613dc6565b5b8235905067ffffffffffffffff811115613e0457613e03613dca565b5b602083019150836020820283011115613e2057613e1f613dce565b5b9250929050565b5f805f60408486031215613e3e57613e3d613b4d565b5b5f84013567ffffffffffffffff811115613e5b57613e5a613b51565b5b613e6786828701613dd2565b93509350506020613e7a86828701613d18565b9150509250925092565b5f8060408385031215613e9a57613e99613b4d565b5b5f613ea785828601613b7c565b9250506020613eb885828601613b7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f0657607f821691505b602082108103613f1957613f18613ec2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f53602083613a1a565b9150613f5e82613f1f565b602082019050919050565b5f6020820190508181035f830152613f8081613f47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fbe82613b90565b9150613fc983613b90565b9250828202613fd781613b90565b91508282048414831517613fee57613fed613f87565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61402c82613b90565b915061403783613b90565b92508261404757614046613ff5565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6140ac603583613a1a565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61413a603483613a1a565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b5f6141c8602983613a1a565b91506141d38261416e565b604082019050919050565b5f6020820190508181035f8301526141f5816141bc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614256602883613a1a565b9150614261826141fc565b604082019050919050565b5f6020820190508181035f8301526142838161424a565b9050919050565b5f61429482613b90565b915061429f83613b90565b92508282019050808211156142b7576142b6613f87565b5b92915050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b5f614317602a83613a1a565b9150614322826142bd565b604082019050919050565b5f6020820190508181035f8301526143448161430b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f6143a5602783613a1a565b91506143b08261434b565b604082019050919050565b5f6020820190508181035f8301526143d281614399565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61441082613b90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361444257614441613f87565b5b600182019050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f6144a7602c83613a1a565b91506144b28261444d565b604082019050919050565b5f6020820190508181035f8301526144d48161449b565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c65737300005f82015250565b5f61450f601e83613a1a565b915061451a826144db565b602082019050919050565b5f6020820190508181035f83015261453c81614503565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f614577601783613a1a565b915061458282614543565b602082019050919050565b5f6020820190508181035f8301526145a48161456b565b9050919050565b7f5f6d61726b6574696e6757616c6c6574416464726573732061646472657373205f8201527f63616e6e6f742062652030000000000000000000000000000000000000000000602082015250565b5f614605602b83613a1a565b9150614610826145ab565b604082019050919050565b5f6020820190508181035f830152614632816145f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614693603983613a1a565b915061469e82614639565b604082019050919050565b5f6020820190508181035f8301526146c081614687565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614721602583613a1a565b915061472c826146c7565b604082019050919050565b5f6020820190508181035f83015261474e81614715565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147af602683613a1a565b91506147ba82614755565b604082019050919050565b5f6020820190508181035f8301526147dc816147a3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61483d602483613a1a565b9150614848826147e3565b604082019050919050565b5f6020820190508181035f83015261486a81614831565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148cb602283613a1a565b91506148d682614871565b604082019050919050565b5f6020820190508181035f8301526148f8816148bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614959602583613a1a565b9150614964826148ff565b604082019050919050565b5f6020820190508181035f8301526149868161494d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6149e7602383613a1a565b91506149f28261498d565b604082019050919050565b5f6020820190508181035f830152614a14816149db565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614a4f601d83613a1a565b9150614a5a82614a1b565b602082019050919050565b5f6020820190508181035f830152614a7c81614a43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614ab7601683613a1a565b9150614ac282614a83565b602082019050919050565b5f6020820190508181035f830152614ae481614aab565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f5f8201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b5f614b6b604683613a1a565b9150614b7682614aeb565b606082019050919050565b5f6020820190508181035f830152614b9881614b5f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614bf9602883613a1a565b9150614c0482614b9f565b604082019050919050565b5f6020820190508181035f830152614c2681614bed565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614c61601883613a1a565b9150614c6c82614c2d565b602082019050919050565b5f6020820190508181035f830152614c8e81614c55565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614cef602a83613a1a565b9150614cfa82614c95565b604082019050919050565b5f6020820190508181035f830152614d1c81614ce3565b9050919050565b5f614d2d82613b90565b9150614d3883613b90565b9250828203905081811115614d5057614d4f613f87565b5b92915050565b5f81905092915050565b50565b5f614d6e5f83614d56565b9150614d7982614d60565b5f82019050919050565b5f614d8d82614d63565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614df1602683613a1a565b9150614dfc82614d97565b604082019050919050565b5f6020820190508181035f830152614e1e81614de5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614e6081613b66565b92915050565b5f60208284031215614e7b57614e7a613b4d565b5b5f614e8884828501614e52565b91505092915050565b5f819050919050565b5f614eb4614eaf614eaa84614e91565b613ad9565b613b90565b9050919050565b614ec481614e9a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614efc81613b55565b82525050565b5f614f0d8383614ef3565b60208301905092915050565b5f602082019050919050565b5f614f2f82614eca565b614f398185614ed4565b9350614f4483614ee4565b805f5b83811015614f74578151614f5b8882614f02565b9750614f6683614f19565b925050600181019050614f47565b5085935050505092915050565b5f60a082019050614f945f830188613c8a565b614fa16020830187614ebb565b8181036040830152614fb38186614f25565b9050614fc26060830185613d9e565b614fcf6080830184613c8a565b9695505050505050565b5f604082019050614fec5f830185613d9e565b614ff96020830184613c0c565b939250505056fea26469706673582212202b988cbea5db62024ae88fa37dbc4a3926af644034cbb658337408802fb4a4ab64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610296575f3560e01c806380c76ed511610159578063a9059cbb116100c0578063dbac26e911610079578063dbac26e9146109af578063dd62ed3e146109eb578063e2f4560514610a27578063ee40166e14610a51578063f2fde38b14610a7b578063fa05db0f14610aa35761029d565b8063a9059cbb14610891578063aa4bde28146108cd578063b62496f5146108f7578063bbc0c74214610933578063c02466681461095d578063d85ba063146109855761029d565b8063906e9dd011610112578063906e9dd01461078757806392136913146107af57806395d89b41146107d95780639a7a23d614610803578063a457c2d71461082b578063a62068ce146108675761029d565b806380c76ed5146106a557806381bfdcca146106cd578063875c2af8146106f557806388e765ff1461071d5780638a8c523c146107475780638da5cb5b1461075d5761029d565b8063452ed4f1116101fd5780636ddd1713116101b65780636ddd1713146105c157806370a08231146105eb578063715018a614610627578063751039fc1461063d5780637571336a146106535780637bce5a041461067b5761029d565b8063452ed4f1146104db5780634a62bb65146105055780634ffba49e1461052f5780635b3222051461054557806366d602ae1461056d5780636a486a8e146105975761029d565b80631d5cd5451161024f5780631d5cd545146103bf5780631f3fed8f146103e757806323b872dd146104115780632970d9e91461044d578063313ce56714610475578063395093511461049f5761029d565b806306fdde03146102a15780630758d924146102cb578063095ea7b3146102f557806309d6bf0a1461033157806310d5de531461035957806318160ddd146103955761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610acb565b6040516102c29190613a9a565b60405180910390f35b3480156102d6575f80fd5b506102df610b5b565b6040516102ec9190613b34565b60405180910390f35b348015610300575f80fd5b5061031b60048036038101906103169190613bc3565b610b80565b6040516103289190613c1b565b60405180910390f35b34801561033c575f80fd5b5061035760048036038101906103529190613c34565b610b9d565b005b348015610364575f80fd5b5061037f600480360381019061037a9190613c5f565b610d04565b60405161038c9190613c1b565b60405180910390f35b3480156103a0575f80fd5b506103a9610d21565b6040516103b69190613c99565b60405180910390f35b3480156103ca575f80fd5b506103e560048036038101906103e09190613c34565b610d2a565b005b3480156103f2575f80fd5b506103fb610e8c565b6040516104089190613c99565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190613cb2565b610e92565b6040516104449190613c1b565b60405180910390f35b348015610458575f80fd5b50610473600480360381019061046e9190613d2c565b610f84565b005b348015610480575f80fd5b50610489611072565b6040516104969190613d85565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190613bc3565b61107a565b6040516104d29190613c1b565b60405180910390f35b3480156104e6575f80fd5b506104ef611121565b6040516104fc9190613dad565b60405180910390f35b348015610510575f80fd5b50610519611146565b6040516105269190613c1b565b60405180910390f35b34801561053a575f80fd5b50610543611158565b005b348015610550575f80fd5b5061056b60048036038101906105669190613c34565b611264565b005b348015610578575f80fd5b506105816113c6565b60405161058e9190613c99565b60405180910390f35b3480156105a2575f80fd5b506105ab6113cc565b6040516105b89190613c99565b60405180910390f35b3480156105cc575f80fd5b506105d56113d2565b6040516105e29190613c1b565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c9190613c5f565b6113e5565b60405161061e9190613c99565b60405180910390f35b348015610632575f80fd5b5061063b61142a565b005b348015610648575f80fd5b5061065161157d565b005b34801561065e575f80fd5b5061067960048036038101906106749190613d2c565b61165a565b005b348015610686575f80fd5b5061068f6117dd565b60405161069c9190613c99565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190613e27565b6117e3565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190613c34565b61191a565b005b348015610700575f80fd5b5061071b60048036038101906107169190613c34565b611a7c565b005b348015610728575f80fd5b50610731611b6b565b60405161073e9190613c99565b60405180910390f35b348015610752575f80fd5b5061075b611b71565b005b348015610768575f80fd5b50610771611ccb565b60405161077e9190613dad565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a89190613c5f565b611cf3565b005b3480156107ba575f80fd5b506107c3611e3a565b6040516107d09190613c99565b60405180910390f35b3480156107e4575f80fd5b506107ed611e40565b6040516107fa9190613a9a565b60405180910390f35b34801561080e575f80fd5b5061082960048036038101906108249190613d2c565b611ed0565b005b348015610836575f80fd5b50610851600480360381019061084c9190613bc3565b612049565b60405161085e9190613c1b565b60405180910390f35b348015610872575f80fd5b5061087b61212f565b6040516108889190613c99565b60405180910390f35b34801561089c575f80fd5b506108b760048036038101906108b29190613bc3565b612135565b6040516108c49190613c1b565b60405180910390f35b3480156108d8575f80fd5b506108e1612152565b6040516108ee9190613c99565b60405180910390f35b348015610902575f80fd5b5061091d60048036038101906109189190613c5f565b612158565b60405161092a9190613c1b565b60405180910390f35b34801561093e575f80fd5b50610947612175565b6040516109549190613c1b565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e9190613d2c565b612188565b005b348015610990575f80fd5b506109996122c4565b6040516109a69190613c99565b60405180910390f35b3480156109ba575f80fd5b506109d560048036038101906109d09190613c5f565b6122ca565b6040516109e29190613c1b565b60405180910390f35b3480156109f6575f80fd5b50610a116004803603810190610a0c9190613e84565b6122e7565b604051610a1e9190613c99565b60405180910390f35b348015610a32575f80fd5b50610a3b612369565b604051610a489190613c99565b60405180910390f35b348015610a5c575f80fd5b50610a6561236f565b604051610a729190613c99565b60405180910390f35b348015610a86575f80fd5b50610aa16004803603810190610a9c9190613c5f565b612375565b005b348015610aae575f80fd5b50610ac96004803603810190610ac49190613c34565b612537565b005b606060038054610ada90613eef565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0690613eef565b8015610b515780601f10610b2857610100808354040283529160200191610b51565b820191905f5260205f20905b815481529060010190602001808311610b3457829003601f168201915b5050505050905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b93610b8c612626565b848461262d565b6001905092915050565b610ba5612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613f69565b60405180910390fd5b620186a06001610c41610d21565b610c4b9190613fb4565b610c559190614022565b811015610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e906140c2565b60405180910390fd5b6103e86001610ca4610d21565b610cae9190613fb4565b610cb89190614022565b811115610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190614150565b60405180910390fd5b8060088190555050565b6017602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b610d32612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790613f69565b60405180910390fd5b670de0b6b3a76400006103e86002610dd6610d21565b610de09190613fb4565b610dea9190614022565b610df49190614022565b811015610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d906141de565b60405180910390fd5b670de0b6b3a764000081610e4a9190613fb4565b600d819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600d54604051610e819190613c99565b60405180910390a150565b60155481565b5f610e9e8484846127f0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ee5612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061426c565b60405180910390fd5b610f7885610f70612626565b85840361262d565b60019150509392505050565b610f8c612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613f69565b60405180910390fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f611117611086612626565b848460015f611093612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611112919061428a565b61262d565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900460ff1681565b611160612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613f69565b60405180910390fd5b6001600760146101000a81548160ff02191690831515021790555061121161334e565b5f600760146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb324260405161125a9190613c99565b60405180910390a1565b61126c612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613f69565b60405180910390fd5b670de0b6b3a76400006103e86002611310610d21565b61131a9190613fb4565b6113249190614022565b61132e9190614022565b811015611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679061432d565b60405180910390fd5b670de0b6b3a7640000816113849190613fb4565b600e819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e600e546040516113bb9190613c99565b60405180910390a150565b600e5481565b60115481565b601060029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611432612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611585612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a90613f69565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611662612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613f69565b60405180910390fd5b806117855760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906143bb565b60405180910390fd5b5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60145481565b6117eb612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613f69565b60405180910390fd5b5f5b838390508110156119145781600c5f86868581811061189d5761189c6143d9565b5b90506020020160208101906118b29190613c5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061190c90614406565b91505061187b565b50505050565b611922612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790613f69565b60405180910390fd5b670de0b6b3a76400006103e860036119c6610d21565b6119d09190613fb4565b6119da9190614022565b6119e49190614022565b811015611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d906144bd565b60405180910390fd5b670de0b6b3a764000081611a3a9190613fb4565b600f819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600f54604051611a719190613c99565b60405180910390a150565b611a84612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0990613f69565b60405180910390fd5b8060128190555060125460118190555060646011541115611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f90614525565b60405180910390fd5b50565b600d5481565b611b79612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90613f69565b60405180910390fd5b601060019054906101000a900460ff1615611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e9061458d565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555043600a81905550600a54600b819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cfb612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8090613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee9061461b565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b606060048054611e4f90613eef565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7b90613eef565b8015611ec65780601f10611e9d57610100808354040283529160200191611ec6565b820191905f5260205f20905b815481529060010190602001808311611ea957829003601f168201915b5050505050905090565b611ed8612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90613f69565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec906146a9565b60405180910390fd5b611fff8282613442565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f8060015f612056612626565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614737565b60405180910390fd5b61212461211b612626565b8585840361262d565b600191505092915050565b600b5481565b5f612148612141612626565b84846127f0565b6001905092915050565b600f5481565b6018602052805f5260405f205f915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b612190612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221590613f69565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122b89190613c1b565b60405180910390a25050565b60135481565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b600a5481565b61237d612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613f69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61253f612626565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c490613f69565b60405180910390fd5b8060148190555060145460138190555060646013541115612623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261a90614525565b60405180910390fd5b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361269b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269290614853565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612700906148e1565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127e39190613c99565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128559061496f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c3906149fd565b60405180910390fd5b5f811161290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290590614a65565b60405180910390fd5b601060019054906101000a900460ff166129fd5760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129bd575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f390614acd565b60405180910390fd5b5b5f600b541115612b0757600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580612a8f5750612a60611ccb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612ac7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afd90614b81565b60405180910390fd5b5b60105f9054906101000a900460ff1615612f8957612b23611ccb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b915750612b61611ccb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c03575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c56575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ca9575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f885760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612df257600d54811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614c0f565b60405180910390fd5b600f54612da1836113e5565b82612dac919061428a565b1115612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de490614c77565b60405180910390fd5b612f87565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e8f575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ede57600e54811115612ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed090614d05565b60405180910390fd5b612f86565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f8557600f54612f38836113e5565b82612f43919061428a565b1115612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b90614c77565b60405180910390fd5b5b5b5b5b5b5f612f93306113e5565b90505f6008548210159050808015612fb75750601060029054906101000a900460ff165b8015612fd05750600760149054906101000a900460ff16155b8015613023575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613076575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130c9575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561310c576001600760146101000a81548160ff0219169083151502179055506130f161334e565b5f600760146101000a81548160ff0219169083151502179055505b5f6001905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806131ac575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156131b5575f90505b5f811561333a5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561321357505f601154115b1561326b576064601154866132289190613fb4565b6132329190614022565b9050601154601254826132459190613fb4565b61324f9190614022565b60155f82825461325f919061428a565b92505081905550613317565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132c257505f601354115b15613316576064601354866132d79190613fb4565b6132e19190614022565b9050601354601454826132f49190613fb4565b6132fe9190614022565b60155f82825461330e919061428a565b925050819055505b5b5f81111561332b5761332a8730836134ea565b5b80856133379190614d23565b94505b6133458787876134ea565b50505050505050565b5f613358306113e5565b90505f60155490505f82148061336d57505f81145b15613379575050613440565b60146008546133889190613fb4565b8211156133a157601460085461339e9190613fb4565b91505b5f6133ab83613749565b5f60158190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133f790614d83565b5f6040518083038185875af1925050503d805f8114613431576040519150601f19603f3d011682016040523d82523d5f602084013e613436565b606091505b5050809150505050505b565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506134a0828261397f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354f9061496f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd906149fd565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364090614e07565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136d7919061428a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161373b9190613c99565b60405180910390a350505050565b5f600267ffffffffffffffff81111561376557613764614e25565b5b6040519080825280602002602001820160405280156137935781602001602082028036833780820191505090505b50905030815f815181106137aa576137a96143d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138729190614e66565b81600181518110613886576138856143d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138ec3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461262d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161394e959493929190614f81565b5f604051808303815f87803b158015613965575f80fd5b505af1158015613977573d5f803e3d5ffd5b505050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613a04929190614fd9565b60405180910390a15050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613a47578082015181840152602081019050613a2c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613a6c82613a10565b613a768185613a1a565b9350613a86818560208601613a2a565b613a8f81613a52565b840191505092915050565b5f6020820190508181035f830152613ab28184613a62565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613afc613af7613af284613aba565b613ad9565b613aba565b9050919050565b5f613b0d82613ae2565b9050919050565b5f613b1e82613b03565b9050919050565b613b2e81613b14565b82525050565b5f602082019050613b475f830184613b25565b92915050565b5f80fd5b5f80fd5b5f613b5f82613aba565b9050919050565b613b6f81613b55565b8114613b79575f80fd5b50565b5f81359050613b8a81613b66565b92915050565b5f819050919050565b613ba281613b90565b8114613bac575f80fd5b50565b5f81359050613bbd81613b99565b92915050565b5f8060408385031215613bd957613bd8613b4d565b5b5f613be685828601613b7c565b9250506020613bf785828601613baf565b9150509250929050565b5f8115159050919050565b613c1581613c01565b82525050565b5f602082019050613c2e5f830184613c0c565b92915050565b5f60208284031215613c4957613c48613b4d565b5b5f613c5684828501613baf565b91505092915050565b5f60208284031215613c7457613c73613b4d565b5b5f613c8184828501613b7c565b91505092915050565b613c9381613b90565b82525050565b5f602082019050613cac5f830184613c8a565b92915050565b5f805f60608486031215613cc957613cc8613b4d565b5b5f613cd686828701613b7c565b9350506020613ce786828701613b7c565b9250506040613cf886828701613baf565b9150509250925092565b613d0b81613c01565b8114613d15575f80fd5b50565b5f81359050613d2681613d02565b92915050565b5f8060408385031215613d4257613d41613b4d565b5b5f613d4f85828601613b7c565b9250506020613d6085828601613d18565b9150509250929050565b5f60ff82169050919050565b613d7f81613d6a565b82525050565b5f602082019050613d985f830184613d76565b92915050565b613da781613b55565b82525050565b5f602082019050613dc05f830184613d9e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613de757613de6613dc6565b5b8235905067ffffffffffffffff811115613e0457613e03613dca565b5b602083019150836020820283011115613e2057613e1f613dce565b5b9250929050565b5f805f60408486031215613e3e57613e3d613b4d565b5b5f84013567ffffffffffffffff811115613e5b57613e5a613b51565b5b613e6786828701613dd2565b93509350506020613e7a86828701613d18565b9150509250925092565b5f8060408385031215613e9a57613e99613b4d565b5b5f613ea785828601613b7c565b9250506020613eb885828601613b7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f0657607f821691505b602082108103613f1957613f18613ec2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f53602083613a1a565b9150613f5e82613f1f565b602082019050919050565b5f6020820190508181035f830152613f8081613f47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fbe82613b90565b9150613fc983613b90565b9250828202613fd781613b90565b91508282048414831517613fee57613fed613f87565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61402c82613b90565b915061403783613b90565b92508261404757614046613ff5565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6140ac603583613a1a565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61413a603483613a1a565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b5f6141c8602983613a1a565b91506141d38261416e565b604082019050919050565b5f6020820190508181035f8301526141f5816141bc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614256602883613a1a565b9150614261826141fc565b604082019050919050565b5f6020820190508181035f8301526142838161424a565b9050919050565b5f61429482613b90565b915061429f83613b90565b92508282019050808211156142b7576142b6613f87565b5b92915050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b5f614317602a83613a1a565b9150614322826142bd565b604082019050919050565b5f6020820190508181035f8301526143448161430b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f6143a5602783613a1a565b91506143b08261434b565b604082019050919050565b5f6020820190508181035f8301526143d281614399565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61441082613b90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361444257614441613f87565b5b600182019050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f6144a7602c83613a1a565b91506144b28261444d565b604082019050919050565b5f6020820190508181035f8301526144d48161449b565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c65737300005f82015250565b5f61450f601e83613a1a565b915061451a826144db565b602082019050919050565b5f6020820190508181035f83015261453c81614503565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f614577601783613a1a565b915061458282614543565b602082019050919050565b5f6020820190508181035f8301526145a48161456b565b9050919050565b7f5f6d61726b6574696e6757616c6c6574416464726573732061646472657373205f8201527f63616e6e6f742062652030000000000000000000000000000000000000000000602082015250565b5f614605602b83613a1a565b9150614610826145ab565b604082019050919050565b5f6020820190508181035f830152614632816145f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614693603983613a1a565b915061469e82614639565b604082019050919050565b5f6020820190508181035f8301526146c081614687565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614721602583613a1a565b915061472c826146c7565b604082019050919050565b5f6020820190508181035f83015261474e81614715565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147af602683613a1a565b91506147ba82614755565b604082019050919050565b5f6020820190508181035f8301526147dc816147a3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61483d602483613a1a565b9150614848826147e3565b604082019050919050565b5f6020820190508181035f83015261486a81614831565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148cb602283613a1a565b91506148d682614871565b604082019050919050565b5f6020820190508181035f8301526148f8816148bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614959602583613a1a565b9150614964826148ff565b604082019050919050565b5f6020820190508181035f8301526149868161494d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6149e7602383613a1a565b91506149f28261498d565b604082019050919050565b5f6020820190508181035f830152614a14816149db565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614a4f601d83613a1a565b9150614a5a82614a1b565b602082019050919050565b5f6020820190508181035f830152614a7c81614a43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614ab7601683613a1a565b9150614ac282614a83565b602082019050919050565b5f6020820190508181035f830152614ae481614aab565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f5f8201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b5f614b6b604683613a1a565b9150614b7682614aeb565b606082019050919050565b5f6020820190508181035f830152614b9881614b5f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614bf9602883613a1a565b9150614c0482614b9f565b604082019050919050565b5f6020820190508181035f830152614c2681614bed565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614c61601883613a1a565b9150614c6c82614c2d565b602082019050919050565b5f6020820190508181035f830152614c8e81614c55565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614cef602a83613a1a565b9150614cfa82614c95565b604082019050919050565b5f6020820190508181035f830152614d1c81614ce3565b9050919050565b5f614d2d82613b90565b9150614d3883613b90565b9250828203905081811115614d5057614d4f613f87565b5b92915050565b5f81905092915050565b50565b5f614d6e5f83614d56565b9150614d7982614d60565b5f82019050919050565b5f614d8d82614d63565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614df1602683613a1a565b9150614dfc82614d97565b604082019050919050565b5f6020820190508181035f830152614e1e81614de5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614e6081613b66565b92915050565b5f60208284031215614e7b57614e7a613b4d565b5b5f614e8884828501614e52565b91505092915050565b5f819050919050565b5f614eb4614eaf614eaa84614e91565b613ad9565b613b90565b9050919050565b614ec481614e9a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614efc81613b55565b82525050565b5f614f0d8383614ef3565b60208301905092915050565b5f602082019050919050565b5f614f2f82614eca565b614f398185614ed4565b9350614f4483614ee4565b805f5b83811015614f74578151614f5b8882614f02565b9750614f6683614f19565b925050600181019050614f47565b5085935050505092915050565b5f60a082019050614f945f830188613c8a565b614fa16020830187614ebb565b8181036040830152614fb38186614f25565b9050614fc26060830185613d9e565b614fcf6080830184613c8a565b9695505050505050565b5f604082019050614fec5f830185613d9e565b614ff96020830184613c0c565b939250505056fea26469706673582212202b988cbea5db62024ae88fa37dbc4a3926af644034cbb658337408802fb4a4ab64736f6c63430008140033

Deployed Bytecode Sourcemap

10191:12016:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4080:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10234:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4994:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14921:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11021:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4401:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14008:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10917:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5171:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13667:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4300:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5671:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10268:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10651:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22020:182;;;;;;;;;;;;;:::i;:::-;;14285:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10579:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10773;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10731:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4517:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8715:150;;;;;;;;;;;;;:::i;:::-;;13544:115;;;;;;;;;;;;;:::i;:::-;;15496:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10880:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13793:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14567:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16553:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10545:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13236:300;;;;;;;;;;;;;:::i;:::-;;8501:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21753:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10808:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4188:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15764:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5894:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10454:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4652:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11094:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10691:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16797:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10846:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10494:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4835:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10326:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10409:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8873:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16315:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4080:100;4134:13;4167:5;4160:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4080:100;:::o;10234:27::-;;;;;;;;;;;;;:::o;4994:169::-;5077:4;5094:39;5103:12;:10;:12::i;:::-;5117:7;5126:6;5094:8;:39::i;:::-;5151:4;5144:11;;4994:169;;;;:::o;14921:350::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15045:6:::1;15041:1;15025:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15012:9;:39;;15004:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15161:4;15157:1;15141:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15128:9;:37;;15120:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15254:9;15233:18;:30;;;;14921:350:::0;:::o;11021:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4401:108::-;4462:7;4489:12;;4482:19;;4401:108;:::o;14008:269::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14127:4:::1;14121;14117:1;14101:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14100:31;;;;:::i;:::-;14090:6;:41;;14082:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14213:6;14203;:17;;;;:::i;:::-;14188:12;:32;;;;14236:33;14256:12;;14236:33;;;;;;:::i;:::-;;;;;;;;14008:269:::0;:::o;10917:33::-;;;;:::o;5171:492::-;5311:4;5328:36;5338:6;5346:9;5357:6;5328:9;:36::i;:::-;5377:24;5404:11;:19;5416:6;5404:19;;;;;;;;;;;;;;;:33;5424:12;:10;:12::i;:::-;5404:33;;;;;;;;;;;;;;;;5377:60;;5476:6;5456:16;:26;;5448:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5563:57;5572:6;5580:12;:10;:12::i;:::-;5613:6;5594:16;:25;5563:8;:57::i;:::-;5651:4;5644:11;;;5171:492;;;;;:::o;13667:118::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13773:4:::1;13751:11;:19;13763:6;13751:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13667:118:::0;;:::o;4300:93::-;4358:5;4383:2;4376:9;;4300:93;:::o;5671:215::-;5759:4;5776:80;5785:12;:10;:12::i;:::-;5799:7;5845:10;5808:11;:25;5820:12;:10;:12::i;:::-;5808:25;;;;;;;;;;;;;;;:34;5834:7;5808:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5776:8;:80::i;:::-;5874:4;5867:11;;5671:215;;;;:::o;10268:21::-;;;;;;;;;;;;;:::o;10651:33::-;;;;;;;;;;;;;:::o;22020:182::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22090:4:::1;22079:8;;:15;;;;;;;;;;;;;;;;;;22105:10;:8;:10::i;:::-;22137:5;22126:8;;:16;;;;;;;;;;;;;;;;;;22158:36;22178:15;22158:36;;;;;;:::i;:::-;;;;;;;;22020:182::o:0;14285:274::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14405:4:::1;14399;14395:1;14379:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14378:31;;;;:::i;:::-;14368:6;:41;;14360:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14493:6;14483;:17;;;;:::i;:::-;14467:13;:33;;;;14516:35;14537:13;;14516:35;;;;;;:::i;:::-;;;;;;;;14285:274:::0;:::o;10579:28::-;;;;:::o;10773:::-;;;;:::o;10731:31::-;;;;;;;;;;;;;:::o;4517:127::-;4591:7;4618:9;:18;4628:7;4618:18;;;;;;;;;;;;;;;;4611:25;;4517:127;;;:::o;8715:150::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8824:1:::1;8787:40;;8808:6;;;;;;;;;;;8787:40;;;;;;;;;;;;8855:1;8838:6;;:19;;;;;;;;;;;;;;;;;;8715:150::o:0;13544:115::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13615:5:::1;13598:14;;:22;;;;;;;;;;;;;;;;;;13636:15;;;;;;;;;;13544:115::o:0;15496:260::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15592:4:::1;15588:104;;15630:6;;;;;;;;;;;15620:16;;:6;:16;;::::0;15612:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15588:104;15744:4;15702:31;:39;15734:6;15702:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15496:260:::0;;:::o;10880:30::-;;;;:::o;13793:207::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13897:9:::1;13893:100;13916:7;;:14;;13912:1;:18;13893:100;;;13977:4;13951:11;:23;13963:7;;13971:1;13963:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13951:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13932:3;;;;;:::i;:::-;;;;13893:100;;;;13793:207:::0;;;:::o;14567:284::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14689:4:::1;14683;14679:1;14663:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14662:31;;;;:::i;:::-;14652:6;:41;;14644:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;14781:6;14771;:17;;;;:::i;:::-;14753:15;:35;;;;14804:39;14827:15;;14804:39;;;;;;:::i;:::-;;;;;;;;14567:284:::0;:::o;16553:234::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16649:13:::1;16630:16;:32;;;;16689:16;;16673:13;:32;;;;16741:3;16724:13;;:20;;16716:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16553:234:::0;:::o;10545:27::-;;;;:::o;13236:300::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13300:13:::1;;;;;;;;;;;13299:14;13291:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13368:4;13352:13;;:20;;;;;;;;;;;;;;;;;;13397:4;13383:11;;:18;;;;;;;;;;;;;;;;;;13433:12;13412:18;:33;;;;13477:18;;13456;:39;;;;13512:16;;;;;;;;;;13236:300::o:0;8501:79::-;8539:7;8566:6;;;;;;;;;;;8559:13;;8501:79;:::o;21753:261::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21888:1:::1;21853:37;;:23;:37;;::::0;21845:93:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21982:23;21949:22;;:57;;;;;;;;;;;;;;;;;;21753:261:::0;:::o;10808:31::-;;;;:::o;4188:104::-;4244:13;4277:7;4270:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4188:104;:::o;15764:295::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15873:6:::1;;;;;;;;;;;15865:14;;:4;:14;;::::0;15857:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15954:41;15983:4;15989:5;15954:28;:41::i;:::-;16045:5;16011:40;;16039:4;16011:40;;;;;;;;;;;;15764:295:::0;;:::o;5894:413::-;5987:4;6004:24;6031:11;:25;6043:12;:10;:12::i;:::-;6031:25;;;;;;;;;;;;;;;:34;6057:7;6031:34;;;;;;;;;;;;;;;;6004:61;;6104:15;6084:16;:35;;6076:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6197:67;6206:12;:10;:12::i;:::-;6220:7;6248:15;6229:16;:34;6197:8;:67::i;:::-;6295:4;6288:11;;;5894:413;;;;:::o;10454:33::-;;;;:::o;4652:175::-;4738:4;4755:42;4765:12;:10;:12::i;:::-;4779:9;4790:6;4755:9;:42::i;:::-;4815:4;4808:11;;4652:175;;;;:::o;10614:30::-;;;;:::o;11094:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10691:33::-;;;;;;;;;;;;;:::o;16797:182::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16913:8:::1;16882:19;:28;16902:7;16882:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16953:7;16937:34;;;16962:8;16937:34;;;;;;:::i;:::-;;;;;;;;16797:182:::0;;:::o;10846:27::-;;;;:::o;10494:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;4835:151::-;4924:7;4951:11;:18;4963:5;4951:18;;;;;;;;;;;;;;;:27;4970:7;4951:27;;;;;;;;;;;;;;;;4944:34;;4835:151;;;;:::o;10326:33::-;;;;:::o;10409:37::-;;;;:::o;8873:244::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8982:1:::1;8962:22;;:8;:22;;::::0;8954:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9072:8;9043:38;;9064:6;;;;;;;;;;;9043:38;;;;;;;;;;;;9101:8;9092:6;;:17;;;;;;;;;;;;;;;;;;8873:244:::0;:::o;16315:230::-;8638:12;:10;:12::i;:::-;8628:22;;:6;;;;;;;;;;;:22;;;8620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16409:13:::1;16391:15;:31;;;;16448:15;;16433:12;:30;;;;16499:3;16483:12;;:19;;16475:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16315:230:::0;:::o;229:98::-;282:7;309:10;302:17;;229:98;:::o;7794:380::-;7947:1;7930:19;;:5;:19;;;7922:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:1;8009:21;;:7;:21;;;8001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8112:6;8082:11;:18;8094:5;8082:18;;;;;;;;;;;;;;;:27;8101:7;8082:27;;;;;;;;;;;;;;;:36;;;;8150:7;8134:32;;8143:5;8134:32;;;8159:6;8134:32;;;;;;:::i;:::-;;;;;;;;7794:380;;;:::o;16987:3095::-;17103:1;17087:18;;:4;:18;;;17079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17180:1;17166:16;;:2;:16;;;17158:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17250:1;17241:6;:10;17233:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17302:13;;;;;;;;;;;17298:132;;17339:19;:25;17359:4;17339:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17368:19;:23;17388:2;17368:23;;;;;;;;;;;;;;;;;;;;;;;;;17339:52;17331:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17298:132;17466:1;17445:18;;:22;17442:196;;;17492:11;:17;17504:4;17492:17;;;;;;;;;;;;;;;;;;;;;;;;;17491:18;:35;;;;17519:7;:5;:7::i;:::-;17513:13;;:2;:13;;;17491:35;:60;;;;17544:6;17530:21;;:2;:21;;;17491:60;17483:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;17442:196;17653:14;;;;;;;;;;;17650:991;;;17695:7;:5;:7::i;:::-;17687:15;;:4;:15;;;;:32;;;;;17712:7;:5;:7::i;:::-;17706:13;;:2;:13;;;;17687:32;:52;;;;;17737:1;17723:16;;:2;:16;;;;17687:52;:77;;;;;17757:6;17743:21;;:2;:21;;;;17687:77;:107;;;;;17769:19;:25;17789:4;17769:25;;;;;;;;;;;;;;;;;;;;;;;;;17768:26;17687:107;:135;;;;;17799:19;:23;17819:2;17799:23;;;;;;;;;;;;;;;;;;;;;;;;;17798:24;17687:135;17683:947;;;17876:25;:31;17902:4;17876:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17912:31;:35;17944:2;17912:35;;;;;;;;;;;;;;;;;;;;;;;;;17911:36;17876:71;17872:743;;;17994:12;;17984:6;:22;;17976:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18112:15;;18095:13;18105:2;18095:9;:13::i;:::-;18086:6;:22;;;;:::i;:::-;:41;;18078:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17872:743;;;18232:25;:29;18258:2;18232:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18266:31;:37;18298:4;18266:37;;;;;;;;;;;;;;;;;;;;;;;;;18265:38;18232:71;18228:387;;;18350:13;;18340:6;:23;;18332:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18228:387;;;18458:31;:35;18490:2;18458:35;;;;;;;;;;;;;;;;;;;;;;;;;18453:162;;18551:15;;18534:13;18544:2;18534:9;:13::i;:::-;18525:6;:22;;;;:::i;:::-;:41;;18517:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18453:162;18228:387;17872:743;17683:947;17650:991;18653:28;18684:24;18702:4;18684:9;:24::i;:::-;18653:55;;18721:12;18760:18;;18736:20;:42;;18721:57;;18794:7;:22;;;;;18805:11;;;;;;;;;;;18794:22;:35;;;;;18821:8;;;;;;;;;;;18820:9;18794:35;:71;;;;;18834:25;:31;18860:4;18834:31;;;;;;;;;;;;;;;;;;;;;;;;;18833:32;18794:71;:101;;;;;18870:19;:25;18890:4;18870:25;;;;;;;;;;;;;;;;;;;;;;;;;18869:26;18794:101;:129;;;;;18900:19;:23;18920:2;18900:23;;;;;;;;;;;;;;;;;;;;;;;;;18899:24;18794:129;18791:236;;;18951:4;18940:8;;:15;;;;;;;;;;;;;;;;;;18972:10;:8;:10::i;:::-;19010:5;18999:8;;:16;;;;;;;;;;;;;;;;;;18791:236;19039:12;19054:4;19039:19;;19157;:25;19177:4;19157:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19186:19;:23;19206:2;19186:23;;;;;;;;;;;;;;;;;;;;;;;;;19157:52;19154:99;;;19236:5;19226:15;;19154:99;19265:12;19369:7;19366:663;;;19434:25;:29;19460:2;19434:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19483:1;19467:13;;:17;19434:50;19430:452;;;19536:3;19520:13;;19511:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19504:35;;19606:13;;19587:16;;19580:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19558:18;;:61;;;;;;;:::i;:::-;;;;;;;;19430:452;;;19682:25;:31;19708:4;19682:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19732:1;19717:12;;:16;19682:51;19679:203;;;19785:3;19770:12;;19761:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19754:34;;19854:12;;19836:15;;19829:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19807:18;;:59;;;;;;;:::i;:::-;;;;;;;;19679:203;19430:452;19908:1;19901:4;:8;19898:89;;;19929:42;19945:4;19959;19966;19929:15;:42::i;:::-;19898:89;20013:4;20003:14;;;;;:::i;:::-;;;19366:663;20041:33;20057:4;20063:2;20067:6;20041:15;:33::i;:::-;17066:3016;;;;16987:3095;;;:::o;21188:555::-;21229:23;21255:24;21273:4;21255:9;:24::i;:::-;21229:50;;21290:25;21318:18;;21290:46;;21371:1;21352:15;:20;:46;;;;21397:1;21376:17;:22;21352:46;21349:60;;;21401:7;;;;21349:60;21463:2;21442:18;;:23;;;;:::i;:::-;21424:15;:41;21421:113;;;21520:2;21499:18;;:23;;;;:::i;:::-;21481:41;;21421:113;21546:12;21571:33;21588:15;21571:16;:33::i;:::-;21638:1;21617:18;:22;;;;21673;;;;;;;;;;;21665:36;;21709:21;21665:70;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21652:83;;;;;21216:527;;;21188:555;:::o;16067:240::-;16184:5;16150:25;:31;16176:4;16150:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16202;16229:4;16235:5;16202:26;:39::i;:::-;16293:5;16259:40;;16287:4;16259:40;;;;;;;;;;;;16067:240;;:::o;6315:614::-;6473:1;6455:20;;:6;:20;;;6447:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6557:1;6536:23;;:9;:23;;;6528:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6612:21;6636:9;:17;6646:6;6636:17;;;;;;;;;;;;;;;;6612:41;;6689:6;6672:13;:23;;6664:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6810:6;6794:13;:22;6774:9;:17;6784:6;6774:17;;;;;;;;;;;;;;;:42;;;;6862:6;6838:9;:20;6848:9;6838:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6903:9;6886:35;;6895:6;6886:35;;;6914:6;6886:35;;;;;;:::i;:::-;;;;;;;;6436:493;6315:614;;;:::o;20090:573::-;20218:21;20256:1;20242:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20218:40;;20287:4;20269;20274:1;20269:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20313:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20303:4;20308:1;20303:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20342:56;20359:4;20374:9;;;;;;;;;;;20386:11;20342:8;:56::i;:::-;20437:9;;;;;;;;;;;:60;;;20512:11;20538:1;20582:4;20609;20629:15;20437:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20145:518;20090:573;:::o;15279:207::-;15409:10;15367:31;:39;15399:6;15367:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;15435:43;15459:6;15467:10;15435:43;;;;;;;:::i;:::-;;;;;;;;15279:207;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2618:117;2727:1;2724;2717:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:329::-;4438:6;4487:2;4475:9;4466:7;4462:23;4458:32;4455:119;;;4493:79;;:::i;:::-;4455:119;4613:1;4638:53;4683:7;4674:6;4663:9;4659:22;4638:53;:::i;:::-;4628:63;;4584:117;4379:329;;;;:::o;4714:::-;4773:6;4822:2;4810:9;4801:7;4797:23;4793:32;4790:119;;;4828:79;;:::i;:::-;4790:119;4948:1;4973:53;5018:7;5009:6;4998:9;4994:22;4973:53;:::i;:::-;4963:63;;4919:117;4714:329;;;;:::o;5049:118::-;5136:24;5154:5;5136:24;:::i;:::-;5131:3;5124:37;5049:118;;:::o;5173:222::-;5266:4;5304:2;5293:9;5289:18;5281:26;;5317:71;5385:1;5374:9;5370:17;5361:6;5317:71;:::i;:::-;5173:222;;;;:::o;5401:619::-;5478:6;5486;5494;5543:2;5531:9;5522:7;5518:23;5514:32;5511:119;;;5549:79;;:::i;:::-;5511:119;5669:1;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5640:117;5796:2;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5767:118;5924:2;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5895:118;5401:619;;;;;:::o;6026:116::-;6096:21;6111:5;6096:21;:::i;:::-;6089:5;6086:32;6076:60;;6132:1;6129;6122:12;6076:60;6026:116;:::o;6148:133::-;6191:5;6229:6;6216:20;6207:29;;6245:30;6269:5;6245:30;:::i;:::-;6148:133;;;;:::o;6287:468::-;6352:6;6360;6409:2;6397:9;6388:7;6384:23;6380:32;6377:119;;;6415:79;;:::i;:::-;6377:119;6535:1;6560:53;6605:7;6596:6;6585:9;6581:22;6560:53;:::i;:::-;6550:63;;6506:117;6662:2;6688:50;6730:7;6721:6;6710:9;6706:22;6688:50;:::i;:::-;6678:60;;6633:115;6287:468;;;;;:::o;6761:86::-;6796:7;6836:4;6829:5;6825:16;6814:27;;6761:86;;;:::o;6853:112::-;6936:22;6952:5;6936:22;:::i;:::-;6931:3;6924:35;6853:112;;:::o;6971:214::-;7060:4;7098:2;7087:9;7083:18;7075:26;;7111:67;7175:1;7164:9;7160:17;7151:6;7111:67;:::i;:::-;6971:214;;;;:::o;7191:118::-;7278:24;7296:5;7278:24;:::i;:::-;7273:3;7266:37;7191:118;;:::o;7315:222::-;7408:4;7446:2;7435:9;7431:18;7423:26;;7459:71;7527:1;7516:9;7512:17;7503:6;7459:71;:::i;:::-;7315:222;;;;:::o;7543:117::-;7652:1;7649;7642:12;7666:117;7775:1;7772;7765:12;7789:117;7898:1;7895;7888:12;7929:568;8002:8;8012:6;8062:3;8055:4;8047:6;8043:17;8039:27;8029:122;;8070:79;;:::i;:::-;8029:122;8183:6;8170:20;8160:30;;8213:18;8205:6;8202:30;8199:117;;;8235:79;;:::i;:::-;8199:117;8349:4;8341:6;8337:17;8325:29;;8403:3;8395:4;8387:6;8383:17;8373:8;8369:32;8366:41;8363:128;;;8410:79;;:::i;:::-;8363:128;7929:568;;;;;:::o;8503:698::-;8595:6;8603;8611;8660:2;8648:9;8639:7;8635:23;8631:32;8628:119;;;8666:79;;:::i;:::-;8628:119;8814:1;8803:9;8799:17;8786:31;8844:18;8836:6;8833:30;8830:117;;;8866:79;;:::i;:::-;8830:117;8979:80;9051:7;9042:6;9031:9;9027:22;8979:80;:::i;:::-;8961:98;;;;8757:312;9108:2;9134:50;9176:7;9167:6;9156:9;9152:22;9134:50;:::i;:::-;9124:60;;9079:115;8503:698;;;;;:::o;9207:474::-;9275:6;9283;9332:2;9320:9;9311:7;9307:23;9303:32;9300:119;;;9338:79;;:::i;:::-;9300:119;9458:1;9483:53;9528:7;9519:6;9508:9;9504:22;9483:53;:::i;:::-;9473:63;;9429:117;9585:2;9611:53;9656:7;9647:6;9636:9;9632:22;9611:53;:::i;:::-;9601:63;;9556:118;9207:474;;;;;:::o;9687:180::-;9735:77;9732:1;9725:88;9832:4;9829:1;9822:15;9856:4;9853:1;9846:15;9873:320;9917:6;9954:1;9948:4;9944:12;9934:22;;10001:1;9995:4;9991:12;10022:18;10012:81;;10078:4;10070:6;10066:17;10056:27;;10012:81;10140:2;10132:6;10129:14;10109:18;10106:38;10103:84;;10159:18;;:::i;:::-;10103:84;9924:269;9873:320;;;:::o;10199:182::-;10339:34;10335:1;10327:6;10323:14;10316:58;10199:182;:::o;10387:366::-;10529:3;10550:67;10614:2;10609:3;10550:67;:::i;:::-;10543:74;;10626:93;10715:3;10626:93;:::i;:::-;10744:2;10739:3;10735:12;10728:19;;10387:366;;;:::o;10759:419::-;10925:4;10963:2;10952:9;10948:18;10940:26;;11012:9;11006:4;11002:20;10998:1;10987:9;10983:17;10976:47;11040:131;11166:4;11040:131;:::i;:::-;11032:139;;10759:419;;;:::o;11184:180::-;11232:77;11229:1;11222:88;11329:4;11326:1;11319:15;11353:4;11350:1;11343:15;11370:410;11410:7;11433:20;11451:1;11433:20;:::i;:::-;11428:25;;11467:20;11485:1;11467:20;:::i;:::-;11462:25;;11522:1;11519;11515:9;11544:30;11562:11;11544:30;:::i;:::-;11533:41;;11723:1;11714:7;11710:15;11707:1;11704:22;11684:1;11677:9;11657:83;11634:139;;11753:18;;:::i;:::-;11634:139;11418:362;11370:410;;;;:::o;11786:180::-;11834:77;11831:1;11824:88;11931:4;11928:1;11921:15;11955:4;11952:1;11945:15;11972:185;12012:1;12029:20;12047:1;12029:20;:::i;:::-;12024:25;;12063:20;12081:1;12063:20;:::i;:::-;12058:25;;12102:1;12092:35;;12107:18;;:::i;:::-;12092:35;12149:1;12146;12142:9;12137:14;;11972:185;;;;:::o;12163:240::-;12303:34;12299:1;12291:6;12287:14;12280:58;12372:23;12367:2;12359:6;12355:15;12348:48;12163:240;:::o;12409:366::-;12551:3;12572:67;12636:2;12631:3;12572:67;:::i;:::-;12565:74;;12648:93;12737:3;12648:93;:::i;:::-;12766:2;12761:3;12757:12;12750:19;;12409:366;;;:::o;12781:419::-;12947:4;12985:2;12974:9;12970:18;12962:26;;13034:9;13028:4;13024:20;13020:1;13009:9;13005:17;12998:47;13062:131;13188:4;13062:131;:::i;:::-;13054:139;;12781:419;;;:::o;13206:239::-;13346:34;13342:1;13334:6;13330:14;13323:58;13415:22;13410:2;13402:6;13398:15;13391:47;13206:239;:::o;13451:366::-;13593:3;13614:67;13678:2;13673:3;13614:67;:::i;:::-;13607:74;;13690:93;13779:3;13690:93;:::i;:::-;13808:2;13803:3;13799:12;13792:19;;13451:366;;;:::o;13823:419::-;13989:4;14027:2;14016:9;14012:18;14004:26;;14076:9;14070:4;14066:20;14062:1;14051:9;14047:17;14040:47;14104:131;14230:4;14104:131;:::i;:::-;14096:139;;13823:419;;;:::o;14248:228::-;14388:34;14384:1;14376:6;14372:14;14365:58;14457:11;14452:2;14444:6;14440:15;14433:36;14248:228;:::o;14482:366::-;14624:3;14645:67;14709:2;14704:3;14645:67;:::i;:::-;14638:74;;14721:93;14810:3;14721:93;:::i;:::-;14839:2;14834:3;14830:12;14823:19;;14482:366;;;:::o;14854:419::-;15020:4;15058:2;15047:9;15043:18;15035:26;;15107:9;15101:4;15097:20;15093:1;15082:9;15078:17;15071:47;15135:131;15261:4;15135:131;:::i;:::-;15127:139;;14854:419;;;:::o;15279:227::-;15419:34;15415:1;15407:6;15403:14;15396:58;15488:10;15483:2;15475:6;15471:15;15464:35;15279:227;:::o;15512:366::-;15654:3;15675:67;15739:2;15734:3;15675:67;:::i;:::-;15668:74;;15751:93;15840:3;15751:93;:::i;:::-;15869:2;15864:3;15860:12;15853:19;;15512:366;;;:::o;15884:419::-;16050:4;16088:2;16077:9;16073:18;16065:26;;16137:9;16131:4;16127:20;16123:1;16112:9;16108:17;16101:47;16165:131;16291:4;16165:131;:::i;:::-;16157:139;;15884:419;;;:::o;16309:191::-;16349:3;16368:20;16386:1;16368:20;:::i;:::-;16363:25;;16402:20;16420:1;16402:20;:::i;:::-;16397:25;;16445:1;16442;16438:9;16431:16;;16466:3;16463:1;16460:10;16457:36;;;16473:18;;:::i;:::-;16457:36;16309:191;;;;:::o;16506:229::-;16646:34;16642:1;16634:6;16630:14;16623:58;16715:12;16710:2;16702:6;16698:15;16691:37;16506:229;:::o;16741:366::-;16883:3;16904:67;16968:2;16963:3;16904:67;:::i;:::-;16897:74;;16980:93;17069:3;16980:93;:::i;:::-;17098:2;17093:3;17089:12;17082:19;;16741:366;;;:::o;17113:419::-;17279:4;17317:2;17306:9;17302:18;17294:26;;17366:9;17360:4;17356:20;17352:1;17341:9;17337:17;17330:47;17394:131;17520:4;17394:131;:::i;:::-;17386:139;;17113:419;;;:::o;17538:226::-;17678:34;17674:1;17666:6;17662:14;17655:58;17747:9;17742:2;17734:6;17730:15;17723:34;17538:226;:::o;17770:366::-;17912:3;17933:67;17997:2;17992:3;17933:67;:::i;:::-;17926:74;;18009:93;18098:3;18009:93;:::i;:::-;18127:2;18122:3;18118:12;18111:19;;17770:366;;;:::o;18142:419::-;18308:4;18346:2;18335:9;18331:18;18323:26;;18395:9;18389:4;18385:20;18381:1;18370:9;18366:17;18359:47;18423:131;18549:4;18423:131;:::i;:::-;18415:139;;18142:419;;;:::o;18567:180::-;18615:77;18612:1;18605:88;18712:4;18709:1;18702:15;18736:4;18733:1;18726:15;18753:233;18792:3;18815:24;18833:5;18815:24;:::i;:::-;18806:33;;18861:66;18854:5;18851:77;18848:103;;18931:18;;:::i;:::-;18848:103;18978:1;18971:5;18967:13;18960:20;;18753:233;;;:::o;18992:231::-;19132:34;19128:1;19120:6;19116:14;19109:58;19201:14;19196:2;19188:6;19184:15;19177:39;18992:231;:::o;19229:366::-;19371:3;19392:67;19456:2;19451:3;19392:67;:::i;:::-;19385:74;;19468:93;19557:3;19468:93;:::i;:::-;19586:2;19581:3;19577:12;19570:19;;19229:366;;;:::o;19601:419::-;19767:4;19805:2;19794:9;19790:18;19782:26;;19854:9;19848:4;19844:20;19840:1;19829:9;19825:17;19818:47;19882:131;20008:4;19882:131;:::i;:::-;19874:139;;19601:419;;;:::o;20026:180::-;20166:32;20162:1;20154:6;20150:14;20143:56;20026:180;:::o;20212:366::-;20354:3;20375:67;20439:2;20434:3;20375:67;:::i;:::-;20368:74;;20451:93;20540:3;20451:93;:::i;:::-;20569:2;20564:3;20560:12;20553:19;;20212:366;;;:::o;20584:419::-;20750:4;20788:2;20777:9;20773:18;20765:26;;20837:9;20831:4;20827:20;20823:1;20812:9;20808:17;20801:47;20865:131;20991:4;20865:131;:::i;:::-;20857:139;;20584:419;;;:::o;21009:173::-;21149:25;21145:1;21137:6;21133:14;21126:49;21009:173;:::o;21188:366::-;21330:3;21351:67;21415:2;21410:3;21351:67;:::i;:::-;21344:74;;21427:93;21516:3;21427:93;:::i;:::-;21545:2;21540:3;21536:12;21529:19;;21188:366;;;:::o;21560:419::-;21726:4;21764:2;21753:9;21749:18;21741:26;;21813:9;21807:4;21803:20;21799:1;21788:9;21784:17;21777:47;21841:131;21967:4;21841:131;:::i;:::-;21833:139;;21560:419;;;:::o;21985:230::-;22125:34;22121:1;22113:6;22109:14;22102:58;22194:13;22189:2;22181:6;22177:15;22170:38;21985:230;:::o;22221:366::-;22363:3;22384:67;22448:2;22443:3;22384:67;:::i;:::-;22377:74;;22460:93;22549:3;22460:93;:::i;:::-;22578:2;22573:3;22569:12;22562:19;;22221:366;;;:::o;22593:419::-;22759:4;22797:2;22786:9;22782:18;22774:26;;22846:9;22840:4;22836:20;22832:1;22821:9;22817:17;22810:47;22874:131;23000:4;22874:131;:::i;:::-;22866:139;;22593:419;;;:::o;23018:244::-;23158:34;23154:1;23146:6;23142:14;23135:58;23227:27;23222:2;23214:6;23210:15;23203:52;23018:244;:::o;23268:366::-;23410:3;23431:67;23495:2;23490:3;23431:67;:::i;:::-;23424:74;;23507:93;23596:3;23507:93;:::i;:::-;23625:2;23620:3;23616:12;23609:19;;23268:366;;;:::o;23640:419::-;23806:4;23844:2;23833:9;23829:18;23821:26;;23893:9;23887:4;23883:20;23879:1;23868:9;23864:17;23857:47;23921:131;24047:4;23921:131;:::i;:::-;23913:139;;23640:419;;;:::o;24065:224::-;24205:34;24201:1;24193:6;24189:14;24182:58;24274:7;24269:2;24261:6;24257:15;24250:32;24065:224;:::o;24295:366::-;24437:3;24458:67;24522:2;24517:3;24458:67;:::i;:::-;24451:74;;24534:93;24623:3;24534:93;:::i;:::-;24652:2;24647:3;24643:12;24636:19;;24295:366;;;:::o;24667:419::-;24833:4;24871:2;24860:9;24856:18;24848:26;;24920:9;24914:4;24910:20;24906:1;24895:9;24891:17;24884:47;24948:131;25074:4;24948:131;:::i;:::-;24940:139;;24667:419;;;:::o;25092:225::-;25232:34;25228:1;25220:6;25216:14;25209:58;25301:8;25296:2;25288:6;25284:15;25277:33;25092:225;:::o;25323:366::-;25465:3;25486:67;25550:2;25545:3;25486:67;:::i;:::-;25479:74;;25562:93;25651:3;25562:93;:::i;:::-;25680:2;25675:3;25671:12;25664:19;;25323:366;;;:::o;25695:419::-;25861:4;25899:2;25888:9;25884:18;25876:26;;25948:9;25942:4;25938:20;25934:1;25923:9;25919:17;25912:47;25976:131;26102:4;25976:131;:::i;:::-;25968:139;;25695:419;;;:::o;26120:223::-;26260:34;26256:1;26248:6;26244:14;26237:58;26329:6;26324:2;26316:6;26312:15;26305:31;26120:223;:::o;26349:366::-;26491:3;26512:67;26576:2;26571:3;26512:67;:::i;:::-;26505:74;;26588:93;26677:3;26588:93;:::i;:::-;26706:2;26701:3;26697:12;26690:19;;26349:366;;;:::o;26721:419::-;26887:4;26925:2;26914:9;26910:18;26902:26;;26974:9;26968:4;26964:20;26960:1;26949:9;26945:17;26938:47;27002:131;27128:4;27002:131;:::i;:::-;26994:139;;26721:419;;;:::o;27146:221::-;27286:34;27282:1;27274:6;27270:14;27263:58;27355:4;27350:2;27342:6;27338:15;27331:29;27146:221;:::o;27373:366::-;27515:3;27536:67;27600:2;27595:3;27536:67;:::i;:::-;27529:74;;27612:93;27701:3;27612:93;:::i;:::-;27730:2;27725:3;27721:12;27714:19;;27373:366;;;:::o;27745:419::-;27911:4;27949:2;27938:9;27934:18;27926:26;;27998:9;27992:4;27988:20;27984:1;27973:9;27969:17;27962:47;28026:131;28152:4;28026:131;:::i;:::-;28018:139;;27745:419;;;:::o;28170:224::-;28310:34;28306:1;28298:6;28294:14;28287:58;28379:7;28374:2;28366:6;28362:15;28355:32;28170:224;:::o;28400:366::-;28542:3;28563:67;28627:2;28622:3;28563:67;:::i;:::-;28556:74;;28639:93;28728:3;28639:93;:::i;:::-;28757:2;28752:3;28748:12;28741:19;;28400:366;;;:::o;28772:419::-;28938:4;28976:2;28965:9;28961:18;28953:26;;29025:9;29019:4;29015:20;29011:1;29000:9;28996:17;28989:47;29053:131;29179:4;29053:131;:::i;:::-;29045:139;;28772:419;;;:::o;29197:222::-;29337:34;29333:1;29325:6;29321:14;29314:58;29406:5;29401:2;29393:6;29389:15;29382:30;29197:222;:::o;29425:366::-;29567:3;29588:67;29652:2;29647:3;29588:67;:::i;:::-;29581:74;;29664:93;29753:3;29664:93;:::i;:::-;29782:2;29777:3;29773:12;29766:19;;29425:366;;;:::o;29797:419::-;29963:4;30001:2;29990:9;29986:18;29978:26;;30050:9;30044:4;30040:20;30036:1;30025:9;30021:17;30014:47;30078:131;30204:4;30078:131;:::i;:::-;30070:139;;29797:419;;;:::o;30222:179::-;30362:31;30358:1;30350:6;30346:14;30339:55;30222:179;:::o;30407:366::-;30549:3;30570:67;30634:2;30629:3;30570:67;:::i;:::-;30563:74;;30646:93;30735:3;30646:93;:::i;:::-;30764:2;30759:3;30755:12;30748:19;;30407:366;;;:::o;30779:419::-;30945:4;30983:2;30972:9;30968:18;30960:26;;31032:9;31026:4;31022:20;31018:1;31007:9;31003:17;30996:47;31060:131;31186:4;31060:131;:::i;:::-;31052:139;;30779:419;;;:::o;31204:172::-;31344:24;31340:1;31332:6;31328:14;31321:48;31204:172;:::o;31382:366::-;31524:3;31545:67;31609:2;31604:3;31545:67;:::i;:::-;31538:74;;31621:93;31710:3;31621:93;:::i;:::-;31739:2;31734:3;31730:12;31723:19;;31382:366;;;:::o;31754:419::-;31920:4;31958:2;31947:9;31943:18;31935:26;;32007:9;32001:4;31997:20;31993:1;31982:9;31978:17;31971:47;32035:131;32161:4;32035:131;:::i;:::-;32027:139;;31754:419;;;:::o;32179:294::-;32319:34;32315:1;32307:6;32303:14;32296:58;32388:34;32383:2;32375:6;32371:15;32364:59;32457:8;32452:2;32444:6;32440:15;32433:33;32179:294;:::o;32479:366::-;32621:3;32642:67;32706:2;32701:3;32642:67;:::i;:::-;32635:74;;32718:93;32807:3;32718:93;:::i;:::-;32836:2;32831:3;32827:12;32820:19;;32479:366;;;:::o;32851:419::-;33017:4;33055:2;33044:9;33040:18;33032:26;;33104:9;33098:4;33094:20;33090:1;33079:9;33075:17;33068:47;33132:131;33258:4;33132:131;:::i;:::-;33124:139;;32851:419;;;:::o;33276:227::-;33416:34;33412:1;33404:6;33400:14;33393:58;33485:10;33480:2;33472:6;33468:15;33461:35;33276:227;:::o;33509:366::-;33651:3;33672:67;33736:2;33731:3;33672:67;:::i;:::-;33665:74;;33748:93;33837:3;33748:93;:::i;:::-;33866:2;33861:3;33857:12;33850:19;;33509:366;;;:::o;33881:419::-;34047:4;34085:2;34074:9;34070:18;34062:26;;34134:9;34128:4;34124:20;34120:1;34109:9;34105:17;34098:47;34162:131;34288:4;34162:131;:::i;:::-;34154:139;;33881:419;;;:::o;34306:174::-;34446:26;34442:1;34434:6;34430:14;34423:50;34306:174;:::o;34486:366::-;34628:3;34649:67;34713:2;34708:3;34649:67;:::i;:::-;34642:74;;34725:93;34814:3;34725:93;:::i;:::-;34843:2;34838:3;34834:12;34827:19;;34486:366;;;:::o;34858:419::-;35024:4;35062:2;35051:9;35047:18;35039:26;;35111:9;35105:4;35101:20;35097:1;35086:9;35082:17;35075:47;35139:131;35265:4;35139:131;:::i;:::-;35131:139;;34858:419;;;:::o;35283:229::-;35423:34;35419:1;35411:6;35407:14;35400:58;35492:12;35487:2;35479:6;35475:15;35468:37;35283:229;:::o;35518:366::-;35660:3;35681:67;35745:2;35740:3;35681:67;:::i;:::-;35674:74;;35757:93;35846:3;35757:93;:::i;:::-;35875:2;35870:3;35866:12;35859:19;;35518:366;;;:::o;35890:419::-;36056:4;36094:2;36083:9;36079:18;36071:26;;36143:9;36137:4;36133:20;36129:1;36118:9;36114:17;36107:47;36171:131;36297:4;36171:131;:::i;:::-;36163:139;;35890:419;;;:::o;36315:194::-;36355:4;36375:20;36393:1;36375:20;:::i;:::-;36370:25;;36409:20;36427:1;36409:20;:::i;:::-;36404:25;;36453:1;36450;36446:9;36438:17;;36477:1;36471:4;36468:11;36465:37;;;36482:18;;:::i;:::-;36465:37;36315:194;;;;:::o;36515:147::-;36616:11;36653:3;36638:18;;36515:147;;;;:::o;36668:114::-;;:::o;36788:398::-;36947:3;36968:83;37049:1;37044:3;36968:83;:::i;:::-;36961:90;;37060:93;37149:3;37060:93;:::i;:::-;37178:1;37173:3;37169:11;37162:18;;36788:398;;;:::o;37192:379::-;37376:3;37398:147;37541:3;37398:147;:::i;:::-;37391:154;;37562:3;37555:10;;37192:379;;;:::o;37577:225::-;37717:34;37713:1;37705:6;37701:14;37694:58;37786:8;37781:2;37773:6;37769:15;37762:33;37577:225;:::o;37808:366::-;37950:3;37971:67;38035:2;38030:3;37971:67;:::i;:::-;37964:74;;38047:93;38136:3;38047:93;:::i;:::-;38165:2;38160:3;38156:12;38149:19;;37808:366;;;:::o;38180:419::-;38346:4;38384:2;38373:9;38369:18;38361:26;;38433:9;38427:4;38423:20;38419:1;38408:9;38404:17;38397:47;38461:131;38587:4;38461:131;:::i;:::-;38453:139;;38180:419;;;:::o;38605:180::-;38653:77;38650:1;38643:88;38750:4;38747:1;38740:15;38774:4;38771:1;38764:15;38791:143;38848:5;38879:6;38873:13;38864:22;;38895:33;38922:5;38895:33;:::i;:::-;38791:143;;;;:::o;38940:351::-;39010:6;39059:2;39047:9;39038:7;39034:23;39030:32;39027:119;;;39065:79;;:::i;:::-;39027:119;39185:1;39210:64;39266:7;39257:6;39246:9;39242:22;39210:64;:::i;:::-;39200:74;;39156:128;38940:351;;;;:::o;39297:85::-;39342:7;39371:5;39360:16;;39297:85;;;:::o;39388:158::-;39446:9;39479:61;39497:42;39506:32;39532:5;39506:32;:::i;:::-;39497:42;:::i;:::-;39479:61;:::i;:::-;39466:74;;39388:158;;;:::o;39552:147::-;39647:45;39686:5;39647:45;:::i;:::-;39642:3;39635:58;39552:147;;:::o;39705:114::-;39772:6;39806:5;39800:12;39790:22;;39705:114;;;:::o;39825:184::-;39924:11;39958:6;39953:3;39946:19;39998:4;39993:3;39989:14;39974:29;;39825:184;;;;:::o;40015:132::-;40082:4;40105:3;40097:11;;40135:4;40130:3;40126:14;40118:22;;40015:132;;;:::o;40153:108::-;40230:24;40248:5;40230:24;:::i;:::-;40225:3;40218:37;40153:108;;:::o;40267:179::-;40336:10;40357:46;40399:3;40391:6;40357:46;:::i;:::-;40435:4;40430:3;40426:14;40412:28;;40267:179;;;;:::o;40452:113::-;40522:4;40554;40549:3;40545:14;40537:22;;40452:113;;;:::o;40601:732::-;40720:3;40749:54;40797:5;40749:54;:::i;:::-;40819:86;40898:6;40893:3;40819:86;:::i;:::-;40812:93;;40929:56;40979:5;40929:56;:::i;:::-;41008:7;41039:1;41024:284;41049:6;41046:1;41043:13;41024:284;;;41125:6;41119:13;41152:63;41211:3;41196:13;41152:63;:::i;:::-;41145:70;;41238:60;41291:6;41238:60;:::i;:::-;41228:70;;41084:224;41071:1;41068;41064:9;41059:14;;41024:284;;;41028:14;41324:3;41317:10;;40725:608;;;40601:732;;;;:::o;41339:831::-;41602:4;41640:3;41629:9;41625:19;41617:27;;41654:71;41722:1;41711:9;41707:17;41698:6;41654:71;:::i;:::-;41735:80;41811:2;41800:9;41796:18;41787:6;41735:80;:::i;:::-;41862:9;41856:4;41852:20;41847:2;41836:9;41832:18;41825:48;41890:108;41993:4;41984:6;41890:108;:::i;:::-;41882:116;;42008:72;42076:2;42065:9;42061:18;42052:6;42008:72;:::i;:::-;42090:73;42158:3;42147:9;42143:19;42134:6;42090:73;:::i;:::-;41339:831;;;;;;;;:::o;42176:320::-;42291:4;42329:2;42318:9;42314:18;42306:26;;42342:71;42410:1;42399:9;42395:17;42386:6;42342:71;:::i;:::-;42423:66;42485:2;42474:9;42470:18;42461:6;42423:66;:::i;:::-;42176:320;;;;;:::o

Swarm Source

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