ETH Price: $3,474.13 (+0.16%)
Gas: 13 Gwei

Token

zkGUN (ZKGUN)
 

Overview

Max Total Supply

100,000,000 ZKGUN

Holders

450

Market

Price

$0.00 @ 0.000000 ETH (+1.31%)

Onchain Market Cap

$126,986.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 ZKGUN

Value
$0.00 ( ~0 Eth) [0.0000%]
0x89bf9d7c43b43017bca43177313c5d7d0c160864
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:
zkGUN

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-05
*/

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.25;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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 _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 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 zkGUN is ERC20, Ownable {

    uint256 public maxTxnAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    modifier lockSwapping() {
        swapping = true;
        _;
        swapping = false;
    }

    address public marketingAddress;


    bool public tradingActive = false;
    bool public swapEnabled = false;
    
  

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


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


    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    
    /******************/

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


    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxTxnAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("zkGUN", "ZKGUN") {
        
        address newOwner = msg.sender; // can leave alone if owner is deployer.
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 100000000 * 1e18;
        
        maxTxnAmount = totalSupply * 100 / 100;
        maxWalletAmount = totalSupply * 100 / 100;
        swapTokensAtAmount = totalSupply * 100 / 100000; // 0.1% swap amount

        buyMarketingFee = 5;
        buyLiquidityFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 5;
        sellLiquidityFee = 0;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

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

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

        marketingAddress = 0x45a673C5f0e8853271017B81d1b168993DBA7f41;


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

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }
         
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxTxn lower than 0.25%");
        maxTxnAmount = newNum * (10**18);
        emit UpdatedMaxTxnAmount(maxTxnAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxWallet lower than 0.25%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 3 / 100, "Swap amount cannot be higher than 3% total supply.");
  	    swapTokensAtAmount = newAmount * (10**18);
  	}
    
    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 != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) external onlyOwner {
        require((sellTotalFees) <= 30,"Total sell fees cannot be greater than 30%");
        require((buyTotalFees) <= 30,"Total buy fees cannot be greater than 30%");
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        
    }

     function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency
        swapEnabled = state;
    }

    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 (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                            
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTxnAmount, "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 <= maxTxnAmount, "Sell transfer amount exceeds the max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount <= maxTxnAmount, "Transfer amount exceeds the max Txn.");
                    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;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;

            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                 super._transfer(from, address(this), fees);
            }

        	amount -= (fees);
        }
            
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

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

        ethForLiquidity -= ethForMarketing;
            
        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
        emit UpdatedMarketingAddress(_marketingAddress);
    }
    function unclog() public onlyOwner lockSwapping {
        swapTokensForEth(
            balanceOf(address(this))
        );
        uint256 ethBalance = address(this).balance;
        bool success;
        (success, ) = address(marketingAddress).call{value: ethBalance}("");
      
    }
   
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTxnAmount","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":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":[{"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":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f600a60146101000a81548160ff0219169083151502179055505f600a60156101000a81548160ff021916908315150217905550348015610043575f80fd5b506040518060400160405280600581526020017f7a6b47554e0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5a4b47554e00000000000000000000000000000000000000000000000000000081525081600390816100bf9190610cde565b5080600490816100cf9190610cde565b5050505f6100e161051360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f737a250d5630b4cf539739df2c5dacb4c659f2488d90506101ab81600161051a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024c9190610e0b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d59190610e0b565b6040518363ffffffff1660e01b81526004016102f2929190610e45565b6020604051808303815f875af115801561030e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103329190610e0b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505061037860a05160016105ab60201b60201c565b5f6a52b7d2dcc80cd2e40000009050606480826103959190610e99565b61039f9190610f07565b600681905550606480826103b39190610e99565b6103bd9190610f07565b600781905550620186a06064826103d49190610e99565b6103de9190610f07565b6009819055506005600c819055505f600d81905550600d54600c546104039190610f37565b600b819055506005600f819055505f601081905550601054600f546104289190610f37565b600e8190555061043f83600161051a60201b60201c565b61045030600161051a60201b60201c565b61046361dead600161051a60201b60201c565b61047483600161065960201b60201c565b61048530600161065960201b60201c565b61049861dead600161065960201b60201c565b7345a673c5f0e8853271017b81d1b168993dba7f41600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104fc838261079b60201b60201c565b61050b836108dc60201b60201c565b50505061115a565b5f33905090565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161059f929190610f84565b60405180910390a15050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061060f828261051a60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b61066761051360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec90611005565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161078f9190611023565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611086565b60405180910390fd5b8060025f82825461081a9190610f37565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086c9190610f37565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108d091906110b3565b60405180910390a35050565b6108ea61051360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f90611005565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd9061113c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b1f57607f821691505b602082108103610b3257610b31610adb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b59565b610b9e8683610b59565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610be2610bdd610bd884610bb6565b610bbf565b610bb6565b9050919050565b5f819050919050565b610bfb83610bc8565b610c0f610c0782610be9565b848454610b65565b825550505050565b5f90565b610c23610c17565b610c2e818484610bf2565b505050565b5b81811015610c5157610c465f82610c1b565b600181019050610c34565b5050565b601f821115610c9657610c6781610b38565b610c7084610b4a565b81016020851015610c7f578190505b610c93610c8b85610b4a565b830182610c33565b50505b505050565b5f82821c905092915050565b5f610cb65f1984600802610c9b565b1980831691505092915050565b5f610cce8383610ca7565b9150826002028217905092915050565b610ce782610aa4565b67ffffffffffffffff811115610d0057610cff610aae565b5b610d0a8254610b08565b610d15828285610c55565b5f60209050601f831160018114610d46575f8415610d34578287015190505b610d3e8582610cc3565b865550610da5565b601f198416610d5486610b38565b5f5b82811015610d7b57848901518255600182019150602085019450602081019050610d56565b86831015610d985784890151610d94601f891682610ca7565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dda82610db1565b9050919050565b610dea81610dd0565b8114610df4575f80fd5b50565b5f81519050610e0581610de1565b92915050565b5f60208284031215610e2057610e1f610dad565b5b5f610e2d84828501610df7565b91505092915050565b610e3f81610dd0565b82525050565b5f604082019050610e585f830185610e36565b610e656020830184610e36565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ea382610bb6565b9150610eae83610bb6565b9250828202610ebc81610bb6565b91508282048414831517610ed357610ed2610e6c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f1182610bb6565b9150610f1c83610bb6565b925082610f2c57610f2b610eda565b5b828204905092915050565b5f610f4182610bb6565b9150610f4c83610bb6565b9250828201905080821115610f6457610f63610e6c565b5b92915050565b5f8115159050919050565b610f7e81610f6a565b82525050565b5f604082019050610f975f830185610e36565b610fa46020830184610f75565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610fef602083610fab565b9150610ffa82610fbb565b602082019050919050565b5f6020820190508181035f83015261101c81610fe3565b9050919050565b5f6020820190506110365f830184610f75565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611070601f83610fab565b915061107b8261103c565b602082019050919050565b5f6020820190508181035f83015261109d81611064565b9050919050565b6110ad81610bb6565b82525050565b5f6020820190506110c65f8301846110a4565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611126602683610fab565b9150611131826110cc565b604082019050919050565b5f6020820190508181035f8301526111538161111a565b9050919050565b60805160a051614fb16111ac5f395f8181610dd0015281816111a7015261188b01525f8181610a9401528181613117015281816131f60152818161321d015281816137f3015261381a0152614fb15ff3fe60806040526004361061025f575f3560e01c8063906e9dd011610143578063c18bc195116100b5578063e01af92c11610079578063e01af92c146108e4578063e2f456051461090c578063f11a24d314610936578063f2fde38b14610960578063f5648a4f14610988578063f63743421461099e57610266565b8063c18bc19514610806578063c6616ba11461082e578063cf46f24c14610856578063d257b34f14610880578063dd62ed3e146108a857610266565b8063a5ece94111610107578063a5ece941146106e8578063a9059cbb14610712578063aa4bde281461074e578063b62496f514610778578063bbc0c742146107b4578063c0246668146107de57610266565b8063906e9dd014610608578063921369131461063057806395d89b411461065a5780639a7a23d614610684578063a457c2d7146106ac57610266565b806339509351116101dc578063715018a6116101a0578063715018a6146105245780637571336a1461053a5780637bce5a04146105625780638366e79a1461058c5780638a8c523c146105c85780638da5cb5b146105de57610266565b8063395093511461044257806349bd5a5e1461047e57806367c45349146104a85780636ddd1713146104be57806370a08231146104e857610266565b80631a8145bb116102235780631a8145bb146103605780631f3fed8f1461038a578063203e727e146103b457806323b872dd146103dc578063313ce5671461041857610266565b806306fdde031461026a578063095ea7b31461029457806310d5de53146102d05780631694505e1461030c57806318160ddd1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109c8565b60405161028b919061393b565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906139ec565b610a58565b6040516102c79190613a44565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190613a5d565b610a75565b6040516103039190613a44565b60405180910390f35b348015610317575f80fd5b50610320610a92565b60405161032d9190613ae3565b60405180910390f35b348015610341575f80fd5b5061034a610ab6565b6040516103579190613b0b565b60405180910390f35b34801561036b575f80fd5b50610374610abf565b6040516103819190613b0b565b60405180910390f35b348015610395575f80fd5b5061039e610ac5565b6040516103ab9190613b0b565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613b24565b610acb565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190613b4f565b610c2d565b60405161040f9190613a44565b60405180910390f35b348015610423575f80fd5b5061042c610d1f565b6040516104399190613bba565b60405180910390f35b34801561044d575f80fd5b50610468600480360381019061046391906139ec565b610d27565b6040516104759190613a44565b60405180910390f35b348015610489575f80fd5b50610492610dce565b60405161049f9190613be2565b60405180910390f35b3480156104b3575f80fd5b506104bc610df2565b005b3480156104c9575f80fd5b506104d2610f5f565b6040516104df9190613a44565b60405180910390f35b3480156104f3575f80fd5b5061050e60048036038101906105099190613a5d565b610f72565b60405161051b9190613b0b565b60405180910390f35b34801561052f575f80fd5b50610538610fb7565b005b348015610545575f80fd5b50610560600480360381019061055b9190613c25565b61110a565b005b34801561056d575f80fd5b5061057661128c565b6040516105839190613b0b565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad9190613c63565b611292565b6040516105bf9190613a44565b60405180910390f35b3480156105d3575f80fd5b506105dc611461565b005b3480156105e9575f80fd5b506105f26115ab565b6040516105ff9190613be2565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190613a5d565b6115d3565b005b34801561063b575f80fd5b5061064461175d565b6040516106519190613b0b565b60405180910390f35b348015610665575f80fd5b5061066e611763565b60405161067b919061393b565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a59190613c25565b6117f3565b005b3480156106b7575f80fd5b506106d260048036038101906106cd91906139ec565b611925565b6040516106df9190613a44565b60405180910390f35b3480156106f3575f80fd5b506106fc611a0b565b6040516107099190613be2565b60405180910390f35b34801561071d575f80fd5b50610738600480360381019061073391906139ec565b611a30565b6040516107459190613a44565b60405180910390f35b348015610759575f80fd5b50610762611a4d565b60405161076f9190613b0b565b60405180910390f35b348015610783575f80fd5b5061079e60048036038101906107999190613a5d565b611a53565b6040516107ab9190613a44565b60405180910390f35b3480156107bf575f80fd5b506107c8611a70565b6040516107d59190613a44565b60405180910390f35b3480156107e9575f80fd5b5061080460048036038101906107ff9190613c25565b611a83565b005b348015610811575f80fd5b5061082c60048036038101906108279190613b24565b611bbf565b005b348015610839575f80fd5b50610854600480360381019061084f9190613ca1565b611d21565b005b348015610861575f80fd5b5061086a611e91565b6040516108779190613b0b565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613b24565b611e97565b005b3480156108b3575f80fd5b506108ce60048036038101906108c99190613c63565b612010565b6040516108db9190613b0b565b60405180910390f35b3480156108ef575f80fd5b5061090a60048036038101906109059190613d05565b612092565b005b348015610917575f80fd5b50610920612145565b60405161092d9190613b0b565b60405180910390f35b348015610941575f80fd5b5061094a61214b565b6040516109579190613b0b565b60405180910390f35b34801561096b575f80fd5b5061098660048036038101906109819190613a5d565b612151565b005b348015610993575f80fd5b5061099c612313565b005b3480156109a9575f80fd5b506109b2612416565b6040516109bf9190613b0b565b60405180910390f35b6060600380546109d790613d5d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0390613d5d565b8015610a4e5780601f10610a2557610100808354040283529160200191610a4e565b820191905f5260205f20905b815481529060010190602001808311610a3157829003601f168201915b5050505050905090565b5f610a6b610a6461241c565b8484612423565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60125481565b60115481565b610ad361241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890613dd7565b60405180910390fd5b670de0b6b3a76400006127106019610b77610ab6565b610b819190613e22565b610b8b9190613e90565b610b959190613e90565b811015610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613f30565b60405180910390fd5b670de0b6b3a764000081610beb9190613e22565b6006819055507f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78600654604051610c229190613b0b565b60405180910390a150565b5f610c398484846125e6565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c8061241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613fbe565b60405180910390fd5b610d1385610d0b61241c565b858403612423565b60019150509392505050565b5f6012905090565b5f610dc4610d3361241c565b848460015f610d4061241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dbf9190613fdc565b612423565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610dfa61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613dd7565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550610eb3610eae30610f72565b61307a565b5f4790505f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610efd9061403c565b5f6040518083038185875af1925050503d805f8114610f37576040519150601f19603f3d011682016040523d82523d5f602084013e610f3c565b606091505b50508091505050505f60085f6101000a81548160ff021916908315150217905550565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fbf61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61111261241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790613dd7565b60405180910390fd5b80611234577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a906140c0565b60405180910390fd5b5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b5f61129b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090613dd7565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113639190613be2565b602060405180830381865afa15801561137e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a291906140f2565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113df92919061411d565b6020604051808303815f875af11580156113fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141f9190614158565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161145292919061411d565b60405180910390a15092915050565b61146961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90613dd7565b60405180910390fd5b600a60149054906101000a900460ff1615611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906141cd565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115db61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce9061425b565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b600f5481565b60606004805461177290613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461179e90613d5d565b80156117e95780601f106117c0576101008083540402835291602001916117e9565b820191905f5260205f20905b8154815290600101906020018083116117cc57829003601f168201915b5050505050905090565b6117fb61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613dd7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e906142e9565b60405180910390fd5b61192182826132ad565b5050565b5f8060015f61193261241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390614377565b60405180910390fd5b611a006119f761241c565b85858403612423565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a43611a3c61241c565b84846125e6565b6001905092915050565b60075481565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60149054906101000a900460ff1681565b611a8b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613dd7565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bb39190613a44565b60405180910390a25050565b611bc761241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c90613dd7565b60405180910390fd5b670de0b6b3a76400006127106019611c6b610ab6565b611c759190613e22565b611c7f9190613e90565b611c899190613e90565b811015611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc290614405565b60405180910390fd5b670de0b6b3a764000081611cdf9190613e22565b6007819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600754604051611d169190613b0b565b60405180910390a150565b611d2961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90613dd7565b60405180910390fd5b601e600e541115611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490614493565b60405180910390fd5b601e600b541115611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614521565b60405180910390fd5b83600c8190555082600d81905550600d54600c54611e619190613fdc565b600b8190555081600f8190555080601081905550601054600f54611e859190613fdc565b600e8190555050505050565b60065481565b611e9f61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490613dd7565b60405180910390fd5b620186a06001611f3b610ab6565b611f459190613e22565b611f4f9190613e90565b811015611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906145af565b60405180910390fd5b60646003611f9d610ab6565b611fa79190613e22565b611fb19190613e90565b811115611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea9061463d565b60405180910390fd5b670de0b6b3a7640000816120079190613e22565b60098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61209a61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f90613dd7565b60405180910390fd5b80600a60156101000a81548160ff02191690831515021790555050565b60095481565b600d5481565b61215961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c906146cb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61231b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090613dd7565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516123ce9061403c565b5f6040518083038185875af1925050503d805f8114612408576040519150601f19603f3d011682016040523d82523d5f602084013e61240d565b606091505b50508091505050565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890614759565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f6906147e7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125d99190613b0b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b90614875565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614903565b60405180910390fd5b5f8111612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb9061496b565b60405180910390fd5b61270c6115ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561277a575061274a6115ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127b257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127ec575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c5457600a60149054906101000a900460ff166128e05760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128a0575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906149d3565b60405180910390fd5b5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561297d575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a24576006548111156129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614a61565b60405180910390fd5b6007546129d383610f72565b826129de9190613fdc565b1115612a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1690614ac9565b60405180910390fd5b612c53565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac1575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b1057600654811115612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290614b57565b60405180910390fd5b612c52565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612bae575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5157600654811115612bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bef90614be5565b60405180910390fd5b600754612c0483610f72565b82612c0f9190613fdc565b1115612c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4790614ac9565b60405180910390fd5b5b5b5b5b5f612c5e30610f72565b90505f6009548210159050808015612c825750600a60159054906101000a900460ff165b8015612c9a575060085f9054906101000a900460ff16155b8015612ced575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d40575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d93575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd457600160085f6101000a81548160ff021916908315150217905550612dba613355565b5f60085f6101000a81548160ff0219169083151502179055505b5f6001905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612e74575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612e7d575f90505b5f81156130665760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612edb57505f600e54115b15612f65576064600e5486612ef09190613e22565b612efa9190613e90565b9050600e5460105482612f0d9190613e22565b612f179190613e90565b60125f828254612f279190613fdc565b92505081905550600e54600f5482612f3f9190613e22565b612f499190613e90565b60115f828254612f599190613fdc565b92505081905550613043565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fbc57505f600b54115b15613042576064600b5486612fd19190613e22565b612fdb9190613e90565b9050600b54600d5482612fee9190613e22565b612ff89190613e90565b60125f8282546130089190613fdc565b92505081905550600b54600c54826130209190613e22565b61302a9190613e90565b60115f82825461303a9190613fdc565b925050819055505b5b5f811115613057576130568730836134fd565b5b80856130639190614c03565b94505b6130718787876134fd565b50505050505050565b5f600267ffffffffffffffff81111561309657613095614c36565b5b6040519080825280602002602001820160405280156130c45781602001602082028036833780820191505090505b50905030815f815181106130db576130da614c63565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a29190614ca4565b816001815181106131b6576131b5614c63565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061321b307f000000000000000000000000000000000000000000000000000000000000000084612423565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161327c959493929190614dbf565b5f604051808303815f87803b158015613293575f80fd5b505af11580156132a5573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061330b828261375c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f61335f30610f72565b90505f6011546012546133729190613fdc565b90505f82148061338157505f81145b1561338d5750506134fb565b600460095461339c9190613e22565b8211156133b55760046009546133b29190613e22565b91505b5f80600283601254866133c89190613e22565b6133d29190613e90565b6133dc9190613e90565b90506133f281856133ed9190614c03565b61307a565b5f4790505f8190505f600260125461340a9190613e90565b866134159190614c03565b601154846134239190613e22565b61342d9190613e90565b9050808261343b9190614c03565b91505f6012819055505f6011819055505f8411801561345957505f82115b156134695761346884836137ed565b5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134ae9061403c565b5f6040518083038185875af1925050503d805f81146134e8576040519150601f19603f3d011682016040523d82523d5f602084013e6134ed565b606091505b505080955050505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361356b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356290614875565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d090614903565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561365c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365390614e87565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136ea9190613fdc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161374e9190613b0b565b60405180910390a350505050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516137e1929190614ea5565b60405180910390a15050565b613818307f000000000000000000000000000000000000000000000000000000000000000084612423565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806138616115ab565b426040518863ffffffff1660e01b815260040161388396959493929190614ecc565b60606040518083038185885af115801561389f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138c49190614f2b565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61390d826138cb565b61391781856138d5565b93506139278185602086016138e5565b613930816138f3565b840191505092915050565b5f6020820190508181035f8301526139538184613903565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139888261395f565b9050919050565b6139988161397e565b81146139a2575f80fd5b50565b5f813590506139b38161398f565b92915050565b5f819050919050565b6139cb816139b9565b81146139d5575f80fd5b50565b5f813590506139e6816139c2565b92915050565b5f8060408385031215613a0257613a0161395b565b5b5f613a0f858286016139a5565b9250506020613a20858286016139d8565b9150509250929050565b5f8115159050919050565b613a3e81613a2a565b82525050565b5f602082019050613a575f830184613a35565b92915050565b5f60208284031215613a7257613a7161395b565b5b5f613a7f848285016139a5565b91505092915050565b5f819050919050565b5f613aab613aa6613aa18461395f565b613a88565b61395f565b9050919050565b5f613abc82613a91565b9050919050565b5f613acd82613ab2565b9050919050565b613add81613ac3565b82525050565b5f602082019050613af65f830184613ad4565b92915050565b613b05816139b9565b82525050565b5f602082019050613b1e5f830184613afc565b92915050565b5f60208284031215613b3957613b3861395b565b5b5f613b46848285016139d8565b91505092915050565b5f805f60608486031215613b6657613b6561395b565b5b5f613b73868287016139a5565b9350506020613b84868287016139a5565b9250506040613b95868287016139d8565b9150509250925092565b5f60ff82169050919050565b613bb481613b9f565b82525050565b5f602082019050613bcd5f830184613bab565b92915050565b613bdc8161397e565b82525050565b5f602082019050613bf55f830184613bd3565b92915050565b613c0481613a2a565b8114613c0e575f80fd5b50565b5f81359050613c1f81613bfb565b92915050565b5f8060408385031215613c3b57613c3a61395b565b5b5f613c48858286016139a5565b9250506020613c5985828601613c11565b9150509250929050565b5f8060408385031215613c7957613c7861395b565b5b5f613c86858286016139a5565b9250506020613c97858286016139a5565b9150509250929050565b5f805f8060808587031215613cb957613cb861395b565b5b5f613cc6878288016139d8565b9450506020613cd7878288016139d8565b9350506040613ce8878288016139d8565b9250506060613cf9878288016139d8565b91505092959194509250565b5f60208284031215613d1a57613d1961395b565b5b5f613d2784828501613c11565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d7457607f821691505b602082108103613d8757613d86613d30565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613dc16020836138d5565b9150613dcc82613d8d565b602082019050919050565b5f6020820190508181035f830152613dee81613db5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e2c826139b9565b9150613e37836139b9565b9250828202613e45816139b9565b91508282048414831517613e5c57613e5b613df5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e9a826139b9565b9150613ea5836139b9565b925082613eb557613eb4613e63565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f1a6022836138d5565b9150613f2582613ec0565b604082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613fa86028836138d5565b9150613fb382613f4e565b604082019050919050565b5f6020820190508181035f830152613fd581613f9c565b9050919050565b5f613fe6826139b9565b9150613ff1836139b9565b925082820190508082111561400957614008613df5565b5b92915050565b5f81905092915050565b50565b5f6140275f8361400f565b915061403282614019565b5f82019050919050565b5f6140468261401c565b9150819050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f6140aa6027836138d5565b91506140b582614050565b604082019050919050565b5f6020820190508181035f8301526140d78161409e565b9050919050565b5f815190506140ec816139c2565b92915050565b5f602082840312156141075761410661395b565b5b5f614114848285016140de565b91505092915050565b5f6040820190506141305f830185613bd3565b61413d6020830184613afc565b9392505050565b5f8151905061415281613bfb565b92915050565b5f6020828403121561416d5761416c61395b565b5b5f61417a84828501614144565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6141b76017836138d5565b91506141c282614183565b602082019050919050565b5f6020820190508181035f8301526141e4816141ab565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f745f8201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b5f6142456025836138d5565b9150614250826141eb565b604082019050919050565b5f6020820190508181035f83015261427281614239565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6142d36039836138d5565b91506142de82614279565b604082019050919050565b5f6020820190508181035f830152614300816142c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6143616025836138d5565b915061436c82614307565b604082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b5f6143ef6025836138d5565b91506143fa82614395565b604082019050919050565b5f6020820190508181035f83015261441c816143e3565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2033302500000000000000000000000000000000000000000000602082015250565b5f61447d602a836138d5565b915061448882614423565b604082019050919050565b5f6020820190508181035f8301526144aa81614471565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203330250000000000000000000000000000000000000000000000602082015250565b5f61450b6029836138d5565b9150614516826144b1565b604082019050919050565b5f6020820190508181035f830152614538816144ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6145996035836138d5565b91506145a48261453f565b604082019050919050565b5f6020820190508181035f8301526145c68161458d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f6146276032836138d5565b9150614632826145cd565b604082019050919050565b5f6020820190508181035f8301526146548161461b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6146b56026836138d5565b91506146c08261465b565b604082019050919050565b5f6020820190508181035f8301526146e2816146a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6147436024836138d5565b915061474e826146e9565b604082019050919050565b5f6020820190508181035f83015261477081614737565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6147d16022836138d5565b91506147dc82614777565b604082019050919050565b5f6020820190508181035f8301526147fe816147c5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61485f6025836138d5565b915061486a82614805565b604082019050919050565b5f6020820190508181035f83015261488c81614853565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ed6023836138d5565b91506148f882614893565b604082019050919050565b5f6020820190508181035f83015261491a816148e1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614955601d836138d5565b915061496082614921565b602082019050919050565b5f6020820190508181035f83015261498281614949565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6149bd6016836138d5565b91506149c882614989565b602082019050919050565b5f6020820190508181035f8301526149ea816149b1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614a4b6028836138d5565b9150614a56826149f1565b604082019050919050565b5f6020820190508181035f830152614a7881614a3f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614ab36018836138d5565b9150614abe82614a7f565b602082019050919050565b5f6020820190508181035f830152614ae081614aa7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614b41602a836138d5565b9150614b4c82614ae7565b604082019050919050565b5f6020820190508181035f830152614b6e81614b35565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178205f8201527f54786e2e00000000000000000000000000000000000000000000000000000000602082015250565b5f614bcf6024836138d5565b9150614bda82614b75565b604082019050919050565b5f6020820190508181035f830152614bfc81614bc3565b9050919050565b5f614c0d826139b9565b9150614c18836139b9565b9250828203905081811115614c3057614c2f613df5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c9e8161398f565b92915050565b5f60208284031215614cb957614cb861395b565b5b5f614cc684828501614c90565b91505092915050565b5f819050919050565b5f614cf2614ced614ce884614ccf565b613a88565b6139b9565b9050919050565b614d0281614cd8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3a8161397e565b82525050565b5f614d4b8383614d31565b60208301905092915050565b5f602082019050919050565b5f614d6d82614d08565b614d778185614d12565b9350614d8283614d22565b805f5b83811015614db2578151614d998882614d40565b9750614da483614d57565b925050600181019050614d85565b5085935050505092915050565b5f60a082019050614dd25f830188613afc565b614ddf6020830187614cf9565b8181036040830152614df18186614d63565b9050614e006060830185613bd3565b614e0d6080830184613afc565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e716026836138d5565b9150614e7c82614e17565b604082019050919050565b5f6020820190508181035f830152614e9e81614e65565b9050919050565b5f604082019050614eb85f830185613bd3565b614ec56020830184613a35565b9392505050565b5f60c082019050614edf5f830189613bd3565b614eec6020830188613afc565b614ef96040830187614cf9565b614f066060830186614cf9565b614f136080830185613bd3565b614f2060a0830184613afc565b979650505050505050565b5f805f60608486031215614f4257614f4161395b565b5b5f614f4f868287016140de565b9350506020614f60868287016140de565b9250506040614f71868287016140de565b915050925092509256fea26469706673582212206e587107b05547671d9a464f6f4cade3938ac2610b15da4ddf9e6260347ab97564736f6c63430008190033

Deployed Bytecode

0x60806040526004361061025f575f3560e01c8063906e9dd011610143578063c18bc195116100b5578063e01af92c11610079578063e01af92c146108e4578063e2f456051461090c578063f11a24d314610936578063f2fde38b14610960578063f5648a4f14610988578063f63743421461099e57610266565b8063c18bc19514610806578063c6616ba11461082e578063cf46f24c14610856578063d257b34f14610880578063dd62ed3e146108a857610266565b8063a5ece94111610107578063a5ece941146106e8578063a9059cbb14610712578063aa4bde281461074e578063b62496f514610778578063bbc0c742146107b4578063c0246668146107de57610266565b8063906e9dd014610608578063921369131461063057806395d89b411461065a5780639a7a23d614610684578063a457c2d7146106ac57610266565b806339509351116101dc578063715018a6116101a0578063715018a6146105245780637571336a1461053a5780637bce5a04146105625780638366e79a1461058c5780638a8c523c146105c85780638da5cb5b146105de57610266565b8063395093511461044257806349bd5a5e1461047e57806367c45349146104a85780636ddd1713146104be57806370a08231146104e857610266565b80631a8145bb116102235780631a8145bb146103605780631f3fed8f1461038a578063203e727e146103b457806323b872dd146103dc578063313ce5671461041857610266565b806306fdde031461026a578063095ea7b31461029457806310d5de53146102d05780631694505e1461030c57806318160ddd1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109c8565b60405161028b919061393b565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906139ec565b610a58565b6040516102c79190613a44565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190613a5d565b610a75565b6040516103039190613a44565b60405180910390f35b348015610317575f80fd5b50610320610a92565b60405161032d9190613ae3565b60405180910390f35b348015610341575f80fd5b5061034a610ab6565b6040516103579190613b0b565b60405180910390f35b34801561036b575f80fd5b50610374610abf565b6040516103819190613b0b565b60405180910390f35b348015610395575f80fd5b5061039e610ac5565b6040516103ab9190613b0b565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613b24565b610acb565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190613b4f565b610c2d565b60405161040f9190613a44565b60405180910390f35b348015610423575f80fd5b5061042c610d1f565b6040516104399190613bba565b60405180910390f35b34801561044d575f80fd5b50610468600480360381019061046391906139ec565b610d27565b6040516104759190613a44565b60405180910390f35b348015610489575f80fd5b50610492610dce565b60405161049f9190613be2565b60405180910390f35b3480156104b3575f80fd5b506104bc610df2565b005b3480156104c9575f80fd5b506104d2610f5f565b6040516104df9190613a44565b60405180910390f35b3480156104f3575f80fd5b5061050e60048036038101906105099190613a5d565b610f72565b60405161051b9190613b0b565b60405180910390f35b34801561052f575f80fd5b50610538610fb7565b005b348015610545575f80fd5b50610560600480360381019061055b9190613c25565b61110a565b005b34801561056d575f80fd5b5061057661128c565b6040516105839190613b0b565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad9190613c63565b611292565b6040516105bf9190613a44565b60405180910390f35b3480156105d3575f80fd5b506105dc611461565b005b3480156105e9575f80fd5b506105f26115ab565b6040516105ff9190613be2565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190613a5d565b6115d3565b005b34801561063b575f80fd5b5061064461175d565b6040516106519190613b0b565b60405180910390f35b348015610665575f80fd5b5061066e611763565b60405161067b919061393b565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a59190613c25565b6117f3565b005b3480156106b7575f80fd5b506106d260048036038101906106cd91906139ec565b611925565b6040516106df9190613a44565b60405180910390f35b3480156106f3575f80fd5b506106fc611a0b565b6040516107099190613be2565b60405180910390f35b34801561071d575f80fd5b50610738600480360381019061073391906139ec565b611a30565b6040516107459190613a44565b60405180910390f35b348015610759575f80fd5b50610762611a4d565b60405161076f9190613b0b565b60405180910390f35b348015610783575f80fd5b5061079e60048036038101906107999190613a5d565b611a53565b6040516107ab9190613a44565b60405180910390f35b3480156107bf575f80fd5b506107c8611a70565b6040516107d59190613a44565b60405180910390f35b3480156107e9575f80fd5b5061080460048036038101906107ff9190613c25565b611a83565b005b348015610811575f80fd5b5061082c60048036038101906108279190613b24565b611bbf565b005b348015610839575f80fd5b50610854600480360381019061084f9190613ca1565b611d21565b005b348015610861575f80fd5b5061086a611e91565b6040516108779190613b0b565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613b24565b611e97565b005b3480156108b3575f80fd5b506108ce60048036038101906108c99190613c63565b612010565b6040516108db9190613b0b565b60405180910390f35b3480156108ef575f80fd5b5061090a60048036038101906109059190613d05565b612092565b005b348015610917575f80fd5b50610920612145565b60405161092d9190613b0b565b60405180910390f35b348015610941575f80fd5b5061094a61214b565b6040516109579190613b0b565b60405180910390f35b34801561096b575f80fd5b5061098660048036038101906109819190613a5d565b612151565b005b348015610993575f80fd5b5061099c612313565b005b3480156109a9575f80fd5b506109b2612416565b6040516109bf9190613b0b565b60405180910390f35b6060600380546109d790613d5d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0390613d5d565b8015610a4e5780601f10610a2557610100808354040283529160200191610a4e565b820191905f5260205f20905b815481529060010190602001808311610a3157829003601f168201915b5050505050905090565b5f610a6b610a6461241c565b8484612423565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b60125481565b60115481565b610ad361241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890613dd7565b60405180910390fd5b670de0b6b3a76400006127106019610b77610ab6565b610b819190613e22565b610b8b9190613e90565b610b959190613e90565b811015610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613f30565b60405180910390fd5b670de0b6b3a764000081610beb9190613e22565b6006819055507f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78600654604051610c229190613b0b565b60405180910390a150565b5f610c398484846125e6565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c8061241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613fbe565b60405180910390fd5b610d1385610d0b61241c565b858403612423565b60019150509392505050565b5f6012905090565b5f610dc4610d3361241c565b848460015f610d4061241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dbf9190613fdc565b612423565b6001905092915050565b7f000000000000000000000000d0fcb8bfe5ceff6601c4e09ce1a5b2ba96d0058c81565b610dfa61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613dd7565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550610eb3610eae30610f72565b61307a565b5f4790505f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610efd9061403c565b5f6040518083038185875af1925050503d805f8114610f37576040519150601f19603f3d011682016040523d82523d5f602084013e610f3c565b606091505b50508091505050505f60085f6101000a81548160ff021916908315150217905550565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fbf61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61111261241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790613dd7565b60405180910390fd5b80611234577f000000000000000000000000d0fcb8bfe5ceff6601c4e09ce1a5b2ba96d0058c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a906140c0565b60405180910390fd5b5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b5f61129b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090613dd7565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113639190613be2565b602060405180830381865afa15801561137e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a291906140f2565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113df92919061411d565b6020604051808303815f875af11580156113fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141f9190614158565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161145292919061411d565b60405180910390a15092915050565b61146961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90613dd7565b60405180910390fd5b600a60149054906101000a900460ff1615611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906141cd565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115db61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce9061425b565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b600f5481565b60606004805461177290613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461179e90613d5d565b80156117e95780601f106117c0576101008083540402835291602001916117e9565b820191905f5260205f20905b8154815290600101906020018083116117cc57829003601f168201915b5050505050905090565b6117fb61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613dd7565b60405180910390fd5b7f000000000000000000000000d0fcb8bfe5ceff6601c4e09ce1a5b2ba96d0058c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e906142e9565b60405180910390fd5b61192182826132ad565b5050565b5f8060015f61193261241c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390614377565b60405180910390fd5b611a006119f761241c565b85858403612423565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a43611a3c61241c565b84846125e6565b6001905092915050565b60075481565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60149054906101000a900460ff1681565b611a8b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613dd7565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bb39190613a44565b60405180910390a25050565b611bc761241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c90613dd7565b60405180910390fd5b670de0b6b3a76400006127106019611c6b610ab6565b611c759190613e22565b611c7f9190613e90565b611c899190613e90565b811015611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc290614405565b60405180910390fd5b670de0b6b3a764000081611cdf9190613e22565b6007819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600754604051611d169190613b0b565b60405180910390a150565b611d2961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90613dd7565b60405180910390fd5b601e600e541115611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490614493565b60405180910390fd5b601e600b541115611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614521565b60405180910390fd5b83600c8190555082600d81905550600d54600c54611e619190613fdc565b600b8190555081600f8190555080601081905550601054600f54611e859190613fdc565b600e8190555050505050565b60065481565b611e9f61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490613dd7565b60405180910390fd5b620186a06001611f3b610ab6565b611f459190613e22565b611f4f9190613e90565b811015611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906145af565b60405180910390fd5b60646003611f9d610ab6565b611fa79190613e22565b611fb19190613e90565b811115611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea9061463d565b60405180910390fd5b670de0b6b3a7640000816120079190613e22565b60098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61209a61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f90613dd7565b60405180910390fd5b80600a60156101000a81548160ff02191690831515021790555050565b60095481565b600d5481565b61215961241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613dd7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c906146cb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61231b61241c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090613dd7565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516123ce9061403c565b5f6040518083038185875af1925050503d805f8114612408576040519150601f19603f3d011682016040523d82523d5f602084013e61240d565b606091505b50508091505050565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890614759565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f6906147e7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125d99190613b0b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b90614875565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614903565b60405180910390fd5b5f8111612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb9061496b565b60405180910390fd5b61270c6115ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561277a575061274a6115ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127b257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127ec575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c5457600a60149054906101000a900460ff166128e05760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128a0575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906149d3565b60405180910390fd5b5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561297d575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a24576006548111156129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614a61565b60405180910390fd5b6007546129d383610f72565b826129de9190613fdc565b1115612a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1690614ac9565b60405180910390fd5b612c53565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac1575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b1057600654811115612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290614b57565b60405180910390fd5b612c52565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612bae575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5157600654811115612bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bef90614be5565b60405180910390fd5b600754612c0483610f72565b82612c0f9190613fdc565b1115612c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4790614ac9565b60405180910390fd5b5b5b5b5b5f612c5e30610f72565b90505f6009548210159050808015612c825750600a60159054906101000a900460ff165b8015612c9a575060085f9054906101000a900460ff16155b8015612ced575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d40575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d93575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dd457600160085f6101000a81548160ff021916908315150217905550612dba613355565b5f60085f6101000a81548160ff0219169083151502179055505b5f6001905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612e74575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612e7d575f90505b5f81156130665760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612edb57505f600e54115b15612f65576064600e5486612ef09190613e22565b612efa9190613e90565b9050600e5460105482612f0d9190613e22565b612f179190613e90565b60125f828254612f279190613fdc565b92505081905550600e54600f5482612f3f9190613e22565b612f499190613e90565b60115f828254612f599190613fdc565b92505081905550613043565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fbc57505f600b54115b15613042576064600b5486612fd19190613e22565b612fdb9190613e90565b9050600b54600d5482612fee9190613e22565b612ff89190613e90565b60125f8282546130089190613fdc565b92505081905550600b54600c54826130209190613e22565b61302a9190613e90565b60115f82825461303a9190613fdc565b925050819055505b5b5f811115613057576130568730836134fd565b5b80856130639190614c03565b94505b6130718787876134fd565b50505050505050565b5f600267ffffffffffffffff81111561309657613095614c36565b5b6040519080825280602002602001820160405280156130c45781602001602082028036833780820191505090505b50905030815f815181106130db576130da614c63565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a29190614ca4565b816001815181106131b6576131b5614c63565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061321b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612423565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161327c959493929190614dbf565b5f604051808303815f87803b158015613293575f80fd5b505af11580156132a5573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061330b828261375c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f61335f30610f72565b90505f6011546012546133729190613fdc565b90505f82148061338157505f81145b1561338d5750506134fb565b600460095461339c9190613e22565b8211156133b55760046009546133b29190613e22565b91505b5f80600283601254866133c89190613e22565b6133d29190613e90565b6133dc9190613e90565b90506133f281856133ed9190614c03565b61307a565b5f4790505f8190505f600260125461340a9190613e90565b866134159190614c03565b601154846134239190613e22565b61342d9190613e90565b9050808261343b9190614c03565b91505f6012819055505f6011819055505f8411801561345957505f82115b156134695761346884836137ed565b5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134ae9061403c565b5f6040518083038185875af1925050503d805f81146134e8576040519150601f19603f3d011682016040523d82523d5f602084013e6134ed565b606091505b505080955050505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361356b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356290614875565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d090614903565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561365c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365390614e87565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136ea9190613fdc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161374e9190613b0b565b60405180910390a350505050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516137e1929190614ea5565b60405180910390a15050565b613818307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612423565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806138616115ab565b426040518863ffffffff1660e01b815260040161388396959493929190614ecc565b60606040518083038185885af115801561389f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138c49190614f2b565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61390d826138cb565b61391781856138d5565b93506139278185602086016138e5565b613930816138f3565b840191505092915050565b5f6020820190508181035f8301526139538184613903565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139888261395f565b9050919050565b6139988161397e565b81146139a2575f80fd5b50565b5f813590506139b38161398f565b92915050565b5f819050919050565b6139cb816139b9565b81146139d5575f80fd5b50565b5f813590506139e6816139c2565b92915050565b5f8060408385031215613a0257613a0161395b565b5b5f613a0f858286016139a5565b9250506020613a20858286016139d8565b9150509250929050565b5f8115159050919050565b613a3e81613a2a565b82525050565b5f602082019050613a575f830184613a35565b92915050565b5f60208284031215613a7257613a7161395b565b5b5f613a7f848285016139a5565b91505092915050565b5f819050919050565b5f613aab613aa6613aa18461395f565b613a88565b61395f565b9050919050565b5f613abc82613a91565b9050919050565b5f613acd82613ab2565b9050919050565b613add81613ac3565b82525050565b5f602082019050613af65f830184613ad4565b92915050565b613b05816139b9565b82525050565b5f602082019050613b1e5f830184613afc565b92915050565b5f60208284031215613b3957613b3861395b565b5b5f613b46848285016139d8565b91505092915050565b5f805f60608486031215613b6657613b6561395b565b5b5f613b73868287016139a5565b9350506020613b84868287016139a5565b9250506040613b95868287016139d8565b9150509250925092565b5f60ff82169050919050565b613bb481613b9f565b82525050565b5f602082019050613bcd5f830184613bab565b92915050565b613bdc8161397e565b82525050565b5f602082019050613bf55f830184613bd3565b92915050565b613c0481613a2a565b8114613c0e575f80fd5b50565b5f81359050613c1f81613bfb565b92915050565b5f8060408385031215613c3b57613c3a61395b565b5b5f613c48858286016139a5565b9250506020613c5985828601613c11565b9150509250929050565b5f8060408385031215613c7957613c7861395b565b5b5f613c86858286016139a5565b9250506020613c97858286016139a5565b9150509250929050565b5f805f8060808587031215613cb957613cb861395b565b5b5f613cc6878288016139d8565b9450506020613cd7878288016139d8565b9350506040613ce8878288016139d8565b9250506060613cf9878288016139d8565b91505092959194509250565b5f60208284031215613d1a57613d1961395b565b5b5f613d2784828501613c11565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d7457607f821691505b602082108103613d8757613d86613d30565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613dc16020836138d5565b9150613dcc82613d8d565b602082019050919050565b5f6020820190508181035f830152613dee81613db5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e2c826139b9565b9150613e37836139b9565b9250828202613e45816139b9565b91508282048414831517613e5c57613e5b613df5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e9a826139b9565b9150613ea5836139b9565b925082613eb557613eb4613e63565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f1a6022836138d5565b9150613f2582613ec0565b604082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613fa86028836138d5565b9150613fb382613f4e565b604082019050919050565b5f6020820190508181035f830152613fd581613f9c565b9050919050565b5f613fe6826139b9565b9150613ff1836139b9565b925082820190508082111561400957614008613df5565b5b92915050565b5f81905092915050565b50565b5f6140275f8361400f565b915061403282614019565b5f82019050919050565b5f6140468261401c565b9150819050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f6140aa6027836138d5565b91506140b582614050565b604082019050919050565b5f6020820190508181035f8301526140d78161409e565b9050919050565b5f815190506140ec816139c2565b92915050565b5f602082840312156141075761410661395b565b5b5f614114848285016140de565b91505092915050565b5f6040820190506141305f830185613bd3565b61413d6020830184613afc565b9392505050565b5f8151905061415281613bfb565b92915050565b5f6020828403121561416d5761416c61395b565b5b5f61417a84828501614144565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6141b76017836138d5565b91506141c282614183565b602082019050919050565b5f6020820190508181035f8301526141e4816141ab565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f745f8201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b5f6142456025836138d5565b9150614250826141eb565b604082019050919050565b5f6020820190508181035f83015261427281614239565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6142d36039836138d5565b91506142de82614279565b604082019050919050565b5f6020820190508181035f830152614300816142c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6143616025836138d5565b915061436c82614307565b604082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b5f6143ef6025836138d5565b91506143fa82614395565b604082019050919050565b5f6020820190508181035f83015261441c816143e3565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2033302500000000000000000000000000000000000000000000602082015250565b5f61447d602a836138d5565b915061448882614423565b604082019050919050565b5f6020820190508181035f8301526144aa81614471565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203330250000000000000000000000000000000000000000000000602082015250565b5f61450b6029836138d5565b9150614516826144b1565b604082019050919050565b5f6020820190508181035f830152614538816144ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6145996035836138d5565b91506145a48261453f565b604082019050919050565b5f6020820190508181035f8301526145c68161458d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f6146276032836138d5565b9150614632826145cd565b604082019050919050565b5f6020820190508181035f8301526146548161461b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6146b56026836138d5565b91506146c08261465b565b604082019050919050565b5f6020820190508181035f8301526146e2816146a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6147436024836138d5565b915061474e826146e9565b604082019050919050565b5f6020820190508181035f83015261477081614737565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6147d16022836138d5565b91506147dc82614777565b604082019050919050565b5f6020820190508181035f8301526147fe816147c5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61485f6025836138d5565b915061486a82614805565b604082019050919050565b5f6020820190508181035f83015261488c81614853565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ed6023836138d5565b91506148f882614893565b604082019050919050565b5f6020820190508181035f83015261491a816148e1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614955601d836138d5565b915061496082614921565b602082019050919050565b5f6020820190508181035f83015261498281614949565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6149bd6016836138d5565b91506149c882614989565b602082019050919050565b5f6020820190508181035f8301526149ea816149b1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614a4b6028836138d5565b9150614a56826149f1565b604082019050919050565b5f6020820190508181035f830152614a7881614a3f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614ab36018836138d5565b9150614abe82614a7f565b602082019050919050565b5f6020820190508181035f830152614ae081614aa7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614b41602a836138d5565b9150614b4c82614ae7565b604082019050919050565b5f6020820190508181035f830152614b6e81614b35565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178205f8201527f54786e2e00000000000000000000000000000000000000000000000000000000602082015250565b5f614bcf6024836138d5565b9150614bda82614b75565b604082019050919050565b5f6020820190508181035f830152614bfc81614bc3565b9050919050565b5f614c0d826139b9565b9150614c18836139b9565b9250828203905081811115614c3057614c2f613df5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c9e8161398f565b92915050565b5f60208284031215614cb957614cb861395b565b5b5f614cc684828501614c90565b91505092915050565b5f819050919050565b5f614cf2614ced614ce884614ccf565b613a88565b6139b9565b9050919050565b614d0281614cd8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3a8161397e565b82525050565b5f614d4b8383614d31565b60208301905092915050565b5f602082019050919050565b5f614d6d82614d08565b614d778185614d12565b9350614d8283614d22565b805f5b83811015614db2578151614d998882614d40565b9750614da483614d57565b925050600181019050614d85565b5085935050505092915050565b5f60a082019050614dd25f830188613afc565b614ddf6020830187614cf9565b8181036040830152614df18186614d63565b9050614e006060830185613bd3565b614e0d6080830184613afc565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e716026836138d5565b9150614e7c82614e17565b604082019050919050565b5f6020820190508181035f830152614e9e81614e65565b9050919050565b5f604082019050614eb85f830185613bd3565b614ec56020830184613a35565b9392505050565b5f60c082019050614edf5f830189613bd3565b614eec6020830188613afc565b614ef96040830187614cf9565b614f066060830186614cf9565b614f136080830185613bd3565b614f2060a0830184613afc565b979650505050505050565b5f805f60608486031215614f4257614f4161395b565b5b5f614f4f868287016140de565b9350506020614f60868287016140de565b9250506040614f71868287016140de565b915050925092509256fea26469706673582212206e587107b05547671d9a464f6f4cade3938ac2610b15da4ddf9e6260347ab97564736f6c63430008190033

Deployed Bytecode Sourcemap

9321:13432:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4873:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10295:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9436:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4280:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10109:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10069;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13059:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5050:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4179:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5550:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9486:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22450:295;;;;;;;;;;;;;:::i;:::-;;9790:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4396:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8040:150;;;;;;;;;;;;;:::i;:::-;;14267:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9875:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21606:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12837:205;;;;;;;;;;;;;:::i;:::-;;7826:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22155:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9989:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4067:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14542:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5773:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9708:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4531:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9397:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10519:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15845:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13331:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15052:638;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9363:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13680:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4714:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15699:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9561:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9912:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8198:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21987:160;;;;;;;;;;;;;:::i;:::-;;10027:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3959:100;4013:13;4046:5;4039:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:100;:::o;4873:169::-;4956:4;4973:39;4982:12;:10;:12::i;:::-;4996:7;5005:6;4973:8;:39::i;:::-;5030:4;5023:11;;4873:169;;;;:::o;10295:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;9436:43::-;;;:::o;4280:108::-;4341:7;4368:12;;4361:19;;4280:108;:::o;10109:33::-;;;;:::o;10069:::-;;;;:::o;13059:264::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13180:4:::1;13173:5;13168:2;13152:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;13151:33;;;;:::i;:::-;13141:6;:43;;13133:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13259:6;13249;:17;;;;:::i;:::-;13234:12;:32;;;;13282:33;13302:12;;13282:33;;;;;;:::i;:::-;;;;;;;;13059:264:::0;:::o;5050:492::-;5190:4;5207:36;5217:6;5225:9;5236:6;5207:9;:36::i;:::-;5256:24;5283:11;:19;5295:6;5283:19;;;;;;;;;;;;;;;:33;5303:12;:10;:12::i;:::-;5283:33;;;;;;;;;;;;;;;;5256:60;;5355:6;5335:16;:26;;5327:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5442:57;5451:6;5459:12;:10;:12::i;:::-;5492:6;5473:16;:25;5442:8;:57::i;:::-;5530:4;5523:11;;;5050:492;;;;;:::o;4179:93::-;4237:5;4262:2;4255:9;;4179:93;:::o;5550:215::-;5638:4;5655:80;5664:12;:10;:12::i;:::-;5678:7;5724:10;5687:11;:25;5699:12;:10;:12::i;:::-;5687:25;;;;;;;;;;;;;;;:34;5713:7;5687:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5655:8;:80::i;:::-;5753:4;5746:11;;5550:215;;;;:::o;9486:38::-;;;:::o;22450:295::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9649:4:::1;9638:8;;:15;;;;;;;;;;;;;;;;;;22509:66:::2;22540:24;22558:4;22540:9;:24::i;:::-;22509:16;:66::i;:::-;22586:18;22607:21;22586:42;;22639:12;22684:16;;;;;;;;;;;22676:30;;22714:10;22676:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22662:67;;;;;22498:247;;9687:5:::1;9676:8;;:16;;;;;;;;;;;;;;;;;;22450:295::o:0;9790:31::-;;;;;;;;;;;;;:::o;4396:127::-;4470:7;4497:9;:18;4507:7;4497:18;;;;;;;;;;;;;;;;4490:25;;4396:127;;;:::o;8040:150::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8149:1:::1;8112:40;;8133:6;;;;;;;;;;;8112:40;;;;;;;;;;;;8180:1;8163:6;;:19;;;;;;;;;;;;;;;;;;8040:150::o:0;14267:267::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:4:::1;14359:111;;14401:13;14391:23;;:6;:23;;::::0;14383:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:111;14522:4;14480:31;:39;14512:6;14480:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14267:267:::0;;:::o;9875:30::-;;;;:::o;21606:311::-;21693:10;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21716:24:::1;21750:6;21743:24;;;21776:4;21743:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21716:66;;21808:6;21801:23;;;21825:3;21830:16;21801:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21793:54;;21863:46;21884:6;21892:16;21863:46;;;;;;;:::i;:::-;;;;;;;;21705:212;21606:311:::0;;;;:::o;12837:205::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12901:13:::1;;;;;;;;;;;12900:14;12892:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12969:4;12953:13;;:20;;;;;;;;;;;;;;;;;;12998:4;12984:11;;:18;;;;;;;;;;;;;;;;;;13018:16;;;;;;;;;;12837:205::o:0;7826:79::-;7864:7;7891:6;;;;;;;;;;;7884:13;;7826:79;:::o;22155:289::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22278:1:::1;22249:31;;:17;:31;;::::0;22241:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22360:17;22333:16;;:45;;;;;;;;;;;;;;;;;;22418:17;22394:42;;;;;;;;;;;;22155:289:::0;:::o;9989:31::-;;;;:::o;4067:104::-;4123:13;4156:7;4149:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4067:104;:::o;14542:246::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14651:13:::1;14643:21;;:4;:21;;::::0;14635:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14739:41;14768:4;14774:5;14739:28;:41::i;:::-;14542:246:::0;;:::o;5773:413::-;5866:4;5883:24;5910:11;:25;5922:12;:10;:12::i;:::-;5910:25;;;;;;;;;;;;;;;:34;5936:7;5910:34;;;;;;;;;;;;;;;;5883:61;;5983:15;5963:16;:35;;5955:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6076:67;6085:12;:10;:12::i;:::-;6099:7;6127:15;6108:16;:34;6076:8;:67::i;:::-;6174:4;6167:11;;;5773:413;;;;:::o;9708:31::-;;;;;;;;;;;;;:::o;4531:175::-;4617:4;4634:42;4644:12;:10;:12::i;:::-;4658:9;4669:6;4634:9;:42::i;:::-;4694:4;4687:11;;4531:175;;;;:::o;9397:30::-;;;;:::o;10519:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9750:33::-;;;;;;;;;;;;;:::o;15845:182::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15961:8:::1;15930:19;:28;15950:7;15930:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16001:7;15985:34;;;16010:8;15985:34;;;;;;:::i;:::-;;;;;;;;15845:182:::0;;:::o;13331:279::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13455:4:::1;13448:5;13443:2;13427:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;13426:33;;;;:::i;:::-;13416:6;:43;;13408:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;13540:6;13530;:17;;;;:::i;:::-;13512:15;:35;;;;13563:39;13586:15;;13563:39;;;;;;:::i;:::-;;;;;;;;13331:279:::0;:::o;15052:638::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15235:2:::1;15217:13;;15216:21;;15208:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15320:2;15303:12;;15302:20;;15294:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15396:16;15378:15;:34;;;;15441:16;15423:15;:34;;;;15501:15;;15483;;:33;;;;:::i;:::-;15468:12;:48;;;;15546:17;15527:16;:36;;;;15593:17;15574:16;:36;;;;15656:16;;15637;;:35;;;;:::i;:::-;15621:13;:51;;;;15052:638:::0;;;;:::o;9363:27::-;;;;:::o;13680:356::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13804:6:::1;13800:1;13784:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13771:9;:39;;13763:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13920:3;13916:1;13900:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;13887:9;:36;;13879:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14022:6;14009:9;:20;;;;:::i;:::-;13988:18;:41;;;;13680:356:::0;:::o;4714:151::-;4803:7;4830:11;:18;4842:5;4830:18;;;;;;;;;;;;;;;:27;4849:7;4830:27;;;;;;;;;;;;;;;;4823:34;;4714:151;;;;:::o;15699:138::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15824:5:::1;15810:11;;:19;;;;;;;;;;;;;;;;;;15699:138:::0;:::o;9561:33::-;;;;:::o;9912:30::-;;;;:::o;8198:244::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:1:::1;8287:22;;:8;:22;;::::0;8279:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:8;8368:38;;8389:6;;;;;;;;;;;8368:38;;;;;;;;;;;;8426:8;8417:6;;:17;;;;;;;;;;;;;;;;;;8198:244:::0;:::o;21987:160::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;;:22;;;7945:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22045:12:::1;22089:10;22081:24;;22113:21;22081:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22068:71;;;;;22034:113;21987:160::o:0;10027:31::-;;;;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;7115:380::-;7268:1;7251:19;;:5;:19;;;7243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7349:1;7330:21;;:7;:21;;;7322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7433:6;7403:11;:18;7415:5;7403:18;;;;;;;;;;;;;;;:27;7422:7;7403:27;;;;;;;;;;;;;;;:36;;;;7471:7;7455:32;;7464:5;7455:32;;;7480:6;7455:32;;;;;;:::i;:::-;;;;;;;;7115:380;;;:::o;16035:3205::-;16151:1;16135:18;;:4;:18;;;16127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16228:1;16214:16;;:2;:16;;;16206:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16298:1;16289:6;:10;16281:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:7;:5;:7::i;:::-;16379:15;;:4;:15;;;;:32;;;;;16404:7;:5;:7::i;:::-;16398:13;;:2;:13;;;;16379:32;:52;;;;;16429:1;16415:16;;:2;:16;;;;16379:52;:77;;;;;16449:6;16435:21;;:2;:21;;;;16379:77;16375:1220;;;16480:13;;;;;;;;;;;16476:148;;16525:19;:25;16545:4;16525:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16554:19;:23;16574:2;16554:23;;;;;;;;;;;;;;;;;;;;;;;;;16525:52;16517:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16476:148;16704:25;:31;16730:4;16704:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16740:31;:35;16772:2;16740:35;;;;;;;;;;;;;;;;;;;;;;;;;16739:36;16704:71;16700:880;;;16822:12;;16812:6;:22;;16804:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16940:15;;16923:13;16933:2;16923:9;:13::i;:::-;16914:6;:22;;;;:::i;:::-;:41;;16906:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16700:880;;;17061:25;:29;17087:2;17061:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17095:31;:37;17127:4;17095:37;;;;;;;;;;;;;;;;;;;;;;;;;17094:38;17061:71;17057:523;;;17179:12;;17169:6;:22;;17161:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17057:523;;;17287:31;:35;17319:2;17287:35;;;;;;;;;;;;;;;;;;;;;;;;;17286:36;:78;;;;;17327:31;:37;17359:4;17327:37;;;;;;;;;;;;;;;;;;;;;;;;;17326:38;17286:78;17282:298;;;17406:12;;17396:6;:22;;17388:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17516:15;;17499:13;17509:2;17499:9;:13::i;:::-;17490:6;:22;;;;:::i;:::-;:41;;17482:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17282:298;17057:523;16700:880;16375:1220;17615:28;17646:24;17664:4;17646:9;:24::i;:::-;17615:55;;17691:12;17730:18;;17706:20;:42;;17691:57;;17764:7;:22;;;;;17775:11;;;;;;;;;;;17764:22;:35;;;;;17791:8;;;;;;;;;;;17790:9;17764:35;:71;;;;;17804:25;:31;17830:4;17804:31;;;;;;;;;;;;;;;;;;;;;;;;;17803:32;17764:71;:101;;;;;17840:19;:25;17860:4;17840:25;;;;;;;;;;;;;;;;;;;;;;;;;17839:26;17764:101;:129;;;;;17870:19;:23;17890:2;17870:23;;;;;;;;;;;;;;;;;;;;;;;;;17869:24;17764:129;17761:236;;;17921:4;17910:8;;:15;;;;;;;;;;;;;;;;;;17942:10;:8;:10::i;:::-;17980:5;17969:8;;:16;;;;;;;;;;;;;;;;;;17761:236;18009:12;18024:4;18009:19;;18127;:25;18147:4;18127:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18156:19;:23;18176:2;18156:23;;;;;;;;;;;;;;;;;;;;;;;;;18127:52;18124:99;;;18206:5;18196:15;;18124:99;18243:12;18347:7;18344:831;;;18413:25;:29;18439:2;18413:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18462:1;18446:13;;:17;18413:50;18409:603;;;18514:3;18499:13;;18490:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;18483:34;;18584:13;;18565:16;;18558:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18536:18;;:61;;;;;;;:::i;:::-;;;;;;;;18664:13;;18645:16;;18638:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18616:18;;:61;;;;;;;:::i;:::-;;;;;;;;18409:603;;;18740:25;:31;18766:4;18740:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;18790:1;18775:12;;:16;18740:51;18737:275;;;18840:3;18825:12;;18816:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18809:34;;18906:12;;18888:15;;18881:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18859:18;;:59;;;;;;;:::i;:::-;;;;;;;;18984:12;;18966:15;;18959:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18937:18;;:59;;;;;;;:::i;:::-;;;;;;;;18737:275;18409:603;19050:1;19043:4;:8;19040:94;;;19076:42;19092:4;19106;19113;19076:15;:42::i;:::-;19040:94;19158:4;19147:16;;;;;:::i;:::-;;;18344:831;19199:33;19215:4;19221:2;19225:6;19199:15;:33::i;:::-;16114:3126;;;;16035:3205;;;:::o;19248:591::-;19376:21;19414:1;19400:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19376:40;;19445:4;19427;19432:1;19427:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19471:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19461:4;19466:1;19461:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19506:62;19523:4;19538:15;19556:11;19506:8;:62::i;:::-;19607:15;:66;;;19688:11;19714:1;19758:4;19785;19805:15;19607:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19303:536;19248:591;:::o;14796:248::-;14913:5;14879:25;:31;14905:4;14879:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14939;14966:4;14972:5;14939:26;:39::i;:::-;15030:5;14996:40;;15024:4;14996:40;;;;;;;;;;;;14796:248;;:::o;20381:1217::-;20420:23;20446:24;20464:4;20446:9;:24::i;:::-;20420:50;;20481:25;20530:18;;20509;;:39;;;;:::i;:::-;20481:67;;20591:1;20572:15;:20;:46;;;;20617:1;20596:17;:22;20572:46;20569:60;;;20621:7;;;;20569:60;20683:1;20662:18;;:22;;;;:::i;:::-;20644:15;:40;20641:111;;;20739:1;20718:18;;:22;;;;:::i;:::-;20700:40;;20641:111;20764:12;20846:23;20931:1;20911:17;20890:18;;20872:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20846:86;;20953:51;20988:15;20970;:33;;;;:::i;:::-;20953:16;:51::i;:::-;21026:18;21047:21;21026:42;;21079:23;21105:10;21079:36;;21128:23;21229:1;21210:18;;:20;;;;:::i;:::-;21189:17;:42;;;;:::i;:::-;21167:18;;21154:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;21128:104;;21264:15;21245:34;;;;;:::i;:::-;;;21325:1;21304:18;:22;;;;21358:1;21337:18;:22;;;;21403:1;21385:15;:19;:42;;;;;21426:1;21408:15;:19;21385:42;21382:119;;;21443:46;21456:15;21473;21443:12;:46::i;:::-;21382:119;21534:16;;;;;;;;;;;21526:30;;21564:21;21526:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21513:77;;;;;20409:1189;;;;;;;20381:1217;:::o;6194:614::-;6352:1;6334:20;;:6;:20;;;6326:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6436:1;6415:23;;:9;:23;;;6407:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6491:21;6515:9;:17;6525:6;6515:17;;;;;;;;;;;;;;;;6491:41;;6568:6;6551:13;:23;;6543:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6689:6;6673:13;:22;6653:9;:17;6663:6;6653:17;;;;;;;;;;;;;;;:42;;;;6741:6;6717:9;:20;6727:9;6717:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6782:9;6765:35;;6774:6;6765:35;;;6793:6;6765:35;;;;;;:::i;:::-;;;;;;;;6315:493;6194:614;;;:::o;14048:207::-;14178:10;14136:31;:39;14168:6;14136:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14204:43;14228:6;14236:10;14204:43;;;;;;;:::i;:::-;;;;;;;;14048:207;;:::o;19851:522::-;19999:62;20016:4;20031:15;20049:11;19999:8;:62::i;:::-;20104:15;:31;;;20143:9;20176:4;20196:11;20222:1;20265;20316:7;:5;:7::i;:::-;20339:15;20104:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19851:522;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:60::-;3702:3;3723:5;3716:12;;3674:60;;;:::o;3740:142::-;3790:9;3823:53;3841:34;3850:24;3868:5;3850:24;:::i;:::-;3841:34;:::i;:::-;3823:53;:::i;:::-;3810:66;;3740:142;;;:::o;3888:126::-;3938:9;3971:37;4002:5;3971:37;:::i;:::-;3958:50;;3888:126;;;:::o;4020:144::-;4088:9;4121:37;4152:5;4121:37;:::i;:::-;4108:50;;4020:144;;;:::o;4170:167::-;4275:55;4324:5;4275:55;:::i;:::-;4270:3;4263:68;4170:167;;:::o;4343:258::-;4454:4;4492:2;4481:9;4477:18;4469:26;;4505:89;4591:1;4580:9;4576:17;4567:6;4505:89;:::i;:::-;4343:258;;;;:::o;4607:118::-;4694:24;4712:5;4694:24;:::i;:::-;4689:3;4682:37;4607:118;;:::o;4731:222::-;4824:4;4862:2;4851:9;4847:18;4839:26;;4875:71;4943:1;4932:9;4928:17;4919:6;4875:71;:::i;:::-;4731:222;;;;:::o;4959:329::-;5018:6;5067:2;5055:9;5046:7;5042:23;5038:32;5035:119;;;5073:79;;:::i;:::-;5035:119;5193:1;5218:53;5263:7;5254:6;5243:9;5239:22;5218:53;:::i;:::-;5208:63;;5164:117;4959:329;;;;:::o;5294:619::-;5371:6;5379;5387;5436:2;5424:9;5415:7;5411:23;5407:32;5404:119;;;5442:79;;:::i;:::-;5404:119;5562:1;5587:53;5632:7;5623:6;5612:9;5608:22;5587:53;:::i;:::-;5577:63;;5533:117;5689:2;5715:53;5760:7;5751:6;5740:9;5736:22;5715:53;:::i;:::-;5705:63;;5660:118;5817:2;5843:53;5888:7;5879:6;5868:9;5864:22;5843:53;:::i;:::-;5833:63;;5788:118;5294:619;;;;;:::o;5919:86::-;5954:7;5994:4;5987:5;5983:16;5972:27;;5919:86;;;:::o;6011:112::-;6094:22;6110:5;6094:22;:::i;:::-;6089:3;6082:35;6011:112;;:::o;6129:214::-;6218:4;6256:2;6245:9;6241:18;6233:26;;6269:67;6333:1;6322:9;6318:17;6309:6;6269:67;:::i;:::-;6129:214;;;;:::o;6349:118::-;6436:24;6454:5;6436:24;:::i;:::-;6431:3;6424:37;6349:118;;:::o;6473:222::-;6566:4;6604:2;6593:9;6589:18;6581:26;;6617:71;6685:1;6674:9;6670:17;6661:6;6617:71;:::i;:::-;6473:222;;;;:::o;6701:116::-;6771:21;6786:5;6771:21;:::i;:::-;6764:5;6761:32;6751:60;;6807:1;6804;6797:12;6751:60;6701:116;:::o;6823:133::-;6866:5;6904:6;6891:20;6882:29;;6920:30;6944:5;6920:30;:::i;:::-;6823:133;;;;:::o;6962:468::-;7027:6;7035;7084:2;7072:9;7063:7;7059:23;7055:32;7052:119;;;7090:79;;:::i;:::-;7052:119;7210:1;7235:53;7280:7;7271:6;7260:9;7256:22;7235:53;:::i;:::-;7225:63;;7181:117;7337:2;7363:50;7405:7;7396:6;7385:9;7381:22;7363:50;:::i;:::-;7353:60;;7308:115;6962:468;;;;;:::o;7436:474::-;7504:6;7512;7561:2;7549:9;7540:7;7536:23;7532:32;7529:119;;;7567:79;;:::i;:::-;7529:119;7687:1;7712:53;7757:7;7748:6;7737:9;7733:22;7712:53;:::i;:::-;7702:63;;7658:117;7814:2;7840:53;7885:7;7876:6;7865:9;7861:22;7840:53;:::i;:::-;7830:63;;7785:118;7436:474;;;;;:::o;7916:765::-;8002:6;8010;8018;8026;8075:3;8063:9;8054:7;8050:23;8046:33;8043:120;;;8082:79;;:::i;:::-;8043:120;8202:1;8227:53;8272:7;8263:6;8252:9;8248:22;8227:53;:::i;:::-;8217:63;;8173:117;8329:2;8355:53;8400:7;8391:6;8380:9;8376:22;8355:53;:::i;:::-;8345:63;;8300:118;8457:2;8483:53;8528:7;8519:6;8508:9;8504:22;8483:53;:::i;:::-;8473:63;;8428:118;8585:2;8611:53;8656:7;8647:6;8636:9;8632:22;8611:53;:::i;:::-;8601:63;;8556:118;7916:765;;;;;;;:::o;8687:323::-;8743:6;8792:2;8780:9;8771:7;8767:23;8763:32;8760:119;;;8798:79;;:::i;:::-;8760:119;8918:1;8943:50;8985:7;8976:6;8965:9;8961:22;8943:50;:::i;:::-;8933:60;;8889:114;8687:323;;;;:::o;9016:180::-;9064:77;9061:1;9054:88;9161:4;9158:1;9151:15;9185:4;9182:1;9175:15;9202:320;9246:6;9283:1;9277:4;9273:12;9263:22;;9330:1;9324:4;9320:12;9351:18;9341:81;;9407:4;9399:6;9395:17;9385:27;;9341:81;9469:2;9461:6;9458:14;9438:18;9435:38;9432:84;;9488:18;;:::i;:::-;9432:84;9253:269;9202:320;;;:::o;9528:182::-;9668:34;9664:1;9656:6;9652:14;9645:58;9528:182;:::o;9716:366::-;9858:3;9879:67;9943:2;9938:3;9879:67;:::i;:::-;9872:74;;9955:93;10044:3;9955:93;:::i;:::-;10073:2;10068:3;10064:12;10057:19;;9716:366;;;:::o;10088:419::-;10254:4;10292:2;10281:9;10277:18;10269:26;;10341:9;10335:4;10331:20;10327:1;10316:9;10312:17;10305:47;10369:131;10495:4;10369:131;:::i;:::-;10361:139;;10088:419;;;:::o;10513:180::-;10561:77;10558:1;10551:88;10658:4;10655:1;10648:15;10682:4;10679:1;10672:15;10699:410;10739:7;10762:20;10780:1;10762:20;:::i;:::-;10757:25;;10796:20;10814:1;10796:20;:::i;:::-;10791:25;;10851:1;10848;10844:9;10873:30;10891:11;10873:30;:::i;:::-;10862:41;;11052:1;11043:7;11039:15;11036:1;11033:22;11013:1;11006:9;10986:83;10963:139;;11082:18;;:::i;:::-;10963:139;10747:362;10699:410;;;;:::o;11115:180::-;11163:77;11160:1;11153:88;11260:4;11257:1;11250:15;11284:4;11281:1;11274:15;11301:185;11341:1;11358:20;11376:1;11358:20;:::i;:::-;11353:25;;11392:20;11410:1;11392:20;:::i;:::-;11387:25;;11431:1;11421:35;;11436:18;;:::i;:::-;11421:35;11478:1;11475;11471:9;11466:14;;11301:185;;;;:::o;11492:221::-;11632:34;11628:1;11620:6;11616:14;11609:58;11701:4;11696:2;11688:6;11684:15;11677:29;11492:221;:::o;11719:366::-;11861:3;11882:67;11946:2;11941:3;11882:67;:::i;:::-;11875:74;;11958:93;12047:3;11958:93;:::i;:::-;12076:2;12071:3;12067:12;12060:19;;11719:366;;;:::o;12091:419::-;12257:4;12295:2;12284:9;12280:18;12272:26;;12344:9;12338:4;12334:20;12330:1;12319:9;12315:17;12308:47;12372:131;12498:4;12372:131;:::i;:::-;12364:139;;12091:419;;;:::o;12516:227::-;12656:34;12652:1;12644:6;12640:14;12633:58;12725:10;12720:2;12712:6;12708:15;12701:35;12516:227;:::o;12749:366::-;12891:3;12912:67;12976:2;12971:3;12912:67;:::i;:::-;12905:74;;12988:93;13077:3;12988:93;:::i;:::-;13106:2;13101:3;13097:12;13090:19;;12749:366;;;:::o;13121:419::-;13287:4;13325:2;13314:9;13310:18;13302:26;;13374:9;13368:4;13364:20;13360:1;13349:9;13345:17;13338:47;13402:131;13528:4;13402:131;:::i;:::-;13394:139;;13121:419;;;:::o;13546:191::-;13586:3;13605:20;13623:1;13605:20;:::i;:::-;13600:25;;13639:20;13657:1;13639:20;:::i;:::-;13634:25;;13682:1;13679;13675:9;13668:16;;13703:3;13700:1;13697:10;13694:36;;;13710:18;;:::i;:::-;13694:36;13546:191;;;;:::o;13743:147::-;13844:11;13881:3;13866:18;;13743:147;;;;:::o;13896:114::-;;:::o;14016:398::-;14175:3;14196:83;14277:1;14272:3;14196:83;:::i;:::-;14189:90;;14288:93;14377:3;14288:93;:::i;:::-;14406:1;14401:3;14397:11;14390:18;;14016:398;;;:::o;14420:379::-;14604:3;14626:147;14769:3;14626:147;:::i;:::-;14619:154;;14790:3;14783:10;;14420:379;;;:::o;14805:226::-;14945:34;14941:1;14933:6;14929:14;14922:58;15014:9;15009:2;15001:6;14997:15;14990:34;14805:226;:::o;15037:366::-;15179:3;15200:67;15264:2;15259:3;15200:67;:::i;:::-;15193:74;;15276:93;15365:3;15276:93;:::i;:::-;15394:2;15389:3;15385:12;15378:19;;15037:366;;;:::o;15409:419::-;15575:4;15613:2;15602:9;15598:18;15590:26;;15662:9;15656:4;15652:20;15648:1;15637:9;15633:17;15626:47;15690:131;15816:4;15690:131;:::i;:::-;15682:139;;15409:419;;;:::o;15834:143::-;15891:5;15922:6;15916:13;15907:22;;15938:33;15965:5;15938:33;:::i;:::-;15834:143;;;;:::o;15983:351::-;16053:6;16102:2;16090:9;16081:7;16077:23;16073:32;16070:119;;;16108:79;;:::i;:::-;16070:119;16228:1;16253:64;16309:7;16300:6;16289:9;16285:22;16253:64;:::i;:::-;16243:74;;16199:128;15983:351;;;;:::o;16340:332::-;16461:4;16499:2;16488:9;16484:18;16476:26;;16512:71;16580:1;16569:9;16565:17;16556:6;16512:71;:::i;:::-;16593:72;16661:2;16650:9;16646:18;16637:6;16593:72;:::i;:::-;16340:332;;;;;:::o;16678:137::-;16732:5;16763:6;16757:13;16748:22;;16779:30;16803:5;16779:30;:::i;:::-;16678:137;;;;:::o;16821:345::-;16888:6;16937:2;16925:9;16916:7;16912:23;16908:32;16905:119;;;16943:79;;:::i;:::-;16905:119;17063:1;17088:61;17141:7;17132:6;17121:9;17117:22;17088:61;:::i;:::-;17078:71;;17034:125;16821:345;;;;:::o;17172:173::-;17312:25;17308:1;17300:6;17296:14;17289:49;17172:173;:::o;17351:366::-;17493:3;17514:67;17578:2;17573:3;17514:67;:::i;:::-;17507:74;;17590:93;17679:3;17590:93;:::i;:::-;17708:2;17703:3;17699:12;17692:19;;17351:366;;;:::o;17723:419::-;17889:4;17927:2;17916:9;17912:18;17904:26;;17976:9;17970:4;17966:20;17962:1;17951:9;17947:17;17940:47;18004:131;18130:4;18004:131;:::i;:::-;17996:139;;17723:419;;;:::o;18148:224::-;18288:34;18284:1;18276:6;18272:14;18265:58;18357:7;18352:2;18344:6;18340:15;18333:32;18148:224;:::o;18378:366::-;18520:3;18541:67;18605:2;18600:3;18541:67;:::i;:::-;18534:74;;18617:93;18706:3;18617:93;:::i;:::-;18735:2;18730:3;18726:12;18719:19;;18378:366;;;:::o;18750:419::-;18916:4;18954:2;18943:9;18939:18;18931:26;;19003:9;18997:4;18993:20;18989:1;18978:9;18974:17;18967:47;19031:131;19157:4;19031:131;:::i;:::-;19023:139;;18750:419;;;:::o;19175:244::-;19315:34;19311:1;19303:6;19299:14;19292:58;19384:27;19379:2;19371:6;19367:15;19360:52;19175:244;:::o;19425:366::-;19567:3;19588:67;19652:2;19647:3;19588:67;:::i;:::-;19581:74;;19664:93;19753:3;19664:93;:::i;:::-;19782:2;19777:3;19773:12;19766:19;;19425:366;;;:::o;19797:419::-;19963:4;20001:2;19990:9;19986:18;19978:26;;20050:9;20044:4;20040:20;20036:1;20025:9;20021:17;20014:47;20078:131;20204:4;20078:131;:::i;:::-;20070:139;;19797:419;;;:::o;20222:224::-;20362:34;20358:1;20350:6;20346:14;20339:58;20431:7;20426:2;20418:6;20414:15;20407:32;20222:224;:::o;20452:366::-;20594:3;20615:67;20679:2;20674:3;20615:67;:::i;:::-;20608:74;;20691:93;20780:3;20691:93;:::i;:::-;20809:2;20804:3;20800:12;20793:19;;20452:366;;;:::o;20824:419::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21077:9;21071:4;21067:20;21063:1;21052:9;21048:17;21041:47;21105:131;21231:4;21105:131;:::i;:::-;21097:139;;20824:419;;;:::o;21249:224::-;21389:34;21385:1;21377:6;21373:14;21366:58;21458:7;21453:2;21445:6;21441:15;21434:32;21249:224;:::o;21479:366::-;21621:3;21642:67;21706:2;21701:3;21642:67;:::i;:::-;21635:74;;21718:93;21807:3;21718:93;:::i;:::-;21836:2;21831:3;21827:12;21820:19;;21479:366;;;:::o;21851:419::-;22017:4;22055:2;22044:9;22040:18;22032:26;;22104:9;22098:4;22094:20;22090:1;22079:9;22075:17;22068:47;22132:131;22258:4;22132:131;:::i;:::-;22124:139;;21851:419;;;:::o;22276:229::-;22416:34;22412:1;22404:6;22400:14;22393:58;22485:12;22480:2;22472:6;22468:15;22461:37;22276:229;:::o;22511:366::-;22653:3;22674:67;22738:2;22733:3;22674:67;:::i;:::-;22667:74;;22750:93;22839:3;22750:93;:::i;:::-;22868:2;22863:3;22859:12;22852:19;;22511:366;;;:::o;22883:419::-;23049:4;23087:2;23076:9;23072:18;23064:26;;23136:9;23130:4;23126:20;23122:1;23111:9;23107:17;23100:47;23164:131;23290:4;23164:131;:::i;:::-;23156:139;;22883:419;;;:::o;23308:228::-;23448:34;23444:1;23436:6;23432:14;23425:58;23517:11;23512:2;23504:6;23500:15;23493:36;23308:228;:::o;23542:366::-;23684:3;23705:67;23769:2;23764:3;23705:67;:::i;:::-;23698:74;;23781:93;23870:3;23781:93;:::i;:::-;23899:2;23894:3;23890:12;23883:19;;23542:366;;;:::o;23914:419::-;24080:4;24118:2;24107:9;24103:18;24095:26;;24167:9;24161:4;24157:20;24153:1;24142:9;24138:17;24131:47;24195:131;24321:4;24195:131;:::i;:::-;24187:139;;23914:419;;;:::o;24339:240::-;24479:34;24475:1;24467:6;24463:14;24456:58;24548:23;24543:2;24535:6;24531:15;24524:48;24339:240;:::o;24585:366::-;24727:3;24748:67;24812:2;24807:3;24748:67;:::i;:::-;24741:74;;24824:93;24913:3;24824:93;:::i;:::-;24942:2;24937:3;24933:12;24926:19;;24585:366;;;:::o;24957:419::-;25123:4;25161:2;25150:9;25146:18;25138:26;;25210:9;25204:4;25200:20;25196:1;25185:9;25181:17;25174:47;25238:131;25364:4;25238:131;:::i;:::-;25230:139;;24957:419;;;:::o;25382:237::-;25522:34;25518:1;25510:6;25506:14;25499:58;25591:20;25586:2;25578:6;25574:15;25567:45;25382:237;:::o;25625:366::-;25767:3;25788:67;25852:2;25847:3;25788:67;:::i;:::-;25781:74;;25864:93;25953:3;25864:93;:::i;:::-;25982:2;25977:3;25973:12;25966:19;;25625:366;;;:::o;25997:419::-;26163:4;26201:2;26190:9;26186:18;26178:26;;26250:9;26244:4;26240:20;26236:1;26225:9;26221:17;26214:47;26278:131;26404:4;26278:131;:::i;:::-;26270:139;;25997:419;;;:::o;26422:225::-;26562:34;26558:1;26550:6;26546:14;26539:58;26631:8;26626:2;26618:6;26614:15;26607:33;26422:225;:::o;26653:366::-;26795:3;26816:67;26880:2;26875:3;26816:67;:::i;:::-;26809:74;;26892:93;26981:3;26892:93;:::i;:::-;27010:2;27005:3;27001:12;26994:19;;26653:366;;;:::o;27025:419::-;27191:4;27229:2;27218:9;27214:18;27206:26;;27278:9;27272:4;27268:20;27264:1;27253:9;27249:17;27242:47;27306:131;27432:4;27306:131;:::i;:::-;27298:139;;27025:419;;;:::o;27450:223::-;27590:34;27586:1;27578:6;27574:14;27567:58;27659:6;27654:2;27646:6;27642:15;27635:31;27450:223;:::o;27679:366::-;27821:3;27842:67;27906:2;27901:3;27842:67;:::i;:::-;27835:74;;27918:93;28007:3;27918:93;:::i;:::-;28036:2;28031:3;28027:12;28020:19;;27679:366;;;:::o;28051:419::-;28217:4;28255:2;28244:9;28240:18;28232:26;;28304:9;28298:4;28294:20;28290:1;28279:9;28275:17;28268:47;28332:131;28458:4;28332:131;:::i;:::-;28324:139;;28051:419;;;:::o;28476:221::-;28616:34;28612:1;28604:6;28600:14;28593:58;28685:4;28680:2;28672:6;28668:15;28661:29;28476:221;:::o;28703:366::-;28845:3;28866:67;28930:2;28925:3;28866:67;:::i;:::-;28859:74;;28942:93;29031:3;28942:93;:::i;:::-;29060:2;29055:3;29051:12;29044:19;;28703:366;;;:::o;29075:419::-;29241:4;29279:2;29268:9;29264:18;29256:26;;29328:9;29322:4;29318:20;29314:1;29303:9;29299:17;29292:47;29356:131;29482:4;29356:131;:::i;:::-;29348:139;;29075:419;;;:::o;29500:224::-;29640:34;29636:1;29628:6;29624:14;29617:58;29709:7;29704:2;29696:6;29692:15;29685:32;29500:224;:::o;29730:366::-;29872:3;29893:67;29957:2;29952:3;29893:67;:::i;:::-;29886:74;;29969:93;30058:3;29969:93;:::i;:::-;30087:2;30082:3;30078:12;30071:19;;29730:366;;;:::o;30102:419::-;30268:4;30306:2;30295:9;30291:18;30283:26;;30355:9;30349:4;30345:20;30341:1;30330:9;30326:17;30319:47;30383:131;30509:4;30383:131;:::i;:::-;30375:139;;30102:419;;;:::o;30527:222::-;30667:34;30663:1;30655:6;30651:14;30644:58;30736:5;30731:2;30723:6;30719:15;30712:30;30527:222;:::o;30755:366::-;30897:3;30918:67;30982:2;30977:3;30918:67;:::i;:::-;30911:74;;30994:93;31083:3;30994:93;:::i;:::-;31112:2;31107:3;31103:12;31096:19;;30755:366;;;:::o;31127:419::-;31293:4;31331:2;31320:9;31316:18;31308:26;;31380:9;31374:4;31370:20;31366:1;31355:9;31351:17;31344:47;31408:131;31534:4;31408:131;:::i;:::-;31400:139;;31127:419;;;:::o;31552:179::-;31692:31;31688:1;31680:6;31676:14;31669:55;31552:179;:::o;31737:366::-;31879:3;31900:67;31964:2;31959:3;31900:67;:::i;:::-;31893:74;;31976:93;32065:3;31976:93;:::i;:::-;32094:2;32089:3;32085:12;32078:19;;31737:366;;;:::o;32109:419::-;32275:4;32313:2;32302:9;32298:18;32290:26;;32362:9;32356:4;32352:20;32348:1;32337:9;32333:17;32326:47;32390:131;32516:4;32390:131;:::i;:::-;32382:139;;32109:419;;;:::o;32534:172::-;32674:24;32670:1;32662:6;32658:14;32651:48;32534:172;:::o;32712:366::-;32854:3;32875:67;32939:2;32934:3;32875:67;:::i;:::-;32868:74;;32951:93;33040:3;32951:93;:::i;:::-;33069:2;33064:3;33060:12;33053:19;;32712:366;;;:::o;33084:419::-;33250:4;33288:2;33277:9;33273:18;33265:26;;33337:9;33331:4;33327:20;33323:1;33312:9;33308:17;33301:47;33365:131;33491:4;33365:131;:::i;:::-;33357:139;;33084:419;;;:::o;33509:227::-;33649:34;33645:1;33637:6;33633:14;33626:58;33718:10;33713:2;33705:6;33701:15;33694:35;33509:227;:::o;33742:366::-;33884:3;33905:67;33969:2;33964:3;33905:67;:::i;:::-;33898:74;;33981:93;34070:3;33981:93;:::i;:::-;34099:2;34094:3;34090:12;34083:19;;33742:366;;;:::o;34114:419::-;34280:4;34318:2;34307:9;34303:18;34295:26;;34367:9;34361:4;34357:20;34353:1;34342:9;34338:17;34331:47;34395:131;34521:4;34395:131;:::i;:::-;34387:139;;34114:419;;;:::o;34539:174::-;34679:26;34675:1;34667:6;34663:14;34656:50;34539:174;:::o;34719:366::-;34861:3;34882:67;34946:2;34941:3;34882:67;:::i;:::-;34875:74;;34958:93;35047:3;34958:93;:::i;:::-;35076:2;35071:3;35067:12;35060:19;;34719:366;;;:::o;35091:419::-;35257:4;35295:2;35284:9;35280:18;35272:26;;35344:9;35338:4;35334:20;35330:1;35319:9;35315:17;35308:47;35372:131;35498:4;35372:131;:::i;:::-;35364:139;;35091:419;;;:::o;35516:229::-;35656:34;35652:1;35644:6;35640:14;35633:58;35725:12;35720:2;35712:6;35708:15;35701:37;35516:229;:::o;35751:366::-;35893:3;35914:67;35978:2;35973:3;35914:67;:::i;:::-;35907:74;;35990:93;36079:3;35990:93;:::i;:::-;36108:2;36103:3;36099:12;36092:19;;35751:366;;;:::o;36123:419::-;36289:4;36327:2;36316:9;36312:18;36304:26;;36376:9;36370:4;36366:20;36362:1;36351:9;36347:17;36340:47;36404:131;36530:4;36404:131;:::i;:::-;36396:139;;36123:419;;;:::o;36548:223::-;36688:34;36684:1;36676:6;36672:14;36665:58;36757:6;36752:2;36744:6;36740:15;36733:31;36548:223;:::o;36777:366::-;36919:3;36940:67;37004:2;36999:3;36940:67;:::i;:::-;36933:74;;37016:93;37105:3;37016:93;:::i;:::-;37134:2;37129:3;37125:12;37118:19;;36777:366;;;:::o;37149:419::-;37315:4;37353:2;37342:9;37338:18;37330:26;;37402:9;37396:4;37392:20;37388:1;37377:9;37373:17;37366:47;37430:131;37556:4;37430:131;:::i;:::-;37422:139;;37149:419;;;:::o;37574:194::-;37614:4;37634:20;37652:1;37634:20;:::i;:::-;37629:25;;37668:20;37686:1;37668:20;:::i;:::-;37663:25;;37712:1;37709;37705:9;37697:17;;37736:1;37730:4;37727:11;37724:37;;;37741:18;;:::i;:::-;37724:37;37574:194;;;;:::o;37774:180::-;37822:77;37819:1;37812:88;37919:4;37916:1;37909:15;37943:4;37940:1;37933:15;37960:180;38008:77;38005:1;37998:88;38105:4;38102:1;38095:15;38129:4;38126:1;38119:15;38146:143;38203:5;38234:6;38228:13;38219:22;;38250:33;38277:5;38250:33;:::i;:::-;38146:143;;;;:::o;38295:351::-;38365:6;38414:2;38402:9;38393:7;38389:23;38385:32;38382:119;;;38420:79;;:::i;:::-;38382:119;38540:1;38565:64;38621:7;38612:6;38601:9;38597:22;38565:64;:::i;:::-;38555:74;;38511:128;38295:351;;;;:::o;38652:85::-;38697:7;38726:5;38715:16;;38652:85;;;:::o;38743:158::-;38801:9;38834:61;38852:42;38861:32;38887:5;38861:32;:::i;:::-;38852:42;:::i;:::-;38834:61;:::i;:::-;38821:74;;38743:158;;;:::o;38907:147::-;39002:45;39041:5;39002:45;:::i;:::-;38997:3;38990:58;38907:147;;:::o;39060:114::-;39127:6;39161:5;39155:12;39145:22;;39060:114;;;:::o;39180:184::-;39279:11;39313:6;39308:3;39301:19;39353:4;39348:3;39344:14;39329:29;;39180:184;;;;:::o;39370:132::-;39437:4;39460:3;39452:11;;39490:4;39485:3;39481:14;39473:22;;39370:132;;;:::o;39508:108::-;39585:24;39603:5;39585:24;:::i;:::-;39580:3;39573:37;39508:108;;:::o;39622:179::-;39691:10;39712:46;39754:3;39746:6;39712:46;:::i;:::-;39790:4;39785:3;39781:14;39767:28;;39622:179;;;;:::o;39807:113::-;39877:4;39909;39904:3;39900:14;39892:22;;39807:113;;;:::o;39956:732::-;40075:3;40104:54;40152:5;40104:54;:::i;:::-;40174:86;40253:6;40248:3;40174:86;:::i;:::-;40167:93;;40284:56;40334:5;40284:56;:::i;:::-;40363:7;40394:1;40379:284;40404:6;40401:1;40398:13;40379:284;;;40480:6;40474:13;40507:63;40566:3;40551:13;40507:63;:::i;:::-;40500:70;;40593:60;40646:6;40593:60;:::i;:::-;40583:70;;40439:224;40426:1;40423;40419:9;40414:14;;40379:284;;;40383:14;40679:3;40672:10;;40080:608;;;39956:732;;;;:::o;40694:831::-;40957:4;40995:3;40984:9;40980:19;40972:27;;41009:71;41077:1;41066:9;41062:17;41053:6;41009:71;:::i;:::-;41090:80;41166:2;41155:9;41151:18;41142:6;41090:80;:::i;:::-;41217:9;41211:4;41207:20;41202:2;41191:9;41187:18;41180:48;41245:108;41348:4;41339:6;41245:108;:::i;:::-;41237:116;;41363:72;41431:2;41420:9;41416:18;41407:6;41363:72;:::i;:::-;41445:73;41513:3;41502:9;41498:19;41489:6;41445:73;:::i;:::-;40694:831;;;;;;;;:::o;41531:225::-;41671:34;41667:1;41659:6;41655:14;41648:58;41740:8;41735:2;41727:6;41723:15;41716:33;41531:225;:::o;41762:366::-;41904:3;41925:67;41989:2;41984:3;41925:67;:::i;:::-;41918:74;;42001:93;42090:3;42001:93;:::i;:::-;42119:2;42114:3;42110:12;42103:19;;41762:366;;;:::o;42134:419::-;42300:4;42338:2;42327:9;42323:18;42315:26;;42387:9;42381:4;42377:20;42373:1;42362:9;42358:17;42351:47;42415:131;42541:4;42415:131;:::i;:::-;42407:139;;42134:419;;;:::o;42559:320::-;42674:4;42712:2;42701:9;42697:18;42689:26;;42725:71;42793:1;42782:9;42778:17;42769:6;42725:71;:::i;:::-;42806:66;42868:2;42857:9;42853:18;42844:6;42806:66;:::i;:::-;42559:320;;;;;:::o;42885:807::-;43134:4;43172:3;43161:9;43157:19;43149:27;;43186:71;43254:1;43243:9;43239:17;43230:6;43186:71;:::i;:::-;43267:72;43335:2;43324:9;43320:18;43311:6;43267:72;:::i;:::-;43349:80;43425:2;43414:9;43410:18;43401:6;43349:80;:::i;:::-;43439;43515:2;43504:9;43500:18;43491:6;43439:80;:::i;:::-;43529:73;43597:3;43586:9;43582:19;43573:6;43529:73;:::i;:::-;43612;43680:3;43669:9;43665:19;43656:6;43612:73;:::i;:::-;42885:807;;;;;;;;;:::o;43698:663::-;43786:6;43794;43802;43851:2;43839:9;43830:7;43826:23;43822:32;43819:119;;;43857:79;;:::i;:::-;43819:119;43977:1;44002:64;44058:7;44049:6;44038:9;44034:22;44002:64;:::i;:::-;43992:74;;43948:128;44115:2;44141:64;44197:7;44188:6;44177:9;44173:22;44141:64;:::i;:::-;44131:74;;44086:129;44254:2;44280:64;44336:7;44327:6;44316:9;44312:22;44280:64;:::i;:::-;44270:74;;44225:129;43698:663;;;;;:::o

Swarm Source

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