ETH Price: $3,441.56 (-0.23%)
Gas: 6 Gwei

Token

0xB (0xBet)
 

Overview

Max Total Supply

100,000,000 0xBet

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
64,665.769849058571371233 0xBet

Value
$0.00
0x9fc6b9bd6f643388673ac5e9d82380000c9a639a
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:
zeroxbet

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-22
*/

// Website  : https://0xbet.win/
// Twitter  : https://twitter.com/ZeroxBet
// Telegram : https://t.me/ZeroxBetLabs
// Docs     : https://docs.0xbet.win/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        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 zeroxbet 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
    uint256 public deadBlocks = 1;

    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, uint256 deadBlocks);
    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("0xB", "0xBet") {

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

        maxBuyAmount = totalSupply *  2 / 1000; // 0.2%
        maxSellAmount = totalSupply *  2 / 1000; // 0.2%
        maxWalletAmount = totalSupply * 10 / 1000; // 1%
        swapTokensAtAmount = totalSupply * 1000 / 100000; // 1%

        buyTreasuryFee = 25;
        buyLiquidityFee = 0;
        buyRewardsFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

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

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

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

        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 withdrawStuckETH() 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;
        require(buyTotalFees <= 30, "Fees must be 30%  or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 30, "Fees must be 30%  or less");
    }

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


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

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


        if(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 && tradingActiveBlock>0 && (block.number>tradingActiveBlock)){          
            // on sell
            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(bool _status, uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive, _deadBlocks);

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


}

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"},{"indexed":false,"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"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":"deadBlocks","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":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055503480156200006c57600080fd5b506040518060400160405280600381526020017f30784200000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f30784265740000000000000000000000000000000000000000000000000000008152508160039081620000ea919062000e9f565b508060049081620000fc919062000e9f565b5050506000620001116200066360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001e18160016200066b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000287919062000ff0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000315919062000ff0565b6040518363ffffffff1660e01b81526004016200033492919062001033565b6020604051808303816000875af115801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a919062000ff0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003c260a05160016200070160201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8600282620003e491906200108f565b620003f0919062001109565b6006819055506103e86002826200040891906200108f565b62000414919062001109565b6007819055506103e8600a826200042c91906200108f565b62000438919062001109565b600881905550620186a06103e8826200045291906200108f565b6200045e919062001109565b600a8190555060196011819055506000601281905550600060138190555060135460125460115462000491919062001141565b6200049d919062001141565b601081905550601460158190555060006016819055506000601781905550601754601654601554620004d0919062001141565b620004dc919062001141565b601481905550620004f58360016200066b60201b60201c565b620005083060016200066b60201b60201c565b6200051d61dead60016200066b60201b60201c565b73b7b30ac6d20a63934dd4c59bb1819213491f49f8600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b7b30ac6d20a63934dd4c59bb1819213491f49f8600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005da836001620007b460201b60201c565b620005ed306001620007b460201b60201c565b6200060261dead6001620007b460201b60201c565b62000637600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007b460201b60201c565b6200064983826200090160201b60201c565b6200065a8362000a5160201b60201c565b5050506200139e565b600033905090565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006f592919062001199565b60405180910390a15050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076a82826200066b60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007c46200066360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000856576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084d9062001227565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008f5919062001249565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000973576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096a90620012b6565b60405180910390fd5b806002600082825462000987919062001141565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009de919062001141565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a459190620012e9565b60405180910390a35050565b62000a616200066360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aea9062001227565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5c906200137c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ca757607f821691505b60208210810362000cbd5762000cbc62000c5f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ce8565b62000d33868362000ce8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d8062000d7a62000d748462000d4b565b62000d55565b62000d4b565b9050919050565b6000819050919050565b62000d9c8362000d5f565b62000db462000dab8262000d87565b84845462000cf5565b825550505050565b600090565b62000dcb62000dbc565b62000dd881848462000d91565b505050565b5b8181101562000e005762000df460008262000dc1565b60018101905062000dde565b5050565b601f82111562000e4f5762000e198162000cc3565b62000e248462000cd8565b8101602085101562000e34578190505b62000e4c62000e438562000cd8565b83018262000ddd565b50505b505050565b600082821c905092915050565b600062000e746000198460080262000e54565b1980831691505092915050565b600062000e8f838362000e61565b9150826002028217905092915050565b62000eaa8262000c25565b67ffffffffffffffff81111562000ec65762000ec562000c30565b5b62000ed2825462000c8e565b62000edf82828562000e04565b600060209050601f83116001811462000f17576000841562000f02578287015190505b62000f0e858262000e81565b86555062000f7e565b601f19841662000f278662000cc3565b60005b8281101562000f515784890151825560018201915060208501945060208101905062000f2a565b8683101562000f71578489015162000f6d601f89168262000e61565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb88262000f8b565b9050919050565b62000fca8162000fab565b811462000fd657600080fd5b50565b60008151905062000fea8162000fbf565b92915050565b60006020828403121562001009576200100862000f86565b5b6000620010198482850162000fd9565b91505092915050565b6200102d8162000fab565b82525050565b60006040820190506200104a600083018562001022565b62001059602083018462001022565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200109c8262000d4b565b9150620010a98362000d4b565b9250828202620010b98162000d4b565b91508282048414831517620010d357620010d262001060565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011168262000d4b565b9150620011238362000d4b565b925082620011365762001135620010da565b5b828204905092915050565b60006200114e8262000d4b565b91506200115b8362000d4b565b925082820190508082111562001176576200117562001060565b5b92915050565b60008115159050919050565b62001193816200117c565b82525050565b6000604082019050620011b0600083018562001022565b620011bf602083018462001188565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200120f602083620011c6565b91506200121c82620011d7565b602082019050919050565b60006020820190508181036000830152620012428162001200565b9050919050565b600060208201905062001260600083018462001188565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200129e601f83620011c6565b9150620012ab8262001266565b602082019050919050565b60006020820190508181036000830152620012d1816200128f565b9050919050565b620012e38162000d4b565b82525050565b6000602082019050620013006000830184620012d8565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001364602683620011c6565b9150620013718262001306565b604082019050919050565b60006020820190508181036000830152620013978162001355565b9050919050565b60805160a05161594b620013f560003960008181611111015281816117dc0152611f0a015260008181610dcd01528181613ebb01528181613f9c01528181613fc30152818161405f0152614086015261594b6000f3fe6080604052600436106103545760003560e01c806388e765ff116101c6578063c18bc195116100f7578063ee40166e11610095578063f54afa781161006f578063f54afa7814610c63578063f5648a4f14610c8e578063f637434214610ca5578063fabb0b4f14610cd05761035b565b8063ee40166e14610be4578063f11a24d314610c0f578063f2fde38b14610c3a5761035b565b8063d85ba063116100d1578063d85ba06314610b28578063dc3f0d0f14610b53578063dd62ed3e14610b7c578063e2f4560514610bb95761035b565b8063c18bc19514610aab578063cc274b2914610ad4578063cc2ffe7c14610afd5761035b565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c74214610a03578063c024666814610a2e578063c054f2f414610a57578063c17b5b8c14610a825761035b565b8063aa4bde2814610970578063b62496f51461099b578063bb8d5131146109d85761035b565b806395d89b41116101a057806395d89b41146108a25780639a7a23d6146108cd578063a457c2d7146108f6578063a9059cbb146109335761035b565b806388e765ff146108235780638906758d1461084e5780638da5cb5b146108775761035b565b80635c068a8c116102a057806370a082311161023e5780637571336a116102185780637571336a1461076957806377a3b609146107925780638095d564146107bd5780638366e79a146107e65761035b565b806370a08231146106fe578063715018a61461073b578063751039fc146107525761035b565b806366d602ae1161027a57806366d602ae146106525780636a486a8e1461067d5780636b2fb124146106a85780636ddd1713146106d35761035b565b80635c068a8c146105d55780635e83ae76146106005780636605bfda146106295761035b565b806323b872dd1161030d57806339509351116102e7578063395093511461051757806349bd5a5e146105545780634a62bb651461057f5780635b5c251f146105aa5761035b565b806323b872dd146104865780632be32b61146104c3578063313ce567146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfb565b60405161038291906141ca565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190614285565b610d8d565b6040516103bf91906142e0565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906142fb565b610dab565b6040516103fc91906142e0565b60405180910390f35b34801561041157600080fd5b5061041a610dcb565b6040516104279190614387565b60405180910390f35b34801561043c57600080fd5b50610445610def565b60405161045291906143b1565b60405180910390f35b34801561046757600080fd5b50610470610df9565b60405161047d91906143b1565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906143cc565b610dff565b6040516104ba91906142e0565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061441f565b610ef7565b005b3480156104f857600080fd5b5061050161105a565b60405161050e9190614468565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190614285565b611063565b60405161054b91906142e0565b60405180910390f35b34801561056057600080fd5b5061056961110f565b6040516105769190614492565b60405180910390f35b34801561058b57600080fd5b50610594611133565b6040516105a191906142e0565b60405180910390f35b3480156105b657600080fd5b506105bf611146565b6040516105cc9190614492565b60405180910390f35b3480156105e157600080fd5b506105ea61116c565b6040516105f791906143b1565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906144d9565b611172565b005b34801561063557600080fd5b50610650600480360381019061064b91906142fb565b61130c565b005b34801561065e57600080fd5b50610667611499565b60405161067491906143b1565b60405180910390f35b34801561068957600080fd5b5061069261149f565b60405161069f91906143b1565b60405180910390f35b3480156106b457600080fd5b506106bd6114a5565b6040516106ca91906143b1565b60405180910390f35b3480156106df57600080fd5b506106e86114ab565b6040516106f591906142e0565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906142fb565b6114be565b60405161073291906143b1565b60405180910390f35b34801561074757600080fd5b50610750611506565b005b34801561075e57600080fd5b5061076761165e565b005b34801561077557600080fd5b50610790600480360381019061078b9190614519565b61173e565b005b34801561079e57600080fd5b506107a76118c4565b6040516107b491906143b1565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614559565b6118ca565b005b3480156107f257600080fd5b5061080d600480360381019061080891906145ac565b6119e4565b60405161081a91906142e0565b60405180910390f35b34801561082f57600080fd5b50610838611c22565b60405161084591906143b1565b60405180910390f35b34801561085a57600080fd5b50610875600480360381019061087091906142fb565b611c28565b005b34801561088357600080fd5b5061088c611db5565b6040516108999190614492565b60405180910390f35b3480156108ae57600080fd5b506108b7611ddf565b6040516108c491906141ca565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614519565b611e71565b005b34801561090257600080fd5b5061091d60048036038101906109189190614285565b611fa4565b60405161092a91906142e0565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614285565b61208f565b60405161096791906142e0565b60405180910390f35b34801561097c57600080fd5b506109856120ad565b60405161099291906143b1565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd91906142fb565b6120b3565b6040516109cf91906142e0565b60405180910390f35b3480156109e457600080fd5b506109ed6120d3565b6040516109fa91906143b1565b60405180910390f35b348015610a0f57600080fd5b50610a186120d9565b604051610a2591906142e0565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190614519565b6120ec565b005b348015610a6357600080fd5b50610a6c61222c565b604051610a799190614492565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190614559565b612252565b005b348015610ab757600080fd5b50610ad26004803603810190610acd919061441f565b61236c565b005b348015610ae057600080fd5b50610afb6004803603810190610af6919061441f565b6124cf565b005b348015610b0957600080fd5b50610b1261257c565b604051610b1f91906143b1565b60405180910390f35b348015610b3457600080fd5b50610b3d612582565b604051610b4a91906143b1565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b75919061441f565b612588565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e91906145ac565b6126eb565b604051610bb091906143b1565b60405180910390f35b348015610bc557600080fd5b50610bce612772565b604051610bdb91906143b1565b60405180910390f35b348015610bf057600080fd5b50610bf9612778565b604051610c0691906143b1565b60405180910390f35b348015610c1b57600080fd5b50610c2461277e565b604051610c3191906143b1565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906142fb565b612784565b005b348015610c6f57600080fd5b50610c7861294a565b604051610c8591906143b1565b60405180910390f35b348015610c9a57600080fd5b50610ca3612950565b005b348015610cb157600080fd5b50610cba612a51565b604051610cc791906143b1565b60405180910390f35b348015610cdc57600080fd5b50610ce5612a57565b604051610cf291906143b1565b60405180910390f35b606060038054610d0a9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d369061461b565b8015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610da1610d9a612a5d565b8484612a65565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60195481565b6000610e0c848484612c2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e57612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece906146be565b60405180910390fd5b610eeb85610ee3612a5d565b858403612a65565b60019150509392505050565b610eff612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061472a565b60405180910390fd5b670de0b6b3a76400006103e86001610fa4610def565b610fae9190614779565b610fb891906147ea565b610fc291906147ea565b811015611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061488d565b60405180910390fd5b670de0b6b3a7640000816110189190614779565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161104f91906143b1565b60405180910390a150565b60006012905090565b6000611105611070612a5d565b84846001600061107e612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110091906148ad565b612a65565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61117a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112009061472a565b60405180910390fd5b600f60019054906101000a900460ff1615611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061492d565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516112ce92919061494d565b60405180910390a1600f60019054906101000a900460ff1680156112f457506000600d54145b156113085743600d8190555080600e819055505b5050565b611314612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611409906149e8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150e612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115949061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611666612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061472a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611746612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061472a565b60405180910390fd5b80611869577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614a7a565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6118d2612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061472a565b60405180910390fd5b82601181905550816012819055508060138190555060135460125460115461198991906148ad565b61199391906148ad565b601081905550601e60105411156119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690614ae6565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614b52565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90614be4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b1f9190614492565b602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190614c19565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611b9d929190614c46565b6020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190614c84565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c13929190614c46565b60405180910390a15092915050565b60065481565b611c30612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614d23565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611dee9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1a9061461b565b8015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b5050505050905090565b611e79612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9061472a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90614db5565b60405180910390fd5b611fa082826137d7565b5050565b60008060016000611fb3612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790614e47565b60405180910390fd5b61208461207b612a5d565b85858403612a65565b600191505092915050565b60006120a361209c612a5d565b8484612c2e565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6120f4612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a9061472a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222091906142e0565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61225a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e09061472a565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461231191906148ad565b61231b91906148ad565b601481905550601e6014541115612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ae6565b60405180910390fd5b505050565b612374612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa9061472a565b60405180910390fd5b670de0b6b3a76400006103e86003612419610def565b6124239190614779565b61242d91906147ea565b61243791906147ea565b811015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614ed9565b60405180910390fd5b670de0b6b3a76400008161248d9190614779565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124c491906143b1565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690614be4565b60405180910390fd5b670de0b6b3a7640000816125739190614779565b600a8190555050565b60185481565b60105481565b612590612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126169061472a565b60405180910390fd5b670de0b6b3a76400006103e86001612635610def565b61263f9190614779565b61264991906147ea565b61265391906147ea565b811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90614f6b565b60405180910390fd5b670de0b6b3a7640000816126a99190614779565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126e091906143b1565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b61278c612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128129061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614ffd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990614be4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612a069061504e565b60006040518083038185875af1925050503d8060008114612a43576040519150601f19603f3d011682016040523d82523d6000602084013e612a48565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb906150d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c2191906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d039061528b565b60405180910390fd5b60008111612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d46906152f7565b60405180910390fd5b600f60009054906101000a900460ff16156132fe57612d6c611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612dda5750612daa611db5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132fd57600f60019054906101000a900460ff16612fbc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f075750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90615363565b60405180910390fd5b612f4e611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb2906153cf565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613106576006548111156130a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a090615461565b60405180910390fd5b6008546130b5836114be565b826130c091906148ad565b1115613101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f8906154cd565b60405180910390fd5b6132fc565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131a95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131f8576007548111156131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea9061555f565b60405180910390fd5b6132fb565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561329c5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132fa576008546132ad836114be565b826132b891906148ad565b11156132f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f0906154cd565b60405180910390fd5b5b5b5b5b5b6000613309306114be565b90506000600a54821015905080801561332e5750600f60029054906101000a900460ff165b80156133475750600960009054906101000a900460ff16155b801561339d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134495750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d576001600960006101000a81548160ff021916908315150217905550613471613882565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135345750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561353e57600090505b60008082801561355057506000600d54115b801561355d5750600d5443115b156137c257601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135bd57506000601454115b1561367c576064601454876135d29190614779565b6135dc91906147ea565b9150601454601654836135ef9190614779565b6135f991906147ea565b6019600082825461360a91906148ad565b92505081905550601454601554836136229190614779565b61362c91906147ea565b6018600082825461363d91906148ad565b92505081905550601454601754836136559190614779565b61365f91906147ea565b601a600082825461367091906148ad565b92505081905550613793565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136d757506000601054115b15613792576064601054876136ec9190614779565b6136f691906147ea565b9150601054601254836137099190614779565b61371391906147ea565b6019600082825461372491906148ad565b925050819055506010546011548361373c9190614779565b61374691906147ea565b6018600082825461375791906148ad565b925050819055506010546013548361376f9190614779565b61377991906147ea565b601a600082825461378a91906148ad565b925050819055505b5b60008211156137a8576137a7883084613b1f565b5b80826137b491906148ad565b866137bf919061557f565b95505b6137cd888888613b1f565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138388282613d88565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388d306114be565b90506000601a546018546019546138a491906148ad565b6138ae91906148ad565b905060008214806138bf5750600081145b156138cb575050613b1d565b6005600a546138da9190614779565b8211156138f3576005600a546138f09190614779565b91505b600080600283601954866139079190614779565b61391191906147ea565b61391b91906147ea565b9050613931818561392c919061557f565b613e1c565b600047905060008190506000600260195461394c91906147ea565b86613957919061557f565b601854846139659190614779565b61396f91906147ea565b90506000600260195461398291906147ea565b8761398d919061557f565b601a548561399b9190614779565b6139a591906147ea565b905080826139b391906148ad565b836139be919061557f565b9250600060198190555060006018819055506000601a819055506000851180156139e85750600083115b156139f8576139f78584614059565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3e9061504e565b60006040518083038185875af1925050503d8060008114613a7b576040519150601f19603f3d011682016040523d82523d6000602084013e613a80565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613acc9061504e565b60006040518083038185875af1925050503d8060008114613b09576040519150601f19603f3d011682016040523d82523d6000602084013e613b0e565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b85906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf49061528b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a90615625565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d1691906148ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7a91906143b1565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e10929190615645565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3957613e3861566e565b5b604051908082528060200260200182016040528015613e675781602001602082028036833780820191505090505b5090503081600081518110613e7f57613e7e61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906156e1565b81600181518110613f5c57613f5b61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fc1307f000000000000000000000000000000000000000000000000000000000000000084612a65565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614023959493929190615807565b600060405180830381600087803b15801561403d57600080fd5b505af1158015614051573d6000803e3d6000fd5b505050505050565b614084307f000000000000000000000000000000000000000000000000000000000000000084612a65565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140ce611db5565b426040518863ffffffff1660e01b81526004016140f096959493929190615861565b60606040518083038185885af115801561410e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061413391906158c2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b6000601f19601f8301169050919050565b600061419c8261413a565b6141a68185614145565b93506141b6818560208601614156565b6141bf81614180565b840191505092915050565b600060208201905081810360008301526141e48184614191565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061421c826141f1565b9050919050565b61422c81614211565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000819050919050565b6142628161424f565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141ec565b5b60006142aa8582860161423a565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b600060208284031215614311576143106141ec565b5b600061431f8482850161423a565b91505092915050565b6000819050919050565b600061434d614348614343846141f1565b614328565b6141f1565b9050919050565b600061435f82614332565b9050919050565b600061437182614354565b9050919050565b61438181614366565b82525050565b600060208201905061439c6000830184614378565b92915050565b6143ab8161424f565b82525050565b60006020820190506143c660008301846143a2565b92915050565b6000806000606084860312156143e5576143e46141ec565b5b60006143f38682870161423a565b93505060206144048682870161423a565b925050604061441586828701614270565b9150509250925092565b600060208284031215614435576144346141ec565b5b600061444384828501614270565b91505092915050565b600060ff82169050919050565b6144628161444c565b82525050565b600060208201905061447d6000830184614459565b92915050565b61448c81614211565b82525050565b60006020820190506144a76000830184614483565b92915050565b6144b6816142c5565b81146144c157600080fd5b50565b6000813590506144d3816144ad565b92915050565b600080604083850312156144f0576144ef6141ec565b5b60006144fe858286016144c4565b925050602061450f85828601614270565b9150509250929050565b600080604083850312156145305761452f6141ec565b5b600061453e8582860161423a565b925050602061454f858286016144c4565b9150509250929050565b600080600060608486031215614572576145716141ec565b5b600061458086828701614270565b935050602061459186828701614270565b92505060406145a286828701614270565b9150509250925092565b600080604083850312156145c3576145c26141ec565b5b60006145d18582860161423a565b92505060206145e28582860161423a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463357607f821691505b602082108103614646576146456145ec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146a8602883614145565b91506146b38261464c565b604082019050919050565b600060208201905081810360008301526146d78161469b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614714602083614145565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147848261424f565b915061478f8361424f565b925082820261479d8161424f565b915082820484148315176147b4576147b361474a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147f58261424f565b91506148008361424f565b9250826148105761480f6147bb565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614877602983614145565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b60006148b88261424f565b91506148c38361424f565b92508282019050808211156148db576148da61474a565b5b92915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614917601883614145565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b600060408201905061496260008301856142d1565b61496f60208301846143a2565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006149d2602483614145565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a64602783614145565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614ad0601983614145565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b3c601a83614145565b9150614b4782614b06565b602082019050919050565b60006020820190508181036000830152614b6b81614b2f565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bce602183614145565b9150614bd982614b72565b604082019050919050565b60006020820190508181036000830152614bfd81614bc1565b9050919050565b600081519050614c1381614259565b92915050565b600060208284031215614c2f57614c2e6141ec565b5b6000614c3d84828501614c04565b91505092915050565b6000604082019050614c5b6000830185614483565b614c6860208301846143a2565b9392505050565b600081519050614c7e816144ad565b92915050565b600060208284031215614c9a57614c996141ec565b5b6000614ca884828501614c6f565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602383614145565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d9f603983614145565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e31602583614145565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ec3602c83614145565b9150614ece82614e67565b604082019050919050565b60006020820190508181036000830152614ef281614eb6565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f55602a83614145565b9150614f6082614ef9565b604082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602683614145565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b600081905092915050565b50565b600061503860008361501d565b915061504382615028565b600082019050919050565b60006150598261502b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150bf602483614145565b91506150ca82615063565b604082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615151602283614145565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151e3602583614145565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615275602383614145565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152e1601d83614145565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534d601683614145565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006153b9601683614145565b91506153c482615383565b602082019050919050565b600060208201905081810360008301526153e8816153ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061544b602883614145565b9150615456826153ef565b604082019050919050565b6000602082019050818103600083015261547a8161543e565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b7601883614145565b91506154c282615481565b602082019050919050565b600060208201905081810360008301526154e6816154aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615549602a83614145565b9150615554826154ed565b604082019050919050565b600060208201905081810360008301526155788161553c565b9050919050565b600061558a8261424f565b91506155958361424f565b92508282039050818111156155ad576155ac61474a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061560f602683614145565b915061561a826155b3565b604082019050919050565b6000602082019050818103600083015261563e81615602565b9050919050565b600060408201905061565a6000830185614483565b61566760208301846142d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156db81614223565b92915050565b6000602082840312156156f7576156f66141ec565b5b6000615705848285016156cc565b91505092915050565b6000819050919050565b600061573361572e6157298461570e565b614328565b61424f565b9050919050565b61574381615718565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61577e81614211565b82525050565b60006157908383615775565b60208301905092915050565b6000602082019050919050565b60006157b482615749565b6157be8185615754565b93506157c983615765565b8060005b838110156157fa5781516157e18882615784565b97506157ec8361579c565b9250506001810190506157cd565b5085935050505092915050565b600060a08201905061581c60008301886143a2565b615829602083018761573a565b818103604083015261583b81866157a9565b905061584a6060830185614483565b61585760808301846143a2565b9695505050505050565b600060c0820190506158766000830189614483565b61588360208301886143a2565b615890604083018761573a565b61589d606083018661573a565b6158aa6080830185614483565b6158b760a08301846143a2565b979650505050505050565b6000806000606084860312156158db576158da6141ec565b5b60006158e986828701614c04565b93505060206158fa86828701614c04565b925050604061590b86828701614c04565b915050925092509256fea2646970667358221220b4bc34f2b4655052450cf37124c8b375077f40a919aeeb80bdbd2b37cf36127564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103545760003560e01c806388e765ff116101c6578063c18bc195116100f7578063ee40166e11610095578063f54afa781161006f578063f54afa7814610c63578063f5648a4f14610c8e578063f637434214610ca5578063fabb0b4f14610cd05761035b565b8063ee40166e14610be4578063f11a24d314610c0f578063f2fde38b14610c3a5761035b565b8063d85ba063116100d1578063d85ba06314610b28578063dc3f0d0f14610b53578063dd62ed3e14610b7c578063e2f4560514610bb95761035b565b8063c18bc19514610aab578063cc274b2914610ad4578063cc2ffe7c14610afd5761035b565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c74214610a03578063c024666814610a2e578063c054f2f414610a57578063c17b5b8c14610a825761035b565b8063aa4bde2814610970578063b62496f51461099b578063bb8d5131146109d85761035b565b806395d89b41116101a057806395d89b41146108a25780639a7a23d6146108cd578063a457c2d7146108f6578063a9059cbb146109335761035b565b806388e765ff146108235780638906758d1461084e5780638da5cb5b146108775761035b565b80635c068a8c116102a057806370a082311161023e5780637571336a116102185780637571336a1461076957806377a3b609146107925780638095d564146107bd5780638366e79a146107e65761035b565b806370a08231146106fe578063715018a61461073b578063751039fc146107525761035b565b806366d602ae1161027a57806366d602ae146106525780636a486a8e1461067d5780636b2fb124146106a85780636ddd1713146106d35761035b565b80635c068a8c146105d55780635e83ae76146106005780636605bfda146106295761035b565b806323b872dd1161030d57806339509351116102e7578063395093511461051757806349bd5a5e146105545780634a62bb651461057f5780635b5c251f146105aa5761035b565b806323b872dd146104865780632be32b61146104c3578063313ce567146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfb565b60405161038291906141ca565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190614285565b610d8d565b6040516103bf91906142e0565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906142fb565b610dab565b6040516103fc91906142e0565b60405180910390f35b34801561041157600080fd5b5061041a610dcb565b6040516104279190614387565b60405180910390f35b34801561043c57600080fd5b50610445610def565b60405161045291906143b1565b60405180910390f35b34801561046757600080fd5b50610470610df9565b60405161047d91906143b1565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906143cc565b610dff565b6040516104ba91906142e0565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061441f565b610ef7565b005b3480156104f857600080fd5b5061050161105a565b60405161050e9190614468565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190614285565b611063565b60405161054b91906142e0565b60405180910390f35b34801561056057600080fd5b5061056961110f565b6040516105769190614492565b60405180910390f35b34801561058b57600080fd5b50610594611133565b6040516105a191906142e0565b60405180910390f35b3480156105b657600080fd5b506105bf611146565b6040516105cc9190614492565b60405180910390f35b3480156105e157600080fd5b506105ea61116c565b6040516105f791906143b1565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906144d9565b611172565b005b34801561063557600080fd5b50610650600480360381019061064b91906142fb565b61130c565b005b34801561065e57600080fd5b50610667611499565b60405161067491906143b1565b60405180910390f35b34801561068957600080fd5b5061069261149f565b60405161069f91906143b1565b60405180910390f35b3480156106b457600080fd5b506106bd6114a5565b6040516106ca91906143b1565b60405180910390f35b3480156106df57600080fd5b506106e86114ab565b6040516106f591906142e0565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906142fb565b6114be565b60405161073291906143b1565b60405180910390f35b34801561074757600080fd5b50610750611506565b005b34801561075e57600080fd5b5061076761165e565b005b34801561077557600080fd5b50610790600480360381019061078b9190614519565b61173e565b005b34801561079e57600080fd5b506107a76118c4565b6040516107b491906143b1565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614559565b6118ca565b005b3480156107f257600080fd5b5061080d600480360381019061080891906145ac565b6119e4565b60405161081a91906142e0565b60405180910390f35b34801561082f57600080fd5b50610838611c22565b60405161084591906143b1565b60405180910390f35b34801561085a57600080fd5b50610875600480360381019061087091906142fb565b611c28565b005b34801561088357600080fd5b5061088c611db5565b6040516108999190614492565b60405180910390f35b3480156108ae57600080fd5b506108b7611ddf565b6040516108c491906141ca565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614519565b611e71565b005b34801561090257600080fd5b5061091d60048036038101906109189190614285565b611fa4565b60405161092a91906142e0565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614285565b61208f565b60405161096791906142e0565b60405180910390f35b34801561097c57600080fd5b506109856120ad565b60405161099291906143b1565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd91906142fb565b6120b3565b6040516109cf91906142e0565b60405180910390f35b3480156109e457600080fd5b506109ed6120d3565b6040516109fa91906143b1565b60405180910390f35b348015610a0f57600080fd5b50610a186120d9565b604051610a2591906142e0565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190614519565b6120ec565b005b348015610a6357600080fd5b50610a6c61222c565b604051610a799190614492565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190614559565b612252565b005b348015610ab757600080fd5b50610ad26004803603810190610acd919061441f565b61236c565b005b348015610ae057600080fd5b50610afb6004803603810190610af6919061441f565b6124cf565b005b348015610b0957600080fd5b50610b1261257c565b604051610b1f91906143b1565b60405180910390f35b348015610b3457600080fd5b50610b3d612582565b604051610b4a91906143b1565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b75919061441f565b612588565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e91906145ac565b6126eb565b604051610bb091906143b1565b60405180910390f35b348015610bc557600080fd5b50610bce612772565b604051610bdb91906143b1565b60405180910390f35b348015610bf057600080fd5b50610bf9612778565b604051610c0691906143b1565b60405180910390f35b348015610c1b57600080fd5b50610c2461277e565b604051610c3191906143b1565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906142fb565b612784565b005b348015610c6f57600080fd5b50610c7861294a565b604051610c8591906143b1565b60405180910390f35b348015610c9a57600080fd5b50610ca3612950565b005b348015610cb157600080fd5b50610cba612a51565b604051610cc791906143b1565b60405180910390f35b348015610cdc57600080fd5b50610ce5612a57565b604051610cf291906143b1565b60405180910390f35b606060038054610d0a9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d369061461b565b8015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610da1610d9a612a5d565b8484612a65565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60195481565b6000610e0c848484612c2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e57612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece906146be565b60405180910390fd5b610eeb85610ee3612a5d565b858403612a65565b60019150509392505050565b610eff612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061472a565b60405180910390fd5b670de0b6b3a76400006103e86001610fa4610def565b610fae9190614779565b610fb891906147ea565b610fc291906147ea565b811015611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061488d565b60405180910390fd5b670de0b6b3a7640000816110189190614779565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161104f91906143b1565b60405180910390a150565b60006012905090565b6000611105611070612a5d565b84846001600061107e612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110091906148ad565b612a65565b6001905092915050565b7f0000000000000000000000003bf5ac8e870bf18984da8c8cf704ed89ceb3d19681565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61117a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112009061472a565b60405180910390fd5b600f60019054906101000a900460ff1615611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061492d565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516112ce92919061494d565b60405180910390a1600f60019054906101000a900460ff1680156112f457506000600d54145b156113085743600d8190555080600e819055505b5050565b611314612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611409906149e8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150e612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115949061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611666612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061472a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611746612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061472a565b60405180910390fd5b80611869577f0000000000000000000000003bf5ac8e870bf18984da8c8cf704ed89ceb3d19673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614a7a565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6118d2612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061472a565b60405180910390fd5b82601181905550816012819055508060138190555060135460125460115461198991906148ad565b61199391906148ad565b601081905550601e60105411156119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690614ae6565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614b52565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90614be4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b1f9190614492565b602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190614c19565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611b9d929190614c46565b6020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190614c84565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c13929190614c46565b60405180910390a15092915050565b60065481565b611c30612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614d23565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611dee9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1a9061461b565b8015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b5050505050905090565b611e79612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9061472a565b60405180910390fd5b7f0000000000000000000000003bf5ac8e870bf18984da8c8cf704ed89ceb3d19673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90614db5565b60405180910390fd5b611fa082826137d7565b5050565b60008060016000611fb3612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790614e47565b60405180910390fd5b61208461207b612a5d565b85858403612a65565b600191505092915050565b60006120a361209c612a5d565b8484612c2e565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6120f4612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a9061472a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222091906142e0565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61225a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e09061472a565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461231191906148ad565b61231b91906148ad565b601481905550601e6014541115612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ae6565b60405180910390fd5b505050565b612374612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa9061472a565b60405180910390fd5b670de0b6b3a76400006103e86003612419610def565b6124239190614779565b61242d91906147ea565b61243791906147ea565b811015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614ed9565b60405180910390fd5b670de0b6b3a76400008161248d9190614779565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124c491906143b1565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690614be4565b60405180910390fd5b670de0b6b3a7640000816125739190614779565b600a8190555050565b60185481565b60105481565b612590612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126169061472a565b60405180910390fd5b670de0b6b3a76400006103e86001612635610def565b61263f9190614779565b61264991906147ea565b61265391906147ea565b811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90614f6b565b60405180910390fd5b670de0b6b3a7640000816126a99190614779565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126e091906143b1565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b61278c612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128129061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614ffd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990614be4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612a069061504e565b60006040518083038185875af1925050503d8060008114612a43576040519150601f19603f3d011682016040523d82523d6000602084013e612a48565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb906150d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c2191906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d039061528b565b60405180910390fd5b60008111612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d46906152f7565b60405180910390fd5b600f60009054906101000a900460ff16156132fe57612d6c611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612dda5750612daa611db5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132fd57600f60019054906101000a900460ff16612fbc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f075750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90615363565b60405180910390fd5b612f4e611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb2906153cf565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613106576006548111156130a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a090615461565b60405180910390fd5b6008546130b5836114be565b826130c091906148ad565b1115613101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f8906154cd565b60405180910390fd5b6132fc565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131a95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131f8576007548111156131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea9061555f565b60405180910390fd5b6132fb565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561329c5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132fa576008546132ad836114be565b826132b891906148ad565b11156132f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f0906154cd565b60405180910390fd5b5b5b5b5b5b6000613309306114be565b90506000600a54821015905080801561332e5750600f60029054906101000a900460ff165b80156133475750600960009054906101000a900460ff16155b801561339d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134495750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d576001600960006101000a81548160ff021916908315150217905550613471613882565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135345750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561353e57600090505b60008082801561355057506000600d54115b801561355d5750600d5443115b156137c257601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135bd57506000601454115b1561367c576064601454876135d29190614779565b6135dc91906147ea565b9150601454601654836135ef9190614779565b6135f991906147ea565b6019600082825461360a91906148ad565b92505081905550601454601554836136229190614779565b61362c91906147ea565b6018600082825461363d91906148ad565b92505081905550601454601754836136559190614779565b61365f91906147ea565b601a600082825461367091906148ad565b92505081905550613793565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136d757506000601054115b15613792576064601054876136ec9190614779565b6136f691906147ea565b9150601054601254836137099190614779565b61371391906147ea565b6019600082825461372491906148ad565b925050819055506010546011548361373c9190614779565b61374691906147ea565b6018600082825461375791906148ad565b925050819055506010546013548361376f9190614779565b61377991906147ea565b601a600082825461378a91906148ad565b925050819055505b5b60008211156137a8576137a7883084613b1f565b5b80826137b491906148ad565b866137bf919061557f565b95505b6137cd888888613b1f565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138388282613d88565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388d306114be565b90506000601a546018546019546138a491906148ad565b6138ae91906148ad565b905060008214806138bf5750600081145b156138cb575050613b1d565b6005600a546138da9190614779565b8211156138f3576005600a546138f09190614779565b91505b600080600283601954866139079190614779565b61391191906147ea565b61391b91906147ea565b9050613931818561392c919061557f565b613e1c565b600047905060008190506000600260195461394c91906147ea565b86613957919061557f565b601854846139659190614779565b61396f91906147ea565b90506000600260195461398291906147ea565b8761398d919061557f565b601a548561399b9190614779565b6139a591906147ea565b905080826139b391906148ad565b836139be919061557f565b9250600060198190555060006018819055506000601a819055506000851180156139e85750600083115b156139f8576139f78584614059565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3e9061504e565b60006040518083038185875af1925050503d8060008114613a7b576040519150601f19603f3d011682016040523d82523d6000602084013e613a80565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613acc9061504e565b60006040518083038185875af1925050503d8060008114613b09576040519150601f19603f3d011682016040523d82523d6000602084013e613b0e565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b85906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf49061528b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a90615625565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d1691906148ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7a91906143b1565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e10929190615645565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3957613e3861566e565b5b604051908082528060200260200182016040528015613e675781602001602082028036833780820191505090505b5090503081600081518110613e7f57613e7e61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906156e1565b81600181518110613f5c57613f5b61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fc1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a65565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614023959493929190615807565b600060405180830381600087803b15801561403d57600080fd5b505af1158015614051573d6000803e3d6000fd5b505050505050565b614084307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a65565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140ce611db5565b426040518863ffffffff1660e01b81526004016140f096959493929190615861565b60606040518083038185885af115801561410e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061413391906158c2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b6000601f19601f8301169050919050565b600061419c8261413a565b6141a68185614145565b93506141b6818560208601614156565b6141bf81614180565b840191505092915050565b600060208201905081810360008301526141e48184614191565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061421c826141f1565b9050919050565b61422c81614211565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000819050919050565b6142628161424f565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141ec565b5b60006142aa8582860161423a565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b600060208284031215614311576143106141ec565b5b600061431f8482850161423a565b91505092915050565b6000819050919050565b600061434d614348614343846141f1565b614328565b6141f1565b9050919050565b600061435f82614332565b9050919050565b600061437182614354565b9050919050565b61438181614366565b82525050565b600060208201905061439c6000830184614378565b92915050565b6143ab8161424f565b82525050565b60006020820190506143c660008301846143a2565b92915050565b6000806000606084860312156143e5576143e46141ec565b5b60006143f38682870161423a565b93505060206144048682870161423a565b925050604061441586828701614270565b9150509250925092565b600060208284031215614435576144346141ec565b5b600061444384828501614270565b91505092915050565b600060ff82169050919050565b6144628161444c565b82525050565b600060208201905061447d6000830184614459565b92915050565b61448c81614211565b82525050565b60006020820190506144a76000830184614483565b92915050565b6144b6816142c5565b81146144c157600080fd5b50565b6000813590506144d3816144ad565b92915050565b600080604083850312156144f0576144ef6141ec565b5b60006144fe858286016144c4565b925050602061450f85828601614270565b9150509250929050565b600080604083850312156145305761452f6141ec565b5b600061453e8582860161423a565b925050602061454f858286016144c4565b9150509250929050565b600080600060608486031215614572576145716141ec565b5b600061458086828701614270565b935050602061459186828701614270565b92505060406145a286828701614270565b9150509250925092565b600080604083850312156145c3576145c26141ec565b5b60006145d18582860161423a565b92505060206145e28582860161423a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463357607f821691505b602082108103614646576146456145ec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146a8602883614145565b91506146b38261464c565b604082019050919050565b600060208201905081810360008301526146d78161469b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614714602083614145565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147848261424f565b915061478f8361424f565b925082820261479d8161424f565b915082820484148315176147b4576147b361474a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147f58261424f565b91506148008361424f565b9250826148105761480f6147bb565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614877602983614145565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b60006148b88261424f565b91506148c38361424f565b92508282019050808211156148db576148da61474a565b5b92915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614917601883614145565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b600060408201905061496260008301856142d1565b61496f60208301846143a2565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006149d2602483614145565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a64602783614145565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614ad0601983614145565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b3c601a83614145565b9150614b4782614b06565b602082019050919050565b60006020820190508181036000830152614b6b81614b2f565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bce602183614145565b9150614bd982614b72565b604082019050919050565b60006020820190508181036000830152614bfd81614bc1565b9050919050565b600081519050614c1381614259565b92915050565b600060208284031215614c2f57614c2e6141ec565b5b6000614c3d84828501614c04565b91505092915050565b6000604082019050614c5b6000830185614483565b614c6860208301846143a2565b9392505050565b600081519050614c7e816144ad565b92915050565b600060208284031215614c9a57614c996141ec565b5b6000614ca884828501614c6f565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602383614145565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d9f603983614145565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e31602583614145565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ec3602c83614145565b9150614ece82614e67565b604082019050919050565b60006020820190508181036000830152614ef281614eb6565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f55602a83614145565b9150614f6082614ef9565b604082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602683614145565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b600081905092915050565b50565b600061503860008361501d565b915061504382615028565b600082019050919050565b60006150598261502b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150bf602483614145565b91506150ca82615063565b604082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615151602283614145565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151e3602583614145565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615275602383614145565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152e1601d83614145565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534d601683614145565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006153b9601683614145565b91506153c482615383565b602082019050919050565b600060208201905081810360008301526153e8816153ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061544b602883614145565b9150615456826153ef565b604082019050919050565b6000602082019050818103600083015261547a8161543e565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b7601883614145565b91506154c282615481565b602082019050919050565b600060208201905081810360008301526154e6816154aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615549602a83614145565b9150615554826154ed565b604082019050919050565b600060208201905081810360008301526155788161553c565b9050919050565b600061558a8261424f565b91506155958361424f565b92508282039050818111156155ad576155ac61474a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061560f602683614145565b915061561a826155b3565b604082019050919050565b6000602082019050818103600083015261563e81615602565b9050919050565b600060408201905061565a6000830185614483565b61566760208301846142d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156db81614223565b92915050565b6000602082840312156156f7576156f66141ec565b5b6000615705848285016156cc565b91505092915050565b6000819050919050565b600061573361572e6157298461570e565b614328565b61424f565b9050919050565b61574381615718565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61577e81614211565b82525050565b60006157908383615775565b60208301905092915050565b6000602082019050919050565b60006157b482615749565b6157be8185615754565b93506157c983615765565b8060005b838110156157fa5781516157e18882615784565b97506157ec8361579c565b9250506001810190506157cd565b5085935050505092915050565b600060a08201905061581c60008301886143a2565b615829602083018761573a565b818103604083015261583b81866157a9565b905061584a6060830185614483565b61585760808301846143a2565b9695505050505050565b600060c0820190506158766000830189614483565b61588360208301886143a2565b615890604083018761573a565b61589d606083018661573a565b6158aa6080830185614483565b6158b760a08301846143a2565b979650505050505050565b6000806000606084860312156158db576158da6141ec565b5b60006158e986828701614c04565b93505060206158fa86828701614c04565b925050604061590b86828701614c04565b915050925092509256fea2646970667358221220b4bc34f2b4655052450cf37124c8b375077f40a919aeeb80bdbd2b37cf36127564736f6c63430008130033

Deployed Bytecode Sourcemap

7097:14996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2729:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8253:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2136:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8058:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2906:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11136:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2035:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3394:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7300:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7607:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7417:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7761:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21661:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19619:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7176:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7871;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7906:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7687:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2252:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5856:150;;;;;;;;;;;;;:::i;:::-;;11743:115;;;;;;;;;;;;;:::i;:::-;;12083:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7834:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13619:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12858:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7142:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19908:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5642:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1923:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18587:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3617:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7211:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8475:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7981:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7647:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14398:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7454:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14004:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12358:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12650:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8019:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7727:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11413:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2570:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7375:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7492:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7797:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6014:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8098:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13380:231;;;;;;;;;;;;;:::i;:::-;;7943:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1815:100;1869:13;1902:5;1895:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:100;:::o;2729:169::-;2812:4;2829:39;2838:12;:10;:12::i;:::-;2852:7;2861:6;2829:8;:39::i;:::-;2886:4;2879:11;;2729:169;;;;:::o;8253:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7250:43::-;;;:::o;2136:108::-;2197:7;2224:12;;2217:19;;2136:108;:::o;8058:33::-;;;;:::o;2906:480::-;3046:4;3063:36;3073:6;3081:9;3092:6;3063:9;:36::i;:::-;3112:24;3139:11;:19;3151:6;3139:19;;;;;;;;;;;;;;;:33;3159:12;:10;:12::i;:::-;3139:33;;;;;;;;;;;;;;;;3112:60;;3211:6;3191:16;:26;;3183:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3290:57;3299:6;3307:12;:10;:12::i;:::-;3340:6;3321:16;:25;3290:8;:57::i;:::-;3374:4;3367:11;;;2906:480;;;;;:::o;11136:269::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11255:4:::1;11249;11245:1;11229:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11228:31;;;;:::i;:::-;11218:6;:41;;11210:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11341:6;11331;:17;;;;:::i;:::-;11316:12;:32;;;;11364:33;11384:12;;11364:33;;;;;;:::i;:::-;;;;;;;;11136:269:::0;:::o;2035:93::-;2093:5;2118:2;2111:9;;2035:93;:::o;3394:215::-;3482:4;3499:80;3508:12;:10;:12::i;:::-;3522:7;3568:10;3531:11;:25;3543:12;:10;:12::i;:::-;3531:25;;;;;;;;;;;;;;;:34;3557:7;3531:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3499:8;:80::i;:::-;3597:4;3590:11;;3394:215;;;;:::o;7300:38::-;;;:::o;7607:33::-;;;;;;;;;;;;;:::o;7417:30::-;;;;;;;;;;;;;:::o;7761:29::-;;;;:::o;21661:425::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:13:::1;;;;;;;;;;;21757:14;21749:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;21827:7;21811:13;;:23;;;;;;;;;;;;;;;;;;21859:4;21845:11;;:18;;;;;;;;;;;;;;;;;;21879:42;21894:13;;;;;;;;;;;21909:11;21879:42;;;;;;;:::i;:::-;;;;;;;;21938:13;;;;;;;;;;;:40;;;;;21977:1;21955:18;;:23;21938:40;21934:145;;;22016:12;21995:18;:33;;;;22056:11;22043:10;:24;;;;21934:145;21661:425:::0;;:::o;19619:281::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19739:1:::1;19711:30;;:16;:30;;::::0;19703:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19819:16;19793:15;;:43;;;;;;;;;;;;;;;;;;19875:16;19852:40;;;;;;;;;;;;19619:281:::0;:::o;7176:28::-;;;;:::o;7871:::-;;;;:::o;7906:30::-;;;;:::o;7687:31::-;;;;;;;;;;;;;:::o;2252:127::-;2326:7;2353:9;:18;2363:7;2353:18;;;;;;;;;;;;;;;;2346:25;;2252:127;;;:::o;5856:150::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5965:1:::1;5928:40;;5949:6;;;;;;;;;;;5928:40;;;;;;;;;;;;5996:1;5979:6;;:19;;;;;;;;;;;;;;;;;;5856:150::o:0;11743:115::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11814:5:::1;11797:14;;:22;;;;;;;;;;;;;;;;;;11835:15;;;;;;;;;;11743:115::o:0;12083:267::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:4:::1;12175:111;;12217:13;12207:23;;:6;:23;;::::0;12199:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12175:111;12338:4;12296:31;:39;12328:6;12296:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12083:267:::0;;:::o;7834:28::-;;;;:::o;13619:377::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13755:12:::1;13738:14;:29;;;;13796:13;13778:15;:31;;;;13836:11;13820:13;:27;;;;13908:13;;13890:15;;13873:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;13858:12;:63;;;;13956:2;13940:12;;:18;;13932:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13619:377:::0;;;:::o;12858:452::-;12933:10;12982:1;12964:20;;:6;:20;;;12956:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13046:15;;;;;;;;;;;13034:27;;:10;:27;;;13026:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13109:24;13143:6;13136:24;;;13169:4;13136:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13109:66;;13201:6;13194:23;;;13218:3;13223:16;13194:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13186:54;;13256:46;13277:6;13285:16;13256:46;;;;;;;:::i;:::-;;;;;;;;12945:365;12858:452;;;;:::o;7142:27::-;;;;:::o;19908:273::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20025:1:::1;19998:29;;:15;:29;;::::0;19990:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20103:15;20078:14;;:41;;;;;;;;;;;;;;;;;;20157:15;20135:38;;;;;;;;;;;;19908:273:::0;:::o;5642:79::-;5680:7;5707:6;;;;;;;;;;;5700:13;;5642:79;:::o;1923:104::-;1979:13;2012:7;2005:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:104;:::o;18587:246::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18696:13:::1;18688:21;;:4;:21;;::::0;18680:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18784:41;18813:4;18819:5;18784:28;:41::i;:::-;18587:246:::0;;:::o;3617:401::-;3710:4;3727:24;3754:11;:25;3766:12;:10;:12::i;:::-;3754:25;;;;;;;;;;;;;;;:34;3780:7;3754:34;;;;;;;;;;;;;;;;3727:61;;3827:15;3807:16;:35;;3799:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3912:67;3921:12;:10;:12::i;:::-;3935:7;3963:15;3944:16;:34;3912:8;:67::i;:::-;4006:4;3999:11;;;3617:401;;;;:::o;2387:175::-;2473:4;2490:42;2500:12;:10;:12::i;:::-;2514:9;2525:6;2490:9;:42::i;:::-;2550:4;2543:11;;2387:175;;;;:::o;7211:30::-;;;;:::o;8475:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7981:29::-;;;;:::o;7647:33::-;;;;;;;;;;;;;:::o;14398:182::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14514:8:::1;14483:19;:28;14503:7;14483:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14554:7;14538:34;;;14563:8;14538:34;;;;;;:::i;:::-;;;;;;;;14398:182:::0;;:::o;7454:29::-;;;;;;;;;;;;;:::o;14004:386::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14142:12:::1;14124:15;:30;;;;14184:13;14165:16;:32;;;;14225:11;14208:14;:28;;;;14300:14;;14281:16;;14263:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14247:13;:67;;;;14350:2;14333:13;;:19;;14325:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14004:386:::0;;;:::o;12358:284::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12480:4:::1;12474;12470:1;12454:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12453:31;;;;:::i;:::-;12443:6;:41;;12435:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12572:6;12562;:17;;;;:::i;:::-;12544:15;:35;;;;12595:39;12618:15;;12595:39;;;;;;:::i;:::-;;;;;;;;12358:284:::0;:::o;12650:198::-;12737:15;;;;;;;;;;;12725:27;;:10;:27;;;12717:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12833:6;12821:9;:19;;;;:::i;:::-;12800:18;:40;;;;12650:198;:::o;8019:32::-;;;;:::o;7727:27::-;;;;:::o;11413:274::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11533:4:::1;11527;11523:1;11507:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11506:31;;;;:::i;:::-;11496:6;:41;;11488:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11621:6;11611;:17;;;;:::i;:::-;11595:13;:33;;;;11644:35;11665:13;;11644:35;;;;;;:::i;:::-;;;;;;;;11413:274:::0;:::o;2570:151::-;2659:7;2686:11;:18;2698:5;2686:18;;;;;;;;;;;;;;;:27;2705:7;2686:27;;;;;;;;;;;;;;;;2679:34;;2570:151;;;;:::o;7375:33::-;;;;:::o;7492:37::-;;;;:::o;7797:30::-;;;;:::o;6014:244::-;5779:12;:10;:12::i;:::-;5769:22;;:6;;;;;;;;;;;:22;;;5761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6123:1:::1;6103:22;;:8;:22;;::::0;6095:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6213:8;6184:38;;6205:6;;;;;;;;;;;6184:38;;;;;;;;;;;;6242:8;6233:6;;:17;;;;;;;;;;;;;;;;;;6014:244:::0;:::o;8098:31::-;;;;:::o;13380:231::-;13426:12;13469:15;;;;;;;;;;;13457:27;;:10;:27;;;13449:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13553:10;13545:24;;13577:21;13545:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13532:71;;;;;13415:196;13380:231::o;7943:31::-;;;;:::o;7569:29::-;;;;:::o;254:98::-;307:7;334:10;327:17;;254:98;:::o;4935:380::-;5088:1;5071:19;;:5;:19;;;5063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5169:1;5150:21;;:7;:21;;;5142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5253:6;5223:11;:18;5235:5;5223:18;;;;;;;;;;;;;;;:27;5242:7;5223:27;;;;;;;;;;;;;;;:36;;;;5291:7;5275:32;;5284:5;5275:32;;;5300:6;5275:32;;;;;;:::i;:::-;;;;;;;;4935:380;;;:::o;14590:3390::-;14706:1;14690:18;;:4;:18;;;14682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14783:1;14769:16;;:2;:16;;;14761:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14853:1;14844:6;:10;14836:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14906:14;;;;;;;;;;;14903:1224;;;14948:7;:5;:7::i;:::-;14940:15;;:4;:15;;;;:32;;;;;14965:7;:5;:7::i;:::-;14959:13;;:2;:13;;;;14940:32;:52;;;;;14990:1;14976:16;;:2;:16;;;;14940:52;:77;;;;;15010:6;14996:21;;:2;:21;;;;14940:77;14936:1180;;;15041:13;;;;;;;;;;;15037:245;;15086:31;:37;15118:4;15086:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15127:31;:35;15159:2;15127:35;;;;;;;;;;;;;;;;;;;;;;;;;15086:76;15078:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15228:7;:5;:7::i;:::-;15220:15;;:4;:15;;;15212:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15037:245;15332:25;:31;15358:4;15332:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15368:31;:35;15400:2;15368:35;;;;;;;;;;;;;;;;;;;;;;;;;15367:36;15332:71;15328:773;;;15446:12;;15436:6;:22;;15428:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15560:15;;15543:13;15553:2;15543:9;:13::i;:::-;15534:6;:22;;;;:::i;:::-;:41;;15526:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15328:773;;;15680:25;:29;15706:2;15680:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15714:31;:37;15746:4;15714:37;;;;;;;;;;;;;;;;;;;;;;;;;15713:38;15680:71;15676:425;;;15794:13;;15784:6;:23;;15776:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15676:425;;;15902:31;:35;15934:2;15902:35;;;;;;;;;;;;;;;;;;;;;;;;;15901:36;:78;;;;;15942:31;:37;15974:4;15942:37;;;;;;;;;;;;;;;;;;;;;;;;;15941:38;15901:78;15897:204;;;16037:15;;16020:13;16030:2;16020:9;:13::i;:::-;16011:6;:22;;;;:::i;:::-;:41;;16003:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15897:204;15676:425;15328:773;14936:1180;14903:1224;16139:28;16170:24;16188:4;16170:9;:24::i;:::-;16139:55;;16207:12;16246:18;;16222:20;:42;;16207:57;;16280:7;:22;;;;;16291:11;;;;;;;;;;;16280:22;:35;;;;;16307:8;;;;;;;;;;;16306:9;16280:35;:71;;;;;16320:25;:31;16346:4;16320:31;;;;;;;;;;;;;;;;;;;;;;;;;16319:32;16280:71;:101;;;;;16356:19;:25;16376:4;16356:25;;;;;;;;;;;;;;;;;;;;;;;;;16355:26;16280:101;:129;;;;;16386:19;:23;16406:2;16386:23;;;;;;;;;;;;;;;;;;;;;;;;;16385:24;16280:129;16277:236;;;16437:4;16426:8;;:15;;;;;;;;;;;;;;;;;;16458:10;:8;:10::i;:::-;16496:5;16485:8;;:16;;;;;;;;;;;;;;;;;;16277:236;16525:12;16540:4;16525:19;;16643;:25;16663:4;16643:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16672:19;:23;16692:2;16672:23;;;;;;;;;;;;;;;;;;;;;;;;;16643:52;16640:99;;;16722:5;16712:15;;16640:99;16751:12;16778:21;16881:7;:31;;;;;16911:1;16892:18;;:20;16881:31;:68;;;;;16930:18;;16917:12;:31;16881:68;16878:1049;;;17003:25;:29;17029:2;17003:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17052:1;17036:13;;:17;17003:50;16999:753;;;17104:3;17089:13;;17080:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17073:34;;17174:13;;17155:16;;17148:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17126:18;;:61;;;;;;;:::i;:::-;;;;;;;;17252:13;;17234:15;;17227:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17206:17;;:59;;;;;;;:::i;:::-;;;;;;;;17328:13;;17311:14;;17304:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17284:16;;:57;;;;;;;:::i;:::-;;;;;;;;16999:753;;;17402:25;:31;17428:4;17402:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17452:1;17437:12;;:16;17402:51;17399:353;;;17505:3;17490:12;;17481:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17474:34;;17574:12;;17556:15;;17549:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17527:18;;:59;;;;;;;:::i;:::-;;;;;;;;17650:12;;17633:14;;17626:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17605:17;;:57;;;;;;;:::i;:::-;;;;;;;;17724:12;;17708:13;;17701:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;17681:16;;:55;;;;;;;:::i;:::-;;;;;;;;17399:353;16999:753;17790:1;17783:4;:8;17780:89;;;17811:42;17827:4;17841;17848;17811:15;:42::i;:::-;17780:89;17902:13;17895:4;:20;;;;:::i;:::-;17885:30;;;;;:::i;:::-;;;16878:1049;17939:33;17955:4;17961:2;17965:6;17939:15;:33::i;:::-;14669:3311;;;;;14590:3390;;;:::o;18841:240::-;18958:5;18924:25;:31;18950:4;18924:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18976;19003:4;19009:5;18976:26;:39::i;:::-;19067:5;19033:40;;19061:4;19033:40;;;;;;;;;;;;18841:240;;:::o;20192:1413::-;20231:23;20257:24;20275:4;20257:9;:24::i;:::-;20231:50;;20292:25;20361:16;;20341:17;;20320:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;20292:85;;20412:1;20393:15;:20;:46;;;;20438:1;20417:17;:22;20393:46;20390:60;;;20442:7;;;;20390:60;20504:1;20483:18;;:22;;;;:::i;:::-;20465:15;:40;20462:111;;;20560:1;20539:18;;:22;;;;:::i;:::-;20521:40;;20462:111;20585:12;20659:23;20744:1;20724:17;20703:18;;20685:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20659:86;;20758:51;20793:15;20775;:33;;;;:::i;:::-;20758:16;:51::i;:::-;20822:18;20843:21;20822:42;;20875:23;20901:10;20875:36;;20924:22;21023:1;21004:18;;:20;;;;:::i;:::-;20983:17;:42;;;;:::i;:::-;20962:17;;20949:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;20924:102;;21037:21;21134:1;21115:18;;:20;;;;:::i;:::-;21094:17;:42;;;;:::i;:::-;21074:16;;21061:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;21037:100;;21186:13;21169:14;:30;;;;:::i;:::-;21150:49;;;;;:::i;:::-;;;21233:1;21212:18;:22;;;;21265:1;21245:17;:21;;;;21296:1;21277:16;:20;;;;21331:1;21313:15;:19;:42;;;;;21354:1;21336:15;:19;21313:42;21310:119;;;21371:46;21384:15;21401;21371:12;:46::i;:::-;21310:119;21462:14;;;;;;;;;;;21454:28;;21490:13;21454:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21441:67;;;;;21542:15;;;;;;;;;;;21534:29;;21571:21;21534:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21521:76;;;;;20220:1385;;;;;;;;20192:1413;:::o;4026:602::-;4184:1;4166:20;;:6;:20;;;4158:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4268:1;4247:23;;:9;:23;;;4239:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4323:21;4347:9;:17;4357:6;4347:17;;;;;;;;;;;;;;;;4323:41;;4400:6;4383:13;:23;;4375:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4513:6;4497:13;:22;4477:9;:17;4487:6;4477:17;;;;;;;;;;;;;;;:42;;;;4561:6;4537:9;:20;4547:9;4537:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4602:9;4585:35;;4594:6;4585:35;;;4613:6;4585:35;;;;;;:::i;:::-;;;;;;;;4147:481;4026:602;;;:::o;11868:207::-;11998:10;11956:31;:39;11988:6;11956:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12024:43;12048:6;12056:10;12024:43;;;;;;;:::i;:::-;;;;;;;;11868:207;;:::o;17988:591::-;18116:21;18154:1;18140:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18116:40;;18185:4;18167;18172:1;18167:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18211:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18201:4;18206:1;18201:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18246:62;18263:4;18278:15;18296:11;18246:8;:62::i;:::-;18347:15;:66;;;18428:11;18454:1;18498:4;18525;18545:15;18347:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18043:536;17988:591;:::o;19089:522::-;19237:62;19254:4;19269:15;19287:11;19237:8;:62::i;:::-;19342:15;:31;;;19381:9;19414:4;19434:11;19460:1;19503;19554:7;:5;:7::i;:::-;19577:15;19342:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19089: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:144::-;4195:9;4228:37;4259:5;4228:37;:::i;:::-;4215:50;;4127:144;;;:::o;4277:167::-;4382:55;4431:5;4382:55;:::i;:::-;4377:3;4370:68;4277:167;;:::o;4450:258::-;4561:4;4599:2;4588:9;4584:18;4576:26;;4612:89;4698:1;4687:9;4683:17;4674:6;4612:89;:::i;:::-;4450:258;;;;:::o;4714:118::-;4801:24;4819:5;4801:24;:::i;:::-;4796:3;4789:37;4714:118;;:::o;4838:222::-;4931:4;4969:2;4958:9;4954:18;4946:26;;4982:71;5050:1;5039:9;5035:17;5026:6;4982:71;:::i;:::-;4838:222;;;;:::o;5066:619::-;5143:6;5151;5159;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;5589:2;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5560:118;5066:619;;;;;:::o;5691:329::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5896:117;5691:329;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:50;7384:7;7375:6;7364:9;7360:22;7342:50;:::i;:::-;7332:60;;7288:114;7441:2;7467:53;7512:7;7503:6;7492:9;7488:22;7467:53;:::i;:::-;7457:63;;7412:118;7069:468;;;;;:::o;7543:::-;7608:6;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:53;7861:7;7852:6;7841:9;7837:22;7816:53;:::i;:::-;7806:63;;7762:117;7918:2;7944:50;7986:7;7977:6;7966:9;7962:22;7944:50;:::i;:::-;7934:60;;7889:115;7543:468;;;;;:::o;8017:619::-;8094:6;8102;8110;8159:2;8147:9;8138:7;8134:23;8130:32;8127:119;;;8165:79;;:::i;:::-;8127:119;8285:1;8310:53;8355:7;8346:6;8335:9;8331:22;8310:53;:::i;:::-;8300:63;;8256:117;8412:2;8438:53;8483:7;8474:6;8463:9;8459:22;8438:53;:::i;:::-;8428:63;;8383:118;8540:2;8566:53;8611:7;8602:6;8591:9;8587:22;8566:53;:::i;:::-;8556:63;;8511:118;8017:619;;;;;:::o;8642:474::-;8710:6;8718;8767:2;8755:9;8746:7;8742:23;8738:32;8735:119;;;8773:79;;:::i;:::-;8735:119;8893:1;8918:53;8963:7;8954:6;8943:9;8939:22;8918:53;:::i;:::-;8908:63;;8864:117;9020:2;9046:53;9091:7;9082:6;9071:9;9067:22;9046:53;:::i;:::-;9036:63;;8991:118;8642:474;;;;;:::o;9122:180::-;9170:77;9167:1;9160:88;9267:4;9264:1;9257:15;9291:4;9288:1;9281:15;9308:320;9352:6;9389:1;9383:4;9379:12;9369:22;;9436:1;9430:4;9426:12;9457:18;9447:81;;9513:4;9505:6;9501:17;9491:27;;9447:81;9575:2;9567:6;9564:14;9544:18;9541:38;9538:84;;9594:18;;:::i;:::-;9538:84;9359:269;9308:320;;;:::o;9634:227::-;9774:34;9770:1;9762:6;9758:14;9751:58;9843:10;9838:2;9830:6;9826:15;9819:35;9634:227;:::o;9867:366::-;10009:3;10030:67;10094:2;10089:3;10030:67;:::i;:::-;10023:74;;10106:93;10195:3;10106:93;:::i;:::-;10224:2;10219:3;10215:12;10208:19;;9867:366;;;:::o;10239:419::-;10405:4;10443:2;10432:9;10428:18;10420:26;;10492:9;10486:4;10482:20;10478:1;10467:9;10463:17;10456:47;10520:131;10646:4;10520:131;:::i;:::-;10512:139;;10239:419;;;:::o;10664:182::-;10804:34;10800:1;10792:6;10788:14;10781:58;10664:182;:::o;10852:366::-;10994:3;11015:67;11079:2;11074:3;11015:67;:::i;:::-;11008:74;;11091:93;11180:3;11091:93;:::i;:::-;11209:2;11204:3;11200:12;11193:19;;10852:366;;;:::o;11224:419::-;11390:4;11428:2;11417:9;11413:18;11405:26;;11477:9;11471:4;11467:20;11463:1;11452:9;11448:17;11441:47;11505:131;11631:4;11505:131;:::i;:::-;11497:139;;11224:419;;;:::o;11649:180::-;11697:77;11694:1;11687:88;11794:4;11791:1;11784:15;11818:4;11815:1;11808:15;11835:410;11875:7;11898:20;11916:1;11898:20;:::i;:::-;11893:25;;11932:20;11950:1;11932:20;:::i;:::-;11927:25;;11987:1;11984;11980:9;12009:30;12027:11;12009:30;:::i;:::-;11998:41;;12188:1;12179:7;12175:15;12172:1;12169:22;12149:1;12142:9;12122:83;12099:139;;12218:18;;:::i;:::-;12099:139;11883:362;11835:410;;;;:::o;12251:180::-;12299:77;12296:1;12289:88;12396:4;12393:1;12386:15;12420:4;12417:1;12410:15;12437:185;12477:1;12494:20;12512:1;12494:20;:::i;:::-;12489:25;;12528:20;12546:1;12528:20;:::i;:::-;12523:25;;12567:1;12557:35;;12572:18;;:::i;:::-;12557:35;12614:1;12611;12607:9;12602:14;;12437:185;;;;:::o;12628:228::-;12768:34;12764:1;12756:6;12752:14;12745:58;12837:11;12832:2;12824:6;12820:15;12813:36;12628:228;:::o;12862:366::-;13004:3;13025:67;13089:2;13084:3;13025:67;:::i;:::-;13018:74;;13101:93;13190:3;13101:93;:::i;:::-;13219:2;13214:3;13210:12;13203:19;;12862:366;;;:::o;13234:419::-;13400:4;13438:2;13427:9;13423:18;13415:26;;13487:9;13481:4;13477:20;13473:1;13462:9;13458:17;13451:47;13515:131;13641:4;13515:131;:::i;:::-;13507:139;;13234:419;;;:::o;13659:191::-;13699:3;13718:20;13736:1;13718:20;:::i;:::-;13713:25;;13752:20;13770:1;13752:20;:::i;:::-;13747:25;;13795:1;13792;13788:9;13781:16;;13816:3;13813:1;13810:10;13807:36;;;13823:18;;:::i;:::-;13807:36;13659:191;;;;:::o;13856:174::-;13996:26;13992:1;13984:6;13980:14;13973:50;13856:174;:::o;14036:366::-;14178:3;14199:67;14263:2;14258:3;14199:67;:::i;:::-;14192:74;;14275:93;14364:3;14275:93;:::i;:::-;14393:2;14388:3;14384:12;14377:19;;14036:366;;;:::o;14408:419::-;14574:4;14612:2;14601:9;14597:18;14589:26;;14661:9;14655:4;14651:20;14647:1;14636:9;14632:17;14625:47;14689:131;14815:4;14689:131;:::i;:::-;14681:139;;14408:419;;;:::o;14833:320::-;14948:4;14986:2;14975:9;14971:18;14963:26;;14999:65;15061:1;15050:9;15046:17;15037:6;14999:65;:::i;:::-;15074:72;15142:2;15131:9;15127:18;15118:6;15074:72;:::i;:::-;14833:320;;;;;:::o;15159:223::-;15299:34;15295:1;15287:6;15283:14;15276:58;15368:6;15363:2;15355:6;15351:15;15344:31;15159:223;:::o;15388:366::-;15530:3;15551:67;15615:2;15610:3;15551:67;:::i;:::-;15544:74;;15627:93;15716:3;15627:93;:::i;:::-;15745:2;15740:3;15736:12;15729:19;;15388:366;;;:::o;15760:419::-;15926:4;15964:2;15953:9;15949:18;15941:26;;16013:9;16007:4;16003:20;15999:1;15988:9;15984:17;15977:47;16041:131;16167:4;16041:131;:::i;:::-;16033:139;;15760:419;;;:::o;16185:226::-;16325:34;16321:1;16313:6;16309:14;16302:58;16394:9;16389:2;16381:6;16377:15;16370:34;16185:226;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:175::-;17354:27;17350:1;17342:6;17338:14;17331:51;17214:175;:::o;17395:366::-;17537:3;17558:67;17622:2;17617:3;17558:67;:::i;:::-;17551:74;;17634:93;17723:3;17634:93;:::i;:::-;17752:2;17747:3;17743:12;17736:19;;17395:366;;;:::o;17767:419::-;17933:4;17971:2;17960:9;17956:18;17948:26;;18020:9;18014:4;18010:20;18006:1;17995:9;17991:17;17984:47;18048:131;18174:4;18048:131;:::i;:::-;18040:139;;17767:419;;;:::o;18192:176::-;18332:28;18328:1;18320:6;18316:14;18309:52;18192:176;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:220::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:3;19375:2;19367:6;19363:15;19356:28;19171:220;:::o;19397:366::-;19539:3;19560:67;19624:2;19619:3;19560:67;:::i;:::-;19553:74;;19636:93;19725:3;19636:93;:::i;:::-;19754:2;19749:3;19745:12;19738:19;;19397:366;;;:::o;19769:419::-;19935:4;19973:2;19962:9;19958:18;19950:26;;20022:9;20016:4;20012:20;20008:1;19997:9;19993:17;19986:47;20050:131;20176:4;20050:131;:::i;:::-;20042:139;;19769:419;;;:::o;20194:143::-;20251:5;20282:6;20276:13;20267:22;;20298:33;20325:5;20298:33;:::i;:::-;20194:143;;;;:::o;20343:351::-;20413:6;20462:2;20450:9;20441:7;20437:23;20433:32;20430:119;;;20468:79;;:::i;:::-;20430:119;20588:1;20613:64;20669:7;20660:6;20649:9;20645:22;20613:64;:::i;:::-;20603:74;;20559:128;20343:351;;;;:::o;20700:332::-;20821:4;20859:2;20848:9;20844:18;20836:26;;20872:71;20940:1;20929:9;20925:17;20916:6;20872:71;:::i;:::-;20953:72;21021:2;21010:9;21006:18;20997:6;20953:72;:::i;:::-;20700:332;;;;;:::o;21038:137::-;21092:5;21123:6;21117:13;21108:22;;21139:30;21163:5;21139:30;:::i;:::-;21038:137;;;;:::o;21181:345::-;21248:6;21297:2;21285:9;21276:7;21272:23;21268:32;21265:119;;;21303:79;;:::i;:::-;21265:119;21423:1;21448:61;21501:7;21492:6;21481:9;21477:22;21448:61;:::i;:::-;21438:71;;21394:125;21181:345;;;;:::o;21532:222::-;21672:34;21668:1;21660:6;21656:14;21649:58;21741:5;21736:2;21728:6;21724:15;21717:30;21532:222;:::o;21760:366::-;21902:3;21923:67;21987:2;21982:3;21923:67;:::i;:::-;21916:74;;21999:93;22088:3;21999:93;:::i;:::-;22117:2;22112:3;22108:12;22101:19;;21760:366;;;:::o;22132:419::-;22298:4;22336:2;22325:9;22321:18;22313:26;;22385:9;22379:4;22375:20;22371:1;22360:9;22356:17;22349:47;22413:131;22539:4;22413:131;:::i;:::-;22405:139;;22132:419;;;:::o;22557:244::-;22697:34;22693:1;22685:6;22681:14;22674:58;22766:27;22761:2;22753:6;22749:15;22742:52;22557:244;:::o;22807:366::-;22949:3;22970:67;23034:2;23029:3;22970:67;:::i;:::-;22963:74;;23046:93;23135:3;23046:93;:::i;:::-;23164:2;23159:3;23155:12;23148:19;;22807:366;;;:::o;23179:419::-;23345:4;23383:2;23372:9;23368:18;23360:26;;23432:9;23426:4;23422:20;23418:1;23407:9;23403:17;23396:47;23460:131;23586:4;23460:131;:::i;:::-;23452:139;;23179:419;;;:::o;23604:224::-;23744:34;23740:1;23732:6;23728:14;23721:58;23813:7;23808:2;23800:6;23796:15;23789:32;23604:224;:::o;23834:366::-;23976:3;23997:67;24061:2;24056:3;23997:67;:::i;:::-;23990:74;;24073:93;24162:3;24073:93;:::i;:::-;24191:2;24186:3;24182:12;24175:19;;23834:366;;;:::o;24206:419::-;24372:4;24410:2;24399:9;24395:18;24387:26;;24459:9;24453:4;24449:20;24445:1;24434:9;24430:17;24423:47;24487:131;24613:4;24487:131;:::i;:::-;24479:139;;24206:419;;;:::o;24631:231::-;24771:34;24767:1;24759:6;24755:14;24748:58;24840:14;24835:2;24827:6;24823:15;24816:39;24631:231;:::o;24868:366::-;25010:3;25031:67;25095:2;25090:3;25031:67;:::i;:::-;25024:74;;25107:93;25196:3;25107:93;:::i;:::-;25225:2;25220:3;25216:12;25209:19;;24868:366;;;:::o;25240:419::-;25406:4;25444:2;25433:9;25429:18;25421:26;;25493:9;25487:4;25483:20;25479:1;25468:9;25464:17;25457:47;25521:131;25647:4;25521:131;:::i;:::-;25513:139;;25240:419;;;:::o;25665:229::-;25805:34;25801:1;25793:6;25789:14;25782:58;25874:12;25869:2;25861:6;25857:15;25850:37;25665:229;:::o;25900:366::-;26042:3;26063:67;26127:2;26122:3;26063:67;:::i;:::-;26056:74;;26139:93;26228:3;26139:93;:::i;:::-;26257:2;26252:3;26248:12;26241:19;;25900:366;;;:::o;26272:419::-;26438:4;26476:2;26465:9;26461:18;26453:26;;26525:9;26519:4;26515:20;26511:1;26500:9;26496:17;26489:47;26553:131;26679:4;26553:131;:::i;:::-;26545:139;;26272:419;;;:::o;26697:225::-;26837:34;26833:1;26825:6;26821:14;26814:58;26906:8;26901:2;26893:6;26889:15;26882:33;26697:225;:::o;26928:366::-;27070:3;27091:67;27155:2;27150:3;27091:67;:::i;:::-;27084:74;;27167:93;27256:3;27167:93;:::i;:::-;27285:2;27280:3;27276:12;27269:19;;26928:366;;;:::o;27300:419::-;27466:4;27504:2;27493:9;27489:18;27481:26;;27553:9;27547:4;27543:20;27539:1;27528:9;27524:17;27517:47;27581:131;27707:4;27581:131;:::i;:::-;27573:139;;27300:419;;;:::o;27725:147::-;27826:11;27863:3;27848:18;;27725:147;;;;:::o;27878:114::-;;:::o;27998:398::-;28157:3;28178:83;28259:1;28254:3;28178:83;:::i;:::-;28171:90;;28270:93;28359:3;28270:93;:::i;:::-;28388:1;28383:3;28379:11;28372:18;;27998:398;;;:::o;28402:379::-;28586:3;28608:147;28751:3;28608:147;:::i;:::-;28601:154;;28772:3;28765:10;;28402:379;;;:::o;28787:223::-;28927:34;28923:1;28915:6;28911:14;28904:58;28996:6;28991:2;28983:6;28979:15;28972:31;28787:223;:::o;29016:366::-;29158:3;29179:67;29243:2;29238:3;29179:67;:::i;:::-;29172:74;;29255:93;29344:3;29255:93;:::i;:::-;29373:2;29368:3;29364:12;29357:19;;29016:366;;;:::o;29388:419::-;29554:4;29592:2;29581:9;29577:18;29569:26;;29641:9;29635:4;29631:20;29627:1;29616:9;29612:17;29605:47;29669:131;29795:4;29669:131;:::i;:::-;29661:139;;29388:419;;;:::o;29813:221::-;29953:34;29949:1;29941:6;29937:14;29930:58;30022:4;30017:2;30009:6;30005:15;29998:29;29813:221;:::o;30040:366::-;30182:3;30203:67;30267:2;30262:3;30203:67;:::i;:::-;30196:74;;30279:93;30368:3;30279:93;:::i;:::-;30397:2;30392:3;30388:12;30381:19;;30040:366;;;:::o;30412:419::-;30578:4;30616:2;30605:9;30601:18;30593:26;;30665:9;30659:4;30655:20;30651:1;30640:9;30636:17;30629:47;30693:131;30819:4;30693:131;:::i;:::-;30685:139;;30412:419;;;:::o;30837:224::-;30977:34;30973:1;30965:6;30961:14;30954:58;31046:7;31041:2;31033:6;31029:15;31022:32;30837:224;:::o;31067:366::-;31209:3;31230:67;31294:2;31289:3;31230:67;:::i;:::-;31223:74;;31306:93;31395:3;31306:93;:::i;:::-;31424:2;31419:3;31415:12;31408:19;;31067:366;;;:::o;31439:419::-;31605:4;31643:2;31632:9;31628:18;31620:26;;31692:9;31686:4;31682:20;31678:1;31667:9;31663:17;31656:47;31720:131;31846:4;31720:131;:::i;:::-;31712:139;;31439:419;;;:::o;31864:222::-;32004:34;32000:1;31992:6;31988:14;31981:58;32073:5;32068:2;32060:6;32056:15;32049:30;31864:222;:::o;32092:366::-;32234:3;32255:67;32319:2;32314:3;32255:67;:::i;:::-;32248:74;;32331:93;32420:3;32331:93;:::i;:::-;32449:2;32444:3;32440:12;32433:19;;32092:366;;;:::o;32464:419::-;32630:4;32668:2;32657:9;32653:18;32645:26;;32717:9;32711:4;32707:20;32703:1;32692:9;32688:17;32681:47;32745:131;32871:4;32745:131;:::i;:::-;32737:139;;32464:419;;;:::o;32889:179::-;33029:31;33025:1;33017:6;33013:14;33006:55;32889:179;:::o;33074:366::-;33216:3;33237:67;33301:2;33296:3;33237:67;:::i;:::-;33230:74;;33313:93;33402:3;33313:93;:::i;:::-;33431:2;33426:3;33422:12;33415:19;;33074:366;;;:::o;33446:419::-;33612:4;33650:2;33639:9;33635:18;33627:26;;33699:9;33693:4;33689:20;33685:1;33674:9;33670:17;33663:47;33727:131;33853:4;33727:131;:::i;:::-;33719:139;;33446:419;;;:::o;33871:172::-;34011:24;34007:1;33999:6;33995:14;33988:48;33871:172;:::o;34049:366::-;34191:3;34212:67;34276:2;34271:3;34212:67;:::i;:::-;34205:74;;34288:93;34377:3;34288:93;:::i;:::-;34406:2;34401:3;34397:12;34390:19;;34049:366;;;:::o;34421:419::-;34587:4;34625:2;34614:9;34610:18;34602:26;;34674:9;34668:4;34664:20;34660:1;34649:9;34645:17;34638:47;34702:131;34828:4;34702:131;:::i;:::-;34694:139;;34421:419;;;:::o;34846:172::-;34986:24;34982:1;34974:6;34970:14;34963:48;34846:172;:::o;35024:366::-;35166:3;35187:67;35251:2;35246:3;35187:67;:::i;:::-;35180:74;;35263:93;35352:3;35263:93;:::i;:::-;35381:2;35376:3;35372:12;35365:19;;35024:366;;;:::o;35396:419::-;35562:4;35600:2;35589:9;35585:18;35577:26;;35649:9;35643:4;35639:20;35635:1;35624:9;35620:17;35613:47;35677:131;35803:4;35677:131;:::i;:::-;35669:139;;35396:419;;;:::o;35821:227::-;35961:34;35957:1;35949:6;35945:14;35938:58;36030:10;36025:2;36017:6;36013:15;36006:35;35821:227;:::o;36054:366::-;36196:3;36217:67;36281:2;36276:3;36217:67;:::i;:::-;36210:74;;36293:93;36382:3;36293:93;:::i;:::-;36411:2;36406:3;36402:12;36395:19;;36054:366;;;:::o;36426:419::-;36592:4;36630:2;36619:9;36615:18;36607:26;;36679:9;36673:4;36669:20;36665:1;36654:9;36650:17;36643:47;36707:131;36833:4;36707:131;:::i;:::-;36699:139;;36426:419;;;:::o;36851:174::-;36991:26;36987:1;36979:6;36975:14;36968:50;36851:174;:::o;37031:366::-;37173:3;37194:67;37258:2;37253:3;37194:67;:::i;:::-;37187:74;;37270:93;37359:3;37270:93;:::i;:::-;37388:2;37383:3;37379:12;37372:19;;37031:366;;;:::o;37403:419::-;37569:4;37607:2;37596:9;37592:18;37584:26;;37656:9;37650:4;37646:20;37642:1;37631:9;37627:17;37620:47;37684:131;37810:4;37684:131;:::i;:::-;37676:139;;37403:419;;;:::o;37828:229::-;37968:34;37964:1;37956:6;37952:14;37945:58;38037:12;38032:2;38024:6;38020:15;38013:37;37828:229;:::o;38063:366::-;38205:3;38226:67;38290:2;38285:3;38226:67;:::i;:::-;38219:74;;38302:93;38391:3;38302:93;:::i;:::-;38420:2;38415:3;38411:12;38404:19;;38063:366;;;:::o;38435:419::-;38601:4;38639:2;38628:9;38624:18;38616:26;;38688:9;38682:4;38678:20;38674:1;38663:9;38659:17;38652:47;38716:131;38842:4;38716:131;:::i;:::-;38708:139;;38435:419;;;:::o;38860:194::-;38900:4;38920:20;38938:1;38920:20;:::i;:::-;38915:25;;38954:20;38972:1;38954:20;:::i;:::-;38949:25;;38998:1;38995;38991:9;38983:17;;39022:1;39016:4;39013:11;39010:37;;;39027:18;;:::i;:::-;39010:37;38860:194;;;;:::o;39060:225::-;39200:34;39196:1;39188:6;39184:14;39177:58;39269:8;39264:2;39256:6;39252:15;39245:33;39060:225;:::o;39291:366::-;39433:3;39454:67;39518:2;39513:3;39454:67;:::i;:::-;39447:74;;39530:93;39619:3;39530:93;:::i;:::-;39648:2;39643:3;39639:12;39632:19;;39291:366;;;:::o;39663:419::-;39829:4;39867:2;39856:9;39852:18;39844:26;;39916:9;39910:4;39906:20;39902:1;39891:9;39887:17;39880:47;39944:131;40070:4;39944:131;:::i;:::-;39936:139;;39663:419;;;:::o;40088:320::-;40203:4;40241:2;40230:9;40226:18;40218:26;;40254:71;40322:1;40311:9;40307:17;40298:6;40254:71;:::i;:::-;40335:66;40397:2;40386:9;40382:18;40373:6;40335:66;:::i;:::-;40088:320;;;;;:::o;40414:180::-;40462:77;40459:1;40452:88;40559:4;40556:1;40549:15;40583:4;40580:1;40573:15;40600:180;40648:77;40645:1;40638:88;40745:4;40742:1;40735:15;40769:4;40766:1;40759:15;40786:143;40843:5;40874:6;40868:13;40859:22;;40890:33;40917:5;40890:33;:::i;:::-;40786:143;;;;:::o;40935:351::-;41005:6;41054:2;41042:9;41033:7;41029:23;41025:32;41022:119;;;41060:79;;:::i;:::-;41022:119;41180:1;41205:64;41261:7;41252:6;41241:9;41237:22;41205:64;:::i;:::-;41195:74;;41151:128;40935:351;;;;:::o;41292:85::-;41337:7;41366:5;41355:16;;41292:85;;;:::o;41383:158::-;41441:9;41474:61;41492:42;41501:32;41527:5;41501:32;:::i;:::-;41492:42;:::i;:::-;41474:61;:::i;:::-;41461:74;;41383:158;;;:::o;41547:147::-;41642:45;41681:5;41642:45;:::i;:::-;41637:3;41630:58;41547:147;;:::o;41700:114::-;41767:6;41801:5;41795:12;41785:22;;41700:114;;;:::o;41820:184::-;41919:11;41953:6;41948:3;41941:19;41993:4;41988:3;41984:14;41969:29;;41820:184;;;;:::o;42010:132::-;42077:4;42100:3;42092:11;;42130:4;42125:3;42121:14;42113:22;;42010:132;;;:::o;42148:108::-;42225:24;42243:5;42225:24;:::i;:::-;42220:3;42213:37;42148:108;;:::o;42262:179::-;42331:10;42352:46;42394:3;42386:6;42352:46;:::i;:::-;42430:4;42425:3;42421:14;42407:28;;42262:179;;;;:::o;42447:113::-;42517:4;42549;42544:3;42540:14;42532:22;;42447:113;;;:::o;42596:732::-;42715:3;42744:54;42792:5;42744:54;:::i;:::-;42814:86;42893:6;42888:3;42814:86;:::i;:::-;42807:93;;42924:56;42974:5;42924:56;:::i;:::-;43003:7;43034:1;43019:284;43044:6;43041:1;43038:13;43019:284;;;43120:6;43114:13;43147:63;43206:3;43191:13;43147:63;:::i;:::-;43140:70;;43233:60;43286:6;43233:60;:::i;:::-;43223:70;;43079:224;43066:1;43063;43059:9;43054:14;;43019:284;;;43023:14;43319:3;43312:10;;42720:608;;;42596:732;;;;:::o;43334:831::-;43597:4;43635:3;43624:9;43620:19;43612:27;;43649:71;43717:1;43706:9;43702:17;43693:6;43649:71;:::i;:::-;43730:80;43806:2;43795:9;43791:18;43782:6;43730:80;:::i;:::-;43857:9;43851:4;43847:20;43842:2;43831:9;43827:18;43820:48;43885:108;43988:4;43979:6;43885:108;:::i;:::-;43877:116;;44003:72;44071:2;44060:9;44056:18;44047:6;44003:72;:::i;:::-;44085:73;44153:3;44142:9;44138:19;44129:6;44085:73;:::i;:::-;43334:831;;;;;;;;:::o;44171:807::-;44420:4;44458:3;44447:9;44443:19;44435:27;;44472:71;44540:1;44529:9;44525:17;44516:6;44472:71;:::i;:::-;44553:72;44621:2;44610:9;44606:18;44597:6;44553:72;:::i;:::-;44635:80;44711:2;44700:9;44696:18;44687:6;44635:80;:::i;:::-;44725;44801:2;44790:9;44786:18;44777:6;44725:80;:::i;:::-;44815:73;44883:3;44872:9;44868:19;44859:6;44815:73;:::i;:::-;44898;44966:3;44955:9;44951:19;44942:6;44898:73;:::i;:::-;44171:807;;;;;;;;;:::o;44984:663::-;45072:6;45080;45088;45137:2;45125:9;45116:7;45112:23;45108:32;45105:119;;;45143:79;;:::i;:::-;45105:119;45263:1;45288:64;45344:7;45335:6;45324:9;45320:22;45288:64;:::i;:::-;45278:74;;45234:128;45401:2;45427:64;45483:7;45474:6;45463:9;45459:22;45427:64;:::i;:::-;45417:74;;45372:129;45540:2;45566:64;45622:7;45613:6;45602:9;45598:22;45566:64;:::i;:::-;45556:74;;45511:129;44984:663;;;;;:::o

Swarm Source

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