ETH Price: $2,604.99 (+2.39%)

Token

zKGPU (ZGPU)
 

Overview

Max Total Supply

100,000,000,000 ZGPU

Holders

85

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
zKGPU

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-27
*/

// SPDX-License-Identifier: MIT
// https://t.me/zKGPU
/*

Embark on a groundbreaking journey into the future of cryptographic security with our revolutionary Zero-Knowledge GPU technology. 
Developed at the intersection of cutting-edge cryptography and high-performance computing, our Zero-Knowledge GPU (ZKG) is poised to redefine the standards of privacy, confidentiality, and efficiency in the realm of cryptocurrencies and beyond.

Zero-Knowledge GPU leverages the power of graphical processing units (GPUs) to execute complex cryptographic protocols while preserving the utmost privacy of sensitive data. 

*/
pragma solidity 0.8.12;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract zKGPU is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public RewardsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

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

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


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

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

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

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("zKGPU", "ZGPU") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000000 * 1e18;

        maxBuyAmount = totalSupply *  7 / 1000;
        maxSellAmount = totalSupply *  5 / 1000;
        maxWalletAmount = totalSupply * 7 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 2;
        buyLiquidityFee = 0;
        buyRewardsFee = 3;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 20;
        sellLiquidityFee = 10;
        sellRewardsFee = 10;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

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

        TreasuryAddress = address(0xC278Fcb91422D24a662C848d5cdD6e8f9FD32b33);
        RewardsAddress = address(0xC278Fcb91422D24a662C848d5cdD6e8f9FD32b33);

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

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

    receive() external payable {}

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

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


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

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

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

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckGPU() public {
        bool success;
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
    }

    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(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is not enabled");
                }
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        // only take fees on Trades, not on wallet transfers
        if(takeFee){       
            if(tradingActiveBlock>0 && (tradingActiveBlock + 1) > block.number){
                penaltyAmount = amount * 10 / 100;
                super._transfer(from, RewardsAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }  
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
            amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

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

        (success,) = address(RewardsAddress).call{value: ethForRewards}("");

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


    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"RewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","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":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":"_RewardsAddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckGPU","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600581526020017f7a4b4750550000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a475055000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000c30565b5080600490805190602001906200010592919062000c30565b50505060006200011a6200066c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200067460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000d4a565b6040518363ffffffff1660e01b81526004016200033d92919062000d8d565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200070a60201b60201c565b60006c01431e0fae6d7217caa000000090506103e8600782620003ef919062000df3565b620003fb919062000e83565b6006819055506103e860058262000413919062000df3565b6200041f919062000e83565b6007819055506103e860078262000437919062000df3565b62000443919062000e83565b600881905550620186a06032826200045c919062000df3565b62000468919062000e83565b600a819055506002601081905550600060118190555060036012819055506012546011546010546200049b919062000ebb565b620004a7919062000ebb565b600f8190555060148081905550600a601581905550600a601681905550601654601554601454620004d9919062000ebb565b620004e5919062000ebb565b601381905550620004fe8360016200067460201b60201c565b620005113060016200067460201b60201c565b6200052661dead60016200067460201b60201c565b73c278fcb91422d24a662c848d5cdd6e8f9fd32b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c278fcb91422d24a662c848d5cdd6e8f9fd32b33600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e3836001620007bd60201b60201c565b620005f6306001620007bd60201b60201c565b6200060b61dead6001620007bd60201b60201c565b62000640600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007bd60201b60201c565b6200065283826200090a60201b60201c565b620006638362000a5b60201b60201c565b5050506200119f565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006fe92919062000f35565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077382826200067460201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007cd6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008569062000fc3565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008fe919062000fe5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200097d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009749062001052565b60405180910390fd5b806002600082825462000991919062000ebb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e8919062000ebb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4f919062001085565b60405180910390a35050565b62000a6b6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af49062000fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b679062001118565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c3e9062001169565b90600052602060002090601f01602090048101928262000c62576000855562000cae565b82601f1062000c7d57805160ff191683800117855562000cae565b8280016001018555821562000cae579182015b8281111562000cad57825182559160200191906001019062000c90565b5b50905062000cbd919062000cc1565b5090565b5b8082111562000cdc57600081600090555060010162000cc2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d128262000ce5565b9050919050565b62000d248162000d05565b811462000d3057600080fd5b50565b60008151905062000d448162000d19565b92915050565b60006020828403121562000d635762000d6262000ce0565b5b600062000d738482850162000d33565b91505092915050565b62000d878162000d05565b82525050565b600060408201905062000da4600083018562000d7c565b62000db3602083018462000d7c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e008262000dba565b915062000e0d8362000dba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e495762000e4862000dc4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e908262000dba565b915062000e9d8362000dba565b92508262000eb05762000eaf62000e54565b5b828204905092915050565b600062000ec88262000dba565b915062000ed58362000dba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f0d5762000f0c62000dc4565b5b828201905092915050565b60008115159050919050565b62000f2f8162000f18565b82525050565b600060408201905062000f4c600083018562000d7c565b62000f5b602083018462000f24565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fab60208362000f62565b915062000fb88262000f73565b602082019050919050565b6000602082019050818103600083015262000fde8162000f9c565b9050919050565b600060208201905062000ffc600083018462000f24565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200103a601f8362000f62565b9150620010478262001002565b602082019050919050565b600060208201905081810360008301526200106d816200102b565b9050919050565b6200107f8162000dba565b82525050565b60006020820190506200109c600083018462001074565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200110060268362000f62565b91506200110d82620010a2565b604082019050919050565b600060208201905081810360008301526200113381620010f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200118257607f821691505b602082108114156200119957620011986200113a565b5b50919050565b60805160a051615829620011f6600039600081816110b9015281816115eb0152611e66015260008181610d7501528181613e2a01528181613f0b01528181613f3201528181613fce0152613ff501526158296000f3fe6080604052600436106103395760003560e01c80638906758d116101ab578063c17b5b8c116100f7578063dddb912d11610095578063f11a24d31161006f578063f11a24d314610bf9578063f2fde38b14610c24578063f54afa7814610c4d578063f637434214610c7857610340565b8063dddb912d14610b8c578063e2f4560514610ba3578063ee40166e14610bce57610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a9059cbb11610164578063bb8d51311161013e578063bb8d5131146109ab578063bbc0c742146109d6578063c024666814610a01578063c054f2f414610a2a57610340565b8063a9059cbb14610906578063aa4bde2814610943578063b62496f51461096e57610340565b80638906758d1461080a5780638a8c523c146108335780638da5cb5b1461084a57806395d89b41146108755780639a7a23d6146108a0578063a457c2d7146108c957610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638095d564146107795780638366e79a146107a257806388e765ff146107df57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b6040516103679190614142565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906141fd565b610d35565b6040516103a49190614258565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190614273565b610d53565b6040516103e19190614258565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c91906142ff565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b6040516104379190614329565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b6040516104629190614329565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614344565b610da7565b60405161049f9190614258565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190614397565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f391906143e0565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906141fd565b61100b565b6040516105309190614258565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b919061440a565b60405180910390f35b34801561057057600080fd5b506105796110db565b6040516105869190614258565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b1919061440a565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc9190614329565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614273565b61111a565b005b34801561061a57600080fd5b506106236112a8565b6040516106309190614329565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b9190614329565b60405180910390f35b34801561067057600080fd5b506106796112b4565b6040516106869190614329565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b19190614258565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190614273565b6112cd565b6040516106ee9190614329565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c60048036038101906107479190614451565b61154d565b005b34801561075a57600080fd5b506107636116d4565b6040516107709190614329565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614491565b6116da565b005b3480156107ae57600080fd5b506107c960048036038101906107c491906144e4565b6117ae565b6040516107d69190614258565b60405180910390f35b3480156107eb57600080fd5b506107f46119ed565b6040516108019190614329565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c9190614273565b6119f3565b005b34801561083f57600080fd5b50610848611b81565b005b34801561085657600080fd5b5061085f611d11565b60405161086c919061440a565b60405180910390f35b34801561088157600080fd5b5061088a611d3b565b6040516108979190614142565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c29190614451565b611dcd565b005b3480156108d557600080fd5b506108f060048036038101906108eb91906141fd565b611f01565b6040516108fd9190614258565b60405180910390f35b34801561091257600080fd5b5061092d600480360381019061092891906141fd565b611fec565b60405161093a9190614258565b60405180910390f35b34801561094f57600080fd5b5061095861200a565b6040516109659190614329565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614273565b612010565b6040516109a29190614258565b60405180910390f35b3480156109b757600080fd5b506109c0612030565b6040516109cd9190614329565b60405180910390f35b3480156109e257600080fd5b506109eb612036565b6040516109f89190614258565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190614451565b612049565b005b348015610a3657600080fd5b50610a3f612189565b604051610a4c919061440a565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190614491565b6121af565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614397565b612283565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614397565b6123e6565b005b348015610adc57600080fd5b50610ae5612493565b604051610af29190614329565b60405180910390f35b348015610b0757600080fd5b50610b10612499565b604051610b1d9190614329565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614397565b61249f565b005b348015610b5b57600080fd5b50610b766004803603810190610b7191906144e4565b612602565b604051610b839190614329565b60405180910390f35b348015610b9857600080fd5b50610ba1612689565b005b348015610baf57600080fd5b50610bb861278a565b604051610bc59190614329565b60405180910390f35b348015610bda57600080fd5b50610be3612790565b604051610bf09190614329565b60405180910390f35b348015610c0557600080fd5b50610c0e612796565b604051610c1b9190614329565b60405180910390f35b348015610c3057600080fd5b50610c4b6004803603810190610c469190614273565b61279c565b005b348015610c5957600080fd5b50610c62612963565b604051610c6f9190614329565b60405180910390f35b348015610c8457600080fd5b50610c8d612969565b604051610c9a9190614329565b60405180910390f35b606060038054610cb290614553565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614553565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d4261296f565b8484612977565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b6000610db4848484612b42565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff61296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e76906145f7565b60405180910390fd5b610e9385610e8b61296f565b858403612977565b60019150509392505050565b610ea761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90614663565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f5691906146b2565b610f60919061473b565b610f6a919061473b565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa3906147de565b60405180910390fd5b670de0b6b3a764000081610fc091906146b2565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff79190614329565b60405180910390a150565b60006012905090565b60006110ad61101861296f565b84846001600061102661296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a891906147fe565b612977565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b61112261296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906148c6565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61147561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90614663565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61155561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614663565b60405180910390fd5b80611679577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614958565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6116e261296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890614663565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461179991906147fe565b6117a391906147fe565b600f81905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906149c4565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614a56565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118ea919061440a565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614a8b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611968929190614ab8565b6020604051808303816000875af1158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190614af6565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516119de929190614ab8565b60405180910390a15092915050565b60065481565b6119fb61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8190614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af190614b95565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611b8961296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90614663565b60405180910390fd5b600e60019054906101000a900460ff1615611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90614c01565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611cdc9190614258565b60405180910390a1600e60019054906101000a900460ff168015611d0257506000600d54145b15611d0f5743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d4a90614553565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7690614553565b8015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b5050505050905090565b611dd561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90614663565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90614c93565b60405180910390fd5b611efd8282613744565b5050565b60008060016000611f1061296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490614d25565b60405180910390fd5b611fe1611fd861296f565b85858403612977565b600191505092915050565b6000612000611ff961296f565b8484612b42565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b61205161296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614663565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161217d9190614258565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121b761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90614663565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461226e91906147fe565b61227891906147fe565b601381905550505050565b61228b61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614663565b60405180910390fd5b670de0b6b3a76400006103e86003612330610d97565b61233a91906146b2565b612344919061473b565b61234e919061473b565b811015612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238790614db7565b60405180910390fd5b670de0b6b3a7640000816123a491906146b2565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516123db9190614329565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d90614a56565b60405180910390fd5b670de0b6b3a76400008161248a91906146b2565b600a8190555050565b60175481565b600f5481565b6124a761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90614663565b60405180910390fd5b670de0b6b3a76400006103e8600161254c610d97565b61255691906146b2565b612560919061473b565b61256a919061473b565b8110156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a390614e49565b60405180910390fd5b670de0b6b3a7640000816125c091906146b2565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516125f79190614329565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290614a56565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff164760405161273f90614e9a565b60006040518083038185875af1925050503d806000811461277c576040519150601f19603f3d011682016040523d82523d6000602084013e612781565b606091505b50508091505050565b600a5481565b600d5481565b60115481565b6127a461296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90614f21565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90614fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e90615045565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b359190614329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906150d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1990615169565b60405180910390fd5b60008111612c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5c906151d5565b60405180910390fd5b600e60009054906101000a900460ff161561321457612c82611d11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf05750612cc0611d11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d295750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d63575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600e60019054906101000a900460ff16612ed257601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e1d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390615241565b60405180910390fd5b612e64611d11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec8906152ad565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f755750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561301c57600654811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb69061533f565b60405180910390fd5b600854612fcb836112cd565b82612fd691906147fe565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906153ab565b60405180910390fd5b613212565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130bf5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561310e57600754811115613109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131009061543d565b60405180910390fd5b613211565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131b25750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613210576008546131c3836112cd565b826131ce91906147fe565b111561320f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613206906153ab565b60405180910390fd5b5b5b5b5b5b600061321f306112cd565b90506000600a5482101590508080156132445750600e60029054906101000a900460ff165b801561325d5750600960009054906101000a900460ff16155b80156132b35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133095750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561335f5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a3576001600960006101000a81548160ff0219169083151502179055506133876137ef565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061344a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345457600090505b600080821561372f576000600d5411801561347c5750436001600d5461347a91906147fe565b115b156134ce576064600a8761349091906146b2565b61349a919061473b565b90506134c988600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a8c565b613700565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561352957506000601354115b156135e85760646013548761353e91906146b2565b613548919061473b565b91506013546015548361355b91906146b2565b613565919061473b565b6018600082825461357691906147fe565b925050819055506013546014548361358e91906146b2565b613598919061473b565b601760008282546135a991906147fe565b92505081905550601354601654836135c191906146b2565b6135cb919061473b565b601960008282546135dc91906147fe565b925050819055506136ff565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364357506000600f54115b156136fe576064600f548761365891906146b2565b613662919061473b565b9150600f546011548361367591906146b2565b61367f919061473b565b6018600082825461369091906147fe565b92505081905550600f54601054836136a891906146b2565b6136b2919061473b565b601760008282546136c391906147fe565b92505081905550600f54601254836136db91906146b2565b6136e5919061473b565b601960008282546136f691906147fe565b925050819055505b5b5b600082111561371557613714883084613a8c565b5b808261372191906147fe565b8661372c919061545d565b95505b61373a888888613a8c565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137a58282613cf7565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006137fa306112cd565b9050600060195460175460185461381191906147fe565b61381b91906147fe565b9050600082148061382c5750600081145b15613838575050613a8a565b6005600a5461384791906146b2565b821115613860576005600a5461385d91906146b2565b91505b6000806002836018548661387491906146b2565b61387e919061473b565b613888919061473b565b905061389e8185613899919061545d565b613d8b565b60004790506000819050600060026018546138b9919061473b565b866138c4919061545d565b601754846138d291906146b2565b6138dc919061473b565b9050600060026018546138ef919061473b565b876138fa919061545d565b6019548561390891906146b2565b613912919061473b565b9050808261392091906147fe565b8361392b919061545d565b92506000601881905550600060178190555060006019819055506000851180156139555750600083115b15613965576139648584613fc8565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139ab90614e9a565b60006040518083038185875af1925050503d80600081146139e8576040519150601f19603f3d011682016040523d82523d6000602084013e6139ed565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a3990614e9a565b60006040518083038185875af1925050503d8060008114613a76576040519150601f19603f3d011682016040523d82523d6000602084013e613a7b565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af3906150d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6390615169565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613be990615503565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c8591906147fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ce99190614329565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613d7f929190615523565b60405180910390a15050565b6000600267ffffffffffffffff811115613da857613da761554c565b5b604051908082528060200260200182016040528015613dd65781602001602082028036833780820191505090505b5090503081600081518110613dee57613ded61557b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb791906155bf565b81600181518110613ecb57613eca61557b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f30307f000000000000000000000000000000000000000000000000000000000000000084612977565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f929594939291906156e5565b600060405180830381600087803b158015613fac57600080fd5b505af1158015613fc0573d6000803e3d6000fd5b505050505050565b613ff3307f000000000000000000000000000000000000000000000000000000000000000084612977565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061403d611d11565b426040518863ffffffff1660e01b815260040161405f9695949392919061573f565b60606040518083038185885af115801561407d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140a291906157a0565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b838111156140f2576000848401525b50505050565b6000601f19601f8301169050919050565b6000614114826140a9565b61411e81856140b4565b935061412e8185602086016140c5565b614137816140f8565b840191505092915050565b6000602082019050818103600083015261415c8184614109565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061419482614169565b9050919050565b6141a481614189565b81146141af57600080fd5b50565b6000813590506141c18161419b565b92915050565b6000819050919050565b6141da816141c7565b81146141e557600080fd5b50565b6000813590506141f7816141d1565b92915050565b6000806040838503121561421457614213614164565b5b6000614222858286016141b2565b9250506020614233858286016141e8565b9150509250929050565b60008115159050919050565b6142528161423d565b82525050565b600060208201905061426d6000830184614249565b92915050565b60006020828403121561428957614288614164565b5b6000614297848285016141b2565b91505092915050565b6000819050919050565b60006142c56142c06142bb84614169565b6142a0565b614169565b9050919050565b60006142d7826142aa565b9050919050565b60006142e9826142cc565b9050919050565b6142f9816142de565b82525050565b600060208201905061431460008301846142f0565b92915050565b614323816141c7565b82525050565b600060208201905061433e600083018461431a565b92915050565b60008060006060848603121561435d5761435c614164565b5b600061436b868287016141b2565b935050602061437c868287016141b2565b925050604061438d868287016141e8565b9150509250925092565b6000602082840312156143ad576143ac614164565b5b60006143bb848285016141e8565b91505092915050565b600060ff82169050919050565b6143da816143c4565b82525050565b60006020820190506143f560008301846143d1565b92915050565b61440481614189565b82525050565b600060208201905061441f60008301846143fb565b92915050565b61442e8161423d565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b6000806040838503121561446857614467614164565b5b6000614476858286016141b2565b92505060206144878582860161443c565b9150509250929050565b6000806000606084860312156144aa576144a9614164565b5b60006144b8868287016141e8565b93505060206144c9868287016141e8565b92505060406144da868287016141e8565b9150509250925092565b600080604083850312156144fb576144fa614164565b5b6000614509858286016141b2565b925050602061451a858286016141b2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061456b57607f821691505b6020821081141561457f5761457e614524565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145e16028836140b4565b91506145ec82614585565b604082019050919050565b60006020820190508181036000830152614610816145d4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061464d6020836140b4565b915061465882614617565b602082019050919050565b6000602082019050818103600083015261467c81614640565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146bd826141c7565b91506146c8836141c7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470157614700614683565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614746826141c7565b9150614751836141c7565b9250826147615761476061470c565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b60006147c86029836140b4565b91506147d38261476c565b604082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b6000614809826141c7565b9150614814836141c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561484957614848614683565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006148b06024836140b4565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006149426027836140b4565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b60006149ae601a836140b4565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a406021836140b4565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b600081519050614a85816141d1565b92915050565b600060208284031215614aa157614aa0614164565b5b6000614aaf84828501614a76565b91505092915050565b6000604082019050614acd60008301856143fb565b614ada602083018461431a565b9392505050565b600081519050614af081614425565b92915050565b600060208284031215614b0c57614b0b614164565b5b6000614b1a84828501614ae1565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614b7f6023836140b4565b9150614b8a82614b23565b604082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614beb6018836140b4565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614c7d6039836140b4565b9150614c8882614c21565b604082019050919050565b60006020820190508181036000830152614cac81614c70565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d0f6025836140b4565b9150614d1a82614cb3565b604082019050919050565b60006020820190508181036000830152614d3e81614d02565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614da1602c836140b4565b9150614dac82614d45565b604082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614e33602a836140b4565b9150614e3e82614dd7565b604082019050919050565b60006020820190508181036000830152614e6281614e26565b9050919050565b600081905092915050565b50565b6000614e84600083614e69565b9150614e8f82614e74565b600082019050919050565b6000614ea582614e77565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f0b6026836140b4565b9150614f1682614eaf565b604082019050919050565b60006020820190508181036000830152614f3a81614efe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f9d6024836140b4565b9150614fa882614f41565b604082019050919050565b60006020820190508181036000830152614fcc81614f90565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061502f6022836140b4565b915061503a82614fd3565b604082019050919050565b6000602082019050818103600083015261505e81615022565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150c16025836140b4565b91506150cc82615065565b604082019050919050565b600060208201905081810360008301526150f0816150b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151536023836140b4565b915061515e826150f7565b604082019050919050565b6000602082019050818103600083015261518281615146565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006151bf601d836140b4565b91506151ca82615189565b602082019050919050565b600060208201905081810360008301526151ee816151b2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061522b6016836140b4565b9150615236826151f5565b602082019050919050565b6000602082019050818103600083015261525a8161521e565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006152976016836140b4565b91506152a282615261565b602082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153296028836140b4565b9150615334826152cd565b604082019050919050565b600060208201905081810360008301526153588161531c565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006153956018836140b4565b91506153a08261535f565b602082019050919050565b600060208201905081810360008301526153c481615388565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615427602a836140b4565b9150615432826153cb565b604082019050919050565b600060208201905081810360008301526154568161541a565b9050919050565b6000615468826141c7565b9150615473836141c7565b92508282101561548657615485614683565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006154ed6026836140b4565b91506154f882615491565b604082019050919050565b6000602082019050818103600083015261551c816154e0565b9050919050565b600060408201905061553860008301856143fb565b6155456020830184614249565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506155b98161419b565b92915050565b6000602082840312156155d5576155d4614164565b5b60006155e3848285016155aa565b91505092915050565b6000819050919050565b600061561161560c615607846155ec565b6142a0565b6141c7565b9050919050565b615621816155f6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61565c81614189565b82525050565b600061566e8383615653565b60208301905092915050565b6000602082019050919050565b600061569282615627565b61569c8185615632565b93506156a783615643565b8060005b838110156156d85781516156bf8882615662565b97506156ca8361567a565b9250506001810190506156ab565b5085935050505092915050565b600060a0820190506156fa600083018861431a565b6157076020830187615618565b81810360408301526157198186615687565b905061572860608301856143fb565b615735608083018461431a565b9695505050505050565b600060c08201905061575460008301896143fb565b615761602083018861431a565b61576e6040830187615618565b61577b6060830186615618565b61578860808301856143fb565b61579560a083018461431a565b979650505050505050565b6000806000606084860312156157b9576157b8614164565b5b60006157c786828701614a76565b93505060206157d886828701614a76565b92505060406157e986828701614a76565b915050925092509256fea2646970667358221220b5846ef68d9eff3303e0b1bf46e60524dc0771781f176113094d3af1cd86a8ea64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638906758d116101ab578063c17b5b8c116100f7578063dddb912d11610095578063f11a24d31161006f578063f11a24d314610bf9578063f2fde38b14610c24578063f54afa7814610c4d578063f637434214610c7857610340565b8063dddb912d14610b8c578063e2f4560514610ba3578063ee40166e14610bce57610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a9059cbb11610164578063bb8d51311161013e578063bb8d5131146109ab578063bbc0c742146109d6578063c024666814610a01578063c054f2f414610a2a57610340565b8063a9059cbb14610906578063aa4bde2814610943578063b62496f51461096e57610340565b80638906758d1461080a5780638a8c523c146108335780638da5cb5b1461084a57806395d89b41146108755780639a7a23d6146108a0578063a457c2d7146108c957610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638095d564146107795780638366e79a146107a257806388e765ff146107df57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b6040516103679190614142565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906141fd565b610d35565b6040516103a49190614258565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190614273565b610d53565b6040516103e19190614258565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c91906142ff565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b6040516104379190614329565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b6040516104629190614329565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614344565b610da7565b60405161049f9190614258565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190614397565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f391906143e0565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906141fd565b61100b565b6040516105309190614258565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b919061440a565b60405180910390f35b34801561057057600080fd5b506105796110db565b6040516105869190614258565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b1919061440a565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc9190614329565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614273565b61111a565b005b34801561061a57600080fd5b506106236112a8565b6040516106309190614329565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b9190614329565b60405180910390f35b34801561067057600080fd5b506106796112b4565b6040516106869190614329565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b19190614258565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190614273565b6112cd565b6040516106ee9190614329565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c60048036038101906107479190614451565b61154d565b005b34801561075a57600080fd5b506107636116d4565b6040516107709190614329565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614491565b6116da565b005b3480156107ae57600080fd5b506107c960048036038101906107c491906144e4565b6117ae565b6040516107d69190614258565b60405180910390f35b3480156107eb57600080fd5b506107f46119ed565b6040516108019190614329565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c9190614273565b6119f3565b005b34801561083f57600080fd5b50610848611b81565b005b34801561085657600080fd5b5061085f611d11565b60405161086c919061440a565b60405180910390f35b34801561088157600080fd5b5061088a611d3b565b6040516108979190614142565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c29190614451565b611dcd565b005b3480156108d557600080fd5b506108f060048036038101906108eb91906141fd565b611f01565b6040516108fd9190614258565b60405180910390f35b34801561091257600080fd5b5061092d600480360381019061092891906141fd565b611fec565b60405161093a9190614258565b60405180910390f35b34801561094f57600080fd5b5061095861200a565b6040516109659190614329565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614273565b612010565b6040516109a29190614258565b60405180910390f35b3480156109b757600080fd5b506109c0612030565b6040516109cd9190614329565b60405180910390f35b3480156109e257600080fd5b506109eb612036565b6040516109f89190614258565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190614451565b612049565b005b348015610a3657600080fd5b50610a3f612189565b604051610a4c919061440a565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190614491565b6121af565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614397565b612283565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614397565b6123e6565b005b348015610adc57600080fd5b50610ae5612493565b604051610af29190614329565b60405180910390f35b348015610b0757600080fd5b50610b10612499565b604051610b1d9190614329565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614397565b61249f565b005b348015610b5b57600080fd5b50610b766004803603810190610b7191906144e4565b612602565b604051610b839190614329565b60405180910390f35b348015610b9857600080fd5b50610ba1612689565b005b348015610baf57600080fd5b50610bb861278a565b604051610bc59190614329565b60405180910390f35b348015610bda57600080fd5b50610be3612790565b604051610bf09190614329565b60405180910390f35b348015610c0557600080fd5b50610c0e612796565b604051610c1b9190614329565b60405180910390f35b348015610c3057600080fd5b50610c4b6004803603810190610c469190614273565b61279c565b005b348015610c5957600080fd5b50610c62612963565b604051610c6f9190614329565b60405180910390f35b348015610c8457600080fd5b50610c8d612969565b604051610c9a9190614329565b60405180910390f35b606060038054610cb290614553565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614553565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d4261296f565b8484612977565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b6000610db4848484612b42565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff61296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e76906145f7565b60405180910390fd5b610e9385610e8b61296f565b858403612977565b60019150509392505050565b610ea761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90614663565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f5691906146b2565b610f60919061473b565b610f6a919061473b565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa3906147de565b60405180910390fd5b670de0b6b3a764000081610fc091906146b2565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff79190614329565b60405180910390a150565b60006012905090565b60006110ad61101861296f565b84846001600061102661296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a891906147fe565b612977565b6001905092915050565b7f000000000000000000000000dc1631b4596668b4142c6fabe8434a951da85f8f81565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b61112261296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906148c6565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61147561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90614663565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61155561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614663565b60405180910390fd5b80611679577f000000000000000000000000dc1631b4596668b4142c6fabe8434a951da85f8f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614958565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6116e261296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890614663565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461179991906147fe565b6117a391906147fe565b600f81905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906149c4565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614a56565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118ea919061440a565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614a8b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611968929190614ab8565b6020604051808303816000875af1158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190614af6565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516119de929190614ab8565b60405180910390a15092915050565b60065481565b6119fb61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8190614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af190614b95565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611b8961296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90614663565b60405180910390fd5b600e60019054906101000a900460ff1615611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90614c01565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611cdc9190614258565b60405180910390a1600e60019054906101000a900460ff168015611d0257506000600d54145b15611d0f5743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d4a90614553565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7690614553565b8015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b5050505050905090565b611dd561296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90614663565b60405180910390fd5b7f000000000000000000000000dc1631b4596668b4142c6fabe8434a951da85f8f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90614c93565b60405180910390fd5b611efd8282613744565b5050565b60008060016000611f1061296f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490614d25565b60405180910390fd5b611fe1611fd861296f565b85858403612977565b600191505092915050565b6000612000611ff961296f565b8484612b42565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b61205161296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614663565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161217d9190614258565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121b761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90614663565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461226e91906147fe565b61227891906147fe565b601381905550505050565b61228b61296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614663565b60405180910390fd5b670de0b6b3a76400006103e86003612330610d97565b61233a91906146b2565b612344919061473b565b61234e919061473b565b811015612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238790614db7565b60405180910390fd5b670de0b6b3a7640000816123a491906146b2565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516123db9190614329565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d90614a56565b60405180910390fd5b670de0b6b3a76400008161248a91906146b2565b600a8190555050565b60175481565b600f5481565b6124a761296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90614663565b60405180910390fd5b670de0b6b3a76400006103e8600161254c610d97565b61255691906146b2565b612560919061473b565b61256a919061473b565b8110156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a390614e49565b60405180910390fd5b670de0b6b3a7640000816125c091906146b2565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516125f79190614329565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290614a56565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff164760405161273f90614e9a565b60006040518083038185875af1925050503d806000811461277c576040519150601f19603f3d011682016040523d82523d6000602084013e612781565b606091505b50508091505050565b600a5481565b600d5481565b60115481565b6127a461296f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90614f21565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90614fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e90615045565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b359190614329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906150d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1990615169565b60405180910390fd5b60008111612c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5c906151d5565b60405180910390fd5b600e60009054906101000a900460ff161561321457612c82611d11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf05750612cc0611d11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d295750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d63575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600e60019054906101000a900460ff16612ed257601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e1d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390615241565b60405180910390fd5b612e64611d11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec8906152ad565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f755750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561301c57600654811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb69061533f565b60405180910390fd5b600854612fcb836112cd565b82612fd691906147fe565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906153ab565b60405180910390fd5b613212565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130bf5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561310e57600754811115613109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131009061543d565b60405180910390fd5b613211565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131b25750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613210576008546131c3836112cd565b826131ce91906147fe565b111561320f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613206906153ab565b60405180910390fd5b5b5b5b5b5b600061321f306112cd565b90506000600a5482101590508080156132445750600e60029054906101000a900460ff165b801561325d5750600960009054906101000a900460ff16155b80156132b35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133095750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561335f5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a3576001600960006101000a81548160ff0219169083151502179055506133876137ef565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061344a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345457600090505b600080821561372f576000600d5411801561347c5750436001600d5461347a91906147fe565b115b156134ce576064600a8761349091906146b2565b61349a919061473b565b90506134c988600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a8c565b613700565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561352957506000601354115b156135e85760646013548761353e91906146b2565b613548919061473b565b91506013546015548361355b91906146b2565b613565919061473b565b6018600082825461357691906147fe565b925050819055506013546014548361358e91906146b2565b613598919061473b565b601760008282546135a991906147fe565b92505081905550601354601654836135c191906146b2565b6135cb919061473b565b601960008282546135dc91906147fe565b925050819055506136ff565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364357506000600f54115b156136fe576064600f548761365891906146b2565b613662919061473b565b9150600f546011548361367591906146b2565b61367f919061473b565b6018600082825461369091906147fe565b92505081905550600f54601054836136a891906146b2565b6136b2919061473b565b601760008282546136c391906147fe565b92505081905550600f54601254836136db91906146b2565b6136e5919061473b565b601960008282546136f691906147fe565b925050819055505b5b5b600082111561371557613714883084613a8c565b5b808261372191906147fe565b8661372c919061545d565b95505b61373a888888613a8c565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137a58282613cf7565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006137fa306112cd565b9050600060195460175460185461381191906147fe565b61381b91906147fe565b9050600082148061382c5750600081145b15613838575050613a8a565b6005600a5461384791906146b2565b821115613860576005600a5461385d91906146b2565b91505b6000806002836018548661387491906146b2565b61387e919061473b565b613888919061473b565b905061389e8185613899919061545d565b613d8b565b60004790506000819050600060026018546138b9919061473b565b866138c4919061545d565b601754846138d291906146b2565b6138dc919061473b565b9050600060026018546138ef919061473b565b876138fa919061545d565b6019548561390891906146b2565b613912919061473b565b9050808261392091906147fe565b8361392b919061545d565b92506000601881905550600060178190555060006019819055506000851180156139555750600083115b15613965576139648584613fc8565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139ab90614e9a565b60006040518083038185875af1925050503d80600081146139e8576040519150601f19603f3d011682016040523d82523d6000602084013e6139ed565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a3990614e9a565b60006040518083038185875af1925050503d8060008114613a76576040519150601f19603f3d011682016040523d82523d6000602084013e613a7b565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af3906150d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6390615169565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613be990615503565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c8591906147fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ce99190614329565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613d7f929190615523565b60405180910390a15050565b6000600267ffffffffffffffff811115613da857613da761554c565b5b604051908082528060200260200182016040528015613dd65781602001602082028036833780820191505090505b5090503081600081518110613dee57613ded61557b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb791906155bf565b81600181518110613ecb57613eca61557b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f30307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612977565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f929594939291906156e5565b600060405180830381600087803b158015613fac57600080fd5b505af1158015613fc0573d6000803e3d6000fd5b505050505050565b613ff3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612977565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061403d611d11565b426040518863ffffffff1660e01b815260040161405f9695949392919061573f565b60606040518083038185885af115801561407d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140a291906157a0565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b838111156140f2576000848401525b50505050565b6000601f19601f8301169050919050565b6000614114826140a9565b61411e81856140b4565b935061412e8185602086016140c5565b614137816140f8565b840191505092915050565b6000602082019050818103600083015261415c8184614109565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061419482614169565b9050919050565b6141a481614189565b81146141af57600080fd5b50565b6000813590506141c18161419b565b92915050565b6000819050919050565b6141da816141c7565b81146141e557600080fd5b50565b6000813590506141f7816141d1565b92915050565b6000806040838503121561421457614213614164565b5b6000614222858286016141b2565b9250506020614233858286016141e8565b9150509250929050565b60008115159050919050565b6142528161423d565b82525050565b600060208201905061426d6000830184614249565b92915050565b60006020828403121561428957614288614164565b5b6000614297848285016141b2565b91505092915050565b6000819050919050565b60006142c56142c06142bb84614169565b6142a0565b614169565b9050919050565b60006142d7826142aa565b9050919050565b60006142e9826142cc565b9050919050565b6142f9816142de565b82525050565b600060208201905061431460008301846142f0565b92915050565b614323816141c7565b82525050565b600060208201905061433e600083018461431a565b92915050565b60008060006060848603121561435d5761435c614164565b5b600061436b868287016141b2565b935050602061437c868287016141b2565b925050604061438d868287016141e8565b9150509250925092565b6000602082840312156143ad576143ac614164565b5b60006143bb848285016141e8565b91505092915050565b600060ff82169050919050565b6143da816143c4565b82525050565b60006020820190506143f560008301846143d1565b92915050565b61440481614189565b82525050565b600060208201905061441f60008301846143fb565b92915050565b61442e8161423d565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b6000806040838503121561446857614467614164565b5b6000614476858286016141b2565b92505060206144878582860161443c565b9150509250929050565b6000806000606084860312156144aa576144a9614164565b5b60006144b8868287016141e8565b93505060206144c9868287016141e8565b92505060406144da868287016141e8565b9150509250925092565b600080604083850312156144fb576144fa614164565b5b6000614509858286016141b2565b925050602061451a858286016141b2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061456b57607f821691505b6020821081141561457f5761457e614524565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145e16028836140b4565b91506145ec82614585565b604082019050919050565b60006020820190508181036000830152614610816145d4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061464d6020836140b4565b915061465882614617565b602082019050919050565b6000602082019050818103600083015261467c81614640565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146bd826141c7565b91506146c8836141c7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470157614700614683565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614746826141c7565b9150614751836141c7565b9250826147615761476061470c565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b60006147c86029836140b4565b91506147d38261476c565b604082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b6000614809826141c7565b9150614814836141c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561484957614848614683565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006148b06024836140b4565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006149426027836140b4565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b60006149ae601a836140b4565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a406021836140b4565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b600081519050614a85816141d1565b92915050565b600060208284031215614aa157614aa0614164565b5b6000614aaf84828501614a76565b91505092915050565b6000604082019050614acd60008301856143fb565b614ada602083018461431a565b9392505050565b600081519050614af081614425565b92915050565b600060208284031215614b0c57614b0b614164565b5b6000614b1a84828501614ae1565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614b7f6023836140b4565b9150614b8a82614b23565b604082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614beb6018836140b4565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614c7d6039836140b4565b9150614c8882614c21565b604082019050919050565b60006020820190508181036000830152614cac81614c70565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d0f6025836140b4565b9150614d1a82614cb3565b604082019050919050565b60006020820190508181036000830152614d3e81614d02565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614da1602c836140b4565b9150614dac82614d45565b604082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614e33602a836140b4565b9150614e3e82614dd7565b604082019050919050565b60006020820190508181036000830152614e6281614e26565b9050919050565b600081905092915050565b50565b6000614e84600083614e69565b9150614e8f82614e74565b600082019050919050565b6000614ea582614e77565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f0b6026836140b4565b9150614f1682614eaf565b604082019050919050565b60006020820190508181036000830152614f3a81614efe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f9d6024836140b4565b9150614fa882614f41565b604082019050919050565b60006020820190508181036000830152614fcc81614f90565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061502f6022836140b4565b915061503a82614fd3565b604082019050919050565b6000602082019050818103600083015261505e81615022565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150c16025836140b4565b91506150cc82615065565b604082019050919050565b600060208201905081810360008301526150f0816150b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151536023836140b4565b915061515e826150f7565b604082019050919050565b6000602082019050818103600083015261518281615146565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006151bf601d836140b4565b91506151ca82615189565b602082019050919050565b600060208201905081810360008301526151ee816151b2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061522b6016836140b4565b9150615236826151f5565b602082019050919050565b6000602082019050818103600083015261525a8161521e565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006152976016836140b4565b91506152a282615261565b602082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153296028836140b4565b9150615334826152cd565b604082019050919050565b600060208201905081810360008301526153588161531c565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006153956018836140b4565b91506153a08261535f565b602082019050919050565b600060208201905081810360008301526153c481615388565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615427602a836140b4565b9150615432826153cb565b604082019050919050565b600060208201905081810360008301526154568161541a565b9050919050565b6000615468826141c7565b9150615473836141c7565b92508282101561548657615485614683565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006154ed6026836140b4565b91506154f882615491565b604082019050919050565b6000602082019050818103600083015261551c816154e0565b9050919050565b600060408201905061553860008301856143fb565b6155456020830184614249565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506155b98161419b565b92915050565b6000602082840312156155d5576155d4614164565b5b60006155e3848285016155aa565b91505092915050565b6000819050919050565b600061561161560c615607846155ec565b6142a0565b6141c7565b9050919050565b615621816155f6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61565c81614189565b82525050565b600061566e8383615653565b60208301905092915050565b6000602082019050919050565b600061569282615627565b61569c8185615632565b93506156a783615643565b8060005b838110156156d85781516156bf8882615662565b97506156ca8361567a565b9250506001810190506156ab565b5085935050505092915050565b600060a0820190506156fa600083018861431a565b6157076020830187615618565b81810360408301526157198186615687565b905061572860608301856143fb565b615735608083018461431a565b9695505050505050565b600060c08201905061575460008301896143fb565b615761602083018861431a565b61576e6040830187615618565b61577b6060830186615618565b61578860808301856143fb565b61579560a083018461431a565b979650505050505050565b6000806000606084860312156157b9576157b8614164565b5b60006157c786828701614a76565b93505060206157d886828701614a76565b92505060406157e986828701614a76565b915050925092509256fea2646970667358221220b5846ef68d9eff3303e0b1bf46e60524dc0771781f176113094d3af1cd86a8ea64736f6c634300080c0033

Deployed Bytecode Sourcemap

7528:14836:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3160:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8645:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7678:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2567:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8450:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3337:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11483:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2466:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3825:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7728:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7999:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7845:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8153:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19978:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7604:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8263;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8298:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8079:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2683:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:150;;;;;;;;;;;;;:::i;:::-;;12090:115;;;;;;;;;;;;;:::i;:::-;;12430:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8226:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13966:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13205:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7570:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20267:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22020:337;;;;;;;;;;;;;:::i;:::-;;6073:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18946:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4048:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7639:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8867:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8373:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8039:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14610:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7882:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14284:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12705:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12997:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8411:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8119:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11760:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3001:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13727:231;;;;;;;;;;;;;:::i;:::-;;7803:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7920:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8189:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6445:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8490:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8335;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2246:100;2300:13;2333:5;2326:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:100;:::o;3160:169::-;3243:4;3260:39;3269:12;:10;:12::i;:::-;3283:7;3292:6;3260:8;:39::i;:::-;3317:4;3310:11;;3160:169;;;;:::o;8645:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7678:43::-;;;:::o;2567:108::-;2628:7;2655:12;;2648:19;;2567:108;:::o;8450:33::-;;;;:::o;3337:480::-;3477:4;3494:36;3504:6;3512:9;3523:6;3494:9;:36::i;:::-;3543:24;3570:11;:19;3582:6;3570:19;;;;;;;;;;;;;;;:33;3590:12;:10;:12::i;:::-;3570:33;;;;;;;;;;;;;;;;3543:60;;3642:6;3622:16;:26;;3614:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3721:57;3730:6;3738:12;:10;:12::i;:::-;3771:6;3752:16;:25;3721:8;:57::i;:::-;3805:4;3798:11;;;3337:480;;;;;:::o;11483:269::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11602:4:::1;11596;11592:1;11576:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11575:31;;;;:::i;:::-;11565:6;:41;;11557:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11688:6;11678;:17;;;;:::i;:::-;11663:12;:32;;;;11711:33;11731:12;;11711:33;;;;;;:::i;:::-;;;;;;;;11483:269:::0;:::o;2466:93::-;2524:5;2549:2;2542:9;;2466:93;:::o;3825:215::-;3913:4;3930:80;3939:12;:10;:12::i;:::-;3953:7;3999:10;3962:11;:25;3974:12;:10;:12::i;:::-;3962:25;;;;;;;;;;;;;;;:34;3988:7;3962:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3930:8;:80::i;:::-;4028:4;4021:11;;3825:215;;;;:::o;7728:38::-;;;:::o;7999:33::-;;;;;;;;;;;;;:::o;7845:30::-;;;;;;;;;;;;;:::o;8153:29::-;;;;:::o;19978:281::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20098:1:::1;20070:30;;:16;:30;;;;20062:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:16;20152:15;;:43;;;;;;;;;;;;;;;;;;20234:16;20211:40;;;;;;;;;;;;19978:281:::0;:::o;7604:28::-;;;;:::o;8263:::-;;;;:::o;8298:30::-;;;;:::o;8079:31::-;;;;;;;;;;;;;:::o;2683:127::-;2757:7;2784:9;:18;2794:7;2784:18;;;;;;;;;;;;;;;;2777:25;;2683:127;;;:::o;6287:150::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6396:1:::1;6359:40;;6380:6;;;;;;;;;;;6359:40;;;;;;;;;;;;6427:1;6410:6;;:19;;;;;;;;;;;;;;;;;;6287:150::o:0;12090:115::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12161:5:::1;12144:14;;:22;;;;;;;;;;;;;;;;;;12182:15;;;;;;;;;;12090:115::o:0;12430:267::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12526:4:::1;12522:111;;12564:13;12554:23;;:6;:23;;;;12546:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12522:111;12685:4;12643:31;:39;12675:6;12643:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12430:267:::0;;:::o;8226:28::-;;;;:::o;13966:310::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14102:12:::1;14085:14;:29;;;;14143:13;14125:15;:31;;;;14183:11;14167:13;:27;;;;14255:13;;14237:15;;14220:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;14205:12;:63;;;;13966:310:::0;;;:::o;13205:452::-;13280:10;13329:1;13311:20;;:6;:20;;;;13303:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13393:15;;;;;;;;;;;13381:27;;:10;:27;;;13373:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13456:24;13490:6;13483:24;;;13516:4;13483:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13456:66;;13548:6;13541:23;;;13565:3;13570:16;13541:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13533:54;;13603:46;13624:6;13632:16;13603:46;;;;;;;:::i;:::-;;;;;;;;13292:365;13205:452;;;;:::o;7570:27::-;;;;:::o;20267:273::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20384:1:::1;20357:29;;:15;:29;;;;20349:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20462:15;20437:14;;:41;;;;;;;;;;;;;;;;;;20516:15;20494:38;;;;;;;;;;;;20267:273:::0;:::o;22020:337::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22084:13:::1;;;;;;;;;;;22083:14;22075:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;22153:4;22137:13;;:20;;;;;;;;;;;;;;;;;;22182:4;22168:11;;:18;;;;;;;;;;;;;;;;;;22202:29;22217:13;;;;;;;;;;;22202:29;;;;;;:::i;:::-;;;;;;;;22248:13;;;;;;;;;;;:40;;;;;22287:1;22265:18;;:23;22248:40;22244:106;;;22326:12;22305:18;:33;;;;22244:106;22020:337::o:0;6073:79::-;6111:7;6138:6;;;;;;;;;;;6131:13;;6073:79;:::o;2354:104::-;2410:13;2443:7;2436:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2354:104;:::o;18946:246::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19055:13:::1;19047:21;;:4;:21;;;;19039:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19143:41;19172:4;19178:5;19143:28;:41::i;:::-;18946:246:::0;;:::o;4048:401::-;4141:4;4158:24;4185:11;:25;4197:12;:10;:12::i;:::-;4185:25;;;;;;;;;;;;;;;:34;4211:7;4185:34;;;;;;;;;;;;;;;;4158:61;;4258:15;4238:16;:35;;4230:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4343:67;4352:12;:10;:12::i;:::-;4366:7;4394:15;4375:16;:34;4343:8;:67::i;:::-;4437:4;4430:11;;;4048:401;;;;:::o;2818:175::-;2904:4;2921:42;2931:12;:10;:12::i;:::-;2945:9;2956:6;2921:9;:42::i;:::-;2981:4;2974:11;;2818:175;;;;:::o;7639:30::-;;;;:::o;8867:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;8373:29::-;;;;:::o;8039:33::-;;;;;;;;;;;;;:::o;14610:182::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14726:8:::1;14695:19;:28;14715:7;14695:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14766:7;14750:34;;;14775:8;14750:34;;;;;;:::i;:::-;;;;;;;;14610:182:::0;;:::o;7882:29::-;;;;;;;;;;;;;:::o;14284:318::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:12:::1;14404:15;:30;;;;14464:13;14445:16;:32;;;;14505:11;14488:14;:28;;;;14580:14;;14561:16;;14543:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14527:13;:67;;;;14284:318:::0;;;:::o;12705:284::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12827:4:::1;12821;12817:1;12801:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12800:31;;;;:::i;:::-;12790:6;:41;;12782:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12919:6;12909;:17;;;;:::i;:::-;12891:15;:35;;;;12942:39;12965:15;;12942:39;;;;;;:::i;:::-;;;;;;;;12705:284:::0;:::o;12997:198::-;13084:15;;;;;;;;;;;13072:27;;:10;:27;;;13064:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13180:6;13168:9;:19;;;;:::i;:::-;13147:18;:40;;;;12997:198;:::o;8411:32::-;;;;:::o;8119:27::-;;;;:::o;11760:274::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11880:4:::1;11874;11870:1;11854:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11853:31;;;;:::i;:::-;11843:6;:41;;11835:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11968:6;11958;:17;;;;:::i;:::-;11942:13;:33;;;;11991:35;12012:13;;11991:35;;;;;;:::i;:::-;;;;;;;;11760:274:::0;:::o;3001:151::-;3090:7;3117:11;:18;3129:5;3117:18;;;;;;;;;;;;;;;:27;3136:7;3117:27;;;;;;;;;;;;;;;;3110:34;;3001:151;;;;:::o;13727:231::-;13773:12;13816:15;;;;;;;;;;;13804:27;;:10;:27;;;13796:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13900:10;13892:24;;13924:21;13892:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13879:71;;;;;13762:196;13727:231::o;7803:33::-;;;;:::o;7920:37::-;;;;:::o;8189:30::-;;;;:::o;6445:244::-;6210:12;:10;:12::i;:::-;6200:22;;:6;;;;;;;;;;;:22;;;6192:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6554:1:::1;6534:22;;:8;:22;;;;6526:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6644:8;6615:38;;6636:6;;;;;;;;;;;6615:38;;;;;;;;;;;;6673:8;6664:6;;:17;;;;;;;;;;;;;;;;;;6445:244:::0;:::o;8490:31::-;;;;:::o;8335:::-;;;;:::o;685:98::-;738:7;765:10;758:17;;685:98;:::o;5366:380::-;5519:1;5502:19;;:5;:19;;;;5494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5600:1;5581:21;;:7;:21;;;;5573:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5684:6;5654:11;:18;5666:5;5654:18;;;;;;;;;;;;;;;:27;5673:7;5654:27;;;;;;;;;;;;;;;:36;;;;5722:7;5706:32;;5715:5;5706:32;;;5731:6;5706:32;;;;;;:::i;:::-;;;;;;;;5366:380;;;:::o;14802:3537::-;14918:1;14902:18;;:4;:18;;;;14894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14995:1;14981:16;;:2;:16;;;;14973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15065:1;15056:6;:10;15048:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15118:14;;;;;;;;;;;15115:1224;;;15160:7;:5;:7::i;:::-;15152:15;;:4;:15;;;;:32;;;;;15177:7;:5;:7::i;:::-;15171:13;;:2;:13;;;;15152:32;:52;;;;;15202:1;15188:16;;:2;:16;;;;15152:52;:77;;;;;15222:6;15208:21;;:2;:21;;;;15152:77;15148:1180;;;15253:13;;;;;;;;;;;15249:245;;15298:31;:37;15330:4;15298:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15339:31;:35;15371:2;15339:35;;;;;;;;;;;;;;;;;;;;;;;;;15298:76;15290:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15440:7;:5;:7::i;:::-;15432:15;;:4;:15;;;15424:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15249:245;15544:25;:31;15570:4;15544:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15580:31;:35;15612:2;15580:35;;;;;;;;;;;;;;;;;;;;;;;;;15579:36;15544:71;15540:773;;;15658:12;;15648:6;:22;;15640:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15772:15;;15755:13;15765:2;15755:9;:13::i;:::-;15746:6;:22;;;;:::i;:::-;:41;;15738:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15540:773;;;15892:25;:29;15918:2;15892:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15926:31;:37;15958:4;15926:37;;;;;;;;;;;;;;;;;;;;;;;;;15925:38;15892:71;15888:425;;;16006:13;;15996:6;:23;;15988:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15888:425;;;16114:31;:35;16146:2;16114:35;;;;;;;;;;;;;;;;;;;;;;;;;16113:36;:78;;;;;16154:31;:37;16186:4;16154:37;;;;;;;;;;;;;;;;;;;;;;;;;16153:38;16113:78;16109:204;;;16249:15;;16232:13;16242:2;16232:9;:13::i;:::-;16223:6;:22;;;;:::i;:::-;:41;;16215:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16109:204;15888:425;15540:773;15148:1180;15115:1224;16351:28;16382:24;16400:4;16382:9;:24::i;:::-;16351:55;;16419:12;16458:18;;16434:20;:42;;16419:57;;16492:7;:22;;;;;16503:11;;;;;;;;;;;16492:22;:35;;;;;16519:8;;;;;;;;;;;16518:9;16492:35;:71;;;;;16532:25;:31;16558:4;16532:31;;;;;;;;;;;;;;;;;;;;;;;;;16531:32;16492:71;:101;;;;;16568:19;:25;16588:4;16568:25;;;;;;;;;;;;;;;;;;;;;;;;;16567:26;16492:101;:129;;;;;16598:19;:23;16618:2;16598:23;;;;;;;;;;;;;;;;;;;;;;;;;16597:24;16492:129;16489:236;;;16649:4;16638:8;;:15;;;;;;;;;;;;;;;;;;16670:10;:8;:10::i;:::-;16708:5;16697:8;;:16;;;;;;;;;;;;;;;;;;16489:236;16737:12;16752:4;16737:19;;16855;:25;16875:4;16855:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16884:19;:23;16904:2;16884:23;;;;;;;;;;;;;;;;;;;;;;;;;16855:52;16852:99;;;16934:5;16924:15;;16852:99;16963:12;16990:21;17093:7;17090:1196;;;17145:1;17126:18;;:20;:63;;;;;17177:12;17172:1;17151:18;;:22;;;;:::i;:::-;17150:39;17126:63;17123:1002;;;17239:3;17234:2;17225:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;17209:33;;17261:52;17277:4;17283:14;;;;;;;;;;;17299:13;17261:15;:52::i;:::-;17123:1002;;;17376:25;:29;17402:2;17376:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17425:1;17409:13;;:17;17376:50;17372:753;;;17477:3;17462:13;;17453:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17446:34;;17547:13;;17528:16;;17521:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17499:18;;:61;;;;;;;:::i;:::-;;;;;;;;17625:13;;17607:15;;17600:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17579:17;;:59;;;;;;;:::i;:::-;;;;;;;;17701:13;;17684:14;;17677:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17657:16;;:57;;;;;;;:::i;:::-;;;;;;;;17372:753;;;17775:25;:31;17801:4;17775:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17825:1;17810:12;;:16;17775:51;17772:353;;;17878:3;17863:12;;17854:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17847:34;;17947:12;;17929:15;;17922:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17900:18;;:59;;;;;;;:::i;:::-;;;;;;;;18023:12;;18006:14;;17999:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17978:17;;:57;;;;;;;:::i;:::-;;;;;;;;18097:12;;18081:13;;18074:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;18054:16;;:55;;;;;;;:::i;:::-;;;;;;;;17772:353;17372:753;17123:1002;18151:1;18144:4;:8;18141:89;;;18172:42;18188:4;18202;18209;18172:15;:42::i;:::-;18141:89;18261:13;18254:4;:20;;;;:::i;:::-;18244:30;;;;;:::i;:::-;;;17090:1196;18298:33;18314:4;18320:2;18324:6;18298:15;:33::i;:::-;14881:3458;;;;;14802:3537;;;:::o;19200:240::-;19317:5;19283:25;:31;19309:4;19283:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19335;19362:4;19368:5;19335:26;:39::i;:::-;19426:5;19392:40;;19420:4;19392:40;;;;;;;;;;;;19200:240;;:::o;20551:1413::-;20590:23;20616:24;20634:4;20616:9;:24::i;:::-;20590:50;;20651:25;20720:16;;20700:17;;20679:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;20651:85;;20771:1;20752:15;:20;:46;;;;20797:1;20776:17;:22;20752:46;20749:60;;;20801:7;;;;20749:60;20863:1;20842:18;;:22;;;;:::i;:::-;20824:15;:40;20821:111;;;20919:1;20898:18;;:22;;;;:::i;:::-;20880:40;;20821:111;20944:12;21018:23;21103:1;21083:17;21062:18;;21044:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21018:86;;21117:51;21152:15;21134;:33;;;;:::i;:::-;21117:16;:51::i;:::-;21181:18;21202:21;21181:42;;21234:23;21260:10;21234:36;;21283:22;21382:1;21363:18;;:20;;;;:::i;:::-;21342:17;:42;;;;:::i;:::-;21321:17;;21308:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;21283:102;;21396:21;21493:1;21474:18;;:20;;;;:::i;:::-;21453:17;:42;;;;:::i;:::-;21433:16;;21420:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;21396:100;;21545:13;21528:14;:30;;;;:::i;:::-;21509:49;;;;;:::i;:::-;;;21592:1;21571:18;:22;;;;21624:1;21604:17;:21;;;;21655:1;21636:16;:20;;;;21690:1;21672:15;:19;:42;;;;;21713:1;21695:15;:19;21672:42;21669:119;;;21730:46;21743:15;21760;21730:12;:46::i;:::-;21669:119;21821:14;;;;;;;;;;;21813:28;;21849:13;21813:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21800:67;;;;;21901:15;;;;;;;;;;;21893:29;;21930:21;21893:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21880:76;;;;;20579:1385;;;;;;;;20551:1413;:::o;4457:602::-;4615:1;4597:20;;:6;:20;;;;4589:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4699:1;4678:23;;:9;:23;;;;4670:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4754:21;4778:9;:17;4788:6;4778:17;;;;;;;;;;;;;;;;4754:41;;4831:6;4814:13;:23;;4806:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4944:6;4928:13;:22;4908:9;:17;4918:6;4908:17;;;;;;;;;;;;;;;:42;;;;4992:6;4968:9;:20;4978:9;4968:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5033:9;5016:35;;5025:6;5016:35;;;5044:6;5016:35;;;;;;:::i;:::-;;;;;;;;4578:481;4457:602;;;:::o;12215:207::-;12345:10;12303:31;:39;12335:6;12303:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12371:43;12395:6;12403:10;12371:43;;;;;;;:::i;:::-;;;;;;;;12215:207;;:::o;18347:591::-;18475:21;18513:1;18499:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18475:40;;18544:4;18526;18531:1;18526:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18570:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18560:4;18565:1;18560:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18605:62;18622:4;18637:15;18655:11;18605:8;:62::i;:::-;18706:15;:66;;;18787:11;18813:1;18857:4;18884;18904:15;18706:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18402:536;18347:591;:::o;19448:522::-;19596:62;19613:4;19628:15;19646:11;19596:8;:62::i;:::-;19701:15;:31;;;19740:9;19773:4;19793:11;19819:1;19862;19913:7;:5;:7::i;:::-;19936:15;19701:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19448:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7336:117;7492:2;7518:50;7560:7;7551:6;7540:9;7536:22;7518:50;:::i;:::-;7508:60;;7463:115;7117:468;;;;;:::o;7591:619::-;7668:6;7676;7684;7733:2;7721:9;7712:7;7708:23;7704:32;7701:119;;;7739:79;;:::i;:::-;7701:119;7859:1;7884:53;7929:7;7920:6;7909:9;7905:22;7884:53;:::i;:::-;7874:63;;7830:117;7986:2;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7957:118;8114:2;8140:53;8185:7;8176:6;8165:9;8161:22;8140:53;:::i;:::-;8130:63;;8085:118;7591:619;;;;;:::o;8216:474::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:53;8537:7;8528:6;8517:9;8513:22;8492:53;:::i;:::-;8482:63;;8438:117;8594:2;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8565:118;8216:474;;;;;:::o;8696:180::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8882:320;8926:6;8963:1;8957:4;8953:12;8943:22;;9010:1;9004:4;9000:12;9031:18;9021:81;;9087:4;9079:6;9075:17;9065:27;;9021:81;9149:2;9141:6;9138:14;9118:18;9115:38;9112:84;;;9168:18;;:::i;:::-;9112:84;8933:269;8882:320;;;:::o;9208:227::-;9348:34;9344:1;9336:6;9332:14;9325:58;9417:10;9412:2;9404:6;9400:15;9393:35;9208:227;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:182::-;10378:34;10374:1;10366:6;10362:14;10355:58;10238:182;:::o;10426:366::-;10568:3;10589:67;10653:2;10648:3;10589:67;:::i;:::-;10582:74;;10665:93;10754:3;10665:93;:::i;:::-;10783:2;10778:3;10774:12;10767:19;;10426:366;;;:::o;10798:419::-;10964:4;11002:2;10991:9;10987:18;10979:26;;11051:9;11045:4;11041:20;11037:1;11026:9;11022:17;11015:47;11079:131;11205:4;11079:131;:::i;:::-;11071:139;;10798:419;;;:::o;11223:180::-;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:348;11449:7;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11506:20;11524:1;11506:20;:::i;:::-;11501:25;;11694:1;11626:66;11622:74;11619:1;11616:81;11611:1;11604:9;11597:17;11593:105;11590:131;;;11701:18;;:::i;:::-;11590:131;11749:1;11746;11742:9;11731:20;;11409:348;;;;:::o;11763:180::-;11811:77;11808:1;11801:88;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11949:185;11989:1;12006:20;12024:1;12006:20;:::i;:::-;12001:25;;12040:20;12058:1;12040:20;:::i;:::-;12035:25;;12079:1;12069:35;;12084:18;;:::i;:::-;12069:35;12126:1;12123;12119:9;12114:14;;11949:185;;;;:::o;12140:228::-;12280:34;12276:1;12268:6;12264:14;12257:58;12349:11;12344:2;12336:6;12332:15;12325:36;12140:228;:::o;12374:366::-;12516:3;12537:67;12601:2;12596:3;12537:67;:::i;:::-;12530:74;;12613:93;12702:3;12613:93;:::i;:::-;12731:2;12726:3;12722:12;12715:19;;12374:366;;;:::o;12746:419::-;12912:4;12950:2;12939:9;12935:18;12927:26;;12999:9;12993:4;12989:20;12985:1;12974:9;12970:17;12963:47;13027:131;13153:4;13027:131;:::i;:::-;13019:139;;12746:419;;;:::o;13171:305::-;13211:3;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13418:1;13350:66;13346:74;13343:1;13340:81;13337:107;;;13424:18;;:::i;:::-;13337:107;13468:1;13465;13461:9;13454:16;;13171:305;;;;:::o;13482:223::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:6;13686:2;13678:6;13674:15;13667:31;13482:223;:::o;13711:366::-;13853:3;13874:67;13938:2;13933:3;13874:67;:::i;:::-;13867:74;;13950:93;14039:3;13950:93;:::i;:::-;14068:2;14063:3;14059:12;14052:19;;13711:366;;;:::o;14083:419::-;14249:4;14287:2;14276:9;14272:18;14264:26;;14336:9;14330:4;14326:20;14322:1;14311:9;14307:17;14300:47;14364:131;14490:4;14364:131;:::i;:::-;14356:139;;14083:419;;;:::o;14508:226::-;14648:34;14644:1;14636:6;14632:14;14625:58;14717:9;14712:2;14704:6;14700:15;14693:34;14508:226;:::o;14740:366::-;14882:3;14903:67;14967:2;14962:3;14903:67;:::i;:::-;14896:74;;14979:93;15068:3;14979:93;:::i;:::-;15097:2;15092:3;15088:12;15081:19;;14740:366;;;:::o;15112:419::-;15278:4;15316:2;15305:9;15301:18;15293:26;;15365:9;15359:4;15355:20;15351:1;15340:9;15336:17;15329:47;15393:131;15519:4;15393:131;:::i;:::-;15385:139;;15112:419;;;:::o;15537:176::-;15677:28;15673:1;15665:6;15661:14;15654:52;15537:176;:::o;15719:366::-;15861:3;15882:67;15946:2;15941:3;15882:67;:::i;:::-;15875:74;;15958:93;16047:3;15958:93;:::i;:::-;16076:2;16071:3;16067:12;16060:19;;15719:366;;;:::o;16091:419::-;16257:4;16295:2;16284:9;16280:18;16272:26;;16344:9;16338:4;16334:20;16330:1;16319:9;16315:17;16308:47;16372:131;16498:4;16372:131;:::i;:::-;16364:139;;16091:419;;;:::o;16516:220::-;16656:34;16652:1;16644:6;16640:14;16633:58;16725:3;16720:2;16712:6;16708:15;16701:28;16516:220;:::o;16742:366::-;16884:3;16905:67;16969:2;16964:3;16905:67;:::i;:::-;16898:74;;16981:93;17070:3;16981:93;:::i;:::-;17099:2;17094:3;17090:12;17083:19;;16742:366;;;:::o;17114:419::-;17280:4;17318:2;17307:9;17303:18;17295:26;;17367:9;17361:4;17357:20;17353:1;17342:9;17338:17;17331:47;17395:131;17521:4;17395:131;:::i;:::-;17387:139;;17114:419;;;:::o;17539:143::-;17596:5;17627:6;17621:13;17612:22;;17643:33;17670:5;17643:33;:::i;:::-;17539:143;;;;:::o;17688:351::-;17758:6;17807:2;17795:9;17786:7;17782:23;17778:32;17775:119;;;17813:79;;:::i;:::-;17775:119;17933:1;17958:64;18014:7;18005:6;17994:9;17990:22;17958:64;:::i;:::-;17948:74;;17904:128;17688:351;;;;:::o;18045:332::-;18166:4;18204:2;18193:9;18189:18;18181:26;;18217:71;18285:1;18274:9;18270:17;18261:6;18217:71;:::i;:::-;18298:72;18366:2;18355:9;18351:18;18342:6;18298:72;:::i;:::-;18045:332;;;;;:::o;18383:137::-;18437:5;18468:6;18462:13;18453:22;;18484:30;18508:5;18484:30;:::i;:::-;18383:137;;;;:::o;18526:345::-;18593:6;18642:2;18630:9;18621:7;18617:23;18613:32;18610:119;;;18648:79;;:::i;:::-;18610:119;18768:1;18793:61;18846:7;18837:6;18826:9;18822:22;18793:61;:::i;:::-;18783:71;;18739:125;18526:345;;;;:::o;18877:222::-;19017:34;19013:1;19005:6;19001:14;18994:58;19086:5;19081:2;19073:6;19069:15;19062:30;18877:222;:::o;19105:366::-;19247:3;19268:67;19332:2;19327:3;19268:67;:::i;:::-;19261:74;;19344:93;19433:3;19344:93;:::i;:::-;19462:2;19457:3;19453:12;19446:19;;19105:366;;;:::o;19477:419::-;19643:4;19681:2;19670:9;19666:18;19658:26;;19730:9;19724:4;19720:20;19716:1;19705:9;19701:17;19694:47;19758:131;19884:4;19758:131;:::i;:::-;19750:139;;19477:419;;;:::o;19902:174::-;20042:26;20038:1;20030:6;20026:14;20019:50;19902:174;:::o;20082:366::-;20224:3;20245:67;20309:2;20304:3;20245:67;:::i;:::-;20238:74;;20321:93;20410:3;20321:93;:::i;:::-;20439:2;20434:3;20430:12;20423:19;;20082:366;;;:::o;20454:419::-;20620:4;20658:2;20647:9;20643:18;20635:26;;20707:9;20701:4;20697:20;20693:1;20682:9;20678:17;20671:47;20735:131;20861:4;20735:131;:::i;:::-;20727:139;;20454:419;;;:::o;20879:244::-;21019:34;21015:1;21007:6;21003:14;20996:58;21088:27;21083:2;21075:6;21071:15;21064:52;20879:244;:::o;21129:366::-;21271:3;21292:67;21356:2;21351:3;21292:67;:::i;:::-;21285:74;;21368:93;21457:3;21368:93;:::i;:::-;21486:2;21481:3;21477:12;21470:19;;21129:366;;;:::o;21501:419::-;21667:4;21705:2;21694:9;21690:18;21682:26;;21754:9;21748:4;21744:20;21740:1;21729:9;21725:17;21718:47;21782:131;21908:4;21782:131;:::i;:::-;21774:139;;21501:419;;;:::o;21926:224::-;22066:34;22062:1;22054:6;22050:14;22043:58;22135:7;22130:2;22122:6;22118:15;22111:32;21926:224;:::o;22156:366::-;22298:3;22319:67;22383:2;22378:3;22319:67;:::i;:::-;22312:74;;22395:93;22484:3;22395:93;:::i;:::-;22513:2;22508:3;22504:12;22497:19;;22156:366;;;:::o;22528:419::-;22694:4;22732:2;22721:9;22717:18;22709:26;;22781:9;22775:4;22771:20;22767:1;22756:9;22752:17;22745:47;22809:131;22935:4;22809:131;:::i;:::-;22801:139;;22528:419;;;:::o;22953:231::-;23093:34;23089:1;23081:6;23077:14;23070:58;23162:14;23157:2;23149:6;23145:15;23138:39;22953:231;:::o;23190:366::-;23332:3;23353:67;23417:2;23412:3;23353:67;:::i;:::-;23346:74;;23429:93;23518:3;23429:93;:::i;:::-;23547:2;23542:3;23538:12;23531:19;;23190:366;;;:::o;23562:419::-;23728:4;23766:2;23755:9;23751:18;23743:26;;23815:9;23809:4;23805:20;23801:1;23790:9;23786:17;23779:47;23843:131;23969:4;23843:131;:::i;:::-;23835:139;;23562:419;;;:::o;23987:229::-;24127:34;24123:1;24115:6;24111:14;24104:58;24196:12;24191:2;24183:6;24179:15;24172:37;23987:229;:::o;24222:366::-;24364:3;24385:67;24449:2;24444:3;24385:67;:::i;:::-;24378:74;;24461:93;24550:3;24461:93;:::i;:::-;24579:2;24574:3;24570:12;24563:19;;24222:366;;;:::o;24594:419::-;24760:4;24798:2;24787:9;24783:18;24775:26;;24847:9;24841:4;24837:20;24833:1;24822:9;24818:17;24811:47;24875:131;25001:4;24875:131;:::i;:::-;24867:139;;24594:419;;;:::o;25019:147::-;25120:11;25157:3;25142:18;;25019:147;;;;:::o;25172:114::-;;:::o;25292:398::-;25451:3;25472:83;25553:1;25548:3;25472:83;:::i;:::-;25465:90;;25564:93;25653:3;25564:93;:::i;:::-;25682:1;25677:3;25673:11;25666:18;;25292:398;;;:::o;25696:379::-;25880:3;25902:147;26045:3;25902:147;:::i;:::-;25895:154;;26066:3;26059:10;;25696:379;;;:::o;26081:225::-;26221:34;26217:1;26209:6;26205:14;26198:58;26290:8;26285:2;26277:6;26273:15;26266:33;26081:225;:::o;26312:366::-;26454:3;26475:67;26539:2;26534:3;26475:67;:::i;:::-;26468:74;;26551:93;26640:3;26551:93;:::i;:::-;26669:2;26664:3;26660:12;26653:19;;26312:366;;;:::o;26684:419::-;26850:4;26888:2;26877:9;26873:18;26865:26;;26937:9;26931:4;26927:20;26923:1;26912:9;26908:17;26901:47;26965:131;27091:4;26965:131;:::i;:::-;26957:139;;26684:419;;;:::o;27109:223::-;27249:34;27245:1;27237:6;27233:14;27226:58;27318:6;27313:2;27305:6;27301:15;27294:31;27109:223;:::o;27338:366::-;27480:3;27501:67;27565:2;27560:3;27501:67;:::i;:::-;27494:74;;27577:93;27666:3;27577:93;:::i;:::-;27695:2;27690:3;27686:12;27679:19;;27338:366;;;:::o;27710:419::-;27876:4;27914:2;27903:9;27899:18;27891:26;;27963:9;27957:4;27953:20;27949:1;27938:9;27934:17;27927:47;27991:131;28117:4;27991:131;:::i;:::-;27983:139;;27710:419;;;:::o;28135:221::-;28275:34;28271:1;28263:6;28259:14;28252:58;28344:4;28339:2;28331:6;28327:15;28320:29;28135:221;:::o;28362:366::-;28504:3;28525:67;28589:2;28584:3;28525:67;:::i;:::-;28518:74;;28601:93;28690:3;28601:93;:::i;:::-;28719:2;28714:3;28710:12;28703:19;;28362:366;;;:::o;28734:419::-;28900:4;28938:2;28927:9;28923:18;28915:26;;28987:9;28981:4;28977:20;28973:1;28962:9;28958:17;28951:47;29015:131;29141:4;29015:131;:::i;:::-;29007:139;;28734:419;;;:::o;29159:224::-;29299:34;29295:1;29287:6;29283:14;29276:58;29368:7;29363:2;29355:6;29351:15;29344:32;29159:224;:::o;29389:366::-;29531:3;29552:67;29616:2;29611:3;29552:67;:::i;:::-;29545:74;;29628:93;29717:3;29628:93;:::i;:::-;29746:2;29741:3;29737:12;29730:19;;29389:366;;;:::o;29761:419::-;29927:4;29965:2;29954:9;29950:18;29942:26;;30014:9;30008:4;30004:20;30000:1;29989:9;29985:17;29978:47;30042:131;30168:4;30042:131;:::i;:::-;30034:139;;29761:419;;;:::o;30186:222::-;30326:34;30322:1;30314:6;30310:14;30303:58;30395:5;30390:2;30382:6;30378:15;30371:30;30186:222;:::o;30414:366::-;30556:3;30577:67;30641:2;30636:3;30577:67;:::i;:::-;30570:74;;30653:93;30742:3;30653:93;:::i;:::-;30771:2;30766:3;30762:12;30755:19;;30414:366;;;:::o;30786:419::-;30952:4;30990:2;30979:9;30975:18;30967:26;;31039:9;31033:4;31029:20;31025:1;31014:9;31010:17;31003:47;31067:131;31193:4;31067:131;:::i;:::-;31059:139;;30786:419;;;:::o;31211:179::-;31351:31;31347:1;31339:6;31335:14;31328:55;31211:179;:::o;31396:366::-;31538:3;31559:67;31623:2;31618:3;31559:67;:::i;:::-;31552:74;;31635:93;31724:3;31635:93;:::i;:::-;31753:2;31748:3;31744:12;31737:19;;31396:366;;;:::o;31768:419::-;31934:4;31972:2;31961:9;31957:18;31949:26;;32021:9;32015:4;32011:20;32007:1;31996:9;31992:17;31985:47;32049:131;32175:4;32049:131;:::i;:::-;32041:139;;31768:419;;;:::o;32193:172::-;32333:24;32329:1;32321:6;32317:14;32310:48;32193:172;:::o;32371:366::-;32513:3;32534:67;32598:2;32593:3;32534:67;:::i;:::-;32527:74;;32610:93;32699:3;32610:93;:::i;:::-;32728:2;32723:3;32719:12;32712:19;;32371:366;;;:::o;32743:419::-;32909:4;32947:2;32936:9;32932:18;32924:26;;32996:9;32990:4;32986:20;32982:1;32971:9;32967:17;32960:47;33024:131;33150:4;33024:131;:::i;:::-;33016:139;;32743:419;;;:::o;33168:172::-;33308:24;33304:1;33296:6;33292:14;33285:48;33168:172;:::o;33346:366::-;33488:3;33509:67;33573:2;33568:3;33509:67;:::i;:::-;33502:74;;33585:93;33674:3;33585:93;:::i;:::-;33703:2;33698:3;33694:12;33687:19;;33346:366;;;:::o;33718:419::-;33884:4;33922:2;33911:9;33907:18;33899:26;;33971:9;33965:4;33961:20;33957:1;33946:9;33942:17;33935:47;33999:131;34125:4;33999:131;:::i;:::-;33991:139;;33718:419;;;:::o;34143:227::-;34283:34;34279:1;34271:6;34267:14;34260:58;34352:10;34347:2;34339:6;34335:15;34328:35;34143:227;:::o;34376:366::-;34518:3;34539:67;34603:2;34598:3;34539:67;:::i;:::-;34532:74;;34615:93;34704:3;34615:93;:::i;:::-;34733:2;34728:3;34724:12;34717:19;;34376:366;;;:::o;34748:419::-;34914:4;34952:2;34941:9;34937:18;34929:26;;35001:9;34995:4;34991:20;34987:1;34976:9;34972:17;34965:47;35029:131;35155:4;35029:131;:::i;:::-;35021:139;;34748:419;;;:::o;35173:174::-;35313:26;35309:1;35301:6;35297:14;35290:50;35173:174;:::o;35353:366::-;35495:3;35516:67;35580:2;35575:3;35516:67;:::i;:::-;35509:74;;35592:93;35681:3;35592:93;:::i;:::-;35710:2;35705:3;35701:12;35694:19;;35353:366;;;:::o;35725:419::-;35891:4;35929:2;35918:9;35914:18;35906:26;;35978:9;35972:4;35968:20;35964:1;35953:9;35949:17;35942:47;36006:131;36132:4;36006:131;:::i;:::-;35998:139;;35725:419;;;:::o;36150:229::-;36290:34;36286:1;36278:6;36274:14;36267:58;36359:12;36354:2;36346:6;36342:15;36335:37;36150:229;:::o;36385:366::-;36527:3;36548:67;36612:2;36607:3;36548:67;:::i;:::-;36541:74;;36624:93;36713:3;36624:93;:::i;:::-;36742:2;36737:3;36733:12;36726:19;;36385:366;;;:::o;36757:419::-;36923:4;36961:2;36950:9;36946:18;36938:26;;37010:9;37004:4;37000:20;36996:1;36985:9;36981:17;36974:47;37038:131;37164:4;37038:131;:::i;:::-;37030:139;;36757:419;;;:::o;37182:191::-;37222:4;37242:20;37260:1;37242:20;:::i;:::-;37237:25;;37276:20;37294:1;37276:20;:::i;:::-;37271:25;;37315:1;37312;37309:8;37306:34;;;37320:18;;:::i;:::-;37306:34;37365:1;37362;37358:9;37350:17;;37182:191;;;;:::o;37379:225::-;37519:34;37515:1;37507:6;37503:14;37496:58;37588:8;37583:2;37575:6;37571:15;37564:33;37379:225;:::o;37610:366::-;37752:3;37773:67;37837:2;37832:3;37773:67;:::i;:::-;37766:74;;37849:93;37938:3;37849:93;:::i;:::-;37967:2;37962:3;37958:12;37951:19;;37610:366;;;:::o;37982:419::-;38148:4;38186:2;38175:9;38171:18;38163:26;;38235:9;38229:4;38225:20;38221:1;38210:9;38206:17;38199:47;38263:131;38389:4;38263:131;:::i;:::-;38255:139;;37982:419;;;:::o;38407:320::-;38522:4;38560:2;38549:9;38545:18;38537:26;;38573:71;38641:1;38630:9;38626:17;38617:6;38573:71;:::i;:::-;38654:66;38716:2;38705:9;38701:18;38692:6;38654:66;:::i;:::-;38407:320;;;;;:::o;38733:180::-;38781:77;38778:1;38771:88;38878:4;38875:1;38868:15;38902:4;38899:1;38892:15;38919:180;38967:77;38964:1;38957:88;39064:4;39061:1;39054:15;39088:4;39085:1;39078:15;39105:143;39162:5;39193:6;39187:13;39178:22;;39209:33;39236:5;39209:33;:::i;:::-;39105:143;;;;:::o;39254:351::-;39324:6;39373:2;39361:9;39352:7;39348:23;39344:32;39341:119;;;39379:79;;:::i;:::-;39341:119;39499:1;39524:64;39580:7;39571:6;39560:9;39556:22;39524:64;:::i;:::-;39514:74;;39470:128;39254:351;;;;:::o;39611:85::-;39656:7;39685:5;39674:16;;39611:85;;;:::o;39702:158::-;39760:9;39793:61;39811:42;39820:32;39846:5;39820:32;:::i;:::-;39811:42;:::i;:::-;39793:61;:::i;:::-;39780:74;;39702:158;;;:::o;39866:147::-;39961:45;40000:5;39961:45;:::i;:::-;39956:3;39949:58;39866:147;;:::o;40019:114::-;40086:6;40120:5;40114:12;40104:22;;40019:114;;;:::o;40139:184::-;40238:11;40272:6;40267:3;40260:19;40312:4;40307:3;40303:14;40288:29;;40139:184;;;;:::o;40329:132::-;40396:4;40419:3;40411:11;;40449:4;40444:3;40440:14;40432:22;;40329:132;;;:::o;40467:108::-;40544:24;40562:5;40544:24;:::i;:::-;40539:3;40532:37;40467:108;;:::o;40581:179::-;40650:10;40671:46;40713:3;40705:6;40671:46;:::i;:::-;40749:4;40744:3;40740:14;40726:28;;40581:179;;;;:::o;40766:113::-;40836:4;40868;40863:3;40859:14;40851:22;;40766:113;;;:::o;40915:732::-;41034:3;41063:54;41111:5;41063:54;:::i;:::-;41133:86;41212:6;41207:3;41133:86;:::i;:::-;41126:93;;41243:56;41293:5;41243:56;:::i;:::-;41322:7;41353:1;41338:284;41363:6;41360:1;41357:13;41338:284;;;41439:6;41433:13;41466:63;41525:3;41510:13;41466:63;:::i;:::-;41459:70;;41552:60;41605:6;41552:60;:::i;:::-;41542:70;;41398:224;41385:1;41382;41378:9;41373:14;;41338:284;;;41342:14;41638:3;41631:10;;41039:608;;;40915:732;;;;:::o;41653:831::-;41916:4;41954:3;41943:9;41939:19;41931:27;;41968:71;42036:1;42025:9;42021:17;42012:6;41968:71;:::i;:::-;42049:80;42125:2;42114:9;42110:18;42101:6;42049:80;:::i;:::-;42176:9;42170:4;42166:20;42161:2;42150:9;42146:18;42139:48;42204:108;42307:4;42298:6;42204:108;:::i;:::-;42196:116;;42322:72;42390:2;42379:9;42375:18;42366:6;42322:72;:::i;:::-;42404:73;42472:3;42461:9;42457:19;42448:6;42404:73;:::i;:::-;41653:831;;;;;;;;:::o;42490:807::-;42739:4;42777:3;42766:9;42762:19;42754:27;;42791:71;42859:1;42848:9;42844:17;42835:6;42791:71;:::i;:::-;42872:72;42940:2;42929:9;42925:18;42916:6;42872:72;:::i;:::-;42954:80;43030:2;43019:9;43015:18;43006:6;42954:80;:::i;:::-;43044;43120:2;43109:9;43105:18;43096:6;43044:80;:::i;:::-;43134:73;43202:3;43191:9;43187:19;43178:6;43134:73;:::i;:::-;43217;43285:3;43274:9;43270:19;43261:6;43217:73;:::i;:::-;42490:807;;;;;;;;;:::o;43303:663::-;43391:6;43399;43407;43456:2;43444:9;43435:7;43431:23;43427:32;43424:119;;;43462:79;;:::i;:::-;43424:119;43582:1;43607:64;43663:7;43654:6;43643:9;43639:22;43607:64;:::i;:::-;43597:74;;43553:128;43720:2;43746:64;43802:7;43793:6;43782:9;43778:22;43746:64;:::i;:::-;43736:74;;43691:129;43859:2;43885:64;43941:7;43932:6;43921:9;43917:22;43885:64;:::i;:::-;43875:74;;43830:129;43303:663;;;;;:::o

Swarm Source

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