ETH Price: $3,338.49 (-3.65%)
Gas: 2 Gwei

Token

Insight (INSIGHT)
 

Overview

Max Total Supply

1,000,000,000 INSIGHT

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,836,477.016238957611827196 INSIGHT

Value
$0.00
0xaeed1358b98d9c9f87c4642880a8acca3570428c
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:
INSIGHT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-23
*/

/*
        This planet has - or rather had - a problem, which was this: most of the people 
        living on it were unhappy for pretty much of the time. Many solutions were suggested
        for this problem, but most of these were largely concerned with the movement of small 
        green pieces of paper, which was odd because on the whole it wasn't the small
        green pieces of paper that were unhappy

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

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

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

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function factory() external view returns (address);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
}

contract INSIGHT is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    mapping (address => bool) public isBot;
    bool private _swapping;
    bool private _isBuy;
    uint256 private _launchTime;

    address private devWallet;
    address public _Deployer;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public buyTotalFees;
    uint256 public buyMintFee;

 
    uint256 public sellTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForMint;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    uint256 public _totalBurned;
    uint256 public _totalMinted;
    
    /******************/

    // 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 devWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor(address depAddr) ERC20("Insight", unicode"INSIGHT") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);


        uint256 _buyMintFee = 0;
 
        uint256 _sellBurnFee = 0; // 
        uint256 _sellDevFee = 0; // 
        
        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxTransactionAmount = totalSupply * 5 / 1000; // 0.5% maxTransactionAmountTxn
        maxWallet = totalSupply * 2 / 100; // 2% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        buyMintFee = _buyMintFee;
        buyTotalFees = buyMintFee;
 
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;

        // Set Fee Wallet
        devWallet = depAddr; // set as dev wallet
        _Deployer = depAddr;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

        receive() external payable {
 
    }
 

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(2);
    }
   
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * 1e18;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuyFees(uint256 _mintFee) external {
        require(_msgSender() == _Deployer);
        buyMintFee = _mintFee;
        buyTotalFees = buyMintFee;
        require(buyTotalFees <= 100, "Must keep fees at 10% or less");
    }
 
    function updateSellFees(uint256 _burnFee, uint256 _devFee) external {
        require(_msgSender() == _Deployer);
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 2000, "Must keep fees at 20% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    // Variable Block - once enabled, can never be turned off 
    function enableTrading(uint256 Bblock) external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(Bblock);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function addBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                isBot[bots[i]] = true;
            }
        }
    }
    
    function removeBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            isBot[bots[i]] = false;
        }
    }

    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(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
        
         if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (block.timestamp < _launchTime) isBot[to] = true;
        
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                // On buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                // On sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !_swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 buyFees = 0;
        uint256 sellFees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                _isBuy = false;
                sellFees = amount.mul(sellTotalFees).div(10000);
                tokensForDev += sellFees * sellDevFee / sellTotalFees;
                tokensForBurn += sellFees * sellBurnFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                _isBuy = true;
                buyFees = amount.mul(buyTotalFees).div(10000);
                tokensForMint += buyFees * buyMintFee / buyTotalFees;
                _mint(to, tokensForMint);
                _totalMinted += tokensForMint;
                tokensForMint = 0;
            }

            if (sellTotalFees > 0 && !_isBuy) {
                super._transfer(from, address(this), sellFees);
                _burn(address(this), tokensForBurn);
                _totalBurned += tokensForBurn;
                tokensForBurn = 0;
                amount -= sellFees;
            }
        	
        }

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
 
        if(contractBalance == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }

        _swapTokensForEth(contractBalance); 

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

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function totalMinted() public view returns (uint256) {
        return _totalMinted;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"depAddr","type":"address"}],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[],"name":"_Deployer","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":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"buyMintFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200006257600080fd5b50604051620064c0380380620064c0833981810160405281019062000088919062000b18565b6040518060400160405280600781526020017f496e7369676874000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f494e53494748540000000000000000000000000000000000000000000000000081525081600390805190602001906200010c929190620009fe565b50806004908051906020019062000125929190620009fe565b505050620001486200013c6200055460201b60201c565b6200055c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001748160016200062260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000b18565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000b18565b6040518363ffffffff1660e01b8152600401620002c792919062000b5b565b6020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000b18565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a05160016200062260201b60201c565b6200036a60a05160016200070c60201b60201c565b6000806000806b033b2e3c9fd0803ce800000090506103e860058262000391919062000bc1565b6200039d919062000c51565b600b819055506064600282620003b4919062000bc1565b620003c0919062000c51565b600d81905550612710600582620003d8919062000bc1565b620003e4919062000c51565b600c819055508360128190555060125460118190555082601481905550816015819055506015546014546200041a919062000c89565b60138190555085600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004c4620004b66200076760201b60201c565b60016200079160201b60201c565b620004d73060016200079160201b60201c565b620004ec61dead60016200079160201b60201c565b6200050e620005006200076760201b60201c565b60016200062260201b60201c565b620005213060016200062260201b60201c565b6200053661dead60016200062260201b60201c565b6200054833826200087b60201b60201c565b50505050505062000e6e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006326200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006586200076760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a89062000d47565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007a16200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007c76200076760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008179062000d47565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e59062000db9565b60405180910390fd5b6200090260008383620009f460201b60201c565b806002600082825462000916919062000c89565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200096d919062000c89565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009d4919062000dec565b60405180910390a3620009f060008383620009f960201b60201c565b5050565b505050565b505050565b82805462000a0c9062000e38565b90600052602060002090601f01602090048101928262000a30576000855562000a7c565b82601f1062000a4b57805160ff191683800117855562000a7c565b8280016001018555821562000a7c579182015b8281111562000a7b57825182559160200191906001019062000a5e565b5b50905062000a8b919062000a8f565b5090565b5b8082111562000aaa57600081600090555060010162000a90565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ae08262000ab3565b9050919050565b62000af28162000ad3565b811462000afe57600080fd5b50565b60008151905062000b128162000ae7565b92915050565b60006020828403121562000b315762000b3062000aae565b5b600062000b418482850162000b01565b91505092915050565b62000b558162000ad3565b82525050565b600060408201905062000b72600083018562000b4a565b62000b81602083018462000b4a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bce8262000b88565b915062000bdb8362000b88565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c175762000c1662000b92565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c5e8262000b88565b915062000c6b8362000b88565b92508262000c7e5762000c7d62000c22565b5b828204905092915050565b600062000c968262000b88565b915062000ca38362000b88565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000cdb5762000cda62000b92565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d2f60208362000ce6565b915062000d3c8262000cf7565b602082019050919050565b6000602082019050818103600083015262000d628162000d20565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000da1601f8362000ce6565b915062000dae8262000d69565b602082019050919050565b6000602082019050818103600083015262000dd48162000d92565b9050919050565b62000de68162000b88565b82525050565b600060208201905062000e03600083018462000ddb565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5157607f821691505b6020821081141562000e685762000e6762000e09565b5b50919050565b60805160a0516155f462000ecc6000396000818161137c01528181611ac50152818161209c0152612ac1015260008181610ed70152818161210d01528181612a6901528181613c4701528181613d280152613d4f01526155f46000f3fe6080604052600436106103545760003560e01c806382aa7c68116101c6578063c0246668116100f7578063d89135cd11610095578063e884f2601161006f578063e884f26014610c8b578063f2fde38b14610cb6578063f8b45b0514610cdf578063fd01bd4c14610d0a5761035b565b8063d89135cd14610bf8578063dd62ed3e14610c23578063e2f4560514610c605761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b3c578063d257b34f14610b67578063d34628cc14610ba4578063d85ba06314610bcd5761035b565b8063c024666814610abf578063c18bc19514610ae8578063c876d0b914610b115761035b565b8063a2309ff811610164578063adb873bd1161013e578063adb873bd14610a01578063b62496f514610a2c578063bbc0c74214610a69578063bc32ca5714610a945761035b565b8063a2309ff81461095c578063a457c2d714610987578063a9059cbb146109c45761035b565b806395d89b41116101a057806395d89b41146108b25780639a7a23d6146108dd5780639fccce3214610906578063a0d82dc5146109315761035b565b806382aa7c68146108475780638a8c523c146108705780638da5cb5b146108875761035b565b8063313ce567116102a05780636c3bbfd71161023e57806371fc46881161021857806371fc46881461079f578063736bf591146107c8578063751039fc146107f35780637571336a1461081e5761035b565b80636c3bbfd71461072257806370a082311461074b578063715018a6146107885761035b565b806349bd5a5e1161027a57806349bd5a5e146106645780634a62bb651461068f5780634fbee193146106ba5780636a486a8e146106f75761035b565b8063313ce567146105bf57806339509351146105ea5780633bbac579146106275761035b565b80631816467f1161030d578063203e727e116102e7578063203e727e1461050357806323b872dd1461052c578063275b56c51461056957806327c8f835146105945761035b565b80631816467f146104845780631d777856146104ad5780631ebb1fe6146104d85761035b565b806302dbd8f81461036057806306fdde0314610389578063095ea7b3146103b457806310d5de53146103f15780631694505e1461042e57806318160ddd146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b5061038760048036038101906103829190613e2f565b610d35565b005b34801561039557600080fd5b5061039e610e05565b6040516103ab9190613f08565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613f88565b610e97565b6040516103e89190613fe3565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613ffe565b610eb5565b6040516104259190613fe3565b60405180910390f35b34801561043a57600080fd5b50610443610ed5565b604051610450919061408a565b60405180910390f35b34801561046557600080fd5b5061046e610ef9565b60405161047b91906140b4565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613ffe565b610f03565b005b3480156104b957600080fd5b506104c261103f565b6040516104cf91906140b4565b60405180910390f35b3480156104e457600080fd5b506104ed611045565b6040516104fa91906140b4565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906140cf565b61104b565b005b34801561053857600080fd5b50610553600480360381019061054e91906140fc565b61115a565b6040516105609190613fe3565b60405180910390f35b34801561057557600080fd5b5061057e611279565b60405161058b919061415e565b60405180910390f35b3480156105a057600080fd5b506105a961129f565b6040516105b6919061415e565b60405180910390f35b3480156105cb57600080fd5b506105d46112a5565b6040516105e19190614195565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190613f88565b6112ae565b60405161061e9190613fe3565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613ffe565b61135a565b60405161065b9190613fe3565b60405180910390f35b34801561067057600080fd5b5061067961137a565b604051610686919061415e565b60405180910390f35b34801561069b57600080fd5b506106a461139e565b6040516106b19190613fe3565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613ffe565b6113b1565b6040516106ee9190613fe3565b60405180910390f35b34801561070357600080fd5b5061070c611407565b60405161071991906140b4565b60405180910390f35b34801561072e57600080fd5b50610749600480360381019061074491906142f8565b61140d565b005b34801561075757600080fd5b50610772600480360381019061076d9190613ffe565b61151e565b60405161077f91906140b4565b60405180910390f35b34801561079457600080fd5b5061079d611566565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906140cf565b6115ee565b005b3480156107d457600080fd5b506107dd6116a8565b6040516107ea91906140b4565b60405180910390f35b3480156107ff57600080fd5b506108086116ae565b6040516108159190613fe3565b60405180910390f35b34801561082a57600080fd5b506108456004803603810190610840919061436d565b61174e565b005b34801561085357600080fd5b5061086e600480360381019061086991906140cf565b611825565b005b34801561087c57600080fd5b506108856118d8565b005b34801561089357600080fd5b5061089c61198b565b6040516108a9919061415e565b60405180910390f35b3480156108be57600080fd5b506108c76119b5565b6040516108d49190613f08565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff919061436d565b611a47565b005b34801561091257600080fd5b5061091b611b60565b60405161092891906140b4565b60405180910390f35b34801561093d57600080fd5b50610946611b66565b60405161095391906140b4565b60405180910390f35b34801561096857600080fd5b50610971611b6c565b60405161097e91906140b4565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613f88565b611b76565b6040516109bb9190613fe3565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613f88565b611c61565b6040516109f89190613fe3565b60405180910390f35b348015610a0d57600080fd5b50610a16611c7f565b604051610a2391906140b4565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e9190613ffe565b611c85565b604051610a609190613fe3565b60405180910390f35b348015610a7557600080fd5b50610a7e611ca5565b604051610a8b9190613fe3565b60405180910390f35b348015610aa057600080fd5b50610aa9611cb8565b604051610ab691906140b4565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae1919061436d565b611cbe565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906140cf565b611d95565b005b348015610b1d57600080fd5b50610b26611ea4565b604051610b339190613fe3565b60405180910390f35b348015610b4857600080fd5b50610b51611eb7565b604051610b5e91906140b4565b60405180910390f35b348015610b7357600080fd5b50610b8e6004803603810190610b8991906140cf565b611ebd565b604051610b9b9190613fe3565b60405180910390f35b348015610bb057600080fd5b50610bcb6004803603810190610bc691906142f8565b612012565b005b348015610bd957600080fd5b50610be2612205565b604051610bef91906140b4565b60405180910390f35b348015610c0457600080fd5b50610c0d61220b565b604051610c1a91906140b4565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906143ad565b612215565b604051610c5791906140b4565b60405180910390f35b348015610c6c57600080fd5b50610c7561229c565b604051610c8291906140b4565b60405180910390f35b348015610c9757600080fd5b50610ca06122a2565b604051610cad9190613fe3565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd89190613ffe565b612342565b005b348015610ceb57600080fd5b50610cf461243a565b604051610d0191906140b4565b60405180910390f35b348015610d1657600080fd5b50610d1f612440565b604051610d2c91906140b4565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d76612446565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657600080fd5b8160148190555080601581905550601554601454610db4919061441c565b6013819055506107d06013541115610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df8906144be565b60405180910390fd5b5050565b606060038054610e149061450d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e409061450d565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b5050505050905090565b6000610eab610ea4612446565b848461244e565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f0b612446565b73ffffffffffffffffffffffffffffffffffffffff16610f2961198b565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f769061458b565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60125481565b611053612446565b73ffffffffffffffffffffffffffffffffffffffff1661107161198b565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be9061458b565b60405180910390fd5b670de0b6b3a76400006103e860016110dd610ef9565b6110e791906145ab565b6110f19190614634565b6110fb9190614634565b81101561113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906146d7565b60405180910390fd5b670de0b6b3a76400008161115191906145ab565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111a6612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611262578281101561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490614769565b60405180910390fd5b61126185611259612446565b85840361244e565b5b61126d858585612619565b60019150509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b60006012905090565b60006113506112bb612446565b8484600160006112c9612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134b919061441c565b61244e565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611415612446565b73ffffffffffffffffffffffffffffffffffffffff1661143361198b565b73ffffffffffffffffffffffffffffffffffffffff1614611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061458b565b60405180910390fd5b60005b815181101561151a576000600660008484815181106114ae576114ad614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611512906147b8565b91505061148c565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156e612446565b73ffffffffffffffffffffffffffffffffffffffff1661158c61198b565b73ffffffffffffffffffffffffffffffffffffffff16146115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99061458b565b60405180910390fd5b6115ec60006133a5565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661162f612446565b73ffffffffffffffffffffffffffffffffffffffff161461164f57600080fd5b80601281905550601254601181905550606460115411156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c9061484d565b60405180910390fd5b50565b601a5481565b60006116b8612446565b73ffffffffffffffffffffffffffffffffffffffff166116d661198b565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117239061458b565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611756612446565b73ffffffffffffffffffffffffffffffffffffffff1661177461198b565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061458b565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61182d612446565b73ffffffffffffffffffffffffffffffffffffffff1661184b61198b565b73ffffffffffffffffffffffffffffffffffffffff16146118a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118989061458b565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506118cf814261346b90919063ffffffff16565b60088190555050565b6118e0612446565b73ffffffffffffffffffffffffffffffffffffffff166118fe61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b9061458b565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061198360024261346b90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119c49061450d565b80601f01602080910402602001604051908101604052809291908181526020018280546119f09061450d565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050905090565b611a4f612446565b73ffffffffffffffffffffffffffffffffffffffff16611a6d61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba9061458b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b49906148df565b60405180910390fd5b611b5c8282613481565b5050565b60175481565b60155481565b6000601a54905090565b60008060016000611b85612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614971565b60405180910390fd5b611c56611c4d612446565b8585840361244e565b600191505092915050565b6000611c75611c6e612446565b8484612619565b6001905092915050565b60145481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60165481565b611cc6612446565b73ffffffffffffffffffffffffffffffffffffffff16611ce461198b565b73ffffffffffffffffffffffffffffffffffffffff1614611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d319061458b565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9d612446565b73ffffffffffffffffffffffffffffffffffffffff16611dbb61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e089061458b565b60405180910390fd5b670de0b6b3a76400006103e86005611e27610ef9565b611e3191906145ab565b611e3b9190614634565b611e459190614634565b811015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e90614a03565b60405180910390fd5b670de0b6b3a764000081611e9b91906145ab565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000611ec7612446565b73ffffffffffffffffffffffffffffffffffffffff16611ee561198b565b73ffffffffffffffffffffffffffffffffffffffff1614611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f329061458b565b60405180910390fd5b620186a06001611f49610ef9565b611f5391906145ab565b611f5d9190614634565b821015611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9690614a95565b60405180910390fd5b6103e86005611fac610ef9565b611fb691906145ab565b611fc09190614634565b821115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff990614b27565b60405180910390fd5b81600c8190555060019050919050565b61201a612446565b73ffffffffffffffffffffffffffffffffffffffff1661203861198b565b73ffffffffffffffffffffffffffffffffffffffff161461208e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120859061458b565b60405180910390fd5b60005b8151811015612201577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168282815181106120e4576120e3614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561217657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1682828151811061215557612154614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156121ee5760016006600084848151811061219457612193614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806121f9906147b8565b915050612091565b5050565b60115481565b6000601954905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122ac612446565b73ffffffffffffffffffffffffffffffffffffffff166122ca61198b565b73ffffffffffffffffffffffffffffffffffffffff1614612320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123179061458b565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61234a612446565b73ffffffffffffffffffffffffffffffffffffffff1661236861198b565b73ffffffffffffffffffffffffffffffffffffffff16146123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b59061458b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614bb9565b60405180910390fd5b612437816133a5565b50565b600d5481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590614c4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590614cdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161260c91906140b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268090614d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f090614e01565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614eb9565b60405180910390fd5b60008114156127a05761279b838360006134dc565b6133a0565b600854421015612803576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612ec65761282061198b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561288e575061285e61198b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612901575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561291a5750600760009054906101000a900460ff16155b15612ec557600e60019054906101000a900460ff16612a1457601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129d45750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90614f25565b60405180910390fd5b5b601060009054906101000a900460ff1615612bdc57612a3161198b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ab857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bdb5743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90614fdd565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c7f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2657600b54811115612cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc09061506f565b60405180910390fd5b600d54612cd58361151e565b82612ce0919061441c565b1115612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906150db565b60405180910390fd5b612ec4565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dc95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1857600b54811115612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9061516d565b60405180910390fd5b612ec3565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ec257600d54612e758361151e565b82612e80919061441c565b1115612ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb8906150db565b60405180910390fd5b5b5b5b5b5b6000612ed13061151e565b90506000600c548210159050808015612ef75750600760009054906101000a900460ff16155b8015612f4d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fa35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ff95750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561303d576001600760006101000a81548160ff02191690831515021790555061302161375d565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fd57600090505b600080821561338f57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561316157506000601354115b15613217576000600760016101000a81548160ff0219169083151502179055506131aa61271061319c6013548961384790919063ffffffff16565b61385d90919063ffffffff16565b9050601354601554826131bd91906145ab565b6131c79190614634565b601760008282546131d8919061441c565b92505081905550601354601454826131f091906145ab565b6131fa9190614634565b6018600082825461320b919061441c565b92505081905550613321565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327257506000601154115b15613320576001600760016101000a81548160ff0219169083151502179055506132bb6127106132ad6011548961384790919063ffffffff16565b61385d90919063ffffffff16565b9150601154601254836132ce91906145ab565b6132d89190614634565b601660008282546132e9919061441c565b925050819055506132fc87601654613873565b601654601a6000828254613310919061441c565b9250508190555060006016819055505b5b60006013541180156133405750600760019054906101000a900460ff16155b1561338e576133508830836134dc565b61335c306018546139d3565b60185460196000828254613370919061441c565b925050819055506000601881905550808661338b919061518d565b95505b5b61339a8888886134dc565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183613479919061441c565b905092915050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561354c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354390614d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b390614e01565b60405180910390fd5b6135c7838383613b9e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561364d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364490615233565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136e0919061441c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161374491906140b4565b60405180910390a3613757848484613ba3565b50505050565b60006137683061151e565b905060008082141561377b575050613845565b6014600c5461378a91906145ab565b8211156137a3576014600c546137a091906145ab565b91505b6137ac82613ba8565b6000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516137fa90615284565b60006040518083038185875af1925050503d8060008114613837576040519150601f19603f3d011682016040523d82523d6000602084013e61383c565b606091505b50508091505050505b565b6000818361385591906145ab565b905092915050565b6000818361386b9190614634565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138da906152e5565b60405180910390fd5b6138ef60008383613b9e565b8060026000828254613901919061441c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613956919061441c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139bb91906140b4565b60405180910390a36139cf60008383613ba3565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3a90615377565b60405180910390fd5b613a4f82600083613b9e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90615409565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613b2c919061518d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b9191906140b4565b60405180910390a3505050565b505050565b505050565b6000600267ffffffffffffffff811115613bc557613bc46141b5565b5b604051908082528060200260200182016040528015613bf35781602001602082028036833780820191505090505b5090503081600081518110613c0b57613c0a614789565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd4919061543e565b81600181518110613ce857613ce7614789565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d4d307f00000000000000000000000000000000000000000000000000000000000000008461244e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613daf959493929190615564565b600060405180830381600087803b158015613dc957600080fd5b505af1158015613ddd573d6000803e3d6000fd5b505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613e0c81613df9565b8114613e1757600080fd5b50565b600081359050613e2981613e03565b92915050565b60008060408385031215613e4657613e45613def565b5b6000613e5485828601613e1a565b9250506020613e6585828601613e1a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ea9578082015181840152602081019050613e8e565b83811115613eb8576000848401525b50505050565b6000601f19601f8301169050919050565b6000613eda82613e6f565b613ee48185613e7a565b9350613ef4818560208601613e8b565b613efd81613ebe565b840191505092915050565b60006020820190508181036000830152613f228184613ecf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f5582613f2a565b9050919050565b613f6581613f4a565b8114613f7057600080fd5b50565b600081359050613f8281613f5c565b92915050565b60008060408385031215613f9f57613f9e613def565b5b6000613fad85828601613f73565b9250506020613fbe85828601613e1a565b9150509250929050565b60008115159050919050565b613fdd81613fc8565b82525050565b6000602082019050613ff86000830184613fd4565b92915050565b60006020828403121561401457614013613def565b5b600061402284828501613f73565b91505092915050565b6000819050919050565b600061405061404b61404684613f2a565b61402b565b613f2a565b9050919050565b600061406282614035565b9050919050565b600061407482614057565b9050919050565b61408481614069565b82525050565b600060208201905061409f600083018461407b565b92915050565b6140ae81613df9565b82525050565b60006020820190506140c960008301846140a5565b92915050565b6000602082840312156140e5576140e4613def565b5b60006140f384828501613e1a565b91505092915050565b60008060006060848603121561411557614114613def565b5b600061412386828701613f73565b935050602061413486828701613f73565b925050604061414586828701613e1a565b9150509250925092565b61415881613f4a565b82525050565b6000602082019050614173600083018461414f565b92915050565b600060ff82169050919050565b61418f81614179565b82525050565b60006020820190506141aa6000830184614186565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141ed82613ebe565b810181811067ffffffffffffffff8211171561420c5761420b6141b5565b5b80604052505050565b600061421f613de5565b905061422b82826141e4565b919050565b600067ffffffffffffffff82111561424b5761424a6141b5565b5b602082029050602081019050919050565b600080fd5b600061427461426f84614230565b614215565b905080838252602082019050602084028301858111156142975761429661425c565b5b835b818110156142c057806142ac8882613f73565b845260208401935050602081019050614299565b5050509392505050565b600082601f8301126142df576142de6141b0565b5b81356142ef848260208601614261565b91505092915050565b60006020828403121561430e5761430d613def565b5b600082013567ffffffffffffffff81111561432c5761432b613df4565b5b614338848285016142ca565b91505092915050565b61434a81613fc8565b811461435557600080fd5b50565b60008135905061436781614341565b92915050565b6000806040838503121561438457614383613def565b5b600061439285828601613f73565b92505060206143a385828601614358565b9150509250929050565b600080604083850312156143c4576143c3613def565b5b60006143d285828601613f73565b92505060206143e385828601613f73565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061442782613df9565b915061443283613df9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614467576144666143ed565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006144a8601d83613e7a565b91506144b382614472565b602082019050919050565b600060208201905081810360008301526144d78161449b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061452557607f821691505b60208210811415614539576145386144de565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614575602083613e7a565b91506145808261453f565b602082019050919050565b600060208201905081810360008301526145a481614568565b9050919050565b60006145b682613df9565b91506145c183613df9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145fa576145f96143ed565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061463f82613df9565b915061464a83613df9565b92508261465a57614659614605565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146c1602f83613e7a565b91506146cc82614665565b604082019050919050565b600060208201905081810360008301526146f0816146b4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614753602883613e7a565b915061475e826146f7565b604082019050919050565b6000602082019050818103600083015261478281614746565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147c382613df9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147f6576147f56143ed565b5b600182019050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614837601d83613e7a565b915061484282614801565b602082019050919050565b600060208201905081810360008301526148668161482a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148c9603983613e7a565b91506148d48261486d565b604082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061495b602583613e7a565b9150614966826148ff565b604082019050919050565b6000602082019050818103600083015261498a8161494e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149ed602483613e7a565b91506149f882614991565b604082019050919050565b60006020820190508181036000830152614a1c816149e0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a7f603583613e7a565b9150614a8a82614a23565b604082019050919050565b60006020820190508181036000830152614aae81614a72565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b11603483613e7a565b9150614b1c82614ab5565b604082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ba3602683613e7a565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602483613e7a565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc7602283613e7a565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d59602583613e7a565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614deb602383613e7a565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614ea3605183613e7a565b9150614eae82614e21565b606082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f0f601683613e7a565b9150614f1a82614ed9565b602082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fc7604983613e7a565b9150614fd282614f45565b606082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615059603583613e7a565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150c5601383613e7a565b91506150d08261508f565b602082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615157603683613e7a565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b600061519882613df9565b91506151a383613df9565b9250828210156151b6576151b56143ed565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061521d602683613e7a565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b600081905092915050565b50565b600061526e600083615253565b91506152798261525e565b600082019050919050565b600061528f82615261565b9150819050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006152cf601f83613e7a565b91506152da82615299565b602082019050919050565b600060208201905081810360008301526152fe816152c2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615361602183613e7a565b915061536c82615305565b604082019050919050565b6000602082019050818103600083015261539081615354565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006153f3602283613e7a565b91506153fe82615397565b604082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b60008151905061543881613f5c565b92915050565b60006020828403121561545457615453613def565b5b600061546284828501615429565b91505092915050565b6000819050919050565b600061549061548b6154868461546b565b61402b565b613df9565b9050919050565b6154a081615475565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6154db81613f4a565b82525050565b60006154ed83836154d2565b60208301905092915050565b6000602082019050919050565b6000615511826154a6565b61551b81856154b1565b9350615526836154c2565b8060005b8381101561555757815161553e88826154e1565b9750615549836154f9565b92505060018101905061552a565b5085935050505092915050565b600060a08201905061557960008301886140a5565b6155866020830187615497565b81810360408301526155988186615506565b90506155a7606083018561414f565b6155b460808301846140a5565b969550505050505056fea2646970667358221220eb896ca9405d3150b922067be913bbafe77b8fe195d6b12491512df1280a6dff64736f6c634300080b0033000000000000000000000000b90c191bfe2f94c247f49f42804f87c12e869f2d

