ETH Price: $3,341.69 (-1.21%)
 

Overview

Max Total Supply

100,000,000 WCN

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 WCN

Value
$0.00
0x7cd3047077b9bb65f69476860340bd79ee311c96
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:
WCN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-15
*/

// SPDX-License-Identifier: MIT

/************************************** 
 
    WCN is building the future of cloud computing by decentralizing infrastructure. 
    Through the power of blockchain and the WCN token, we offer secure, efficient, 
    and accessible services to everyone. Join us in shaping a transparent, 
    community-driven ecosystem where innovation thrives! 

    Website: https://worldcompute.net
    GitBook: https://docs.worldcompute.net/wcn
    Telegram: https://t.me/WorldComputeNet
    X: https://x.com/WorldComputeN
    Linktree: https://linktr.ee/WorldComputeNet

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

pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

    function _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(bool confirmRenounce)
        external
        virtual
        onlyOwner
    {
        require(confirmRenounce, "Please confirm renounce!");
        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 ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

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

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

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

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

contract WCN is ERC20, Ownable {
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    address public operationsAddress;

    uint256 public tradingActiveBlock = 0;
    mapping(address => bool) public markedAsSniper;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;

    uint256 public tokensForOperations;

    bool public oncePerBlockEnabled = true;
    uint256 public lastSwapBlock; 
    uint256 public maxSwapsPerBlock = 1; 
    uint256 public swapsThisBlock = 0;   

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() payable ERC20("World Compute Network", "WCN") {
        address newOwner = msg.sender;  

        uint256 totalSupply = 100 * 1e6 * 1e18;

        buyOperationsFee = 30;
        buyTotalFees = buyOperationsFee;

        sellOperationsFee = 30;
        sellTotalFees = sellOperationsFee;        

        maxBuyAmount = (totalSupply * 15) / 1000; // 1.5%
        maxSellAmount = (totalSupply * 15) / 1000; // 1.5%
        maxWallet = (totalSupply * 15) / 1000; // 1.5%
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        operationsAddress = address(msg.sender);

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

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

        _createInitialSupply(address(this), (totalSupply * 95) / 100);
        _createInitialSupply(newOwner, (totalSupply * 5) / 100);

        transferOwnership(newOwner);
    }

    receive() external payable {}

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

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

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

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

    function updateBuyTax(
        uint256 _operationsFee
    ) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyTotalFees = buyOperationsFee;
        require(buyTotalFees <= 12, "Must keep fees at 12% or less");
    }

    function updateSellTax(
        uint256 _operationsFee
    ) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellTotalFees = sellOperationsFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }    

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 1) / 100,
            "Swap amount cannot be higher than 1% total supply."
        );
        swapTokensAtAmount = newAmount;
    }    

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

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

        if (!tradingActive) {
            require(
                _isExcludedFromFees[from] || _isExcludedFromFees[to],
                "Trading is not active."
            );
        } else {
            require(
                !markedAsSniper[from],
                "Snipers cannot transfer tokens"
            );
        }

        if (limitsInEffect) {
            if (to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack(false);
            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;
                tokensForOperations +=
                    (fees * sellOperationsFee) /
                    sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

    function swapBack(bool all) private {

        if (block.number != lastSwapBlock) {
            lastSwapBlock = block.number;
            swapsThisBlock = 0;
        }

        if (oncePerBlockEnabled && swapsThisBlock >= maxSwapsPerBlock) {
            return;
        }        

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForOperations;

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

        if (!all && (contractBalance > swapTokensAtAmount * 15)) {
            contractBalance = swapTokensAtAmount * 15;
        }

        swapTokensForEth(contractBalance);

        tokensForOperations = 0;

        swapsThisBlock += 1;    

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

        require(success, "Transfer to operations address failed");
    }

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

    function setOperationsAddress(
        address _operationsAddress
    ) external onlyOwner {
        require(
            _operationsAddress != address(0),
            "_operationsAddress address cannot be 0"
        );
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }

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

    function flagSniper(address wallet) external onlyOwner {
        require(!markedAsSniper[wallet], "Wallet is already flagged.");
        markedAsSniper[wallet] = true;
    }

    function unflagSniper(address wallet) external onlyOwner {
        require(markedAsSniper[wallet], "Wallet is already not marked.");
        markedAsSniper[wallet] = false;
    }        

    function recoverETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }      

    function initializeLP() external onlyOwner {
        require(!tradingActive, "Trading is already active, cannot relaunch.");     

        address _dexRouter;

        if (block.chainid == 1) {
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2
        } else if (block.chainid == 11155111) {
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Sepolia
        } else if (block.chainid == 56) {
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BNB Chain: PCS V2
        } else if (block.chainid == 97) {
            _dexRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BNB Chain: PCS V2
        } else if (block.chainid == 42161) {
            _dexRouter = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506; // Arbitrum: SushiSwap
        } else {
            revert("Chain not configured");
        }

        // initialize router
        dexRouter = IDexRouter(_dexRouter);
        
        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );

        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);        

        _excludeFromMaxTransaction(address(dexRouter), true);
        excludeFromFees(address(dexRouter), true);  

        require(
            address(this).balance > 0,
            "Must have ETH on contract to launch"
        );
        require(
            balanceOf(address(this)) > 0,
            "Must have Tokens on contract to launch"
        );           

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

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            msg.sender,
            block.timestamp
        ); 
    }

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

    function setSwapRestrictions(bool _enabled, uint256 _maxSwaps) external onlyOwner {
        require(_maxSwaps > 0, "Max swaps per block must be greater than 0");
        oncePerBlockEnabled = _enabled;
        maxSwapsPerBlock = _maxSwaps;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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":"UpdatedOperationsAddress","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":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"wallet","type":"address"}],"name":"flagSniper","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":"initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastSwapBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markedAsSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapsPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oncePerBlockEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_maxSwaps","type":"uint256"}],"name":"setSwapRestrictions","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":"swapsThisBlock","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":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unflagSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055506001601560006101000a81548160ff021916908315150217905550600160175560006018556040518060400160405280601581526020017f576f726c6420436f6d70757465204e6574776f726b00000000000000000000008152506040518060400160405280600381526020017f57434e00000000000000000000000000000000000000000000000000000000008152508160039081620000fc919062000ba8565b5080600490816200010e919062000ba8565b5050506000620001236200041f60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600033905060006a52b7d2dcc80cd2e40000009050601e601181905550601154601081905550601e6013819055506013546012819055506103e8600f826200020b919062000cbe565b62000217919062000d38565b6006819055506103e8600f826200022f919062000cbe565b6200023b919062000d38565b6007819055506103e8600f8262000253919062000cbe565b6200025f919062000d38565b60088190555061271060058262000277919062000cbe565b62000283919062000d38565b600b8190555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002dd8260016200042760201b60201c565b620002f03060016200042760201b60201c565b6200030561dead60016200042760201b60201c565b6200033a600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200042760201b60201c565b6200034d826001620004bd60201b60201c565b62000360306001620004bd60201b60201c565b6200037561dead6001620004bd60201b60201c565b620003aa600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004bd60201b60201c565b620003d8306064605f84620003c0919062000cbe565b620003cc919062000d38565b6200060a60201b60201c565b62000406826064600584620003ee919062000cbe565b620003fa919062000d38565b6200060a60201b60201c565b62000417826200075a60201b60201c565b505062001012565b600033905090565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620004b192919062000dd2565b60405180910390a15050565b620004cd6200041f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200055f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005569062000e60565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620005fe919062000e82565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200067c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006739062000eef565b60405180910390fd5b806002600082825462000690919062000f11565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620006e7919062000f11565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200074e919062000f5d565b60405180910390a35050565b6200076a6200041f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f39062000e60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200086e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008659062000ff0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009b057607f821691505b602082108103620009c657620009c562000968565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009f1565b62000a3c8683620009f1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a8962000a8362000a7d8462000a54565b62000a5e565b62000a54565b9050919050565b6000819050919050565b62000aa58362000a68565b62000abd62000ab48262000a90565b848454620009fe565b825550505050565b600090565b62000ad462000ac5565b62000ae181848462000a9a565b505050565b5b8181101562000b095762000afd60008262000aca565b60018101905062000ae7565b5050565b601f82111562000b585762000b2281620009cc565b62000b2d84620009e1565b8101602085101562000b3d578190505b62000b5562000b4c85620009e1565b83018262000ae6565b50505b505050565b600082821c905092915050565b600062000b7d6000198460080262000b5d565b1980831691505092915050565b600062000b98838362000b6a565b9150826002028217905092915050565b62000bb3826200092e565b67ffffffffffffffff81111562000bcf5762000bce62000939565b5b62000bdb825462000997565b62000be882828562000b0d565b600060209050601f83116001811462000c20576000841562000c0b578287015190505b62000c17858262000b8a565b86555062000c87565b601f19841662000c3086620009cc565b60005b8281101562000c5a5784890151825560018201915060208501945060208101905062000c33565b8683101562000c7a578489015162000c76601f89168262000b6a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ccb8262000a54565b915062000cd88362000a54565b925082820262000ce88162000a54565b9150828204841483151762000d025762000d0162000c8f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d458262000a54565b915062000d528362000a54565b92508262000d655762000d6462000d09565b5b828204905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d9d8262000d70565b9050919050565b62000daf8162000d90565b82525050565b60008115159050919050565b62000dcc8162000db5565b82525050565b600060408201905062000de9600083018562000da4565b62000df8602083018462000dc1565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e4860208362000dff565b915062000e558262000e10565b602082019050919050565b6000602082019050818103600083015262000e7b8162000e39565b9050919050565b600060208201905062000e99600083018462000dc1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ed7601f8362000dff565b915062000ee48262000e9f565b602082019050919050565b6000602082019050818103600083015262000f0a8162000ec8565b9050919050565b600062000f1e8262000a54565b915062000f2b8362000a54565b925082820190508082111562000f465762000f4562000c8f565b5b92915050565b62000f578162000a54565b82525050565b600060208201905062000f74600083018462000f4c565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000fd860268362000dff565b915062000fe58262000f7a565b604082019050919050565b600060208201905081810360008301526200100b8162000fc9565b9050919050565b615de580620010226000396000f3fe6080604052600436106103035760003560e01c80638366e79a11610190578063c44a24dd116100dc578063dd62ed3e11610095578063ee40166e1161006f578063ee40166e14610b7f578063f2fde38b14610baa578063f8b45b0514610bd3578063fb002c9714610bfe5761030a565b8063dd62ed3e14610aec578063e2f4560514610b29578063ea4cfe1214610b545761030a565b8063c44a24dd146109dc578063c4c6571b14610a19578063cef3f88614610a44578063d257b34f14610a6f578063d85ba06314610a98578063d86c9fec14610ac35761030a565b80639a7a23d611610149578063a9059cbb11610123578063a9059cbb1461090e578063b62496f51461094b578063bbc0c74214610988578063c0246668146109b35761030a565b80639a7a23d614610891578063a457c2d7146108ba578063a6690cf9146108f75761030a565b80638366e79a1461079157806388e765ff146107ce5780638a8c523c146107f95780638da5cb5b1461081057806395d89b411461083b57806396792669146108665761030a565b80634a62bb651161024f578063672fc7be1161020857806370a08231116101e257806370a08231146106eb578063751039fc146107285780637571336a1461073f5780637e926b4b146107685761030a565b8063672fc7be1461066c5780636a486a8e146106955780636ddd1713146106c05761030a565b80634a62bb651461056c5780634f77f6c01461059757806357bd8bb3146105c2578063591f09eb146105eb5780635a139dd41461061657806366d602ae146106415761030a565b806318160ddd116102bc578063395093511161029657806339509351146104b2578063436d3340146104ef578063452ed4f114610518578063499b8394146105435761030a565b806318160ddd1461041f57806323b872dd1461044a578063313ce567146104875761030a565b80630614117a1461030f57806306fdde03146103265780630758d92414610351578063095ea7b31461037c57806310d5de53146103b957806312185a39146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c29565b005b34801561033257600080fd5b5061033b610d31565b60405161034891906142b8565b60405180910390f35b34801561035d57600080fd5b50610366610dc3565b6040516103739190614359565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906143ed565b610de9565b6040516103b09190614448565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190614463565b610e07565b6040516103ed9190614448565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190614490565b610e27565b005b34801561042b57600080fd5b50610434610f17565b60405161044191906144cc565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c91906144e7565b610f21565b60405161047e9190614448565b60405180910390f35b34801561049357600080fd5b5061049c611019565b6040516104a99190614556565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906143ed565b611022565b6040516104e69190614448565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614490565b6110ce565b005b34801561052457600080fd5b5061052d6111be565b60405161053a9190614580565b60405180910390f35b34801561054f57600080fd5b5061056a60048036038101906105659190614463565b6111e4565b005b34801561057857600080fd5b50610581611371565b60405161058e9190614448565b60405180910390f35b3480156105a357600080fd5b506105ac611384565b6040516105b991906144cc565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190614463565b61138a565b005b3480156105f757600080fd5b50610600611509565b60405161060d91906144cc565b60405180910390f35b34801561062257600080fd5b5061062b61150f565b60405161063891906144cc565b60405180910390f35b34801561064d57600080fd5b50610656611515565b60405161066391906144cc565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e91906145c7565b61151b565b005b3480156106a157600080fd5b506106aa61161a565b6040516106b791906144cc565b60405180910390f35b3480156106cc57600080fd5b506106d5611620565b6040516106e29190614448565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190614463565b611633565b60405161071f91906144cc565b60405180910390f35b34801561073457600080fd5b5061073d61167b565b005b34801561074b57600080fd5b5061076660048036038101906107619190614607565b61172f565b005b34801561077457600080fd5b5061078f600480360381019061078a9190614647565b6118b7565b005b34801561079d57600080fd5b506107b860048036038101906107b39190614674565b611a50565b6040516107c59190614448565b60405180910390f35b3480156107da57600080fd5b506107e3611d1d565b6040516107f091906144cc565b60405180910390f35b34801561080557600080fd5b5061080e611d23565b005b34801561081c57600080fd5b50610825611e75565b6040516108329190614580565b60405180910390f35b34801561084757600080fd5b50610850611e9f565b60405161085d91906142b8565b60405180910390f35b34801561087257600080fd5b5061087b611f31565b60405161088891906144cc565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190614607565b611f37565b005b3480156108c657600080fd5b506108e160048036038101906108dc91906143ed565b6120b2565b6040516108ee9190614448565b60405180910390f35b34801561090357600080fd5b5061090c61219d565b005b34801561091a57600080fd5b50610935600480360381019061093091906143ed565b6127ca565b6040516109429190614448565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190614463565b6127e8565b60405161097f9190614448565b60405180910390f35b34801561099457600080fd5b5061099d612808565b6040516109aa9190614448565b60405180910390f35b3480156109bf57600080fd5b506109da60048036038101906109d59190614607565b61281b565b005b3480156109e857600080fd5b50610a0360048036038101906109fe9190614463565b61295b565b604051610a109190614448565b60405180910390f35b348015610a2557600080fd5b50610a2e61297b565b604051610a3b91906144cc565b60405180910390f35b348015610a5057600080fd5b50610a59612981565b604051610a669190614448565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190614490565b612994565b005b348015610aa457600080fd5b50610aad612afb565b604051610aba91906144cc565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614463565b612b01565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190614674565b612c7f565b604051610b2091906144cc565b60405180910390f35b348015610b3557600080fd5b50610b3e612d06565b604051610b4b91906144cc565b60405180910390f35b348015610b6057600080fd5b50610b69612d0c565b604051610b769190614580565b60405180910390f35b348015610b8b57600080fd5b50610b94612d32565b604051610ba191906144cc565b60405180910390f35b348015610bb657600080fd5b50610bd16004803603810190610bcc9190614463565b612d38565b005b348015610bdf57600080fd5b50610be8612efe565b604051610bf591906144cc565b60405180910390f35b348015610c0a57600080fd5b50610c13612f04565b604051610c2091906144cc565b60405180910390f35b610c31612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614700565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610ce690614751565b60006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b50508091505050565b606060038054610d4090614795565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c90614795565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dfd610df6612f0a565b8484612f12565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b610e2f612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590614700565b60405180910390fd5b80601381905550601354601281905550600f6012541115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b90614812565b60405180910390fd5b50565b6000600254905090565b6000610f2e8484846130db565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f79612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff0906148a4565b60405180910390fd5b61100d85611005612f0a565b858403612f12565b60019150509392505050565b60006012905090565b60006110c461102f612f0a565b84846001600061103d612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110bf91906148f3565b612f12565b6001905092915050565b6110d6612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90614700565b60405180910390fd5b80601181905550601154601081905550600c60105411156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290614973565b60405180910390fd5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111ec612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190614a05565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b600f60009054906101000a900460ff1681565b60135481565b611392612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890614700565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590614a71565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60165481565b60115481565b60075481565b611523612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990614700565b60405180910390fd5b600081116115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec90614b03565b60405180910390fd5b81601560006101000a81548160ff021916908315150217905550806017819055505050565b60125481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611683612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170990614700565b60405180910390fd5b6000600f60006101000a81548160ff021916908315150217905550565b611737612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614700565b60405180910390fd5b8061185c57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290614b95565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bf612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590614700565b60405180910390fd5b8061198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614c01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611a5a612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614c6d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611ba05750600f60019054906101000a900460ff16155b611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690614cff565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c1a9190614580565b602060405180830381865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b9190614d34565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c98929190614d61565b6020604051808303816000875af1158015611cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdb9190614d9f565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611d0e929190614d61565b60405180910390a15092915050565b60065481565b611d2b612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190614700565b60405180910390fd5b600f60019054906101000a900460ff1615611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190614e18565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611eae90614795565b80601f0160208091040260200160405190810160405280929190818152602001828054611eda90614795565b8015611f275780601f10611efc57610100808354040283529160200191611f27565b820191906000526020600020905b815481529060010190602001808311611f0a57829003601f168201915b5050505050905090565b60175481565b611f3f612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614700565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205590614eaa565b60405180910390fd5b6120688282613a9f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080600160006120c1612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614f3c565b60405180910390fd5b612192612189612f0a565b85858403612f12565b600191505092915050565b6121a5612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90614700565b60405180910390fd5b600f60019054906101000a900460ff1615612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90614fce565b60405180910390fd5b6000600146036122aa57737a250d5630b4cf539739df2c5dacb4c659f2488d905061237c565b62aa36a746036122d057737a250d5630b4cf539739df2c5dacb4c659f2488d905061237b565b603846036122f4577310ed43c718714eb63d5aa57b78b54704e256024e905061237a565b606146036123185773d99d1c33f9fc3444f8101754abc46c52416550d19050612379565b61a4b1460361233d57731b02da8cb0d097eb8d57a175b88c7d8b479975069050612378565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f9061503a565b60405180910390fd5b5b5b5b5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e919061506f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb919061506f565b6040518363ffffffff1660e01b815260040161251892919061509c565b6020604051808303816000875af1158015612537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255b919061506f565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506125c8600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613b4a565b6125f5600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613a9f565b612622600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613b4a565b61264f600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161281b565b60004711612692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268990615137565b60405180910390fd5b600061269d30611633565b116126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d4906151c9565b60405180910390fd5b61271230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661270d30611633565b612f12565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061275b30611633565b60008033426040518863ffffffff1660e01b815260040161278196959493929190615224565b60606040518083038185885af115801561279f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127c49190615285565b50505050565b60006127de6127d7612f0a565b84846130db565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b612823612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990614700565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161294f9190614448565b60405180910390a25050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60185481565b601560009054906101000a900460ff1681565b61299c612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290614700565b60405180910390fd5b620186a06001612a39610f17565b612a4391906152d8565b612a4d9190615349565b811015612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a86906153ec565b60405180910390fd5b60646001612a9b610f17565b612aa591906152d8565b612aaf9190615349565b811115612af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae89061547e565b60405180910390fd5b80600b8190555050565b60105481565b612b09612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8f90614700565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1b906154ea565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612d40612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc690614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e359061557c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60145481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f789061560e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe7906156a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130ce91906144cc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314190615732565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b0906157c4565b60405180910390fd5b600081116131fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f390615830565b60405180910390fd5b600f60019054906101000a900460ff166132f557601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b15750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6132f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e79061589c565b60405180910390fd5b613383565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615908565b60405180910390fd5b5b600f60009054906101000a900460ff16156137655761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134205750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134765750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561376457601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351e5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c557600654811115613568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355f9061599a565b60405180910390fd5b60085461357483611633565b8261357f91906148f3565b11156135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b790615a06565b60405180910390fd5b613763565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136685750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b7576007548111156136b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a990615a98565b60405180910390fd5b613762565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137615760085461371483611633565b8261371f91906148f3565b1115613760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375790615a06565b60405180910390fd5b5b5b5b5b5b600061377030611633565b90506000600b5482101590508080156137955750600f60029054906101000a900460ff165b80156137ae5750600a60149054906101000a900460ff16155b80156138035750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613849576001600a60146101000a81548160ff02191690831515021790555061382d6000613bde565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fa57600090505b60008115613a8b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561395d57506000601254115b156139b65760646012548661397291906152d8565b61397c9190615349565b90506012546013548261398f91906152d8565b6139999190615349565b601460008282546139aa91906148f3565b92505081905550613a67565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1157506000601054115b15613a6657606460105486613a2691906152d8565b613a309190615349565b905060105460115482613a4391906152d8565b613a4d9190615349565b60146000828254613a5e91906148f3565b925050819055505b5b6000811115613a7c57613a7b873083613d7c565b5b8085613a889190615ab8565b94505b613a96878787613d7c565b50505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b008282613b4a565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613bd2929190615aec565b60405180910390a15050565b6016544314613bf7574360168190555060006018819055505b601560009054906101000a900460ff168015613c17575060175460185410155b613d79576000613c2630611633565b9050600060145490506000821480613c3e5750600081145b15613c4a575050613d79565b82158015613c655750600f600b54613c6291906152d8565b82115b15613c7c57600f600b54613c7991906152d8565b91505b613c8582613fe5565b6000601481905550600160186000828254613ca091906148f3565b925050819055506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613cef90614751565b60006040518083038185875af1925050503d8060008114613d2c576040519150601f19603f3d011682016040523d82523d6000602084013e613d31565b606091505b5050905080613d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6c90615b87565b60405180910390fd5b5050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613de290615732565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e51906157c4565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed790615c19565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f7391906148f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fd791906144cc565b60405180910390a350505050565b6000600267ffffffffffffffff81111561400257614001615c39565b5b6040519080825280602002602001820160405280156140305781602001602082028036833780820191505090505b509050308160008151811061404857614047615c68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614113919061506f565b8160018151811061412757614126615c68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061418e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f12565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141f2959493929190615d55565b600060405180830381600087803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614262578082015181840152602081019050614247565b60008484015250505050565b6000601f19601f8301169050919050565b600061428a82614228565b6142948185614233565b93506142a4818560208601614244565b6142ad8161426e565b840191505092915050565b600060208201905081810360008301526142d2818461427f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061431f61431a614315846142da565b6142fa565b6142da565b9050919050565b600061433182614304565b9050919050565b600061434382614326565b9050919050565b61435381614338565b82525050565b600060208201905061436e600083018461434a565b92915050565b600080fd5b6000614384826142da565b9050919050565b61439481614379565b811461439f57600080fd5b50565b6000813590506143b18161438b565b92915050565b6000819050919050565b6143ca816143b7565b81146143d557600080fd5b50565b6000813590506143e7816143c1565b92915050565b6000806040838503121561440457614403614374565b5b6000614412858286016143a2565b9250506020614423858286016143d8565b9150509250929050565b60008115159050919050565b6144428161442d565b82525050565b600060208201905061445d6000830184614439565b92915050565b60006020828403121561447957614478614374565b5b6000614487848285016143a2565b91505092915050565b6000602082840312156144a6576144a5614374565b5b60006144b4848285016143d8565b91505092915050565b6144c6816143b7565b82525050565b60006020820190506144e160008301846144bd565b92915050565b600080600060608486031215614500576144ff614374565b5b600061450e868287016143a2565b935050602061451f868287016143a2565b9250506040614530868287016143d8565b9150509250925092565b600060ff82169050919050565b6145508161453a565b82525050565b600060208201905061456b6000830184614547565b92915050565b61457a81614379565b82525050565b60006020820190506145956000830184614571565b92915050565b6145a48161442d565b81146145af57600080fd5b50565b6000813590506145c18161459b565b92915050565b600080604083850312156145de576145dd614374565b5b60006145ec858286016145b2565b92505060206145fd858286016143d8565b9150509250929050565b6000806040838503121561461e5761461d614374565b5b600061462c858286016143a2565b925050602061463d858286016145b2565b9150509250929050565b60006020828403121561465d5761465c614374565b5b600061466b848285016145b2565b91505092915050565b6000806040838503121561468b5761468a614374565b5b6000614699858286016143a2565b92505060206146aa858286016143a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146ea602083614233565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b600081905092915050565b50565b600061473b600083614720565b91506147468261472b565b600082019050919050565b600061475c8261472e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ad57607f821691505b6020821081036147c0576147bf614766565b5b50919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006147fc601d83614233565b9150614807826147c6565b602082019050919050565b6000602082019050818103600083015261482b816147ef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061488e602883614233565b915061489982614832565b604082019050919050565b600060208201905081810360008301526148bd81614881565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148fe826143b7565b9150614909836143b7565b9250828201905080821115614921576149206148c4565b5b92915050565b7f4d757374206b656570206665657320617420313225206f72206c657373000000600082015250565b600061495d601d83614233565b915061496882614927565b602082019050919050565b6000602082019050818103600083015261498c81614950565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b60006149ef602683614233565b91506149fa82614993565b604082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614a5b601a83614233565b9150614a6682614a25565b602082019050919050565b60006020820190508181036000830152614a8a81614a4e565b9050919050565b7f4d61782073776170732070657220626c6f636b206d757374206265206772656160008201527f746572207468616e203000000000000000000000000000000000000000000000602082015250565b6000614aed602a83614233565b9150614af882614a91565b604082019050919050565b60006020820190508181036000830152614b1c81614ae0565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614b7f602783614233565b9150614b8a82614b23565b604082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614beb601883614233565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614c57601a83614233565b9150614c6282614c21565b602082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e732077686960008201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b6000614ce9603483614233565b9150614cf482614c8d565b604082019050919050565b60006020820190508181036000830152614d1881614cdc565b9050919050565b600081519050614d2e816143c1565b92915050565b600060208284031215614d4a57614d49614374565b5b6000614d5884828501614d1f565b91505092915050565b6000604082019050614d766000830185614571565b614d8360208301846144bd565b9392505050565b600081519050614d998161459b565b92915050565b600060208284031215614db557614db4614374565b5b6000614dc384828501614d8a565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614e02601783614233565b9150614e0d82614dcc565b602082019050919050565b60006020820190508181036000830152614e3181614df5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614e94603983614233565b9150614e9f82614e38565b604082019050919050565b60006020820190508181036000830152614ec381614e87565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614f26602583614233565b9150614f3182614eca565b604082019050919050565b60006020820190508181036000830152614f5581614f19565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000614fb8602b83614233565b9150614fc382614f5c565b604082019050919050565b60006020820190508181036000830152614fe781614fab565b9050919050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b6000615024601483614233565b915061502f82614fee565b602082019050919050565b6000602082019050818103600083015261505381615017565b9050919050565b6000815190506150698161438b565b92915050565b60006020828403121561508557615084614374565b5b60006150938482850161505a565b91505092915050565b60006040820190506150b16000830185614571565b6150be6020830184614571565b9392505050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b6000615121602383614233565b915061512c826150c5565b604082019050919050565b6000602082019050818103600083015261515081615114565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006151b3602683614233565b91506151be82615157565b604082019050919050565b600060208201905081810360008301526151e2816151a6565b9050919050565b6000819050919050565b600061520e615209615204846151e9565b6142fa565b6143b7565b9050919050565b61521e816151f3565b82525050565b600060c0820190506152396000830189614571565b61524660208301886144bd565b6152536040830187615215565b6152606060830186615215565b61526d6080830185614571565b61527a60a08301846144bd565b979650505050505050565b60008060006060848603121561529e5761529d614374565b5b60006152ac86828701614d1f565b93505060206152bd86828701614d1f565b92505060406152ce86828701614d1f565b9150509250925092565b60006152e3826143b7565b91506152ee836143b7565b92508282026152fc816143b7565b91508282048414831517615313576153126148c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615354826143b7565b915061535f836143b7565b92508261536f5761536e61531a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153d6603583614233565b91506153e18261537a565b604082019050919050565b60006020820190508181036000830152615405816153c9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000615468603283614233565b91506154738261540c565b604082019050919050565b600060208201905081810360008301526154978161545b565b9050919050565b7f57616c6c657420697320616c7265616479206e6f74206d61726b65642e000000600082015250565b60006154d4601d83614233565b91506154df8261549e565b602082019050919050565b60006020820190508181036000830152615503816154c7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615566602683614233565b91506155718261550a565b604082019050919050565b6000602082019050818103600083015261559581615559565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155f8602483614233565b91506156038261559c565b604082019050919050565b60006020820190508181036000830152615627816155eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061568a602283614233565b91506156958261562e565b604082019050919050565b600060208201905081810360008301526156b98161567d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061571c602583614233565b9150615727826156c0565b604082019050919050565b6000602082019050818103600083015261574b8161570f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157ae602383614233565b91506157b982615752565b604082019050919050565b600060208201905081810360008301526157dd816157a1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061581a601d83614233565b9150615825826157e4565b602082019050919050565b600060208201905081810360008301526158498161580d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615886601683614233565b915061589182615850565b602082019050919050565b600060208201905081810360008301526158b581615879565b9050919050565b7f536e69706572732063616e6e6f74207472616e7366657220746f6b656e730000600082015250565b60006158f2601e83614233565b91506158fd826158bc565b602082019050919050565b60006020820190508181036000830152615921816158e5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615984602883614233565b915061598f82615928565b604082019050919050565b600060208201905081810360008301526159b381615977565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b60006159f0601383614233565b91506159fb826159ba565b602082019050919050565b60006020820190508181036000830152615a1f816159e3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615a82602a83614233565b9150615a8d82615a26565b604082019050919050565b60006020820190508181036000830152615ab181615a75565b9050919050565b6000615ac3826143b7565b9150615ace836143b7565b9250828203905081811115615ae657615ae56148c4565b5b92915050565b6000604082019050615b016000830185614571565b615b0e6020830184614439565b9392505050565b7f5472616e7366657220746f206f7065726174696f6e732061646472657373206660008201527f61696c6564000000000000000000000000000000000000000000000000000000602082015250565b6000615b71602583614233565b9150615b7c82615b15565b604082019050919050565b60006020820190508181036000830152615ba081615b64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c03602683614233565b9150615c0e82615ba7565b604082019050919050565b60006020820190508181036000830152615c3281615bf6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ccc81614379565b82525050565b6000615cde8383615cc3565b60208301905092915050565b6000602082019050919050565b6000615d0282615c97565b615d0c8185615ca2565b9350615d1783615cb3565b8060005b83811015615d48578151615d2f8882615cd2565b9750615d3a83615cea565b925050600181019050615d1b565b5085935050505092915050565b600060a082019050615d6a60008301886144bd565b615d776020830187615215565b8181036040830152615d898186615cf7565b9050615d986060830185614571565b615da560808301846144bd565b969550505050505056fea264697066735822122042199e71dae6e132d90281dc2ca14df44022076889f7a6084456190fa2c2635564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638366e79a11610190578063c44a24dd116100dc578063dd62ed3e11610095578063ee40166e1161006f578063ee40166e14610b7f578063f2fde38b14610baa578063f8b45b0514610bd3578063fb002c9714610bfe5761030a565b8063dd62ed3e14610aec578063e2f4560514610b29578063ea4cfe1214610b545761030a565b8063c44a24dd146109dc578063c4c6571b14610a19578063cef3f88614610a44578063d257b34f14610a6f578063d85ba06314610a98578063d86c9fec14610ac35761030a565b80639a7a23d611610149578063a9059cbb11610123578063a9059cbb1461090e578063b62496f51461094b578063bbc0c74214610988578063c0246668146109b35761030a565b80639a7a23d614610891578063a457c2d7146108ba578063a6690cf9146108f75761030a565b80638366e79a1461079157806388e765ff146107ce5780638a8c523c146107f95780638da5cb5b1461081057806395d89b411461083b57806396792669146108665761030a565b80634a62bb651161024f578063672fc7be1161020857806370a08231116101e257806370a08231146106eb578063751039fc146107285780637571336a1461073f5780637e926b4b146107685761030a565b8063672fc7be1461066c5780636a486a8e146106955780636ddd1713146106c05761030a565b80634a62bb651461056c5780634f77f6c01461059757806357bd8bb3146105c2578063591f09eb146105eb5780635a139dd41461061657806366d602ae146106415761030a565b806318160ddd116102bc578063395093511161029657806339509351146104b2578063436d3340146104ef578063452ed4f114610518578063499b8394146105435761030a565b806318160ddd1461041f57806323b872dd1461044a578063313ce567146104875761030a565b80630614117a1461030f57806306fdde03146103265780630758d92414610351578063095ea7b31461037c57806310d5de53146103b957806312185a39146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c29565b005b34801561033257600080fd5b5061033b610d31565b60405161034891906142b8565b60405180910390f35b34801561035d57600080fd5b50610366610dc3565b6040516103739190614359565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906143ed565b610de9565b6040516103b09190614448565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190614463565b610e07565b6040516103ed9190614448565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190614490565b610e27565b005b34801561042b57600080fd5b50610434610f17565b60405161044191906144cc565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c91906144e7565b610f21565b60405161047e9190614448565b60405180910390f35b34801561049357600080fd5b5061049c611019565b6040516104a99190614556565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906143ed565b611022565b6040516104e69190614448565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614490565b6110ce565b005b34801561052457600080fd5b5061052d6111be565b60405161053a9190614580565b60405180910390f35b34801561054f57600080fd5b5061056a60048036038101906105659190614463565b6111e4565b005b34801561057857600080fd5b50610581611371565b60405161058e9190614448565b60405180910390f35b3480156105a357600080fd5b506105ac611384565b6040516105b991906144cc565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190614463565b61138a565b005b3480156105f757600080fd5b50610600611509565b60405161060d91906144cc565b60405180910390f35b34801561062257600080fd5b5061062b61150f565b60405161063891906144cc565b60405180910390f35b34801561064d57600080fd5b50610656611515565b60405161066391906144cc565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e91906145c7565b61151b565b005b3480156106a157600080fd5b506106aa61161a565b6040516106b791906144cc565b60405180910390f35b3480156106cc57600080fd5b506106d5611620565b6040516106e29190614448565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190614463565b611633565b60405161071f91906144cc565b60405180910390f35b34801561073457600080fd5b5061073d61167b565b005b34801561074b57600080fd5b5061076660048036038101906107619190614607565b61172f565b005b34801561077457600080fd5b5061078f600480360381019061078a9190614647565b6118b7565b005b34801561079d57600080fd5b506107b860048036038101906107b39190614674565b611a50565b6040516107c59190614448565b60405180910390f35b3480156107da57600080fd5b506107e3611d1d565b6040516107f091906144cc565b60405180910390f35b34801561080557600080fd5b5061080e611d23565b005b34801561081c57600080fd5b50610825611e75565b6040516108329190614580565b60405180910390f35b34801561084757600080fd5b50610850611e9f565b60405161085d91906142b8565b60405180910390f35b34801561087257600080fd5b5061087b611f31565b60405161088891906144cc565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190614607565b611f37565b005b3480156108c657600080fd5b506108e160048036038101906108dc91906143ed565b6120b2565b6040516108ee9190614448565b60405180910390f35b34801561090357600080fd5b5061090c61219d565b005b34801561091a57600080fd5b50610935600480360381019061093091906143ed565b6127ca565b6040516109429190614448565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190614463565b6127e8565b60405161097f9190614448565b60405180910390f35b34801561099457600080fd5b5061099d612808565b6040516109aa9190614448565b60405180910390f35b3480156109bf57600080fd5b506109da60048036038101906109d59190614607565b61281b565b005b3480156109e857600080fd5b50610a0360048036038101906109fe9190614463565b61295b565b604051610a109190614448565b60405180910390f35b348015610a2557600080fd5b50610a2e61297b565b604051610a3b91906144cc565b60405180910390f35b348015610a5057600080fd5b50610a59612981565b604051610a669190614448565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190614490565b612994565b005b348015610aa457600080fd5b50610aad612afb565b604051610aba91906144cc565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614463565b612b01565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190614674565b612c7f565b604051610b2091906144cc565b60405180910390f35b348015610b3557600080fd5b50610b3e612d06565b604051610b4b91906144cc565b60405180910390f35b348015610b6057600080fd5b50610b69612d0c565b604051610b769190614580565b60405180910390f35b348015610b8b57600080fd5b50610b94612d32565b604051610ba191906144cc565b60405180910390f35b348015610bb657600080fd5b50610bd16004803603810190610bcc9190614463565b612d38565b005b348015610bdf57600080fd5b50610be8612efe565b604051610bf591906144cc565b60405180910390f35b348015610c0a57600080fd5b50610c13612f04565b604051610c2091906144cc565b60405180910390f35b610c31612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614700565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610ce690614751565b60006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b50508091505050565b606060038054610d4090614795565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c90614795565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dfd610df6612f0a565b8484612f12565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b610e2f612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590614700565b60405180910390fd5b80601381905550601354601281905550600f6012541115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b90614812565b60405180910390fd5b50565b6000600254905090565b6000610f2e8484846130db565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f79612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff0906148a4565b60405180910390fd5b61100d85611005612f0a565b858403612f12565b60019150509392505050565b60006012905090565b60006110c461102f612f0a565b84846001600061103d612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110bf91906148f3565b612f12565b6001905092915050565b6110d6612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90614700565b60405180910390fd5b80601181905550601154601081905550600c60105411156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290614973565b60405180910390fd5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111ec612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190614a05565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b600f60009054906101000a900460ff1681565b60135481565b611392612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890614700565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590614a71565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60165481565b60115481565b60075481565b611523612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990614700565b60405180910390fd5b600081116115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec90614b03565b60405180910390fd5b81601560006101000a81548160ff021916908315150217905550806017819055505050565b60125481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611683612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170990614700565b60405180910390fd5b6000600f60006101000a81548160ff021916908315150217905550565b611737612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614700565b60405180910390fd5b8061185c57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290614b95565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bf612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590614700565b60405180910390fd5b8061198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614c01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611a5a612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614c6d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611ba05750600f60019054906101000a900460ff16155b611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690614cff565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c1a9190614580565b602060405180830381865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b9190614d34565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c98929190614d61565b6020604051808303816000875af1158015611cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdb9190614d9f565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611d0e929190614d61565b60405180910390a15092915050565b60065481565b611d2b612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190614700565b60405180910390fd5b600f60019054906101000a900460ff1615611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190614e18565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611eae90614795565b80601f0160208091040260200160405190810160405280929190818152602001828054611eda90614795565b8015611f275780601f10611efc57610100808354040283529160200191611f27565b820191906000526020600020905b815481529060010190602001808311611f0a57829003601f168201915b5050505050905090565b60175481565b611f3f612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614700565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205590614eaa565b60405180910390fd5b6120688282613a9f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080600160006120c1612f0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614f3c565b60405180910390fd5b612192612189612f0a565b85858403612f12565b600191505092915050565b6121a5612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90614700565b60405180910390fd5b600f60019054906101000a900460ff1615612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90614fce565b60405180910390fd5b6000600146036122aa57737a250d5630b4cf539739df2c5dacb4c659f2488d905061237c565b62aa36a746036122d057737a250d5630b4cf539739df2c5dacb4c659f2488d905061237b565b603846036122f4577310ed43c718714eb63d5aa57b78b54704e256024e905061237a565b606146036123185773d99d1c33f9fc3444f8101754abc46c52416550d19050612379565b61a4b1460361233d57731b02da8cb0d097eb8d57a175b88c7d8b479975069050612378565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f9061503a565b60405180910390fd5b5b5b5b5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e919061506f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb919061506f565b6040518363ffffffff1660e01b815260040161251892919061509c565b6020604051808303816000875af1158015612537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255b919061506f565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506125c8600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613b4a565b6125f5600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613a9f565b612622600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613b4a565b61264f600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161281b565b60004711612692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268990615137565b60405180910390fd5b600061269d30611633565b116126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d4906151c9565b60405180910390fd5b61271230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661270d30611633565b612f12565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061275b30611633565b60008033426040518863ffffffff1660e01b815260040161278196959493929190615224565b60606040518083038185885af115801561279f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127c49190615285565b50505050565b60006127de6127d7612f0a565b84846130db565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b612823612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990614700565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161294f9190614448565b60405180910390a25050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60185481565b601560009054906101000a900460ff1681565b61299c612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290614700565b60405180910390fd5b620186a06001612a39610f17565b612a4391906152d8565b612a4d9190615349565b811015612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a86906153ec565b60405180910390fd5b60646001612a9b610f17565b612aa591906152d8565b612aaf9190615349565b811115612af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae89061547e565b60405180910390fd5b80600b8190555050565b60105481565b612b09612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8f90614700565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1b906154ea565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612d40612f0a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc690614700565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e359061557c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60145481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f789061560e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe7906156a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130ce91906144cc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314190615732565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b0906157c4565b60405180910390fd5b600081116131fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f390615830565b60405180910390fd5b600f60019054906101000a900460ff166132f557601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b15750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6132f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e79061589c565b60405180910390fd5b613383565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615908565b60405180910390fd5b5b600f60009054906101000a900460ff16156137655761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134205750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134765750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561376457601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351e5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c557600654811115613568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355f9061599a565b60405180910390fd5b60085461357483611633565b8261357f91906148f3565b11156135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b790615a06565b60405180910390fd5b613763565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136685750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b7576007548111156136b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a990615a98565b60405180910390fd5b613762565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137615760085461371483611633565b8261371f91906148f3565b1115613760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375790615a06565b60405180910390fd5b5b5b5b5b5b600061377030611633565b90506000600b5482101590508080156137955750600f60029054906101000a900460ff165b80156137ae5750600a60149054906101000a900460ff16155b80156138035750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613849576001600a60146101000a81548160ff02191690831515021790555061382d6000613bde565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fa57600090505b60008115613a8b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561395d57506000601254115b156139b65760646012548661397291906152d8565b61397c9190615349565b90506012546013548261398f91906152d8565b6139999190615349565b601460008282546139aa91906148f3565b92505081905550613a67565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1157506000601054115b15613a6657606460105486613a2691906152d8565b613a309190615349565b905060105460115482613a4391906152d8565b613a4d9190615349565b60146000828254613a5e91906148f3565b925050819055505b5b6000811115613a7c57613a7b873083613d7c565b5b8085613a889190615ab8565b94505b613a96878787613d7c565b50505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b008282613b4a565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613bd2929190615aec565b60405180910390a15050565b6016544314613bf7574360168190555060006018819055505b601560009054906101000a900460ff168015613c17575060175460185410155b613d79576000613c2630611633565b9050600060145490506000821480613c3e5750600081145b15613c4a575050613d79565b82158015613c655750600f600b54613c6291906152d8565b82115b15613c7c57600f600b54613c7991906152d8565b91505b613c8582613fe5565b6000601481905550600160186000828254613ca091906148f3565b925050819055506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613cef90614751565b60006040518083038185875af1925050503d8060008114613d2c576040519150601f19603f3d011682016040523d82523d6000602084013e613d31565b606091505b5050905080613d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6c90615b87565b60405180910390fd5b5050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613de290615732565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e51906157c4565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed790615c19565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f7391906148f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fd791906144cc565b60405180910390a350505050565b6000600267ffffffffffffffff81111561400257614001615c39565b5b6040519080825280602002602001820160405280156140305781602001602082028036833780820191505090505b509050308160008151811061404857614047615c68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614113919061506f565b8160018151811061412757614126615c68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061418e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f12565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141f2959493929190615d55565b600060405180830381600087803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614262578082015181840152602081019050614247565b60008484015250505050565b6000601f19601f8301169050919050565b600061428a82614228565b6142948185614233565b93506142a4818560208601614244565b6142ad8161426e565b840191505092915050565b600060208201905081810360008301526142d2818461427f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061431f61431a614315846142da565b6142fa565b6142da565b9050919050565b600061433182614304565b9050919050565b600061434382614326565b9050919050565b61435381614338565b82525050565b600060208201905061436e600083018461434a565b92915050565b600080fd5b6000614384826142da565b9050919050565b61439481614379565b811461439f57600080fd5b50565b6000813590506143b18161438b565b92915050565b6000819050919050565b6143ca816143b7565b81146143d557600080fd5b50565b6000813590506143e7816143c1565b92915050565b6000806040838503121561440457614403614374565b5b6000614412858286016143a2565b9250506020614423858286016143d8565b9150509250929050565b60008115159050919050565b6144428161442d565b82525050565b600060208201905061445d6000830184614439565b92915050565b60006020828403121561447957614478614374565b5b6000614487848285016143a2565b91505092915050565b6000602082840312156144a6576144a5614374565b5b60006144b4848285016143d8565b91505092915050565b6144c6816143b7565b82525050565b60006020820190506144e160008301846144bd565b92915050565b600080600060608486031215614500576144ff614374565b5b600061450e868287016143a2565b935050602061451f868287016143a2565b9250506040614530868287016143d8565b9150509250925092565b600060ff82169050919050565b6145508161453a565b82525050565b600060208201905061456b6000830184614547565b92915050565b61457a81614379565b82525050565b60006020820190506145956000830184614571565b92915050565b6145a48161442d565b81146145af57600080fd5b50565b6000813590506145c18161459b565b92915050565b600080604083850312156145de576145dd614374565b5b60006145ec858286016145b2565b92505060206145fd858286016143d8565b9150509250929050565b6000806040838503121561461e5761461d614374565b5b600061462c858286016143a2565b925050602061463d858286016145b2565b9150509250929050565b60006020828403121561465d5761465c614374565b5b600061466b848285016145b2565b91505092915050565b6000806040838503121561468b5761468a614374565b5b6000614699858286016143a2565b92505060206146aa858286016143a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146ea602083614233565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b600081905092915050565b50565b600061473b600083614720565b91506147468261472b565b600082019050919050565b600061475c8261472e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ad57607f821691505b6020821081036147c0576147bf614766565b5b50919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006147fc601d83614233565b9150614807826147c6565b602082019050919050565b6000602082019050818103600083015261482b816147ef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061488e602883614233565b915061489982614832565b604082019050919050565b600060208201905081810360008301526148bd81614881565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148fe826143b7565b9150614909836143b7565b9250828201905080821115614921576149206148c4565b5b92915050565b7f4d757374206b656570206665657320617420313225206f72206c657373000000600082015250565b600061495d601d83614233565b915061496882614927565b602082019050919050565b6000602082019050818103600083015261498c81614950565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b60006149ef602683614233565b91506149fa82614993565b604082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614a5b601a83614233565b9150614a6682614a25565b602082019050919050565b60006020820190508181036000830152614a8a81614a4e565b9050919050565b7f4d61782073776170732070657220626c6f636b206d757374206265206772656160008201527f746572207468616e203000000000000000000000000000000000000000000000602082015250565b6000614aed602a83614233565b9150614af882614a91565b604082019050919050565b60006020820190508181036000830152614b1c81614ae0565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614b7f602783614233565b9150614b8a82614b23565b604082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614beb601883614233565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614c57601a83614233565b9150614c6282614c21565b602082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e732077686960008201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b6000614ce9603483614233565b9150614cf482614c8d565b604082019050919050565b60006020820190508181036000830152614d1881614cdc565b9050919050565b600081519050614d2e816143c1565b92915050565b600060208284031215614d4a57614d49614374565b5b6000614d5884828501614d1f565b91505092915050565b6000604082019050614d766000830185614571565b614d8360208301846144bd565b9392505050565b600081519050614d998161459b565b92915050565b600060208284031215614db557614db4614374565b5b6000614dc384828501614d8a565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614e02601783614233565b9150614e0d82614dcc565b602082019050919050565b60006020820190508181036000830152614e3181614df5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614e94603983614233565b9150614e9f82614e38565b604082019050919050565b60006020820190508181036000830152614ec381614e87565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614f26602583614233565b9150614f3182614eca565b604082019050919050565b60006020820190508181036000830152614f5581614f19565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000614fb8602b83614233565b9150614fc382614f5c565b604082019050919050565b60006020820190508181036000830152614fe781614fab565b9050919050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b6000615024601483614233565b915061502f82614fee565b602082019050919050565b6000602082019050818103600083015261505381615017565b9050919050565b6000815190506150698161438b565b92915050565b60006020828403121561508557615084614374565b5b60006150938482850161505a565b91505092915050565b60006040820190506150b16000830185614571565b6150be6020830184614571565b9392505050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b6000615121602383614233565b915061512c826150c5565b604082019050919050565b6000602082019050818103600083015261515081615114565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006151b3602683614233565b91506151be82615157565b604082019050919050565b600060208201905081810360008301526151e2816151a6565b9050919050565b6000819050919050565b600061520e615209615204846151e9565b6142fa565b6143b7565b9050919050565b61521e816151f3565b82525050565b600060c0820190506152396000830189614571565b61524660208301886144bd565b6152536040830187615215565b6152606060830186615215565b61526d6080830185614571565b61527a60a08301846144bd565b979650505050505050565b60008060006060848603121561529e5761529d614374565b5b60006152ac86828701614d1f565b93505060206152bd86828701614d1f565b92505060406152ce86828701614d1f565b9150509250925092565b60006152e3826143b7565b91506152ee836143b7565b92508282026152fc816143b7565b91508282048414831517615313576153126148c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615354826143b7565b915061535f836143b7565b92508261536f5761536e61531a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153d6603583614233565b91506153e18261537a565b604082019050919050565b60006020820190508181036000830152615405816153c9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000615468603283614233565b91506154738261540c565b604082019050919050565b600060208201905081810360008301526154978161545b565b9050919050565b7f57616c6c657420697320616c7265616479206e6f74206d61726b65642e000000600082015250565b60006154d4601d83614233565b91506154df8261549e565b602082019050919050565b60006020820190508181036000830152615503816154c7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615566602683614233565b91506155718261550a565b604082019050919050565b6000602082019050818103600083015261559581615559565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155f8602483614233565b91506156038261559c565b604082019050919050565b60006020820190508181036000830152615627816155eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061568a602283614233565b91506156958261562e565b604082019050919050565b600060208201905081810360008301526156b98161567d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061571c602583614233565b9150615727826156c0565b604082019050919050565b6000602082019050818103600083015261574b8161570f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157ae602383614233565b91506157b982615752565b604082019050919050565b600060208201905081810360008301526157dd816157a1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061581a601d83614233565b9150615825826157e4565b602082019050919050565b600060208201905081810360008301526158498161580d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615886601683614233565b915061589182615850565b602082019050919050565b600060208201905081810360008301526158b581615879565b9050919050565b7f536e69706572732063616e6e6f74207472616e7366657220746f6b656e730000600082015250565b60006158f2601e83614233565b91506158fd826158bc565b602082019050919050565b60006020820190508181036000830152615921816158e5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615984602883614233565b915061598f82615928565b604082019050919050565b600060208201905081810360008301526159b381615977565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b60006159f0601383614233565b91506159fb826159ba565b602082019050919050565b60006020820190508181036000830152615a1f816159e3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615a82602a83614233565b9150615a8d82615a26565b604082019050919050565b60006020820190508181036000830152615ab181615a75565b9050919050565b6000615ac3826143b7565b9150615ace836143b7565b9250828203905081811115615ae657615ae56148c4565b5b92915050565b6000604082019050615b016000830185614571565b615b0e6020830184614439565b9392505050565b7f5472616e7366657220746f206f7065726174696f6e732061646472657373206660008201527f61696c6564000000000000000000000000000000000000000000000000000000602082015250565b6000615b71602583614233565b9150615b7c82615b15565b604082019050919050565b60006020820190508181036000830152615ba081615b64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c03602683614233565b9150615c0e82615ba7565b604082019050919050565b60006020820190508181036000830152615c3281615bf6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ccc81614379565b82525050565b6000615cde8383615cc3565b60208301905092915050565b6000602082019050919050565b6000615d0282615c97565b615d0c8185615ca2565b9350615d1783615cb3565b8060005b83811015615d48578151615d2f8882615cd2565b9750615d3a83615cea565b925050600181019050615d1b565b5085935050505092915050565b600060a082019050615d6a60008301886144bd565b615d776020830187615215565b8181036040830152615d898186615cf7565b9050615d986060830185614571565b615da560808301846144bd565b969550505050505056fea264697066735822122042199e71dae6e132d90281dc2ca14df44022076889f7a6084456190fa2c2635564736f6c63430008130033

Deployed Bytecode Sourcemap

11288:14539:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23075:179;;;;;;;;;;;;;:::i;:::-;;4640:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11428:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5695:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12241:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15745:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4961:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5913:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4860:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6450:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15491:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11462:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22244:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11700:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11929:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22694:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12058:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11854:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11360:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25575:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11894:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11780:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5077:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22602:84;;;;;;;;;;;;;:::i;:::-;;14532:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9171:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21676:560;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11326:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25312:249;;;;;;;;;;;;;:::i;:::-;;8957:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4748:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12094:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15120:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6755:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23268:2036;;;;;;;;;;;;;:::i;:::-;;5262:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12311:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11740:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16445:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11645:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12137:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12013:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16008:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11820:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22878:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5486:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11520:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11560:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11601:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9444:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11395:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11970:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23075:179;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23127:12:::1;23172:10;23164:24;;23196:21;23164:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23150:96;;;;;23116:138;23075:179::o:0;4640:100::-;4694:13;4727:5;4720:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:100;:::o;11428:27::-;;;;;;;;;;;;;:::o;5695:210::-;5814:4;5836:39;5845:12;:10;:12::i;:::-;5859:7;5868:6;5836:8;:39::i;:::-;5893:4;5886:11;;5695:210;;;;:::o;12241:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15745:251::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15858:14:::1;15838:17;:34;;;;15899:17;;15883:13;:33;;;;15952:2;15935:13;;:19;;15927:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15745:251:::0;:::o;4961:108::-;5022:7;5049:12;;5042:19;;4961:108;:::o;5913:529::-;6053:4;6070:36;6080:6;6088:9;6099:6;6070:9;:36::i;:::-;6119:24;6146:11;:19;6158:6;6146:19;;;;;;;;;;;;;;;:33;6166:12;:10;:12::i;:::-;6146:33;;;;;;;;;;;;;;;;6119:60;;6232:6;6212:16;:26;;6190:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6342:57;6351:6;6359:12;:10;:12::i;:::-;6392:6;6373:16;:25;6342:8;:57::i;:::-;6430:4;6423:11;;;5913:529;;;;;:::o;4860:93::-;4918:5;4943:2;4936:9;;4860:93;:::o;6450:297::-;6565:4;6587:130;6610:12;:10;:12::i;:::-;6637:7;6696:10;6659:11;:25;6671:12;:10;:12::i;:::-;6659:25;;;;;;;;;;;;;;;:34;6685:7;6659:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6587:8;:130::i;:::-;6735:4;6728:11;;6450:297;;;;:::o;15491:246::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15602:14:::1;15583:16;:33;;;;15642:16;;15627:12;:31;;;;15693:2;15677:12;;:18;;15669:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15491:246:::0;:::o;11462:21::-;;;;;;;;;;;;;:::o;22244:350::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22400:1:::1;22370:32;;:18;:32;;::::0;22348:120:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22507:18;22479:17;;:47;;;;;;;;;;;;;;;;;;22567:18;22542:44;;;;;;;;;;;;22244:350:::0;:::o;11700:33::-;;;;;;;;;;;;;:::o;11929:32::-;;;;:::o;22694:176::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22769:14:::1;:22;22784:6;22769:22;;;;;;;;;;;;;;;;;;;;;;;;;22768:23;22760:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22858:4;22833:14;:22;22848:6;22833:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22694:176:::0;:::o;12058:28::-;;;;:::o;11854:31::-;;;;:::o;11360:28::-;;;;:::o;25575:249::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25688:1:::1;25676:9;:13;25668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25769:8;25747:19;;:30;;;;;;;;;;;;;;;;;;25807:9;25788:16;:28;;;;25575:249:::0;;:::o;11894:28::-;;;;:::o;11780:31::-;;;;;;;;;;;;;:::o;5077:177::-;5196:7;5228:9;:18;5238:7;5228:18;;;;;;;;;;;;;;;;5221:25;;5077:177;;;:::o;22602:84::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22673:5:::1;22656:14;;:22;;;;;;;;;;;;;;;;;;22602:84::o:0;14532:336::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14654:4:::1;14649:155;;14711:6;;;;;;;;;;;14701:16;;:6;:16;;::::0;14675:117:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14649:155;14856:4;14814:31;:39;14846:6;14814:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14532:336:::0;;:::o;9171:265::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:15:::1;9290:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9395:1;9358:40;;9379:6;;;;;;;;;;;9358:40;;;;;;;;;;;;9426:1;9409:6;;:19;;;;;;;;;;;;;;;;;;9171:265:::0;:::o;21676:560::-;21788:10;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21837:1:::1;21819:20;;:6;:20;;::::0;21811:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21921:4;21903:23;;:6;:23;;;;:41;;;;21931:13;;;;;;;;;;;21930:14;21903:41;21881:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;22035:24;22069:6;22062:24;;;22095:4;22062:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22035:66;;22127:6;22120:23;;;22144:3;22149:16;22120:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22112:54;;22182:46;22203:6;22211:16;22182:46;;;;;;;:::i;:::-;;;;;;;;21800:436;21676:560:::0;;;;:::o;11326:27::-;;;;:::o;25312:249::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25376:13:::1;;;;;;;;;;;25375:14;25367:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;25444:4;25428:13;;:20;;;;;;;;;;;;;;;;;;25473:4;25459:11;;:18;;;;;;;;;;;;;;;;;;25509:12;25488:18;:33;;;;25537:16;;;;;;;;;;25312:249::o:0;8957:79::-;8995:7;9022:6;;;;;;;;;;;9015:13;;8957:79;:::o;4748:104::-;4804:13;4837:7;4830:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4748:104;:::o;12094:35::-;;;;:::o;15120:355::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:6:::1;;;;;;;;;;;15260:14;;:4;:14;;::::0;15238:121:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15370:41;15399:4;15405:5;15370:28;:41::i;:::-;15461:5;15427:40;;15455:4;15427:40;;;;;;;;;;;;15120:355:::0;;:::o;6755:482::-;6875:4;6897:24;6924:11;:25;6936:12;:10;:12::i;:::-;6924:25;;;;;;;;;;;;;;;:34;6950:7;6924:34;;;;;;;;;;;;;;;;6897:61;;7011:15;6991:16;:35;;6969:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7127:67;7136:12;:10;:12::i;:::-;7150:7;7178:15;7159:16;:34;7127:8;:67::i;:::-;7225:4;7218:11;;;6755:482;;;;:::o;23268:2036::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23331:13:::1;;;;;;;;;;;23330:14;23322:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23410:18;23462:1;23445:13;:18:::0;23441:730:::1;;23493:42;23480:55;;23441:730;;;23593:8;23576:13;:25:::0;23572:599:::1;;23631:42;23618:55;;23572:599;;;23728:2;23711:13;:19:::0;23707:464:::1;;23760:42;23747:55;;23707:464;;;23862:2;23845:13;:19:::0;23841:330:::1;;23894:42;23881:55;;23841:330;;;23996:5;23979:13;:22:::0;23975:196:::1;;24031:42;24018:55;;23975:196;;;24129:30;;;;;;;;;;:::i;:::-;;;;;;;;23975:196;23841:330;23707:464;23572:599;23441:730;24236:10;24213:9;;:34;;;;;;;;;;;;;;;;;;24313:9;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24301:43;;;24367:4;24387:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24301:113;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24292:6;;:122;;;;;;;;;;;;;;;;;;24427:49;24462:6;;;;;;;;;;;24471:4;24427:26;:49::i;:::-;24487:51;24524:6;;;;;;;;;;;24533:4;24487:28;:51::i;:::-;24559:52;24594:9;;;;;;;;;;;24606:4;24559:26;:52::i;:::-;24622:41;24646:9;;;;;;;;;;;24658:4;24622:15;:41::i;:::-;24724:1;24700:21;:25;24678:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;24848:1;24821:24;24839:4;24821:9;:24::i;:::-;:28;24799:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;24939:69;24956:4;24971:9;;;;;;;;;;;24983:24;25001:4;24983:9;:24::i;:::-;24939:8;:69::i;:::-;25021:9;;;;;;;;;;;:25;;;25054:21;25099:4;25119:24;25137:4;25119:9;:24::i;:::-;25158:1;25201::::0;25244:10:::1;25269:15;25021:274;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23311:1993;23268:2036::o:0;5262:216::-;5384:4;5406:42;5416:12;:10;:12::i;:::-;5430:9;5441:6;5406:9;:42::i;:::-;5466:4;5459:11;;5262:216;;;;:::o;12311:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;11740:33::-;;;;;;;;;;;;;:::o;16445:182::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16561:8:::1;16530:19;:28;16550:7;16530:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16601:7;16585:34;;;16610:8;16585:34;;;;;;:::i;:::-;;;;;;;;16445:182:::0;;:::o;11645:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12137:33::-;;;;:::o;12013:38::-;;;;;;;;;;;;;:::o;16008:425::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16148:6:::1;16143:1;16127:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16126:28;;;;:::i;:::-;16113:9;:41;;16091:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;16303:3;16298:1;16282:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16281:25;;;;:::i;:::-;16268:9;:38;;16246:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:9;16395:18;:30;;;;16008:425:::0;:::o;11820:27::-;;;;:::o;22878:181::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22954:14:::1;:22;22969:6;22954:22;;;;;;;;;;;;;;;;;;;;;;;;;22946:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23046:5;23021:14;:22;23036:6;23021:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22878:181:::0;:::o;5486:201::-;5620:7;5652:11;:18;5664:5;5652:18;;;;;;;;;;;;;;;:27;5671:7;5652:27;;;;;;;;;;;;;;;;5645:34;;5486:201;;;;:::o;11520:33::-;;;;:::o;11560:32::-;;;;;;;;;;;;;:::o;11601:37::-;;;;:::o;9444:281::-;9094:12;:10;:12::i;:::-;9084:22;;:6;;;;;;;;;;;:22;;;9076:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9567:1:::1;9547:22;;:8;:22;;::::0;9525:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:8;9651:38;;9672:6;;;;;;;;;;;9651:38;;;;;;;;;;;;9709:8;9700:6;;:17;;;;;;;;;;;;;;;;;;9444:281:::0;:::o;11395:24::-;;;;:::o;11970:34::-;;;;:::o;710:98::-;763:7;790:10;783:17;;710:98;:::o;8226:380::-;8379:1;8362:19;;:5;:19;;;8354:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8460:1;8441:21;;:7;:21;;;8433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8544:6;8514:11;:18;8526:5;8514:18;;;;;;;;;;;;;;;:27;8533:7;8514:27;;;;;;;;;;;;;;;:36;;;;8582:7;8566:32;;8575:5;8566:32;;;8591:6;8566:32;;;;;;:::i;:::-;;;;;;;;8226:380;;;:::o;16635:3487::-;16783:1;16767:18;;:4;:18;;;16759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16860:1;16846:16;;:2;:16;;;16838:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16930:1;16921:6;:10;16913:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16983:13;;;;;;;;;;;16978:329;;17039:19;:25;17059:4;17039:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17068:19;:23;17088:2;17068:23;;;;;;;;;;;;;;;;;;;;;;;;;17039:52;17013:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;16978:329;;;17209:14;:20;17224:4;17209:20;;;;;;;;;;;;;;;;;;;;;;;;;17208:21;17182:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;16978:329;17323:14;;;;;;;;;;;17319:1348;;;17372:6;17358:21;;:2;:21;;;;:68;;;;;17401:19;:25;17421:4;17401:25;;;;;;;;;;;;;;;;;;;;;;;;;17400:26;17358:68;:113;;;;;17448:19;:23;17468:2;17448:23;;;;;;;;;;;;;;;;;;;;;;;;;17447:24;17358:113;17354:1302;;;17560:25;:31;17586:4;17560:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;17617:31;:35;17649:2;17617:35;;;;;;;;;;;;;;;;;;;;;;;;;17616:36;17560:92;17534:1107;;;17739:12;;17729:6;:22;;17695:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;17926:9;;17909:13;17919:2;17909:9;:13::i;:::-;17900:6;:22;;;;:::i;:::-;:35;;17866:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17534:1107;;;18104:25;:29;18130:2;18104:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;18159:31;:37;18191:4;18159:37;;;;;;;;;;;;;;;;;;;;;;;;;18158:38;18104:92;18078:563;;;18283:13;;18273:6;:23;;18239:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;18078:563;;;18421:31;:35;18453:2;18421:35;;;;;;;;;;;;;;;;;;;;;;;;;18416:225;;18541:9;;18524:13;18534:2;18524:9;:13::i;:::-;18515:6;:22;;;;:::i;:::-;:35;;18481:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18416:225;18078:563;17534:1107;17354:1302;17319:1348;18679:28;18710:24;18728:4;18710:9;:24::i;:::-;18679:55;;18747:12;18786:18;;18762:20;:42;;18747:57;;18835:7;:22;;;;;18846:11;;;;;;;;;;;18835:22;:35;;;;;18862:8;;;;;;;;;;;18861:9;18835:35;:68;;;;;18874:25;:29;18900:2;18874:29;;;;;;;;;;;;;;;;;;;;;;;;;18835:68;18817:201;;;18941:4;18930:8;;:15;;;;;;;;;;;;;;;;;;18960;18969:5;18960:8;:15::i;:::-;19001:5;18990:8;;:16;;;;;;;;;;;;;;;;;;18817:201;19030:12;19045:4;19030:19;;19149;:25;19169:4;19149:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19178:19;:23;19198:2;19178:23;;;;;;;;;;;;;;;;;;;;;;;;;19149:52;19145:100;;;19228:5;19218:15;;19145:100;19257:12;19362:7;19358:711;;;19418:25;:29;19444:2;19418:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19467:1;19451:13;;:17;19418:50;19414:506;;;19523:3;19506:13;;19497:6;:22;;;;:::i;:::-;19496:30;;;;:::i;:::-;19489:37;;19639:13;;19597:17;;19590:4;:24;;;;:::i;:::-;19589:63;;;;:::i;:::-;19545:19;;:107;;;;;;;:::i;:::-;;;;;;;;19414:506;;;19714:25;:31;19740:4;19714:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19764:1;19749:12;;:16;19714:51;19710:210;;;19819:3;19803:12;;19794:6;:21;;;;:::i;:::-;19793:29;;;;:::i;:::-;19786:36;;19892:12;;19872:16;;19865:4;:23;;;;:::i;:::-;19864:40;;;;:::i;:::-;19841:19;;:63;;;;;;;:::i;:::-;;;;;;;;19710:210;19414:506;19947:1;19940:4;:8;19936:91;;;19969:42;19985:4;19999;20006;19969:15;:42::i;:::-;19936:91;20053:4;20043:14;;;;;:::i;:::-;;;19358:711;20081:33;20097:4;20103:2;20107:6;20081:15;:33::i;:::-;16748:3374;;;;16635:3487;;;:::o;14876:236::-;14993:5;14959:25;:31;14985:4;14959:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15009;15036:4;15042:5;15009:26;:39::i;:::-;15098:5;15064:40;;15092:4;15064:40;;;;;;;;;;;;14876:236;;:::o;14292:232::-;14447:10;14405:31;:39;14437:6;14405:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14473:43;14497:6;14505:10;14473:43;;;;;;;:::i;:::-;;;;;;;;14292:232;;:::o;20709:959::-;20778:13;;20762:12;:29;20758:123;;20824:12;20808:13;:28;;;;20868:1;20851:14;:18;;;;20758:123;20897:19;;;;;;;;;;;:57;;;;;20938:16;;20920:14;;:34;;20897:57;20971:7;20893:96;21009:23;21035:24;21053:4;21035:9;:24::i;:::-;21009:50;;21070:25;21098:19;;21070:47;;21153:1;21134:15;:20;:46;;;;21179:1;21158:17;:22;21134:46;21130:85;;;21197:7;;;;21130:85;21232:3;21231:4;:51;;;;;21279:2;21258:18;;:23;;;;:::i;:::-;21240:15;:41;21231:51;21227:125;;;21338:2;21317:18;;:23;;;;:::i;:::-;21299:41;;21227:125;21364:33;21381:15;21364:16;:33::i;:::-;21432:1;21410:19;:23;;;;21464:1;21446:14;;:19;;;;;;;:::i;:::-;;;;;;;;21483:12;21509:17;;;;;;;;;;;21501:31;;21554:21;21501:89;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21482:108;;;21611:7;21603:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;20745:923;;;20709:959;;:::o;7245:651::-;7403:1;7385:20;;:6;:20;;;7377:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7487:1;7466:23;;:9;:23;;;7458:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7542:21;7566:9;:17;7576:6;7566:17;;;;;;;;;;;;;;;;7542:41;;7633:6;7616:13;:23;;7594:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7777:6;7761:13;:22;7741:9;:17;7751:6;7741:17;;;;;;;;;;;;;;;:42;;;;7829:6;7805:9;:20;7815:9;7805:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7870:9;7853:35;;7862:6;7853:35;;;7881:6;7853:35;;;;;;:::i;:::-;;;;;;;;7366:530;7245:651;;;:::o;20130:571::-;20256:21;20294:1;20280:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20256:40;;20325:4;20307;20312:1;20307:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20351:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20341:4;20346:1;20341:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20380:56;20397:4;20412:9;;;;;;;;;;;20424:11;20380:8;:56::i;:::-;20475:9;;;;;;;;;;;:60;;;20550:11;20576:1;20620:4;20647;20667:15;20475:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20185:516;20130:571;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:329::-;4438:6;4487:2;4475:9;4466:7;4462:23;4458:32;4455:119;;;4493:79;;:::i;:::-;4455:119;4613:1;4638:53;4683:7;4674:6;4663:9;4659:22;4638:53;:::i;:::-;4628:63;;4584:117;4379:329;;;;:::o;4714:::-;4773:6;4822:2;4810:9;4801:7;4797:23;4793:32;4790:119;;;4828:79;;:::i;:::-;4790:119;4948:1;4973:53;5018:7;5009:6;4998:9;4994:22;4973:53;:::i;:::-;4963:63;;4919:117;4714:329;;;;:::o;5049:118::-;5136:24;5154:5;5136:24;:::i;:::-;5131:3;5124:37;5049:118;;:::o;5173:222::-;5266:4;5304:2;5293:9;5289:18;5281:26;;5317:71;5385:1;5374:9;5370:17;5361:6;5317:71;:::i;:::-;5173:222;;;;:::o;5401:619::-;5478:6;5486;5494;5543:2;5531:9;5522:7;5518:23;5514:32;5511:119;;;5549:79;;:::i;:::-;5511:119;5669:1;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5640:117;5796:2;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5767:118;5924:2;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5895:118;5401:619;;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:50;7384:7;7375:6;7364:9;7360:22;7342:50;:::i;:::-;7332:60;;7288:114;7441:2;7467:53;7512:7;7503:6;7492:9;7488:22;7467:53;:::i;:::-;7457:63;;7412:118;7069:468;;;;;:::o;7543:::-;7608:6;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:53;7861:7;7852:6;7841:9;7837:22;7816:53;:::i;:::-;7806:63;;7762:117;7918:2;7944:50;7986:7;7977:6;7966:9;7962:22;7944:50;:::i;:::-;7934:60;;7889:115;7543:468;;;;;:::o;8017:323::-;8073:6;8122:2;8110:9;8101:7;8097:23;8093:32;8090:119;;;8128:79;;:::i;:::-;8090:119;8248:1;8273:50;8315:7;8306:6;8295:9;8291:22;8273:50;:::i;:::-;8263:60;;8219:114;8017:323;;;;:::o;8346:474::-;8414:6;8422;8471:2;8459:9;8450:7;8446:23;8442:32;8439:119;;;8477:79;;:::i;:::-;8439:119;8597:1;8622:53;8667:7;8658:6;8647:9;8643:22;8622:53;:::i;:::-;8612:63;;8568:117;8724:2;8750:53;8795:7;8786:6;8775:9;8771:22;8750:53;:::i;:::-;8740:63;;8695:118;8346:474;;;;;:::o;8826:182::-;8966:34;8962:1;8954:6;8950:14;8943:58;8826:182;:::o;9014:366::-;9156:3;9177:67;9241:2;9236:3;9177:67;:::i;:::-;9170:74;;9253:93;9342:3;9253:93;:::i;:::-;9371:2;9366:3;9362:12;9355:19;;9014:366;;;:::o;9386:419::-;9552:4;9590:2;9579:9;9575:18;9567:26;;9639:9;9633:4;9629:20;9625:1;9614:9;9610:17;9603:47;9667:131;9793:4;9667:131;:::i;:::-;9659:139;;9386:419;;;:::o;9811:147::-;9912:11;9949:3;9934:18;;9811:147;;;;:::o;9964:114::-;;:::o;10084:398::-;10243:3;10264:83;10345:1;10340:3;10264:83;:::i;:::-;10257:90;;10356:93;10445:3;10356:93;:::i;:::-;10474:1;10469:3;10465:11;10458:18;;10084:398;;;:::o;10488:379::-;10672:3;10694:147;10837:3;10694:147;:::i;:::-;10687:154;;10858:3;10851:10;;10488:379;;;:::o;10873:180::-;10921:77;10918:1;10911:88;11018:4;11015:1;11008:15;11042:4;11039:1;11032:15;11059:320;11103:6;11140:1;11134:4;11130:12;11120:22;;11187:1;11181:4;11177:12;11208:18;11198:81;;11264:4;11256:6;11252:17;11242:27;;11198:81;11326:2;11318:6;11315:14;11295:18;11292:38;11289:84;;11345:18;;:::i;:::-;11289:84;11110:269;11059:320;;;:::o;11385:179::-;11525:31;11521:1;11513:6;11509:14;11502:55;11385:179;:::o;11570:366::-;11712:3;11733:67;11797:2;11792:3;11733:67;:::i;:::-;11726:74;;11809:93;11898:3;11809:93;:::i;:::-;11927:2;11922:3;11918:12;11911:19;;11570:366;;;:::o;11942:419::-;12108:4;12146:2;12135:9;12131:18;12123:26;;12195:9;12189:4;12185:20;12181:1;12170:9;12166:17;12159:47;12223:131;12349:4;12223:131;:::i;:::-;12215:139;;11942:419;;;:::o;12367:227::-;12507:34;12503:1;12495:6;12491:14;12484:58;12576:10;12571:2;12563:6;12559:15;12552:35;12367:227;:::o;12600:366::-;12742:3;12763:67;12827:2;12822:3;12763:67;:::i;:::-;12756:74;;12839:93;12928:3;12839:93;:::i;:::-;12957:2;12952:3;12948:12;12941:19;;12600:366;;;:::o;12972:419::-;13138:4;13176:2;13165:9;13161:18;13153:26;;13225:9;13219:4;13215:20;13211:1;13200:9;13196:17;13189:47;13253:131;13379:4;13253:131;:::i;:::-;13245:139;;12972:419;;;:::o;13397:180::-;13445:77;13442:1;13435:88;13542:4;13539:1;13532:15;13566:4;13563:1;13556:15;13583:191;13623:3;13642:20;13660:1;13642:20;:::i;:::-;13637:25;;13676:20;13694:1;13676:20;:::i;:::-;13671:25;;13719:1;13716;13712:9;13705:16;;13740:3;13737:1;13734:10;13731:36;;;13747:18;;:::i;:::-;13731:36;13583:191;;;;:::o;13780:179::-;13920:31;13916:1;13908:6;13904:14;13897:55;13780:179;:::o;13965:366::-;14107:3;14128:67;14192:2;14187:3;14128:67;:::i;:::-;14121:74;;14204:93;14293:3;14204:93;:::i;:::-;14322:2;14317:3;14313:12;14306:19;;13965:366;;;:::o;14337:419::-;14503:4;14541:2;14530:9;14526:18;14518:26;;14590:9;14584:4;14580:20;14576:1;14565:9;14561:17;14554:47;14618:131;14744:4;14618:131;:::i;:::-;14610:139;;14337:419;;;:::o;14762:225::-;14902:34;14898:1;14890:6;14886:14;14879:58;14971:8;14966:2;14958:6;14954:15;14947:33;14762:225;:::o;14993:366::-;15135:3;15156:67;15220:2;15215:3;15156:67;:::i;:::-;15149:74;;15232:93;15321:3;15232:93;:::i;:::-;15350:2;15345:3;15341:12;15334:19;;14993:366;;;:::o;15365:419::-;15531:4;15569:2;15558:9;15554:18;15546:26;;15618:9;15612:4;15608:20;15604:1;15593:9;15589:17;15582:47;15646:131;15772:4;15646:131;:::i;:::-;15638:139;;15365:419;;;:::o;15790:176::-;15930:28;15926:1;15918:6;15914:14;15907:52;15790:176;:::o;15972:366::-;16114:3;16135:67;16199:2;16194:3;16135:67;:::i;:::-;16128:74;;16211:93;16300:3;16211:93;:::i;:::-;16329:2;16324:3;16320:12;16313:19;;15972:366;;;:::o;16344:419::-;16510:4;16548:2;16537:9;16533:18;16525:26;;16597:9;16591:4;16587:20;16583:1;16572:9;16568:17;16561:47;16625:131;16751:4;16625:131;:::i;:::-;16617:139;;16344:419;;;:::o;16769:229::-;16909:34;16905:1;16897:6;16893:14;16886:58;16978:12;16973:2;16965:6;16961:15;16954:37;16769:229;:::o;17004:366::-;17146:3;17167:67;17231:2;17226:3;17167:67;:::i;:::-;17160:74;;17243:93;17332:3;17243:93;:::i;:::-;17361:2;17356:3;17352:12;17345:19;;17004:366;;;:::o;17376:419::-;17542:4;17580:2;17569:9;17565:18;17557:26;;17629:9;17623:4;17619:20;17615:1;17604:9;17600:17;17593:47;17657:131;17783:4;17657:131;:::i;:::-;17649:139;;17376:419;;;:::o;17801:226::-;17941:34;17937:1;17929:6;17925:14;17918:58;18010:9;18005:2;17997:6;17993:15;17986:34;17801:226;:::o;18033:366::-;18175:3;18196:67;18260:2;18255:3;18196:67;:::i;:::-;18189:74;;18272:93;18361:3;18272:93;:::i;:::-;18390:2;18385:3;18381:12;18374:19;;18033:366;;;:::o;18405:419::-;18571:4;18609:2;18598:9;18594:18;18586:26;;18658:9;18652:4;18648:20;18644:1;18633:9;18629:17;18622:47;18686:131;18812:4;18686:131;:::i;:::-;18678:139;;18405:419;;;:::o;18830:174::-;18970:26;18966:1;18958:6;18954:14;18947:50;18830:174;:::o;19010:366::-;19152:3;19173:67;19237:2;19232:3;19173:67;:::i;:::-;19166:74;;19249:93;19338:3;19249:93;:::i;:::-;19367:2;19362:3;19358:12;19351:19;;19010:366;;;:::o;19382:419::-;19548:4;19586:2;19575:9;19571:18;19563:26;;19635:9;19629:4;19625:20;19621:1;19610:9;19606:17;19599:47;19663:131;19789:4;19663:131;:::i;:::-;19655:139;;19382:419;;;:::o;19807:176::-;19947:28;19943:1;19935:6;19931:14;19924:52;19807:176;:::o;19989:366::-;20131:3;20152:67;20216:2;20211:3;20152:67;:::i;:::-;20145:74;;20228:93;20317:3;20228:93;:::i;:::-;20346:2;20341:3;20337:12;20330:19;;19989:366;;;:::o;20361:419::-;20527:4;20565:2;20554:9;20550:18;20542:26;;20614:9;20608:4;20604:20;20600:1;20589:9;20585:17;20578:47;20642:131;20768:4;20642:131;:::i;:::-;20634:139;;20361:419;;;:::o;20786:239::-;20926:34;20922:1;20914:6;20910:14;20903:58;20995:22;20990:2;20982:6;20978:15;20971:47;20786:239;:::o;21031:366::-;21173:3;21194:67;21258:2;21253:3;21194:67;:::i;:::-;21187:74;;21270:93;21359:3;21270:93;:::i;:::-;21388:2;21383:3;21379:12;21372:19;;21031:366;;;:::o;21403:419::-;21569:4;21607:2;21596:9;21592:18;21584:26;;21656:9;21650:4;21646:20;21642:1;21631:9;21627:17;21620:47;21684:131;21810:4;21684:131;:::i;:::-;21676:139;;21403:419;;;:::o;21828:143::-;21885:5;21916:6;21910:13;21901:22;;21932:33;21959:5;21932:33;:::i;:::-;21828:143;;;;:::o;21977:351::-;22047:6;22096:2;22084:9;22075:7;22071:23;22067:32;22064:119;;;22102:79;;:::i;:::-;22064:119;22222:1;22247:64;22303:7;22294:6;22283:9;22279:22;22247:64;:::i;:::-;22237:74;;22193:128;21977:351;;;;:::o;22334:332::-;22455:4;22493:2;22482:9;22478:18;22470:26;;22506:71;22574:1;22563:9;22559:17;22550:6;22506:71;:::i;:::-;22587:72;22655:2;22644:9;22640:18;22631:6;22587:72;:::i;:::-;22334:332;;;;;:::o;22672:137::-;22726:5;22757:6;22751:13;22742:22;;22773:30;22797:5;22773:30;:::i;:::-;22672:137;;;;:::o;22815:345::-;22882:6;22931:2;22919:9;22910:7;22906:23;22902:32;22899:119;;;22937:79;;:::i;:::-;22899:119;23057:1;23082:61;23135:7;23126:6;23115:9;23111:22;23082:61;:::i;:::-;23072:71;;23028:125;22815:345;;;;:::o;23166:173::-;23306:25;23302:1;23294:6;23290:14;23283:49;23166:173;:::o;23345:366::-;23487:3;23508:67;23572:2;23567:3;23508:67;:::i;:::-;23501:74;;23584:93;23673:3;23584:93;:::i;:::-;23702:2;23697:3;23693:12;23686:19;;23345:366;;;:::o;23717:419::-;23883:4;23921:2;23910:9;23906:18;23898:26;;23970:9;23964:4;23960:20;23956:1;23945:9;23941:17;23934:47;23998:131;24124:4;23998:131;:::i;:::-;23990:139;;23717:419;;;:::o;24142:244::-;24282:34;24278:1;24270:6;24266:14;24259:58;24351:27;24346:2;24338:6;24334:15;24327:52;24142:244;:::o;24392:366::-;24534:3;24555:67;24619:2;24614:3;24555:67;:::i;:::-;24548:74;;24631:93;24720:3;24631:93;:::i;:::-;24749:2;24744:3;24740:12;24733:19;;24392:366;;;:::o;24764:419::-;24930:4;24968:2;24957:9;24953:18;24945:26;;25017:9;25011:4;25007:20;25003:1;24992:9;24988:17;24981:47;25045:131;25171:4;25045:131;:::i;:::-;25037:139;;24764:419;;;:::o;25189:224::-;25329:34;25325:1;25317:6;25313:14;25306:58;25398:7;25393:2;25385:6;25381:15;25374:32;25189:224;:::o;25419:366::-;25561:3;25582:67;25646:2;25641:3;25582:67;:::i;:::-;25575:74;;25658:93;25747:3;25658:93;:::i;:::-;25776:2;25771:3;25767:12;25760:19;;25419:366;;;:::o;25791:419::-;25957:4;25995:2;25984:9;25980:18;25972:26;;26044:9;26038:4;26034:20;26030:1;26019:9;26015:17;26008:47;26072:131;26198:4;26072:131;:::i;:::-;26064:139;;25791:419;;;:::o;26216:230::-;26356:34;26352:1;26344:6;26340:14;26333:58;26425:13;26420:2;26412:6;26408:15;26401:38;26216:230;:::o;26452:366::-;26594:3;26615:67;26679:2;26674:3;26615:67;:::i;:::-;26608:74;;26691:93;26780:3;26691:93;:::i;:::-;26809:2;26804:3;26800:12;26793:19;;26452:366;;;:::o;26824:419::-;26990:4;27028:2;27017:9;27013:18;27005:26;;27077:9;27071:4;27067:20;27063:1;27052:9;27048:17;27041:47;27105:131;27231:4;27105:131;:::i;:::-;27097:139;;26824:419;;;:::o;27249:170::-;27389:22;27385:1;27377:6;27373:14;27366:46;27249:170;:::o;27425:366::-;27567:3;27588:67;27652:2;27647:3;27588:67;:::i;:::-;27581:74;;27664:93;27753:3;27664:93;:::i;:::-;27782:2;27777:3;27773:12;27766:19;;27425:366;;;:::o;27797:419::-;27963:4;28001:2;27990:9;27986:18;27978:26;;28050:9;28044:4;28040:20;28036:1;28025:9;28021:17;28014:47;28078:131;28204:4;28078:131;:::i;:::-;28070:139;;27797:419;;;:::o;28222:143::-;28279:5;28310:6;28304:13;28295:22;;28326:33;28353:5;28326:33;:::i;:::-;28222:143;;;;:::o;28371:351::-;28441:6;28490:2;28478:9;28469:7;28465:23;28461:32;28458:119;;;28496:79;;:::i;:::-;28458:119;28616:1;28641:64;28697:7;28688:6;28677:9;28673:22;28641:64;:::i;:::-;28631:74;;28587:128;28371:351;;;;:::o;28728:332::-;28849:4;28887:2;28876:9;28872:18;28864:26;;28900:71;28968:1;28957:9;28953:17;28944:6;28900:71;:::i;:::-;28981:72;29049:2;29038:9;29034:18;29025:6;28981:72;:::i;:::-;28728:332;;;;;:::o;29066:222::-;29206:34;29202:1;29194:6;29190:14;29183:58;29275:5;29270:2;29262:6;29258:15;29251:30;29066:222;:::o;29294:366::-;29436:3;29457:67;29521:2;29516:3;29457:67;:::i;:::-;29450:74;;29533:93;29622:3;29533:93;:::i;:::-;29651:2;29646:3;29642:12;29635:19;;29294:366;;;:::o;29666:419::-;29832:4;29870:2;29859:9;29855:18;29847:26;;29919:9;29913:4;29909:20;29905:1;29894:9;29890:17;29883:47;29947:131;30073:4;29947:131;:::i;:::-;29939:139;;29666:419;;;:::o;30091:225::-;30231:34;30227:1;30219:6;30215:14;30208:58;30300:8;30295:2;30287:6;30283:15;30276:33;30091:225;:::o;30322:366::-;30464:3;30485:67;30549:2;30544:3;30485:67;:::i;:::-;30478:74;;30561:93;30650:3;30561:93;:::i;:::-;30679:2;30674:3;30670:12;30663:19;;30322:366;;;:::o;30694:419::-;30860:4;30898:2;30887:9;30883:18;30875:26;;30947:9;30941:4;30937:20;30933:1;30922:9;30918:17;30911:47;30975:131;31101:4;30975:131;:::i;:::-;30967:139;;30694:419;;;:::o;31119:85::-;31164:7;31193:5;31182:16;;31119:85;;;:::o;31210:158::-;31268:9;31301:61;31319:42;31328:32;31354:5;31328:32;:::i;:::-;31319:42;:::i;:::-;31301:61;:::i;:::-;31288:74;;31210:158;;;:::o;31374:147::-;31469:45;31508:5;31469:45;:::i;:::-;31464:3;31457:58;31374:147;;:::o;31527:807::-;31776:4;31814:3;31803:9;31799:19;31791:27;;31828:71;31896:1;31885:9;31881:17;31872:6;31828:71;:::i;:::-;31909:72;31977:2;31966:9;31962:18;31953:6;31909:72;:::i;:::-;31991:80;32067:2;32056:9;32052:18;32043:6;31991:80;:::i;:::-;32081;32157:2;32146:9;32142:18;32133:6;32081:80;:::i;:::-;32171:73;32239:3;32228:9;32224:19;32215:6;32171:73;:::i;:::-;32254;32322:3;32311:9;32307:19;32298:6;32254:73;:::i;:::-;31527:807;;;;;;;;;:::o;32340:663::-;32428:6;32436;32444;32493:2;32481:9;32472:7;32468:23;32464:32;32461:119;;;32499:79;;:::i;:::-;32461:119;32619:1;32644:64;32700:7;32691:6;32680:9;32676:22;32644:64;:::i;:::-;32634:74;;32590:128;32757:2;32783:64;32839:7;32830:6;32819:9;32815:22;32783:64;:::i;:::-;32773:74;;32728:129;32896:2;32922:64;32978:7;32969:6;32958:9;32954:22;32922:64;:::i;:::-;32912:74;;32867:129;32340:663;;;;;:::o;33009:410::-;33049:7;33072:20;33090:1;33072:20;:::i;:::-;33067:25;;33106:20;33124:1;33106:20;:::i;:::-;33101:25;;33161:1;33158;33154:9;33183:30;33201:11;33183:30;:::i;:::-;33172:41;;33362:1;33353:7;33349:15;33346:1;33343:22;33323:1;33316:9;33296:83;33273:139;;33392:18;;:::i;:::-;33273:139;33057:362;33009:410;;;;:::o;33425:180::-;33473:77;33470:1;33463:88;33570:4;33567:1;33560:15;33594:4;33591:1;33584:15;33611:185;33651:1;33668:20;33686:1;33668:20;:::i;:::-;33663:25;;33702:20;33720:1;33702:20;:::i;:::-;33697:25;;33741:1;33731:35;;33746:18;;:::i;:::-;33731:35;33788:1;33785;33781:9;33776:14;;33611:185;;;;:::o;33802:240::-;33942:34;33938:1;33930:6;33926:14;33919:58;34011:23;34006:2;33998:6;33994:15;33987:48;33802:240;:::o;34048:366::-;34190:3;34211:67;34275:2;34270:3;34211:67;:::i;:::-;34204:74;;34287:93;34376:3;34287:93;:::i;:::-;34405:2;34400:3;34396:12;34389:19;;34048:366;;;:::o;34420:419::-;34586:4;34624:2;34613:9;34609:18;34601:26;;34673:9;34667:4;34663:20;34659:1;34648:9;34644:17;34637:47;34701:131;34827:4;34701:131;:::i;:::-;34693:139;;34420:419;;;:::o;34845:237::-;34985:34;34981:1;34973:6;34969:14;34962:58;35054:20;35049:2;35041:6;35037:15;35030:45;34845:237;:::o;35088:366::-;35230:3;35251:67;35315:2;35310:3;35251:67;:::i;:::-;35244:74;;35327:93;35416:3;35327:93;:::i;:::-;35445:2;35440:3;35436:12;35429:19;;35088:366;;;:::o;35460:419::-;35626:4;35664:2;35653:9;35649:18;35641:26;;35713:9;35707:4;35703:20;35699:1;35688:9;35684:17;35677:47;35741:131;35867:4;35741:131;:::i;:::-;35733:139;;35460:419;;;:::o;35885:179::-;36025:31;36021:1;36013:6;36009:14;36002:55;35885:179;:::o;36070:366::-;36212:3;36233:67;36297:2;36292:3;36233:67;:::i;:::-;36226:74;;36309:93;36398:3;36309:93;:::i;:::-;36427:2;36422:3;36418:12;36411:19;;36070:366;;;:::o;36442:419::-;36608:4;36646:2;36635:9;36631:18;36623:26;;36695:9;36689:4;36685:20;36681:1;36670:9;36666:17;36659:47;36723:131;36849:4;36723:131;:::i;:::-;36715:139;;36442:419;;;:::o;36867:225::-;37007:34;37003:1;36995:6;36991:14;36984:58;37076:8;37071:2;37063:6;37059:15;37052:33;36867:225;:::o;37098:366::-;37240:3;37261:67;37325:2;37320:3;37261:67;:::i;:::-;37254:74;;37337:93;37426:3;37337:93;:::i;:::-;37455:2;37450:3;37446:12;37439:19;;37098:366;;;:::o;37470:419::-;37636:4;37674:2;37663:9;37659:18;37651:26;;37723:9;37717:4;37713:20;37709:1;37698:9;37694:17;37687:47;37751:131;37877:4;37751:131;:::i;:::-;37743:139;;37470:419;;;:::o;37895:223::-;38035:34;38031:1;38023:6;38019:14;38012:58;38104:6;38099:2;38091:6;38087:15;38080:31;37895:223;:::o;38124:366::-;38266:3;38287:67;38351:2;38346:3;38287:67;:::i;:::-;38280:74;;38363:93;38452:3;38363:93;:::i;:::-;38481:2;38476:3;38472:12;38465:19;;38124:366;;;:::o;38496:419::-;38662:4;38700:2;38689:9;38685:18;38677:26;;38749:9;38743:4;38739:20;38735:1;38724:9;38720:17;38713:47;38777:131;38903:4;38777:131;:::i;:::-;38769:139;;38496:419;;;:::o;38921:221::-;39061:34;39057:1;39049:6;39045:14;39038:58;39130:4;39125:2;39117:6;39113:15;39106:29;38921:221;:::o;39148:366::-;39290:3;39311:67;39375:2;39370:3;39311:67;:::i;:::-;39304:74;;39387:93;39476:3;39387:93;:::i;:::-;39505:2;39500:3;39496:12;39489:19;;39148:366;;;:::o;39520:419::-;39686:4;39724:2;39713:9;39709:18;39701:26;;39773:9;39767:4;39763:20;39759:1;39748:9;39744:17;39737:47;39801:131;39927:4;39801:131;:::i;:::-;39793:139;;39520:419;;;:::o;39945:224::-;40085:34;40081:1;40073:6;40069:14;40062:58;40154:7;40149:2;40141:6;40137:15;40130:32;39945:224;:::o;40175:366::-;40317:3;40338:67;40402:2;40397:3;40338:67;:::i;:::-;40331:74;;40414:93;40503:3;40414:93;:::i;:::-;40532:2;40527:3;40523:12;40516:19;;40175:366;;;:::o;40547:419::-;40713:4;40751:2;40740:9;40736:18;40728:26;;40800:9;40794:4;40790:20;40786:1;40775:9;40771:17;40764:47;40828:131;40954:4;40828:131;:::i;:::-;40820:139;;40547:419;;;:::o;40972:222::-;41112:34;41108:1;41100:6;41096:14;41089:58;41181:5;41176:2;41168:6;41164:15;41157:30;40972:222;:::o;41200:366::-;41342:3;41363:67;41427:2;41422:3;41363:67;:::i;:::-;41356:74;;41439:93;41528:3;41439:93;:::i;:::-;41557:2;41552:3;41548:12;41541:19;;41200:366;;;:::o;41572:419::-;41738:4;41776:2;41765:9;41761:18;41753:26;;41825:9;41819:4;41815:20;41811:1;41800:9;41796:17;41789:47;41853:131;41979:4;41853:131;:::i;:::-;41845:139;;41572:419;;;:::o;41997:179::-;42137:31;42133:1;42125:6;42121:14;42114:55;41997:179;:::o;42182:366::-;42324:3;42345:67;42409:2;42404:3;42345:67;:::i;:::-;42338:74;;42421:93;42510:3;42421:93;:::i;:::-;42539:2;42534:3;42530:12;42523:19;;42182:366;;;:::o;42554:419::-;42720:4;42758:2;42747:9;42743:18;42735:26;;42807:9;42801:4;42797:20;42793:1;42782:9;42778:17;42771:47;42835:131;42961:4;42835:131;:::i;:::-;42827:139;;42554:419;;;:::o;42979:172::-;43119:24;43115:1;43107:6;43103:14;43096:48;42979:172;:::o;43157:366::-;43299:3;43320:67;43384:2;43379:3;43320:67;:::i;:::-;43313:74;;43396:93;43485:3;43396:93;:::i;:::-;43514:2;43509:3;43505:12;43498:19;;43157:366;;;:::o;43529:419::-;43695:4;43733:2;43722:9;43718:18;43710:26;;43782:9;43776:4;43772:20;43768:1;43757:9;43753:17;43746:47;43810:131;43936:4;43810:131;:::i;:::-;43802:139;;43529:419;;;:::o;43954:180::-;44094:32;44090:1;44082:6;44078:14;44071:56;43954:180;:::o;44140:366::-;44282:3;44303:67;44367:2;44362:3;44303:67;:::i;:::-;44296:74;;44379:93;44468:3;44379:93;:::i;:::-;44497:2;44492:3;44488:12;44481:19;;44140:366;;;:::o;44512:419::-;44678:4;44716:2;44705:9;44701:18;44693:26;;44765:9;44759:4;44755:20;44751:1;44740:9;44736:17;44729:47;44793:131;44919:4;44793:131;:::i;:::-;44785:139;;44512:419;;;:::o;44937:227::-;45077:34;45073:1;45065:6;45061:14;45054:58;45146:10;45141:2;45133:6;45129:15;45122:35;44937:227;:::o;45170:366::-;45312:3;45333:67;45397:2;45392:3;45333:67;:::i;:::-;45326:74;;45409:93;45498:3;45409:93;:::i;:::-;45527:2;45522:3;45518:12;45511:19;;45170:366;;;:::o;45542:419::-;45708:4;45746:2;45735:9;45731:18;45723:26;;45795:9;45789:4;45785:20;45781:1;45770:9;45766:17;45759:47;45823:131;45949:4;45823:131;:::i;:::-;45815:139;;45542:419;;;:::o;45967:169::-;46107:21;46103:1;46095:6;46091:14;46084:45;45967:169;:::o;46142:366::-;46284:3;46305:67;46369:2;46364:3;46305:67;:::i;:::-;46298:74;;46381:93;46470:3;46381:93;:::i;:::-;46499:2;46494:3;46490:12;46483:19;;46142:366;;;:::o;46514:419::-;46680:4;46718:2;46707:9;46703:18;46695:26;;46767:9;46761:4;46757:20;46753:1;46742:9;46738:17;46731:47;46795:131;46921:4;46795:131;:::i;:::-;46787:139;;46514:419;;;:::o;46939:229::-;47079:34;47075:1;47067:6;47063:14;47056:58;47148:12;47143:2;47135:6;47131:15;47124:37;46939:229;:::o;47174:366::-;47316:3;47337:67;47401:2;47396:3;47337:67;:::i;:::-;47330:74;;47413:93;47502:3;47413:93;:::i;:::-;47531:2;47526:3;47522:12;47515:19;;47174:366;;;:::o;47546:419::-;47712:4;47750:2;47739:9;47735:18;47727:26;;47799:9;47793:4;47789:20;47785:1;47774:9;47770:17;47763:47;47827:131;47953:4;47827:131;:::i;:::-;47819:139;;47546:419;;;:::o;47971:194::-;48011:4;48031:20;48049:1;48031:20;:::i;:::-;48026:25;;48065:20;48083:1;48065:20;:::i;:::-;48060:25;;48109:1;48106;48102:9;48094:17;;48133:1;48127:4;48124:11;48121:37;;;48138:18;;:::i;:::-;48121:37;47971:194;;;;:::o;48171:320::-;48286:4;48324:2;48313:9;48309:18;48301:26;;48337:71;48405:1;48394:9;48390:17;48381:6;48337:71;:::i;:::-;48418:66;48480:2;48469:9;48465:18;48456:6;48418:66;:::i;:::-;48171:320;;;;;:::o;48497:224::-;48637:34;48633:1;48625:6;48621:14;48614:58;48706:7;48701:2;48693:6;48689:15;48682:32;48497:224;:::o;48727:366::-;48869:3;48890:67;48954:2;48949:3;48890:67;:::i;:::-;48883:74;;48966:93;49055:3;48966:93;:::i;:::-;49084:2;49079:3;49075:12;49068:19;;48727:366;;;:::o;49099:419::-;49265:4;49303:2;49292:9;49288:18;49280:26;;49352:9;49346:4;49342:20;49338:1;49327:9;49323:17;49316:47;49380:131;49506:4;49380:131;:::i;:::-;49372:139;;49099:419;;;:::o;49524:225::-;49664:34;49660:1;49652:6;49648:14;49641:58;49733:8;49728:2;49720:6;49716:15;49709:33;49524:225;:::o;49755:366::-;49897:3;49918:67;49982:2;49977:3;49918:67;:::i;:::-;49911:74;;49994:93;50083:3;49994:93;:::i;:::-;50112:2;50107:3;50103:12;50096:19;;49755:366;;;:::o;50127:419::-;50293:4;50331:2;50320:9;50316:18;50308:26;;50380:9;50374:4;50370:20;50366:1;50355:9;50351:17;50344:47;50408:131;50534:4;50408:131;:::i;:::-;50400:139;;50127:419;;;:::o;50552:180::-;50600:77;50597:1;50590:88;50697:4;50694:1;50687:15;50721:4;50718:1;50711:15;50738:180;50786:77;50783:1;50776:88;50883:4;50880:1;50873:15;50907:4;50904:1;50897:15;50924:114;50991:6;51025:5;51019:12;51009:22;;50924:114;;;:::o;51044:184::-;51143:11;51177:6;51172:3;51165:19;51217:4;51212:3;51208:14;51193:29;;51044:184;;;;:::o;51234:132::-;51301:4;51324:3;51316:11;;51354:4;51349:3;51345:14;51337:22;;51234:132;;;:::o;51372:108::-;51449:24;51467:5;51449:24;:::i;:::-;51444:3;51437:37;51372:108;;:::o;51486:179::-;51555:10;51576:46;51618:3;51610:6;51576:46;:::i;:::-;51654:4;51649:3;51645:14;51631:28;;51486:179;;;;:::o;51671:113::-;51741:4;51773;51768:3;51764:14;51756:22;;51671:113;;;:::o;51820:732::-;51939:3;51968:54;52016:5;51968:54;:::i;:::-;52038:86;52117:6;52112:3;52038:86;:::i;:::-;52031:93;;52148:56;52198:5;52148:56;:::i;:::-;52227:7;52258:1;52243:284;52268:6;52265:1;52262:13;52243:284;;;52344:6;52338:13;52371:63;52430:3;52415:13;52371:63;:::i;:::-;52364:70;;52457:60;52510:6;52457:60;:::i;:::-;52447:70;;52303:224;52290:1;52287;52283:9;52278:14;;52243:284;;;52247:14;52543:3;52536:10;;51944:608;;;51820:732;;;;:::o;52558:831::-;52821:4;52859:3;52848:9;52844:19;52836:27;;52873:71;52941:1;52930:9;52926:17;52917:6;52873:71;:::i;:::-;52954:80;53030:2;53019:9;53015:18;53006:6;52954:80;:::i;:::-;53081:9;53075:4;53071:20;53066:2;53055:9;53051:18;53044:48;53109:108;53212:4;53203:6;53109:108;:::i;:::-;53101:116;;53227:72;53295:2;53284:9;53280:18;53271:6;53227:72;:::i;:::-;53309:73;53377:3;53366:9;53362:19;53353:6;53309:73;:::i;:::-;52558:831;;;;;;;;:::o

Swarm Source

ipfs://42199e71dae6e132d90281dc2ca14df44022076889f7a6084456190fa2c26355
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.