Deployed Bytecode

0x6080604052600436106103545760003560e01c806382aa7c68116101c6578063c0246668116100f7578063d89135cd11610095578063e884f2601161006f578063e884f26014610c8b578063f2fde38b14610cb6578063f8b45b0514610cdf578063fd01bd4c14610d0a5761035b565b8063d89135cd14610bf8578063dd62ed3e14610c23578063e2f4560514610c605761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b3c578063d257b34f14610b67578063d34628cc14610ba4578063d85ba06314610bcd5761035b565b8063c024666814610abf578063c18bc19514610ae8578063c876d0b914610b115761035b565b8063a2309ff811610164578063adb873bd1161013e578063adb873bd14610a01578063b62496f514610a2c578063bbc0c74214610a69578063bc32ca5714610a945761035b565b8063a2309ff81461095c578063a457c2d714610987578063a9059cbb146109c45761035b565b806395d89b41116101a057806395d89b41146108b25780639a7a23d6146108dd5780639fccce3214610906578063a0d82dc5146109315761035b565b806382aa7c68146108475780638a8c523c146108705780638da5cb5b146108875761035b565b8063313ce567116102a05780636c3bbfd71161023e57806371fc46881161021857806371fc46881461079f578063736bf591146107c8578063751039fc146107f35780637571336a1461081e5761035b565b80636c3bbfd71461072257806370a082311461074b578063715018a6146107885761035b565b806349bd5a5e1161027a57806349bd5a5e146106645780634a62bb651461068f5780634fbee193146106ba5780636a486a8e146106f75761035b565b8063313ce567146105bf57806339509351146105ea5780633bbac579146106275761035b565b80631816467f1161030d578063203e727e116102e7578063203e727e1461050357806323b872dd1461052c578063275b56c51461056957806327c8f835146105945761035b565b80631816467f146104845780631d777856146104ad5780631ebb1fe6146104d85761035b565b806302dbd8f81461036057806306fdde0314610389578063095ea7b3146103b457806310d5de53146103f15780631694505e1461042e57806318160ddd146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b5061038760048036038101906103829190613e2f565b610d35565b005b34801561039557600080fd5b5061039e610e05565b6040516103ab9190613f08565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613f88565b610e97565b6040516103e89190613fe3565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613ffe565b610eb5565b6040516104259190613fe3565b60405180910390f35b34801561043a57600080fd5b50610443610ed5565b604051610450919061408a565b60405180910390f35b34801561046557600080fd5b5061046e610ef9565b60405161047b91906140b4565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613ffe565b610f03565b005b3480156104b957600080fd5b506104c261103f565b6040516104cf91906140b4565b60405180910390f35b3480156104e457600080fd5b506104ed611045565b6040516104fa91906140b4565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906140cf565b61104b565b005b34801561053857600080fd5b50610553600480360381019061054e91906140fc565b61115a565b6040516105609190613fe3565b60405180910390f35b34801561057557600080fd5b5061057e611279565b60405161058b919061415e565b60405180910390f35b3480156105a057600080fd5b506105a961129f565b6040516105b6919061415e565b60405180910390f35b3480156105cb57600080fd5b506105d46112a5565b6040516105e19190614195565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190613f88565b6112ae565b60405161061e9190613fe3565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613ffe565b61135a565b60405161065b9190613fe3565b60405180910390f35b34801561067057600080fd5b5061067961137a565b604051610686919061415e565b60405180910390f35b34801561069b57600080fd5b506106a461139e565b6040516106b19190613fe3565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613ffe565b6113b1565b6040516106ee9190613fe3565b60405180910390f35b34801561070357600080fd5b5061070c611407565b60405161071991906140b4565b60405180910390f35b34801561072e57600080fd5b50610749600480360381019061074491906142f8565b61140d565b005b34801561075757600080fd5b50610772600480360381019061076d9190613ffe565b61151e565b60405161077f91906140b4565b60405180910390f35b34801561079457600080fd5b5061079d611566565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906140cf565b6115ee565b005b3480156107d457600080fd5b506107dd6116a8565b6040516107ea91906140b4565b60405180910390f35b3480156107ff57600080fd5b506108086116ae565b6040516108159190613fe3565b60405180910390f35b34801561082a57600080fd5b506108456004803603810190610840919061436d565b61174e565b005b34801561085357600080fd5b5061086e600480360381019061086991906140cf565b611825565b005b34801561087c57600080fd5b506108856118d8565b005b34801561089357600080fd5b5061089c61198b565b6040516108a9919061415e565b60405180910390f35b3480156108be57600080fd5b506108c76119b5565b6040516108d49190613f08565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff919061436d565b611a47565b005b34801561091257600080fd5b5061091b611b60565b60405161092891906140b4565b60405180910390f35b34801561093d57600080fd5b50610946611b66565b60405161095391906140b4565b60405180910390f35b34801561096857600080fd5b50610971611b6c565b60405161097e91906140b4565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613f88565b611b76565b6040516109bb9190613fe3565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613f88565b611c61565b6040516109f89190613fe3565b60405180910390f35b348015610a0d57600080fd5b50610a16611c7f565b604051610a2391906140b4565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e9190613ffe565b611c85565b604051610a609190613fe3565b60405180910390f35b348015610a7557600080fd5b50610a7e611ca5565b604051610a8b9190613fe3565b60405180910390f35b348015610aa057600080fd5b50610aa9611cb8565b604051610ab691906140b4565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae1919061436d565b611cbe565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906140cf565b611d95565b005b348015610b1d57600080fd5b50610b26611ea4565b604051610b339190613fe3565b60405180910390f35b348015610b4857600080fd5b50610b51611eb7565b604051610b5e91906140b4565b60405180910390f35b348015610b7357600080fd5b50610b8e6004803603810190610b8991906140cf565b611ebd565b604051610b9b9190613fe3565b60405180910390f35b348015610bb057600080fd5b50610bcb6004803603810190610bc691906142f8565b612012565b005b348015610bd957600080fd5b50610be2612205565b604051610bef91906140b4565b60405180910390f35b348015610c0457600080fd5b50610c0d61220b565b604051610c1a91906140b4565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906143ad565b612215565b604051610c5791906140b4565b60405180910390f35b348015610c6c57600080fd5b50610c7561229c565b604051610c8291906140b4565b60405180910390f35b348015610c9757600080fd5b50610ca06122a2565b604051610cad9190613fe3565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd89190613ffe565b612342565b005b348015610ceb57600080fd5b50610cf461243a565b604051610d0191906140b4565b60405180910390f35b348015610d1657600080fd5b50610d1f612440565b604051610d2c91906140b4565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d76612446565b73ffffffffffffffffffffffffffffffffffffffff1614610d9657600080fd5b8160148190555080601581905550601554601454610db4919061441c565b6013819055506107d06013541115610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df8906144be565b60405180910390fd5b5050565b606060038054610e149061450d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e409061450d565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b5050505050905090565b6000610eab610ea4612446565b848461244e565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f0b612446565b73ffffffffffffffffffffffffffffffffffffffff16610f2961198b565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f769061458b565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60125481565b611053612446565b73ffffffffffffffffffffffffffffffffffffffff1661107161198b565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be9061458b565b60405180910390fd5b670de0b6b3a76400006103e860016110dd610ef9565b6110e791906145ab565b6110f19190614634565b6110fb9190614634565b81101561113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906146d7565b60405180910390fd5b670de0b6b3a76400008161115191906145ab565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111a6612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611262578281101561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490614769565b60405180910390fd5b61126185611259612446565b85840361244e565b5b61126d858585612619565b60019150509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b60006012905090565b60006113506112bb612446565b8484600160006112c9612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134b919061441c565b61244e565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000ca25e4d774eb1223dab27a08d7d69135ba285b3681565b600e60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611415612446565b73ffffffffffffffffffffffffffffffffffffffff1661143361198b565b73ffffffffffffffffffffffffffffffffffffffff1614611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061458b565b60405180910390fd5b60005b815181101561151a576000600660008484815181106114ae576114ad614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611512906147b8565b91505061148c565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156e612446565b73ffffffffffffffffffffffffffffffffffffffff1661158c61198b565b73ffffffffffffffffffffffffffffffffffffffff16146115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99061458b565b60405180910390fd5b6115ec60006133a5565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661162f612446565b73ffffffffffffffffffffffffffffffffffffffff161461164f57600080fd5b80601281905550601254601181905550606460115411156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c9061484d565b60405180910390fd5b50565b601a5481565b60006116b8612446565b73ffffffffffffffffffffffffffffffffffffffff166116d661198b565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117239061458b565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611756612446565b73ffffffffffffffffffffffffffffffffffffffff1661177461198b565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061458b565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61182d612446565b73ffffffffffffffffffffffffffffffffffffffff1661184b61198b565b73ffffffffffffffffffffffffffffffffffffffff16146118a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118989061458b565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506118cf814261346b90919063ffffffff16565b60088190555050565b6118e0612446565b73ffffffffffffffffffffffffffffffffffffffff166118fe61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b9061458b565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061198360024261346b90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119c49061450d565b80601f01602080910402602001604051908101604052809291908181526020018280546119f09061450d565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050905090565b611a4f612446565b73ffffffffffffffffffffffffffffffffffffffff16611a6d61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba9061458b565b60405180910390fd5b7f000000000000000000000000ca25e4d774eb1223dab27a08d7d69135ba285b3673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b49906148df565b60405180910390fd5b611b5c8282613481565b5050565b60175481565b60155481565b6000601a54905090565b60008060016000611b85612446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614971565b60405180910390fd5b611c56611c4d612446565b8585840361244e565b600191505092915050565b6000611c75611c6e612446565b8484612619565b6001905092915050565b60145481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60165481565b611cc6612446565b73ffffffffffffffffffffffffffffffffffffffff16611ce461198b565b73ffffffffffffffffffffffffffffffffffffffff1614611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d319061458b565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9d612446565b73ffffffffffffffffffffffffffffffffffffffff16611dbb61198b565b73ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e089061458b565b60405180910390fd5b670de0b6b3a76400006103e86005611e27610ef9565b611e3191906145ab565b611e3b9190614634565b611e459190614634565b811015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e90614a03565b60405180910390fd5b670de0b6b3a764000081611e9b91906145ab565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000611ec7612446565b73ffffffffffffffffffffffffffffffffffffffff16611ee561198b565b73ffffffffffffffffffffffffffffffffffffffff1614611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f329061458b565b60405180910390fd5b620186a06001611f49610ef9565b611f5391906145ab565b611f5d9190614634565b821015611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9690614a95565b60405180910390fd5b6103e86005611fac610ef9565b611fb691906145ab565b611fc09190614634565b821115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff990614b27565b60405180910390fd5b81600c8190555060019050919050565b61201a612446565b73ffffffffffffffffffffffffffffffffffffffff1661203861198b565b73ffffffffffffffffffffffffffffffffffffffff161461208e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120859061458b565b60405180910390fd5b60005b8151811015612201577f000000000000000000000000ca25e4d774eb1223dab27a08d7d69135ba285b3673ffffffffffffffffffffffffffffffffffffffff168282815181106120e4576120e3614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561217657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1682828151811061215557612154614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156121ee5760016006600084848151811061219457612193614789565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806121f9906147b8565b915050612091565b5050565b60115481565b6000601954905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122ac612446565b73ffffffffffffffffffffffffffffffffffffffff166122ca61198b565b73ffffffffffffffffffffffffffffffffffffffff1614612320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123179061458b565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61234a612446565b73ffffffffffffffffffffffffffffffffffffffff1661236861198b565b73ffffffffffffffffffffffffffffffffffffffff16146123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b59061458b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614bb9565b60405180910390fd5b612437816133a5565b50565b600d5481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590614c4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590614cdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161260c91906140b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268090614d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f090614e01565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614eb9565b60405180910390fd5b60008114156127a05761279b838360006134dc565b6133a0565b600854421015612803576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612ec65761282061198b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561288e575061285e61198b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612901575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561291a5750600760009054906101000a900460ff16155b15612ec557600e60019054906101000a900460ff16612a1457601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129d45750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90614f25565b60405180910390fd5b5b601060009054906101000a900460ff1615612bdc57612a3161198b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ab857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1057507f000000000000000000000000ca25e4d774eb1223dab27a08d7d69135ba285b3673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bdb5743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90614fdd565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c7f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2657600b54811115612cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc09061506f565b60405180910390fd5b600d54612cd58361151e565b82612ce0919061441c565b1115612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906150db565b60405180910390fd5b612ec4565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dc95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1857600b54811115612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9061516d565b60405180910390fd5b612ec3565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ec257600d54612e758361151e565b82612e80919061441c565b1115612ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb8906150db565b60405180910390fd5b5b5b5b5b5b6000612ed13061151e565b90506000600c548210159050808015612ef75750600760009054906101000a900460ff16155b8015612f4d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fa35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ff95750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561303d576001600760006101000a81548160ff02191690831515021790555061302161375d565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fd57600090505b600080821561338f57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561316157506000601354115b15613217576000600760016101000a81548160ff0219169083151502179055506131aa61271061319c6013548961384790919063ffffffff16565b61385d90919063ffffffff16565b9050601354601554826131bd91906145ab565b6131c79190614634565b601760008282546131d8919061441c565b92505081905550601354601454826131f091906145ab565b6131fa9190614634565b6018600082825461320b919061441c565b92505081905550613321565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327257506000601154115b15613320576001600760016101000a81548160ff0219169083151502179055506132bb6127106132ad6011548961384790919063ffffffff16565b61385d90919063ffffffff16565b9150601154601254836132ce91906145ab565b6132d89190614634565b601660008282546132e9919061441c565b925050819055506132fc87601654613873565b601654601a6000828254613310919061441c565b9250508190555060006016819055505b5b60006013541180156133405750600760019054906101000a900460ff16155b1561338e576133508830836134dc565b61335c306018546139d3565b60185460196000828254613370919061441c565b925050819055506000601881905550808661338b919061518d565b95505b5b61339a8888886134dc565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183613479919061441c565b905092915050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561354c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354390614d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b390614e01565b60405180910390fd5b6135c7838383613b9e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561364d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364490615233565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136e0919061441c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161374491906140b4565b60405180910390a3613757848484613ba3565b50505050565b60006137683061151e565b905060008082141561377b575050613845565b6014600c5461378a91906145ab565b8211156137a3576014600c546137a091906145ab565b91505b6137ac82613ba8565b6000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516137fa90615284565b60006040518083038185875af1925050503d8060008114613837576040519150601f19603f3d011682016040523d82523d6000602084013e61383c565b606091505b50508091505050505b565b6000818361385591906145ab565b905092915050565b6000818361386b9190614634565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138da906152e5565b60405180910390fd5b6138ef60008383613b9e565b8060026000828254613901919061441c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613956919061441c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139bb91906140b4565b60405180910390a36139cf60008383613ba3565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3a90615377565b60405180910390fd5b613a4f82600083613b9e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90615409565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613b2c919061518d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b9191906140b4565b60405180910390a3505050565b505050565b505050565b6000600267ffffffffffffffff811115613bc557613bc46141b5565b5b604051908082528060200260200182016040528015613bf35781602001602082028036833780820191505090505b5090503081600081518110613c0b57613c0a614789565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd4919061543e565b81600181518110613ce857613ce7614789565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d4d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461244e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613daf959493929190615564565b600060405180830381600087803b158015613dc957600080fd5b505af1158015613ddd573d6000803e3d6000fd5b505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613e0c81613df9565b8114613e1757600080fd5b50565b600081359050613e2981613e03565b92915050565b60008060408385031215613e4657613e45613def565b5b6000613e5485828601613e1a565b9250506020613e6585828601613e1a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ea9578082015181840152602081019050613e8e565b83811115613eb8576000848401525b50505050565b6000601f19601f8301169050919050565b6000613eda82613e6f565b613ee48185613e7a565b9350613ef4818560208601613e8b565b613efd81613ebe565b840191505092915050565b60006020820190508181036000830152613f228184613ecf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f5582613f2a565b9050919050565b613f6581613f4a565b8114613f7057600080fd5b50565b600081359050613f8281613f5c565b92915050565b60008060408385031215613f9f57613f9e613def565b5b6000613fad85828601613f73565b9250506020613fbe85828601613e1a565b9150509250929050565b60008115159050919050565b613fdd81613fc8565b82525050565b6000602082019050613ff86000830184613fd4565b92915050565b60006020828403121561401457614013613def565b5b600061402284828501613f73565b91505092915050565b6000819050919050565b600061405061404b61404684613f2a565b61402b565b613f2a565b9050919050565b600061406282614035565b9050919050565b600061407482614057565b9050919050565b61408481614069565b82525050565b600060208201905061409f600083018461407b565b92915050565b6140ae81613df9565b82525050565b60006020820190506140c960008301846140a5565b92915050565b6000602082840312156140e5576140e4613def565b5b60006140f384828501613e1a565b91505092915050565b60008060006060848603121561411557614114613def565b5b600061412386828701613f73565b935050602061413486828701613f73565b925050604061414586828701613e1a565b9150509250925092565b61415881613f4a565b82525050565b6000602082019050614173600083018461414f565b92915050565b600060ff82169050919050565b61418f81614179565b82525050565b60006020820190506141aa6000830184614186565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141ed82613ebe565b810181811067ffffffffffffffff8211171561420c5761420b6141b5565b5b80604052505050565b600061421f613de5565b905061422b82826141e4565b919050565b600067ffffffffffffffff82111561424b5761424a6141b5565b5b602082029050602081019050919050565b600080fd5b600061427461426f84614230565b614215565b905080838252602082019050602084028301858111156142975761429661425c565b5b835b818110156142c057806142ac8882613f73565b845260208401935050602081019050614299565b5050509392505050565b600082601f8301126142df576142de6141b0565b5b81356142ef848260208601614261565b91505092915050565b60006020828403121561430e5761430d613def565b5b600082013567ffffffffffffffff81111561432c5761432b613df4565b5b614338848285016142ca565b91505092915050565b61434a81613fc8565b811461435557600080fd5b50565b60008135905061436781614341565b92915050565b6000806040838503121561438457614383613def565b5b600061439285828601613f73565b92505060206143a385828601614358565b9150509250929050565b600080604083850312156143c4576143c3613def565b5b60006143d285828601613f73565b92505060206143e385828601613f73565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061442782613df9565b915061443283613df9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614467576144666143ed565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006144a8601d83613e7a565b91506144b382614472565b602082019050919050565b600060208201905081810360008301526144d78161449b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061452557607f821691505b60208210811415614539576145386144de565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614575602083613e7a565b91506145808261453f565b602082019050919050565b600060208201905081810360008301526145a481614568565b9050919050565b60006145b682613df9565b91506145c183613df9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145fa576145f96143ed565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061463f82613df9565b915061464a83613df9565b92508261465a57614659614605565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146c1602f83613e7a565b91506146cc82614665565b604082019050919050565b600060208201905081810360008301526146f0816146b4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614753602883613e7a565b915061475e826146f7565b604082019050919050565b6000602082019050818103600083015261478281614746565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147c382613df9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147f6576147f56143ed565b5b600182019050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614837601d83613e7a565b915061484282614801565b602082019050919050565b600060208201905081810360008301526148668161482a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148c9603983613e7a565b91506148d48261486d565b604082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061495b602583613e7a565b9150614966826148ff565b604082019050919050565b6000602082019050818103600083015261498a8161494e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149ed602483613e7a565b91506149f882614991565b604082019050919050565b60006020820190508181036000830152614a1c816149e0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a7f603583613e7a565b9150614a8a82614a23565b604082019050919050565b60006020820190508181036000830152614aae81614a72565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b11603483613e7a565b9150614b1c82614ab5565b604082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ba3602683613e7a565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602483613e7a565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc7602283613e7a565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d59602583613e7a565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614deb602383613e7a565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614ea3605183613e7a565b9150614eae82614e21565b606082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f0f601683613e7a565b9150614f1a82614ed9565b602082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fc7604983613e7a565b9150614fd282614f45565b606082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615059603583613e7a565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150c5601383613e7a565b91506150d08261508f565b602082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615157603683613e7a565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b600061519882613df9565b91506151a383613df9565b9250828210156151b6576151b56143ed565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061521d602683613e7a565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b600081905092915050565b50565b600061526e600083615253565b91506152798261525e565b600082019050919050565b600061528f82615261565b9150819050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006152cf601f83613e7a565b91506152da82615299565b602082019050919050565b600060208201905081810360008301526152fe816152c2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615361602183613e7a565b915061536c82615305565b604082019050919050565b6000602082019050818103600083015261539081615354565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006153f3602283613e7a565b91506153fe82615397565b604082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b60008151905061543881613f5c565b92915050565b60006020828403121561545457615453613def565b5b600061546284828501615429565b91505092915050565b6000819050919050565b600061549061548b6154868461546b565b61402b565b613df9565b9050919050565b6154a081615475565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6154db81613f4a565b82525050565b60006154ed83836154d2565b60208301905092915050565b6000602082019050919050565b6000615511826154a6565b61551b81856154b1565b9350615526836154c2565b8060005b8381101561555757815161553e88826154e1565b9750615549836154f9565b92505060018101905061552a565b5085935050505092915050565b600060a08201905061557960008301886140a5565b6155866020830187615497565b81810360408301526155988186615506565b90506155a7606083018561414f565b6155b460808301846140a5565b969550505050505056fea2646970667358221220eb896ca9405d3150b922067be913bbafe77b8fe195d6b12491512df1280a6dff64736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b90c191bfe2f94c247f49f42804f87c12e869f2d

-----Decoded View---------------
Arg [0] : depAddr (address): 0xb90c191BFe2f94c247F49f42804f87c12E869F2D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b90c191bfe2f94c247f49f42804f87c12e869f2d


Deployed Bytecode Sourcemap

12062:13650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17675:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3429:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4343:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13443:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12139:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3750:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18751:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13191:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12982:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16804:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4520:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12472:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12242:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3649:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5101:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12304:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12197;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12632:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18919:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13019:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19335:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3866:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10845:103;;;;;;;;;;;;;:::i;:::-;;17423:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13262:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16014:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17267:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18449:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15829:130;;;;;;;;;;;;;:::i;:::-;;10622:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18133:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13157:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13087:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25612:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5324:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4001:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13054:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13665:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13122:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17993:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17044:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12896:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12509:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16410:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19056:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12948:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25513:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4184:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12551:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16200:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10956:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12591:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13228:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17675:310;17778:9;;;;;;;;;;;17762:25;;:12;:10;:12::i;:::-;:25;;;17754:34;;;;;;17813:8;17799:11;:22;;;;17845:7;17832:10;:20;;;;17893:10;;17879:11;;:24;;;;:::i;:::-;17863:13;:40;;;;17939:4;17922:13;;:21;;17914:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17675:310;;:::o;3429:100::-;3483:13;3516:5;3509:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3429:100;:::o;4343:169::-;4426:4;4443:39;4452:12;:10;:12::i;:::-;4466:7;4475:6;4443:8;:39::i;:::-;4500:4;4493:11;;4343:169;;;;:::o;13443:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;12139:51::-;;;:::o;3750:108::-;3811:7;3838:12;;3831:19;;3750:108;:::o;18751:157::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18858:9:::1;;;;;;;;;;;18830:38;;18847:9;18830:38;;;;;;;;;;;;18891:9;18879;;:21;;;;;;;;;;;;;;;;;;18751:157:::0;:::o;13191:28::-;;;;:::o;12982:25::-;;;;:::o;16804:232::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16925:4:::1;16917;16913:1;16897:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16896:33;;;;:::i;:::-;16886:6;:43;;16878:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;17024:4;17015:6;:13;;;;:::i;:::-;16992:20;:36;;;;16804:232:::0;:::o;4520:573::-;4660:4;4677:24;4704:11;:19;4716:6;4704:19;;;;;;;;;;;;;;;:33;4724:12;:10;:12::i;:::-;4704:33;;;;;;;;;;;;;;;;4677:60;;4772:17;4752:16;:37;4748:265;;4834:6;4814:16;:26;;4806:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4929:57;4938:6;4946:12;:10;:12::i;:::-;4979:6;4960:16;:25;4929:8;:57::i;:::-;4748:265;5025:36;5035:6;5043:9;5054:6;5025:9;:36::i;:::-;5081:4;5074:11;;;4520:573;;;;;:::o;12472:24::-;;;;;;;;;;;;;:::o;12242:53::-;12288:6;12242:53;:::o;3649:93::-;3707:5;3732:2;3725:9;;3649:93;:::o;5101:215::-;5189:4;5206:80;5215:12;:10;:12::i;:::-;5229:7;5275:10;5238:11;:25;5250:12;:10;:12::i;:::-;5238:25;;;;;;;;;;;;;;;:34;5264:7;5238:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5206:8;:80::i;:::-;5304:4;5297:11;;5101:215;;;;:::o;12304:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;12197:::-;;;:::o;12632:33::-;;;;;;;;;;;;;:::o;18919:125::-;18984:4;19008:19;:28;19028:7;19008:28;;;;;;;;;;;;;;;;;;;;;;;;;19001:35;;18919:125;;;:::o;13019:28::-;;;;:::o;19335:168::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19413:6:::1;19408:88;19429:4;:11;19425:1;:15;19408:88;;;19479:5;19462;:14;19468:4;19473:1;19468:7;;;;;;;;:::i;:::-;;;;;;;;19462:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;19442:3;;;;;:::i;:::-;;;;19408:88;;;;19335:168:::0;:::o;3866:127::-;3940:7;3967:9;:18;3977:7;3967:18;;;;;;;;;;;;;;;;3960:25;;3866:127;;;:::o;10845:103::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10910:30:::1;10937:1;10910:18;:30::i;:::-;10845:103::o:0;17423:243::-;17508:9;;;;;;;;;;;17492:25;;:12;:10;:12::i;:::-;:25;;;17484:34;;;;;;17542:8;17529:10;:21;;;;17576:10;;17561:12;:25;;;;17621:3;17605:12;;:19;;17597:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17423:243;:::o;13262:27::-;;;;:::o;16014:121::-;16066:4;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16100:5:::1;16083:14;;:22;;;;;;;;;;;;;;;;;;16123:4;16116:11;;16014:121:::0;:::o;17267:144::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17399:4:::1;17357:31;:39;17389:6;17357:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17267:144:::0;;:::o;18449:149::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18534:4:::1;18518:13;;:20;;;;;;;;;;;;;;;;;;18563:27;18583:6;18563:15;:19;;:27;;;;:::i;:::-;18549:11;:41;;;;18449:149:::0;:::o;15829:130::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15900:4:::1;15884:13;;:20;;;;;;;;;;;;;;;;;;15929:22;15949:1;15929:15;:19;;:22;;;;:::i;:::-;15915:11;:36;;;;15829:130::o:0;10622:87::-;10668:7;10695:6;;;;;;;;;;;10688:13;;10622:87;:::o;3537:104::-;3593:13;3626:7;3619:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3537:104;:::o;18133:244::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18240:13:::1;18232:21;;:4;:21;;;;18224:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18328:41;18357:4;18363:5;18328:28;:41::i;:::-;18133:244:::0;;:::o;13157:27::-;;;;:::o;13087:25::-;;;;:::o;25612:91::-;25656:7;25683:12;;25676:19;;25612:91;:::o;5324:413::-;5417:4;5434:24;5461:11;:25;5473:12;:10;:12::i;:::-;5461:25;;;;;;;;;;;;;;;:34;5487:7;5461:34;;;;;;;;;;;;;;;;5434:61;;5534:15;5514:16;:35;;5506:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5627:67;5636:12;:10;:12::i;:::-;5650:7;5678:15;5659:16;:34;5627:8;:67::i;:::-;5725:4;5718:11;;;5324:413;;;;:::o;4001:175::-;4087:4;4104:42;4114:12;:10;:12::i;:::-;4128:9;4139:6;4104:9;:42::i;:::-;4164:4;4157:11;;4001:175;;;;:::o;13054:26::-;;;;:::o;13665:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12672:33::-;;;;;;;;;;;;;:::o;13122:28::-;;;;:::o;17993:132::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18109:8:::1;18078:19;:28;18098:7;18078:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17993:132:::0;;:::o;17044:211::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17166:4:::1;17160;17156:1;17140:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17139:31;;;;:::i;:::-;17129:6;:41;;17121:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17243:4;17234:6;:13;;;;:::i;:::-;17222:9;:25;;;;17044:211:::0;:::o;12896:39::-;;;;;;;;;;;;;:::o;12509:35::-;;;;:::o;16410:382::-;16491:4;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16548:6:::1;16544:1;16528:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;16515:9;:39;;16507:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16663:4;16659:1;16643:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16630:9;:37;;16622:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;16755:9;16734:18;:30;;;;16781:4;16774:11;;16410:382:::0;;;:::o;19056:267::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19131:6:::1;19126:190;19147:4;:11;19143:1;:15;19126:190;;;19195:13;19184:24;;:4;19189:1;19184:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;19231:15;19212:35;;:4;19217:1;19212:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;19184:63;19180:125;;;19285:4;19268:5;:14;19274:4;19279:1;19274:7;;;;;;;;:::i;:::-;;;;;;;;19268:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19180:125;19160:3;;;;;:::i;:::-;;;;19126:190;;;;19056:267:::0;:::o;12948:27::-;;;;:::o;25513:91::-;25557:7;25584:12;;25577:19;;25513:91;:::o;4184:151::-;4273:7;4300:11;:18;4312:5;4300:18;;;;;;;;;;;;;;;:27;4319:7;4300:27;;;;;;;;;;;;;;;;4293:34;;4184:151;;;;:::o;12551:33::-;;;;:::o;16200:135::-;16260:4;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16300:5:::1;16277:20;;:28;;;;;;;;;;;;;;;;;;16323:4;16316:11;;16200:135:::0;:::o;10956:201::-;10768:12;:10;:12::i;:::-;10757:23;;:7;:5;:7::i;:::-;:23;;;10749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11065:1:::1;11045:22;;:8;:22;;;;11037:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11121:28;11140:8;11121:18;:28::i;:::-;10956:201:::0;:::o;12591:24::-;;;;:::o;13228:27::-;;;;:::o;523:98::-;576:7;603:10;596:17;;523:98;:::o;7429:380::-;7582:1;7565:19;;:5;:19;;;;7557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7663:1;7644:21;;:7;:21;;;;7636:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7747:6;7717:11;:18;7729:5;7717:18;;;;;;;;;;;;;;;:27;7736:7;7717:27;;;;;;;;;;;;;;;:36;;;;7785:7;7769:32;;7778:5;7769:32;;;7794:6;7769:32;;;;;;:::i;:::-;;;;;;;;7429:380;;;:::o;19511:4403::-;19659:1;19643:18;;:4;:18;;;;19635:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19736:1;19722:16;;:2;:16;;;;19714:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19798:5;:11;19804:4;19798:11;;;;;;;;;;;;;;;;;;;;;;;;;19797:12;19789:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;19931:1;19921:6;:11;19917:93;;;19949:28;19965:4;19971:2;19975:1;19949:15;:28::i;:::-;19992:7;;19917:93;20052:11;;20034:15;:29;20030:51;;;20077:4;20065:5;:9;20071:2;20065:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;20030:51;20106:14;;;;;;;;;;;20102:1834;;;20167:7;:5;:7::i;:::-;20159:15;;:4;:15;;;;:49;;;;;20201:7;:5;:7::i;:::-;20195:13;;:2;:13;;;;20159:49;:86;;;;;20243:1;20229:16;;:2;:16;;;;20159:86;:128;;;;;20280:6;20266:21;;:2;:21;;;;20159:128;:159;;;;;20309:9;;;;;;;;;;;20308:10;20159:159;20137:1788;;;20358:13;;;;;;;;;;;20353:150;;20404:19;:25;20424:4;20404:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20433:19;:23;20453:2;20433:23;;;;;;;;;;;;;;;;;;;;;;;;;20404:52;20396:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20353:150;20661:20;;;;;;;;;;;20657:423;;;20715:7;:5;:7::i;:::-;20709:13;;:2;:13;;;;:47;;;;;20740:15;20726:30;;:2;:30;;;;20709:47;:79;;;;;20774:13;20760:28;;:2;:28;;;;20709:79;20705:356;;;20866:12;20824:28;:39;20853:9;20824:39;;;;;;;;;;;;;;;;:54;20816:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21025:12;20983:28;:39;21012:9;20983:39;;;;;;;;;;;;;;;:54;;;;20705:356;20657:423;21148:25;:31;21174:4;21148:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21184:31;:35;21216:2;21184:35;;;;;;;;;;;;;;;;;;;;;;;;;21183:36;21148:71;21144:766;;;21262:20;;21252:6;:30;;21244:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21397:9;;21380:13;21390:2;21380:9;:13::i;:::-;21371:6;:22;;;;:::i;:::-;:35;;21363:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21144:766;;;21523:25;:29;21549:2;21523:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21557:31;:37;21589:4;21557:37;;;;;;;;;;;;;;;;;;;;;;;;;21556:38;21523:71;21519:391;;;21637:20;;21627:6;:30;;21619:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21519:391;;;21764:31;:35;21796:2;21764:35;;;;;;;;;;;;;;;;;;;;;;;;;21759:151;;21857:9;;21840:13;21850:2;21840:9;:13::i;:::-;21831:6;:22;;;;:::i;:::-;:35;;21823:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21759:151;21519:391;21144:766;20137:1788;20102:1834;21950:28;21981:24;21999:4;21981:9;:24::i;:::-;21950:55;;22016:12;22055:18;;22031:20;:42;;22016:57;;22104:7;:34;;;;;22129:9;;;;;;;;;;;22128:10;22104:34;:83;;;;;22156:25;:31;22182:4;22156:31;;;;;;;;;;;;;;;;;;;;;;;;;22155:32;22104:83;:126;;;;;22205:19;:25;22225:4;22205:25;;;;;;;;;;;;;;;;;;;;;;;;;22204:26;22104:126;:167;;;;;22248:19;:23;22268:2;22248:23;;;;;;;;;;;;;;;;;;;;;;;;;22247:24;22104:167;22086:297;;;22310:4;22298:9;;:16;;;;;;;;;;;;;;;;;;22329:10;:8;:10::i;:::-;22366:5;22354:9;;:17;;;;;;;;;;;;;;;;;;22086:297;22395:12;22411:9;;;;;;;;;;;22410:10;22395:25;;22522:19;:25;22542:4;22522:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22551:19;:23;22571:2;22551:23;;;;;;;;;;;;;;;;;;;;;;;;;22522:52;22518:73;;;22586:5;22576:15;;22518:73;22622:15;22652:16;22761:7;22757:1104;;;22813:25;:29;22839:2;22813:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22862:1;22846:13;;:17;22813:50;22809:724;;;22892:5;22883:6;;:14;;;;;;;;;;;;;;;;;;22927:36;22957:5;22927:25;22938:13;;22927:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;22916:47;;23022:13;;23009:10;;22998:8;:21;;;;:::i;:::-;:37;;;;:::i;:::-;22982:12;;:53;;;;;;;:::i;:::-;;;;;;;;23096:13;;23082:11;;23071:8;:22;;;;:::i;:::-;:38;;;;:::i;:::-;23054:13;;:55;;;;;;;:::i;:::-;;;;;;;;22809:724;;;23170:25;:31;23196:4;23170:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23220:1;23205:12;;:16;23170:51;23167:366;;;23251:4;23242:6;;:13;;;;;;;;;;;;;;;;;;23284:35;23313:5;23284:24;23295:12;;23284:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;23274:45;;23378:12;;23365:10;;23355:7;:20;;;;:::i;:::-;:35;;;;:::i;:::-;23338:13;;:52;;;;;;;:::i;:::-;;;;;;;;23409:24;23415:2;23419:13;;23409:5;:24::i;:::-;23468:13;;23452:12;;:29;;;;;;;:::i;:::-;;;;;;;;23516:1;23500:13;:17;;;;23167:366;22809:724;23569:1;23553:13;;:17;:28;;;;;23575:6;;;;;;;;;;;23574:7;23553:28;23549:290;;;23602:46;23618:4;23632;23639:8;23602:15;:46::i;:::-;23667:35;23681:4;23688:13;;23667:5;:35::i;:::-;23737:13;;23721:12;;:29;;;;;;;:::i;:::-;;;;;;;;23785:1;23769:13;:17;;;;23815:8;23805:18;;;;;:::i;:::-;;;23549:290;22757:1104;23873:33;23889:4;23895:2;23899:6;23873:15;:33::i;:::-;19624:4290;;;;;19511:4403;;;;:::o;11165:191::-;11239:16;11258:6;;;;;;;;;;;11239:25;;11284:8;11275:6;;:17;;;;;;;;;;;;;;;;;;11339:8;11308:40;;11329:8;11308:40;;;;;;;;;;;;11228:128;11165:191;:::o;9219:98::-;9277:7;9308:1;9304;:5;;;;:::i;:::-;9297:12;;9219:98;;;;:::o;18606:130::-;18723:5;18689:25;:31;18715:4;18689:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18606:130;;:::o;5745:733::-;5903:1;5885:20;;:6;:20;;;;5877:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5987:1;5966:23;;:9;:23;;;;5958:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6042:47;6063:6;6071:9;6082:6;6042:20;:47::i;:::-;6102:21;6126:9;:17;6136:6;6126:17;;;;;;;;;;;;;;;;6102:41;;6179:6;6162:13;:23;;6154:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6300:6;6284:13;:22;6264:9;:17;6274:6;6264:17;;;;;;;;;;;;;;;:42;;;;6352:6;6328:9;:20;6338:9;6328:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6393:9;6376:35;;6385:6;6376:35;;;6404:6;6376:35;;;;;;:::i;:::-;;;;;;;;6424:46;6444:6;6452:9;6463:6;6424:19;:46::i;:::-;5866:612;5745:733;;;:::o;25046:459::-;25085:23;25111:24;25129:4;25111:9;:24::i;:::-;25085:50;;25146:12;25194:1;25175:15;:20;25172:34;;;25198:7;;;;25172:34;25261:2;25240:18;;:23;;;;:::i;:::-;25222:15;:41;25219:111;;;25316:2;25295:18;;:23;;;;:::i;:::-;25277:41;;25219:111;25342:34;25360:15;25342:17;:34::i;:::-;25408:1;25393:12;:16;;;;25444:9;;;;;;;;;;;25436:23;;25467:21;25436:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25423:70;;;;;25074:431;;25046:459;:::o;9431:98::-;9489:7;9520:1;9516;:5;;;;:::i;:::-;9509:12;;9431:98;;;;:::o;9537:::-;9595:7;9626:1;9622;:5;;;;:::i;:::-;9615:12;;9537:98;;;;:::o;6486:399::-;6589:1;6570:21;;:7;:21;;;;6562:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6640:49;6669:1;6673:7;6682:6;6640:20;:49::i;:::-;6718:6;6702:12;;:22;;;;;;;:::i;:::-;;;;;;;;6757:6;6735:9;:18;6745:7;6735:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;6800:7;6779:37;;6796:1;6779:37;;;6809:6;6779:37;;;;;;:::i;:::-;;;;;;;;6829:48;6857:1;6861:7;6870:6;6829:19;:48::i;:::-;6486:399;;:::o;6893:528::-;6996:1;6977:21;;:7;:21;;;;6969:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7049:49;7070:7;7087:1;7091:6;7049:20;:49::i;:::-;7111:22;7136:9;:18;7146:7;7136:18;;;;;;;;;;;;;;;;7111:43;;7191:6;7173:14;:24;;7165:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7310:6;7293:14;:23;7272:9;:18;7282:7;7272:18;;;;;;;;;;;;;;;:44;;;;7354:6;7338:12;;:22;;;;;;;:::i;:::-;;;;;;;;7402:1;7376:37;;7385:7;7376:37;;;7406:6;7376:37;;;;;;:::i;:::-;;;;;;;;6958:463;6893:528;;:::o;7817:125::-;;;;:::o;7950:124::-;;;;:::o;23922:590::-;24049:21;24087:1;24073:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24049:40;;24118:4;24100;24105:1;24100:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24144:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24134:4;24139:1;24134:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24179:62;24196:4;24211:15;24229:11;24179:8;:62::i;:::-;24280:15;:66;;;24361:11;24387:1;24431:4;24458;24478:15;24280:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23978:534;23922:590;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:118::-;6686:24;6704:5;6686:24;:::i;:::-;6681:3;6674:37;6599:118;;:::o;6723:222::-;6816:4;6854:2;6843:9;6839:18;6831:26;;6867:71;6935:1;6924:9;6920:17;6911:6;6867:71;:::i;:::-;6723:222;;;;:::o;6951:86::-;6986:7;7026:4;7019:5;7015:16;7004:27;;6951:86;;;:::o;7043:112::-;7126:22;7142:5;7126:22;:::i;:::-;7121:3;7114:35;7043:112;;:::o;7161:214::-;7250:4;7288:2;7277:9;7273:18;7265:26;;7301:67;7365:1;7354:9;7350:17;7341:6;7301:67;:::i;:::-;7161:214;;;;:::o;7381:117::-;7490:1;7487;7480:12;7504:180;7552:77;7549:1;7542:88;7649:4;7646:1;7639:15;7673:4;7670:1;7663:15;7690:281;7773:27;7795:4;7773:27;:::i;:::-;7765:6;7761:40;7903:6;7891:10;7888:22;7867:18;7855:10;7852:34;7849:62;7846:88;;;7914:18;;:::i;:::-;7846:88;7954:10;7950:2;7943:22;7733:238;7690:281;;:::o;7977:129::-;8011:6;8038:20;;:::i;:::-;8028:30;;8067:33;8095:4;8087:6;8067:33;:::i;:::-;7977:129;;;:::o;8112:311::-;8189:4;8279:18;8271:6;8268:30;8265:56;;;8301:18;;:::i;:::-;8265:56;8351:4;8343:6;8339:17;8331:25;;8411:4;8405;8401:15;8393:23;;8112:311;;;:::o;8429:117::-;8538:1;8535;8528:12;8569:710;8665:5;8690:81;8706:64;8763:6;8706:64;:::i;:::-;8690:81;:::i;:::-;8681:90;;8791:5;8820:6;8813:5;8806:21;8854:4;8847:5;8843:16;8836:23;;8907:4;8899:6;8895:17;8887:6;8883:30;8936:3;8928:6;8925:15;8922:122;;;8955:79;;:::i;:::-;8922:122;9070:6;9053:220;9087:6;9082:3;9079:15;9053:220;;;9162:3;9191:37;9224:3;9212:10;9191:37;:::i;:::-;9186:3;9179:50;9258:4;9253:3;9249:14;9242:21;;9129:144;9113:4;9108:3;9104:14;9097:21;;9053:220;;;9057:21;8671:608;;8569:710;;;;;:::o;9302:370::-;9373:5;9422:3;9415:4;9407:6;9403:17;9399:27;9389:122;;9430:79;;:::i;:::-;9389:122;9547:6;9534:20;9572:94;9662:3;9654:6;9647:4;9639:6;9635:17;9572:94;:::i;:::-;9563:103;;9379:293;9302:370;;;;:::o;9678:539::-;9762:6;9811:2;9799:9;9790:7;9786:23;9782:32;9779:119;;;9817:79;;:::i;:::-;9779:119;9965:1;9954:9;9950:17;9937:31;9995:18;9987:6;9984:30;9981:117;;;10017:79;;:::i;:::-;9981:117;10122:78;10192:7;10183:6;10172:9;10168:22;10122:78;:::i;:::-;10112:88;;9908:302;9678:539;;;;:::o;10223:116::-;10293:21;10308:5;10293:21;:::i;:::-;10286:5;10283:32;10273:60;;10329:1;10326;10319:12;10273:60;10223:116;:::o;10345:133::-;10388:5;10426:6;10413:20;10404:29;;10442:30;10466:5;10442:30;:::i;:::-;10345:133;;;;:::o;10484:468::-;10549:6;10557;10606:2;10594:9;10585:7;10581:23;10577:32;10574:119;;;10612:79;;:::i;:::-;10574:119;10732:1;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10703:117;10859:2;10885:50;10927:7;10918:6;10907:9;10903:22;10885:50;:::i;:::-;10875:60;;10830:115;10484:468;;;;;:::o;10958:474::-;11026:6;11034;11083:2;11071:9;11062:7;11058:23;11054:32;11051:119;;;11089:79;;:::i;:::-;11051:119;11209:1;11234:53;11279:7;11270:6;11259:9;11255:22;11234:53;:::i;:::-;11224:63;;11180:117;11336:2;11362:53;11407:7;11398:6;11387:9;11383:22;11362:53;:::i;:::-;11352:63;;11307:118;10958:474;;;;;:::o;11438:180::-;11486:77;11483:1;11476:88;11583:4;11580:1;11573:15;11607:4;11604:1;11597:15;11624:305;11664:3;11683:20;11701:1;11683:20;:::i;:::-;11678:25;;11717:20;11735:1;11717:20;:::i;:::-;11712:25;;11871:1;11803:66;11799:74;11796:1;11793:81;11790:107;;;11877:18;;:::i;:::-;11790:107;11921:1;11918;11914:9;11907:16;;11624:305;;;;:::o;11935:179::-;12075:31;12071:1;12063:6;12059:14;12052:55;11935:179;:::o;12120:366::-;12262:3;12283:67;12347:2;12342:3;12283:67;:::i;:::-;12276:74;;12359:93;12448:3;12359:93;:::i;:::-;12477:2;12472:3;12468:12;12461:19;;12120:366;;;:::o;12492:419::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12492:419;;;:::o;12917:180::-;12965:77;12962:1;12955:88;13062:4;13059:1;13052:15;13086:4;13083:1;13076:15;13103:320;13147:6;13184:1;13178:4;13174:12;13164:22;;13231:1;13225:4;13221:12;13252:18;13242:81;;13308:4;13300:6;13296:17;13286:27;;13242:81;13370:2;13362:6;13359:14;13339:18;13336:38;13333:84;;;13389:18;;:::i;:::-;13333:84;13154:269;13103:320;;;:::o;13429:182::-;13569:34;13565:1;13557:6;13553:14;13546:58;13429:182;:::o;13617:366::-;13759:3;13780:67;13844:2;13839:3;13780:67;:::i;:::-;13773:74;;13856:93;13945:3;13856:93;:::i;:::-;13974:2;13969:3;13965:12;13958:19;;13617:366;;;:::o;13989:419::-;14155:4;14193:2;14182:9;14178:18;14170:26;;14242:9;14236:4;14232:20;14228:1;14217:9;14213:17;14206:47;14270:131;14396:4;14270:131;:::i;:::-;14262:139;;13989:419;;;:::o;14414:348::-;14454:7;14477:20;14495:1;14477:20;:::i;:::-;14472:25;;14511:20;14529:1;14511:20;:::i;:::-;14506:25;;14699:1;14631:66;14627:74;14624:1;14621:81;14616:1;14609:9;14602:17;14598:105;14595:131;;;14706:18;;:::i;:::-;14595:131;14754:1;14751;14747:9;14736:20;;14414:348;;;;:::o;14768:180::-;14816:77;14813:1;14806:88;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14954:185;14994:1;15011:20;15029:1;15011:20;:::i;:::-;15006:25;;15045:20;15063:1;15045:20;:::i;:::-;15040:25;;15084:1;15074:35;;15089:18;;:::i;:::-;15074:35;15131:1;15128;15124:9;15119:14;;14954:185;;;;:::o;15145:234::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:17;15349:2;15341:6;15337:15;15330:42;15145:234;:::o;15385:366::-;15527:3;15548:67;15612:2;15607:3;15548:67;:::i;:::-;15541:74;;15624:93;15713:3;15624:93;:::i;:::-;15742:2;15737:3;15733:12;15726:19;;15385:366;;;:::o;15757:419::-;15923:4;15961:2;15950:9;15946:18;15938:26;;16010:9;16004:4;16000:20;15996:1;15985:9;15981:17;15974:47;16038:131;16164:4;16038:131;:::i;:::-;16030:139;;15757:419;;;:::o;16182:227::-;16322:34;16318:1;16310:6;16306:14;16299:58;16391:10;16386:2;16378:6;16374:15;16367:35;16182:227;:::o;16415:366::-;16557:3;16578:67;16642:2;16637:3;16578:67;:::i;:::-;16571:74;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16415:366;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:180::-;17260:77;17257:1;17250:88;17357:4;17354:1;17347:15;17381:4;17378:1;17371:15;17398:233;17437:3;17460:24;17478:5;17460:24;:::i;:::-;17451:33;;17506:66;17499:5;17496:77;17493:103;;;17576:18;;:::i;:::-;17493:103;17623:1;17616:5;17612:13;17605:20;;17398:233;;;:::o;17637:179::-;17777:31;17773:1;17765:6;17761:14;17754:55;17637:179;:::o;17822:366::-;17964:3;17985:67;18049:2;18044:3;17985:67;:::i;:::-;17978:74;;18061:93;18150:3;18061:93;:::i;:::-;18179:2;18174:3;18170:12;18163:19;;17822:366;;;:::o;18194:419::-;18360:4;18398:2;18387:9;18383:18;18375:26;;18447:9;18441:4;18437:20;18433:1;18422:9;18418:17;18411:47;18475:131;18601:4;18475:131;:::i;:::-;18467:139;;18194:419;;;:::o;18619:244::-;18759:34;18755:1;18747:6;18743:14;18736:58;18828:27;18823:2;18815:6;18811:15;18804:52;18619:244;:::o;18869:366::-;19011:3;19032:67;19096:2;19091:3;19032:67;:::i;:::-;19025:74;;19108:93;19197:3;19108:93;:::i;:::-;19226:2;19221:3;19217:12;19210:19;;18869:366;;;:::o;19241:419::-;19407:4;19445:2;19434:9;19430:18;19422:26;;19494:9;19488:4;19484:20;19480:1;19469:9;19465:17;19458:47;19522:131;19648:4;19522:131;:::i;:::-;19514:139;;19241:419;;;:::o;19666:224::-;19806:34;19802:1;19794:6;19790:14;19783:58;19875:7;19870:2;19862:6;19858:15;19851:32;19666:224;:::o;19896:366::-;20038:3;20059:67;20123:2;20118:3;20059:67;:::i;:::-;20052:74;;20135:93;20224:3;20135:93;:::i;:::-;20253:2;20248:3;20244:12;20237:19;;19896:366;;;:::o;20268:419::-;20434:4;20472:2;20461:9;20457:18;20449:26;;20521:9;20515:4;20511:20;20507:1;20496:9;20492:17;20485:47;20549:131;20675:4;20549:131;:::i;:::-;20541:139;;20268:419;;;:::o;20693:223::-;20833:34;20829:1;20821:6;20817:14;20810:58;20902:6;20897:2;20889:6;20885:15;20878:31;20693:223;:::o;20922:366::-;21064:3;21085:67;21149:2;21144:3;21085:67;:::i;:::-;21078:74;;21161:93;21250:3;21161:93;:::i;:::-;21279:2;21274:3;21270:12;21263:19;;20922:366;;;:::o;21294:419::-;21460:4;21498:2;21487:9;21483:18;21475:26;;21547:9;21541:4;21537:20;21533:1;21522:9;21518:17;21511:47;21575:131;21701:4;21575:131;:::i;:::-;21567:139;;21294:419;;;:::o;21719:240::-;21859:34;21855:1;21847:6;21843:14;21836:58;21928:23;21923:2;21915:6;21911:15;21904:48;21719:240;:::o;21965:366::-;22107:3;22128:67;22192:2;22187:3;22128:67;:::i;:::-;22121:74;;22204:93;22293:3;22204:93;:::i;:::-;22322:2;22317:3;22313:12;22306:19;;21965:366;;;:::o;22337:419::-;22503:4;22541:2;22530:9;22526:18;22518:26;;22590:9;22584:4;22580:20;22576:1;22565:9;22561:17;22554:47;22618:131;22744:4;22618:131;:::i;:::-;22610:139;;22337:419;;;:::o;22762:239::-;22902:34;22898:1;22890:6;22886:14;22879:58;22971:22;22966:2;22958:6;22954:15;22947:47;22762:239;:::o;23007:366::-;23149:3;23170:67;23234:2;23229:3;23170:67;:::i;:::-;23163:74;;23246:93;23335:3;23246:93;:::i;:::-;23364:2;23359:3;23355:12;23348:19;;23007:366;;;:::o;23379:419::-;23545:4;23583:2;23572:9;23568:18;23560:26;;23632:9;23626:4;23622:20;23618:1;23607:9;23603:17;23596:47;23660:131;23786:4;23660:131;:::i;:::-;23652:139;;23379:419;;;:::o;23804:225::-;23944:34;23940:1;23932:6;23928:14;23921:58;24013:8;24008:2;24000:6;23996:15;23989:33;23804:225;:::o;24035:366::-;24177:3;24198:67;24262:2;24257:3;24198:67;:::i;:::-;24191:74;;24274:93;24363:3;24274:93;:::i;:::-;24392:2;24387:3;24383:12;24376:19;;24035:366;;;:::o;24407:419::-;24573:4;24611:2;24600:9;24596:18;24588:26;;24660:9;24654:4;24650:20;24646:1;24635:9;24631:17;24624:47;24688:131;24814:4;24688:131;:::i;:::-;24680:139;;24407:419;;;:::o;24832:223::-;24972:34;24968:1;24960:6;24956:14;24949:58;25041:6;25036:2;25028:6;25024:15;25017:31;24832:223;:::o;25061:366::-;25203:3;25224:67;25288:2;25283:3;25224:67;:::i;:::-;25217:74;;25300:93;25389:3;25300:93;:::i;:::-;25418:2;25413:3;25409:12;25402:19;;25061:366;;;:::o;25433:419::-;25599:4;25637:2;25626:9;25622:18;25614:26;;25686:9;25680:4;25676:20;25672:1;25661:9;25657:17;25650:47;25714:131;25840:4;25714:131;:::i;:::-;25706:139;;25433:419;;;:::o;25858:221::-;25998:34;25994:1;25986:6;25982:14;25975:58;26067:4;26062:2;26054:6;26050:15;26043:29;25858:221;:::o;26085:366::-;26227:3;26248:67;26312:2;26307:3;26248:67;:::i;:::-;26241:74;;26324:93;26413:3;26324:93;:::i;:::-;26442:2;26437:3;26433:12;26426:19;;26085:366;;;:::o;26457:419::-;26623:4;26661:2;26650:9;26646:18;26638:26;;26710:9;26704:4;26700:20;26696:1;26685:9;26681:17;26674:47;26738:131;26864:4;26738:131;:::i;:::-;26730:139;;26457:419;;;:::o;26882:224::-;27022:34;27018:1;27010:6;27006:14;26999:58;27091:7;27086:2;27078:6;27074:15;27067:32;26882:224;:::o;27112:366::-;27254:3;27275:67;27339:2;27334:3;27275:67;:::i;:::-;27268:74;;27351:93;27440:3;27351:93;:::i;:::-;27469:2;27464:3;27460:12;27453:19;;27112:366;;;:::o;27484:419::-;27650:4;27688:2;27677:9;27673:18;27665:26;;27737:9;27731:4;27727:20;27723:1;27712:9;27708:17;27701:47;27765:131;27891:4;27765:131;:::i;:::-;27757:139;;27484:419;;;:::o;27909:222::-;28049:34;28045:1;28037:6;28033:14;28026:58;28118:5;28113:2;28105:6;28101:15;28094:30;27909:222;:::o;28137:366::-;28279:3;28300:67;28364:2;28359:3;28300:67;:::i;:::-;28293:74;;28376:93;28465:3;28376:93;:::i;:::-;28494:2;28489:3;28485:12;28478:19;;28137:366;;;:::o;28509:419::-;28675:4;28713:2;28702:9;28698:18;28690:26;;28762:9;28756:4;28752:20;28748:1;28737:9;28733:17;28726:47;28790:131;28916:4;28790:131;:::i;:::-;28782:139;;28509:419;;;:::o;28934:305::-;29074:34;29070:1;29062:6;29058:14;29051:58;29143:34;29138:2;29130:6;29126:15;29119:59;29212:19;29207:2;29199:6;29195:15;29188:44;28934:305;:::o;29245:366::-;29387:3;29408:67;29472:2;29467:3;29408:67;:::i;:::-;29401:74;;29484:93;29573:3;29484:93;:::i;:::-;29602:2;29597:3;29593:12;29586:19;;29245:366;;;:::o;29617:419::-;29783:4;29821:2;29810:9;29806:18;29798:26;;29870:9;29864:4;29860:20;29856:1;29845:9;29841:17;29834:47;29898:131;30024:4;29898:131;:::i;:::-;29890:139;;29617:419;;;:::o;30042:172::-;30182:24;30178:1;30170:6;30166:14;30159:48;30042:172;:::o;30220:366::-;30362:3;30383:67;30447:2;30442:3;30383:67;:::i;:::-;30376:74;;30459:93;30548:3;30459:93;:::i;:::-;30577:2;30572:3;30568:12;30561:19;;30220:366;;;:::o;30592:419::-;30758:4;30796:2;30785:9;30781:18;30773:26;;30845:9;30839:4;30835:20;30831:1;30820:9;30816:17;30809:47;30873:131;30999:4;30873:131;:::i;:::-;30865:139;;30592:419;;;:::o;31017:297::-;31157:34;31153:1;31145:6;31141:14;31134:58;31226:34;31221:2;31213:6;31209:15;31202:59;31295:11;31290:2;31282:6;31278:15;31271:36;31017:297;:::o;31320:366::-;31462:3;31483:67;31547:2;31542:3;31483:67;:::i;:::-;31476:74;;31559:93;31648:3;31559:93;:::i;:::-;31677:2;31672:3;31668:12;31661:19;;31320:366;;;:::o;31692:419::-;31858:4;31896:2;31885:9;31881:18;31873:26;;31945:9;31939:4;31935:20;31931:1;31920:9;31916:17;31909:47;31973:131;32099:4;31973:131;:::i;:::-;31965:139;;31692:419;;;:::o;32117:240::-;32257:34;32253:1;32245:6;32241:14;32234:58;32326:23;32321:2;32313:6;32309:15;32302:48;32117:240;:::o;32363:366::-;32505:3;32526:67;32590:2;32585:3;32526:67;:::i;:::-;32519:74;;32602:93;32691:3;32602:93;:::i;:::-;32720:2;32715:3;32711:12;32704:19;;32363:366;;;:::o;32735:419::-;32901:4;32939:2;32928:9;32924:18;32916:26;;32988:9;32982:4;32978:20;32974:1;32963:9;32959:17;32952:47;33016:131;33142:4;33016:131;:::i;:::-;33008:139;;32735:419;;;:::o;33160:169::-;33300:21;33296:1;33288:6;33284:14;33277:45;33160:169;:::o;33335:366::-;33477:3;33498:67;33562:2;33557:3;33498:67;:::i;:::-;33491:74;;33574:93;33663:3;33574:93;:::i;:::-;33692:2;33687:3;33683:12;33676:19;;33335:366;;;:::o;33707:419::-;33873:4;33911:2;33900:9;33896:18;33888:26;;33960:9;33954:4;33950:20;33946:1;33935:9;33931:17;33924:47;33988:131;34114:4;33988:131;:::i;:::-;33980:139;;33707:419;;;:::o;34132:241::-;34272:34;34268:1;34260:6;34256:14;34249:58;34341:24;34336:2;34328:6;34324:15;34317:49;34132:241;:::o;34379:366::-;34521:3;34542:67;34606:2;34601:3;34542:67;:::i;:::-;34535:74;;34618:93;34707:3;34618:93;:::i;:::-;34736:2;34731:3;34727:12;34720:19;;34379:366;;;:::o;34751:419::-;34917:4;34955:2;34944:9;34940:18;34932:26;;35004:9;34998:4;34994:20;34990:1;34979:9;34975:17;34968:47;35032:131;35158:4;35032:131;:::i;:::-;35024:139;;34751:419;;;:::o;35176:191::-;35216:4;35236:20;35254:1;35236:20;:::i;:::-;35231:25;;35270:20;35288:1;35270:20;:::i;:::-;35265:25;;35309:1;35306;35303:8;35300:34;;;35314:18;;:::i;:::-;35300:34;35359:1;35356;35352:9;35344:17;;35176:191;;;;:::o;35373:225::-;35513:34;35509:1;35501:6;35497:14;35490:58;35582:8;35577:2;35569:6;35565:15;35558:33;35373:225;:::o;35604:366::-;35746:3;35767:67;35831:2;35826:3;35767:67;:::i;:::-;35760:74;;35843:93;35932:3;35843:93;:::i;:::-;35961:2;35956:3;35952:12;35945:19;;35604:366;;;:::o;35976:419::-;36142:4;36180:2;36169:9;36165:18;36157:26;;36229:9;36223:4;36219:20;36215:1;36204:9;36200:17;36193:47;36257:131;36383:4;36257:131;:::i;:::-;36249:139;;35976:419;;;:::o;36401:147::-;36502:11;36539:3;36524:18;;36401:147;;;;:::o;36554:114::-;;:::o;36674:398::-;36833:3;36854:83;36935:1;36930:3;36854:83;:::i;:::-;36847:90;;36946:93;37035:3;36946:93;:::i;:::-;37064:1;37059:3;37055:11;37048:18;;36674:398;;;:::o;37078:379::-;37262:3;37284:147;37427:3;37284:147;:::i;:::-;37277:154;;37448:3;37441:10;;37078:379;;;:::o;37463:181::-;37603:33;37599:1;37591:6;37587:14;37580:57;37463:181;:::o;37650:366::-;37792:3;37813:67;37877:2;37872:3;37813:67;:::i;:::-;37806:74;;37889:93;37978:3;37889:93;:::i;:::-;38007:2;38002:3;37998:12;37991:19;;37650:366;;;:::o;38022:419::-;38188:4;38226:2;38215:9;38211:18;38203:26;;38275:9;38269:4;38265:20;38261:1;38250:9;38246:17;38239:47;38303:131;38429:4;38303:131;:::i;:::-;38295:139;;38022:419;;;:::o;38447:220::-;38587:34;38583:1;38575:6;38571:14;38564:58;38656:3;38651:2;38643:6;38639:15;38632:28;38447:220;:::o;38673:366::-;38815:3;38836:67;38900:2;38895:3;38836:67;:::i;:::-;38829:74;;38912:93;39001:3;38912:93;:::i;:::-;39030:2;39025:3;39021:12;39014:19;;38673:366;;;:::o;39045:419::-;39211:4;39249:2;39238:9;39234:18;39226:26;;39298:9;39292:4;39288:20;39284:1;39273:9;39269:17;39262:47;39326:131;39452:4;39326:131;:::i;:::-;39318:139;;39045:419;;;:::o;39470:221::-;39610:34;39606:1;39598:6;39594:14;39587:58;39679:4;39674:2;39666:6;39662:15;39655:29;39470:221;:::o;39697:366::-;39839:3;39860:67;39924:2;39919:3;39860:67;:::i;:::-;39853:74;;39936:93;40025:3;39936:93;:::i;:::-;40054:2;40049:3;40045:12;40038:19;;39697:366;;;:::o;40069:419::-;40235:4;40273:2;40262:9;40258:18;40250:26;;40322:9;40316:4;40312:20;40308:1;40297:9;40293:17;40286:47;40350:131;40476:4;40350:131;:::i;:::-;40342:139;;40069:419;;;:::o;40494:143::-;40551:5;40582:6;40576:13;40567:22;;40598:33;40625:5;40598:33;:::i;:::-;40494:143;;;;:::o;40643:351::-;40713:6;40762:2;40750:9;40741:7;40737:23;40733:32;40730:119;;;40768:79;;:::i;:::-;40730:119;40888:1;40913:64;40969:7;40960:6;40949:9;40945:22;40913:64;:::i;:::-;40903:74;;40859:128;40643:351;;;;:::o;41000:85::-;41045:7;41074:5;41063:16;;41000:85;;;:::o;41091:158::-;41149:9;41182:61;41200:42;41209:32;41235:5;41209:32;:::i;:::-;41200:42;:::i;:::-;41182:61;:::i;:::-;41169:74;;41091:158;;;:::o;41255:147::-;41350:45;41389:5;41350:45;:::i;:::-;41345:3;41338:58;41255:147;;:::o;41408:114::-;41475:6;41509:5;41503:12;41493:22;;41408:114;;;:::o;41528:184::-;41627:11;41661:6;41656:3;41649:19;41701:4;41696:3;41692:14;41677:29;;41528:184;;;;:::o;41718:132::-;41785:4;41808:3;41800:11;;41838:4;41833:3;41829:14;41821:22;;41718:132;;;:::o;41856:108::-;41933:24;41951:5;41933:24;:::i;:::-;41928:3;41921:37;41856:108;;:::o;41970:179::-;42039:10;42060:46;42102:3;42094:6;42060:46;:::i;:::-;42138:4;42133:3;42129:14;42115:28;;41970:179;;;;:::o;42155:113::-;42225:4;42257;42252:3;42248:14;42240:22;;42155:113;;;:::o;42304:732::-;42423:3;42452:54;42500:5;42452:54;:::i;:::-;42522:86;42601:6;42596:3;42522:86;:::i;:::-;42515:93;;42632:56;42682:5;42632:56;:::i;:::-;42711:7;42742:1;42727:284;42752:6;42749:1;42746:13;42727:284;;;42828:6;42822:13;42855:63;42914:3;42899:13;42855:63;:::i;:::-;42848:70;;42941:60;42994:6;42941:60;:::i;:::-;42931:70;;42787:224;42774:1;42771;42767:9;42762:14;;42727:284;;;42731:14;43027:3;43020:10;;42428:608;;;42304:732;;;;:::o;43042:831::-;43305:4;43343:3;43332:9;43328:19;43320:27;;43357:71;43425:1;43414:9;43410:17;43401:6;43357:71;:::i;:::-;43438:80;43514:2;43503:9;43499:18;43490:6;43438:80;:::i;:::-;43565:9;43559:4;43555:20;43550:2;43539:9;43535:18;43528:48;43593:108;43696:4;43687:6;43593:108;:::i;:::-;43585:116;;43711:72;43779:2;43768:9;43764:18;43755:6;43711:72;:::i;:::-;43793:73;43861:3;43850:9;43846:19;43837:6;43793:73;:::i;:::-;43042:831;;;;;;;;:::o

Swarm Source

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