ETH Price: $2,555.80 (+4.91%)
Gas: 10.9 Gwei

Token

Inuvader (INUVAD)
 

Overview

Max Total Supply

1,000,000,000,000 INUVAD

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,796,009,412.877499058 INUVAD

Value
$0.00
0xD115a91e70CeAb150062eb688C60f01687f3bFa6
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:
Inuvader

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-04
*/

/**
 .___            ____   ____           .___            
|   | ____  __ _\   \ /   /____     __| _/___________ 
|   |/    \|  |  \   Y   /\__  \   / __ |/ __ \_  __ \
|   |   |  \  |  /\     /  / __ \_/ /_/ \  ___/|  | \/
|___|___|  /____/  \___/  (____  /\____ |\___  >__|   
         \/                    \/      \/    \/       

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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


interface IERC20 {

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

}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// pragma solidity >=0.5.0;

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}



// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract Inuvader is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable public marketingAddress = payable(0x1268BF41d3E97AF41d7c602bEe52e46D22F8fC25); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint) private cooldown;
   
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Inuvader";
    string private _symbol = "INUVAD";
    uint8 private _decimals = 9;


    uint256 public _sellFee;
    uint256 public _buyFee;
    uint256 public _taxFee;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _liquidityFee;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _maxTxAmount;
    
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwap;
    
    bool tradingOpen = false;
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function initContract() external onlyOwner() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
    }
    
    function oopenTrading() external onlyOwner() {
        _buyFee = 2;
        _sellFee = 8;
        _taxFee=2;
        tradingOpen = true;
        _maxTxAmount = 5e9 * 10**9;
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
  
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
  

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {

        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
       if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading

       
        // buy
        if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
            require(amount <= _maxTxAmount);
            require(cooldown[to] < block.timestamp);
            cooldown[to] = block.timestamp + (30 seconds);
            
            _liquidityFee = _buyFee;
            
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        
        //sell
        if (!inSwap && to == uniswapV2Pair) {
            if(contractTokenBalance > 0) {
                if(contractTokenBalance > 0)
                swapTokens(contractTokenBalance);    
            }
            
            _liquidityFee = _sellFee;
        }
        
        bool takeFee = false;
        
        //take fee only on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        swapTokensForEth(contractTokenBalance);
        
        //Send to Marketing address
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }
    
    function sendETHToFee(uint256 amount) private {
        marketingAddress.transfer(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), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    

    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 _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require (taxFee <= 2, "taxFee can't exceed 2%");
        _taxFee = taxFee;
    }
    
    function setBuyFee(uint256 buyFee) external onlyOwner() {
        require (buyFee <= 2, "buy Fee can't exceed 2%");
        _buyFee = buyFee;
    }
    
    function setSellFee(uint256 sellFee) external onlyOwner() {
        require (sellFee <= 8, "sell fee can't exceed 8%");
        _sellFee = sellFee;
    }
    
    function setMarketingAddress(address _marketingAddress) external onlyOwner() {
        marketingAddress = payable(_marketingAddress);
    }
    
    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function removeStrictTxLimit() external onlyOwner {
        _maxTxAmount = 1e12 * 10**9;
    }
    

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oopenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

60a0604052731268bf41d3e97af41d7c602bee52e46d22f8fc25600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250683635c9adc5dea00000600b55600b54600019620000b0919062000494565b600019620000bf919062000419565b600c556040518060400160405280600881526020017f496e757661646572000000000000000000000000000000000000000000000000815250600e90805190602001906200010f9291906200033b565b506040518060400160405280600681526020017f494e555641440000000000000000000000000000000000000000000000000000815250600f90805190602001906200015d9291906200033b565b506009601060006101000a81548160ff021916908360ff1602179055506013546014556015546016556000601960156101000a81548160ff021916908315150217905550348015620001ae57600080fd5b506000620001c16200033360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600c5460046000620002766200033360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002c46200033360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620003259190620003fc565b60405180910390a362000559565b600033905090565b82805462000349906200045e565b90600052602060002090601f0160209004810192826200036d5760008555620003b9565b82601f106200038857805160ff1916838001178555620003b9565b82800160010185558215620003b9579182015b82811115620003b85782518255916020019190600101906200039b565b5b509050620003c89190620003cc565b5090565b5b80821115620003e7576000816000905550600101620003cd565b5090565b620003f68162000454565b82525050565b6000602082019050620004136000830184620003eb565b92915050565b6000620004268262000454565b9150620004338362000454565b925082821015620004495762000448620004cc565b5b828203905092915050565b6000819050919050565b600060028204905060018216806200047757607f821691505b602082108114156200048e576200048d6200052a565b5b50919050565b6000620004a18262000454565b9150620004ae8362000454565b925082620004c157620004c0620004fb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60805160601c6157f4620005786000396000610c8401526157f46000f3fe6080604052600436106102295760003560e01c806352390c02116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610816578063dd62ed3e14610853578063ea2f0b3714610890578063f2fde38b146108b9578063ff872602146108e257610230565b80638da5cb5b1461072f578063906e9dd01461075a57806395d89b4114610783578063a457c2d7146107ae578063a5ece941146107eb57610230565b806370a08231116100f257806370a082311461065e578063715018a61461069b5780638203f5fe146106b257806388f82020146106c95780638b4cee081461070657610230565b806352390c02146105b65780635342acb4146105df578063590f897e1461061c57806367a907c21461064757610230565b80632d838119116101b15780633bd5d173116101755780633bd5d173146104d157806340b9a54b146104fa578063437823ec146105255780634549b0391461054e57806349bd5a5e1461058b57610230565b80632d838119146103d8578063313ce567146104155780633685d4191461044057806339509351146104695780633b124fe7146104a657610230565b806313114a9d116101f857806313114a9d146102ef5780631694505e1461031a57806318160ddd1461034557806323b872dd1461037057806327c8f835146103ad57610230565b8063061c82d01461023557806306fdde031461025e578063095ea7b3146102895780630cc835a3146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190614854565b6108f9565b005b34801561026a57600080fd5b506102736109dc565b6040516102809190614cc8565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190614818565b610a6e565b6040516102bd9190614c92565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190614854565b610a8c565b005b3480156102fb57600080fd5b50610304610b6f565b6040516103119190614f0a565b60405180910390f35b34801561032657600080fd5b5061032f610b79565b60405161033c9190614cad565b60405180910390f35b34801561035157600080fd5b5061035a610b9f565b6040516103679190614f0a565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906147c9565b610ba9565b6040516103a49190614c92565b60405180910390f35b3480156103b957600080fd5b506103c2610c82565b6040516103cf9190614c33565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190614854565b610ca6565b60405161040c9190614f0a565b60405180910390f35b34801561042157600080fd5b5061042a610d14565b6040516104379190614faf565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061473b565b610d2b565b005b34801561047557600080fd5b50610490600480360381019061048b9190614818565b611112565b60405161049d9190614c92565b60405180910390f35b3480156104b257600080fd5b506104bb6111c5565b6040516104c89190614f0a565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190614854565b6111cb565b005b34801561050657600080fd5b5061050f611346565b60405161051c9190614f0a565b60405180910390f35b34801561053157600080fd5b5061054c6004803603810190610547919061473b565b61134c565b005b34801561055a57600080fd5b506105756004803603810190610570919061487d565b61143c565b6040516105829190614f0a565b60405180910390f35b34801561059757600080fd5b506105a06114c0565b6040516105ad9190614c33565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d8919061473b565b6114e6565b005b3480156105eb57600080fd5b506106066004803603810190610601919061473b565b61179a565b6040516106139190614c92565b60405180910390f35b34801561062857600080fd5b506106316117f0565b60405161063e9190614f0a565b60405180910390f35b34801561065357600080fd5b5061065c6117f6565b005b34801561066a57600080fd5b506106856004803603810190610680919061473b565b6118cf565b6040516106929190614f0a565b60405180910390f35b3480156106a757600080fd5b506106b06119ba565b005b3480156106be57600080fd5b506106c7611b0d565b005b3480156106d557600080fd5b506106f060048036038101906106eb919061473b565b611e7d565b6040516106fd9190614c92565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190614854565b611ed3565b005b34801561073b57600080fd5b50610744611fb6565b6040516107519190614c33565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c919061473b565b611fdf565b005b34801561078f57600080fd5b506107986120b8565b6040516107a59190614cc8565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d09190614818565b61214a565b6040516107e29190614c92565b60405180910390f35b3480156107f757600080fd5b50610800612217565b60405161080d9190614c4e565b60405180910390f35b34801561082257600080fd5b5061083d60048036038101906108389190614818565b61223d565b60405161084a9190614c92565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061478d565b61225b565b6040516108879190614f0a565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b2919061473b565b6122e2565b005b3480156108c557600080fd5b506108e060048036038101906108db919061473b565b6123d2565b005b3480156108ee57600080fd5b506108f7612594565b005b61090161263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590614e0a565b60405180910390fd5b60028111156109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990614eea565b60405180910390fd5b8060138190555050565b6060600e80546109eb90615204565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1790615204565b8015610a645780601f10610a3957610100808354040283529160200191610a64565b820191906000526020600020905b815481529060010190602001808311610a4757829003601f168201915b5050505050905090565b6000610a82610a7b61263b565b8484612643565b6001905092915050565b610a9461263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614e0a565b60405180910390fd5b6002811115610b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5c90614daa565b60405180910390fd5b8060128190555050565b6000600d54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b6000610bb684848461280e565b610c7784610bc261263b565b610c728560405180606001604052806028815260200161577260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2861263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dcb9092919063ffffffff16565b612643565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600c54821115610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490614d0a565b60405180910390fd5b6000610cf7612e2f565b9050610d0c8184612e5a90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b610d3361263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790614e0a565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390614d8a565b60405180910390fd5b60005b600a8054905081101561110e578173ffffffffffffffffffffffffffffffffffffffff16600a8281548110610ead577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110fb57600a6001600a80549050610f089190615100565b81548110610f3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806110c1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561110e565b808061110690615236565b915050610e4f565b5050565b60006111bb61111f61263b565b846111b6856006600061113061263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612643565b6001905092915050565b60135481565b60006111d561263b565b9050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614eaa565b60405180910390fd5b600061126f83612f02565b505050505090506112c881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061132081600c54612f5e90919063ffffffff16565b600c8190555061133b83600d54612ea490919063ffffffff16565b600d81905550505050565b60125481565b61135461263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890614e0a565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b54831115611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90614dca565b60405180910390fd5b816114a357600061149384612f02565b50505050509050809150506114ba565b60006114ae84612f02565b50505050915050809150505b92915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ee61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157290614e0a565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90614d8a565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116dc57611698600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6117fe61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614e0a565b60405180910390fd5b6002601281905550600860118190555060026013819055506001601960156101000a81548160ff021916908315150217905550674563918244f40000601781905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561196a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119b5565b6119b2600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca6565b90505b919050565b6119c261263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690614e0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b1561263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990614e0a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190614764565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9b57600080fd5b505afa158015611caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd39190614764565b6040518363ffffffff1660e01b8152600401611cf0929190614c69565b602060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d429190614764565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000611dd1611fb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611edb61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90614e0a565b60405180910390fd5b6008811115611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390614eca565b60405180910390fd5b8060118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fe761263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90614e0a565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600f80546120c790615204565b80601f01602080910402602001604051908101604052809291908181526020018280546120f390615204565b80156121405780601f1061211557610100808354040283529160200191612140565b820191906000526020600020905b81548152906001019060200180831161212357829003601f168201915b5050505050905090565b600061220d61215761263b565b846122088560405180606001604052806025815260200161579a602591396006600061218161263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dcb9092919063ffffffff16565b612643565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061225161224a61263b565b848461280e565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122ea61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236e90614e0a565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123da61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614e0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90614d2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61259c61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262090614e0a565b60405180910390fd5b683635c9adc5dea00000601781905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90614e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271a90614d4a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128019190614f0a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561287e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287590614e4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e590614cea565b60405180910390fd5b60008111612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890614e2a565b60405180910390fd5b612939611fb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a75750612977611fb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129fc57601960159054906101000a900460ff166129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614e8a565b60405180910390fd5b5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612aa75750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612afd5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bb657601754811115612b1157600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b5c57600080fd5b601e42612b69919061501f565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506012546015819055505b6000612bc1306118cf565b9050601960149054906101000a900460ff16158015612c2d5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612c59576000811115612c4f576000811115612c4e57612c4d81612fa8565b5b5b6011546015819055505b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d045750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612dae5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dac5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b15612db857600190505b612dc485858584613003565b5050505050565b6000838311158290612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9190614cc8565b60405180910390fd5b5060008385612e229190615100565b9050809150509392505050565b6000806000612e3c61325a565b91509150612e538183612e5a90919063ffffffff16565b9250505090565b6000612e9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a5565b905092915050565b6000808284612eb3919061501f565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90614d6a565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612f198a613608565b9250925092506000806000612f378d8686612f32612e2f565b613662565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612fa083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dcb565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612fcc816136eb565b60004790506000811115612fe457612fe3476139e8565b5b506000601960146101000a81548160ff02191690831515021790555050565b8061301157613010613a54565b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130b45750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130c9576130c4848484613a97565b613246565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561316c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131815761317c848484613cf7565b613245565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132235750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323857613233848484613f57565b613244565b61324384848461424c565b5b5b5b8061325457613253614417565b5b50505050565b6000806000600c5490506000600b54905060005b600a80549050811015613568578260046000600a84815481106132ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133ce57508160056000600a8481548110613366577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133e557600c54600b54945094505050506135a1565b61349b60046000600a8481548110613426577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f5e90919063ffffffff16565b925061355360056000600a84815481106134de577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f5e90919063ffffffff16565b9150808061356090615236565b91505061326e565b50613580600b54600c54612e5a90919063ffffffff16565b82101561359857600c54600b549350935050506135a1565b81819350935050505b9091565b600080831182906135ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e39190614cc8565b60405180910390fd5b50600083856135fb9190615075565b9050809150509392505050565b6000806000806136178561442b565b905060006136248661445c565b9050600061364d8261363f858a612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061367b858961448d90919063ffffffff16565b90506000613692868961448d90919063ffffffff16565b905060006136a9878961448d90919063ffffffff16565b905060006136d2826136c48587612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff81111561372e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561375c5781602001602082028036833780820191505090505b509050308160008151811061379a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561383c57600080fd5b505afa158015613850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138749190614764565b816001815181106138ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061391530601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612643565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613979959493929190614f55565b600060405180830381600087803b15801561399357600080fd5b505af11580156139a7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516139dc929190614f25565b60405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a50573d6000803e3d6000fd5b5050565b6000601354148015613a6857506000601554145b15613a7257613a95565b601354601481905550601554601681905550600060138190555060006015819055505b565b600080600080600080613aa987612f02565b955095509550955095509550613b0787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b9c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c7d81614508565b613c8784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ce49190614f0a565b60405180910390a3505050505050505050565b600080600080600080613d0987612f02565b955095509550955095509550613d6786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dfc83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613edd81614508565b613ee784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f449190614f0a565b60405180910390a3505050505050505050565b600080600080600080613f6987612f02565b955095509550955095509550613fc787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140f183600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061418685600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d281614508565b6141dc84836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516142399190614f0a565b60405180910390a3505050505050505050565b60008060008060008061425e87612f02565b9550955095509550955095506142bc86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061439d81614508565b6143a784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144049190614f0a565b60405180910390a3505050505050505050565b601454601381905550601654601581905550565b600061445560646144476013548561448d90919063ffffffff16565b612e5a90919063ffffffff16565b9050919050565b600061448660646144786015548561448d90919063ffffffff16565b612e5a90919063ffffffff16565b9050919050565b6000808314156144a05760009050614502565b600082846144ae91906150a6565b90508284826144bd9190615075565b146144fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144f490614dea565b60405180910390fd5b809150505b92915050565b6000614512612e2f565b90506000614529828461448d90919063ffffffff16565b905061457d81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146a85761466483600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6146c282600c54612f5e90919063ffffffff16565b600c819055506146dd81600d54612ea490919063ffffffff16565b600d819055505050565b6000813590506146f68161572c565b92915050565b60008151905061470b8161572c565b92915050565b60008135905061472081615743565b92915050565b6000813590506147358161575a565b92915050565b60006020828403121561474d57600080fd5b600061475b848285016146e7565b91505092915050565b60006020828403121561477657600080fd5b6000614784848285016146fc565b91505092915050565b600080604083850312156147a057600080fd5b60006147ae858286016146e7565b92505060206147bf858286016146e7565b9150509250929050565b6000806000606084860312156147de57600080fd5b60006147ec868287016146e7565b93505060206147fd868287016146e7565b925050604061480e86828701614726565b9150509250925092565b6000806040838503121561482b57600080fd5b6000614839858286016146e7565b925050602061484a85828601614726565b9150509250929050565b60006020828403121561486657600080fd5b600061487484828501614726565b91505092915050565b6000806040838503121561489057600080fd5b600061489e85828601614726565b92505060206148af85828601614711565b9150509250929050565b60006148c583836148e0565b60208301905092915050565b6148da81615146565b82525050565b6148e981615134565b82525050565b6148f881615134565b82525050565b600061490982614fda565b6149138185614ffd565b935061491e83614fca565b8060005b8381101561494f57815161493688826148b9565b975061494183614ff0565b925050600181019050614922565b5085935050505092915050565b61496581615158565b82525050565b6149748161519b565b82525050565b614983816151bf565b82525050565b600061499482614fe5565b61499e818561500e565b93506149ae8185602086016151d1565b6149b78161530c565b840191505092915050565b60006149cf60238361500e565b91506149da8261531d565b604082019050919050565b60006149f2602a8361500e565b91506149fd8261536c565b604082019050919050565b6000614a1560268361500e565b9150614a20826153bb565b604082019050919050565b6000614a3860228361500e565b9150614a438261540a565b604082019050919050565b6000614a5b601b8361500e565b9150614a6682615459565b602082019050919050565b6000614a7e601b8361500e565b9150614a8982615482565b602082019050919050565b6000614aa160178361500e565b9150614aac826154ab565b602082019050919050565b6000614ac4601f8361500e565b9150614acf826154d4565b602082019050919050565b6000614ae760218361500e565b9150614af2826154fd565b604082019050919050565b6000614b0a60208361500e565b9150614b158261554c565b602082019050919050565b6000614b2d60298361500e565b9150614b3882615575565b604082019050919050565b6000614b5060258361500e565b9150614b5b826155c4565b604082019050919050565b6000614b7360248361500e565b9150614b7e82615613565b604082019050919050565b6000614b9660188361500e565b9150614ba182615662565b602082019050919050565b6000614bb9602c8361500e565b9150614bc48261568b565b604082019050919050565b6000614bdc60188361500e565b9150614be7826156da565b602082019050919050565b6000614bff60168361500e565b9150614c0a82615703565b602082019050919050565b614c1e81615184565b82525050565b614c2d8161518e565b82525050565b6000602082019050614c4860008301846148ef565b92915050565b6000602082019050614c6360008301846148d1565b92915050565b6000604082019050614c7e60008301856148ef565b614c8b60208301846148ef565b9392505050565b6000602082019050614ca7600083018461495c565b92915050565b6000602082019050614cc2600083018461496b565b92915050565b60006020820190508181036000830152614ce28184614989565b905092915050565b60006020820190508181036000830152614d03816149c2565b9050919050565b60006020820190508181036000830152614d23816149e5565b9050919050565b60006020820190508181036000830152614d4381614a08565b9050919050565b60006020820190508181036000830152614d6381614a2b565b9050919050565b60006020820190508181036000830152614d8381614a4e565b9050919050565b60006020820190508181036000830152614da381614a71565b9050919050565b60006020820190508181036000830152614dc381614a94565b9050919050565b60006020820190508181036000830152614de381614ab7565b9050919050565b60006020820190508181036000830152614e0381614ada565b9050919050565b60006020820190508181036000830152614e2381614afd565b9050919050565b60006020820190508181036000830152614e4381614b20565b9050919050565b60006020820190508181036000830152614e6381614b43565b9050919050565b60006020820190508181036000830152614e8381614b66565b9050919050565b60006020820190508181036000830152614ea381614b89565b9050919050565b60006020820190508181036000830152614ec381614bac565b9050919050565b60006020820190508181036000830152614ee381614bcf565b9050919050565b60006020820190508181036000830152614f0381614bf2565b9050919050565b6000602082019050614f1f6000830184614c15565b92915050565b6000604082019050614f3a6000830185614c15565b8181036020830152614f4c81846148fe565b90509392505050565b600060a082019050614f6a6000830188614c15565b614f77602083018761497a565b8181036040830152614f8981866148fe565b9050614f9860608301856148ef565b614fa56080830184614c15565b9695505050505050565b6000602082019050614fc46000830184614c24565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061502a82615184565b915061503583615184565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561506a5761506961527f565b5b828201905092915050565b600061508082615184565b915061508b83615184565b92508261509b5761509a6152ae565b5b828204905092915050565b60006150b182615184565b91506150bc83615184565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150f5576150f461527f565b5b828202905092915050565b600061510b82615184565b915061511683615184565b9250828210156151295761512861527f565b5b828203905092915050565b600061513f82615164565b9050919050565b600061515182615164565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151a6826151ad565b9050919050565b60006151b882615164565b9050919050565b60006151ca82615184565b9050919050565b60005b838110156151ef5780820151818401526020810190506151d4565b838111156151fe576000848401525b50505050565b6000600282049050600182168061521c57607f821691505b602082108114156152305761522f6152dd565b5b50919050565b600061524182615184565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152745761527361527f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f627579204665652063616e277420657863656564203225000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f73656c6c206665652063616e2774206578636565642038250000000000000000600082015250565b7f7461784665652063616e27742065786365656420322500000000000000000000600082015250565b61573581615134565b811461574057600080fd5b50565b61574c81615158565b811461575757600080fd5b50565b61576381615184565b811461576e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122016e74d635c3a1f44250a9f35a8932a710b313573fa425978f2761da7f9c34baf64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806352390c02116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610816578063dd62ed3e14610853578063ea2f0b3714610890578063f2fde38b146108b9578063ff872602146108e257610230565b80638da5cb5b1461072f578063906e9dd01461075a57806395d89b4114610783578063a457c2d7146107ae578063a5ece941146107eb57610230565b806370a08231116100f257806370a082311461065e578063715018a61461069b5780638203f5fe146106b257806388f82020146106c95780638b4cee081461070657610230565b806352390c02146105b65780635342acb4146105df578063590f897e1461061c57806367a907c21461064757610230565b80632d838119116101b15780633bd5d173116101755780633bd5d173146104d157806340b9a54b146104fa578063437823ec146105255780634549b0391461054e57806349bd5a5e1461058b57610230565b80632d838119146103d8578063313ce567146104155780633685d4191461044057806339509351146104695780633b124fe7146104a657610230565b806313114a9d116101f857806313114a9d146102ef5780631694505e1461031a57806318160ddd1461034557806323b872dd1461037057806327c8f835146103ad57610230565b8063061c82d01461023557806306fdde031461025e578063095ea7b3146102895780630cc835a3146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190614854565b6108f9565b005b34801561026a57600080fd5b506102736109dc565b6040516102809190614cc8565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190614818565b610a6e565b6040516102bd9190614c92565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190614854565b610a8c565b005b3480156102fb57600080fd5b50610304610b6f565b6040516103119190614f0a565b60405180910390f35b34801561032657600080fd5b5061032f610b79565b60405161033c9190614cad565b60405180910390f35b34801561035157600080fd5b5061035a610b9f565b6040516103679190614f0a565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906147c9565b610ba9565b6040516103a49190614c92565b60405180910390f35b3480156103b957600080fd5b506103c2610c82565b6040516103cf9190614c33565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190614854565b610ca6565b60405161040c9190614f0a565b60405180910390f35b34801561042157600080fd5b5061042a610d14565b6040516104379190614faf565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061473b565b610d2b565b005b34801561047557600080fd5b50610490600480360381019061048b9190614818565b611112565b60405161049d9190614c92565b60405180910390f35b3480156104b257600080fd5b506104bb6111c5565b6040516104c89190614f0a565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190614854565b6111cb565b005b34801561050657600080fd5b5061050f611346565b60405161051c9190614f0a565b60405180910390f35b34801561053157600080fd5b5061054c6004803603810190610547919061473b565b61134c565b005b34801561055a57600080fd5b506105756004803603810190610570919061487d565b61143c565b6040516105829190614f0a565b60405180910390f35b34801561059757600080fd5b506105a06114c0565b6040516105ad9190614c33565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d8919061473b565b6114e6565b005b3480156105eb57600080fd5b506106066004803603810190610601919061473b565b61179a565b6040516106139190614c92565b60405180910390f35b34801561062857600080fd5b506106316117f0565b60405161063e9190614f0a565b60405180910390f35b34801561065357600080fd5b5061065c6117f6565b005b34801561066a57600080fd5b506106856004803603810190610680919061473b565b6118cf565b6040516106929190614f0a565b60405180910390f35b3480156106a757600080fd5b506106b06119ba565b005b3480156106be57600080fd5b506106c7611b0d565b005b3480156106d557600080fd5b506106f060048036038101906106eb919061473b565b611e7d565b6040516106fd9190614c92565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190614854565b611ed3565b005b34801561073b57600080fd5b50610744611fb6565b6040516107519190614c33565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c919061473b565b611fdf565b005b34801561078f57600080fd5b506107986120b8565b6040516107a59190614cc8565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d09190614818565b61214a565b6040516107e29190614c92565b60405180910390f35b3480156107f757600080fd5b50610800612217565b60405161080d9190614c4e565b60405180910390f35b34801561082257600080fd5b5061083d60048036038101906108389190614818565b61223d565b60405161084a9190614c92565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061478d565b61225b565b6040516108879190614f0a565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b2919061473b565b6122e2565b005b3480156108c557600080fd5b506108e060048036038101906108db919061473b565b6123d2565b005b3480156108ee57600080fd5b506108f7612594565b005b61090161263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590614e0a565b60405180910390fd5b60028111156109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990614eea565b60405180910390fd5b8060138190555050565b6060600e80546109eb90615204565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1790615204565b8015610a645780601f10610a3957610100808354040283529160200191610a64565b820191906000526020600020905b815481529060010190602001808311610a4757829003601f168201915b5050505050905090565b6000610a82610a7b61263b565b8484612643565b6001905092915050565b610a9461263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614e0a565b60405180910390fd5b6002811115610b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5c90614daa565b60405180910390fd5b8060128190555050565b6000600d54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b6000610bb684848461280e565b610c7784610bc261263b565b610c728560405180606001604052806028815260200161577260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2861263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dcb9092919063ffffffff16565b612643565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000600c54821115610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490614d0a565b60405180910390fd5b6000610cf7612e2f565b9050610d0c8184612e5a90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b610d3361263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790614e0a565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390614d8a565b60405180910390fd5b60005b600a8054905081101561110e578173ffffffffffffffffffffffffffffffffffffffff16600a8281548110610ead577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110fb57600a6001600a80549050610f089190615100565b81548110610f3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806110c1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561110e565b808061110690615236565b915050610e4f565b5050565b60006111bb61111f61263b565b846111b6856006600061113061263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612643565b6001905092915050565b60135481565b60006111d561263b565b9050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614eaa565b60405180910390fd5b600061126f83612f02565b505050505090506112c881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061132081600c54612f5e90919063ffffffff16565b600c8190555061133b83600d54612ea490919063ffffffff16565b600d81905550505050565b60125481565b61135461263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890614e0a565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b54831115611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90614dca565b60405180910390fd5b816114a357600061149384612f02565b50505050509050809150506114ba565b60006114ae84612f02565b50505050915050809150505b92915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ee61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157290614e0a565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90614d8a565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116dc57611698600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6117fe61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614e0a565b60405180910390fd5b6002601281905550600860118190555060026013819055506001601960156101000a81548160ff021916908315150217905550674563918244f40000601781905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561196a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119b5565b6119b2600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca6565b90505b919050565b6119c261263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690614e0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b1561263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990614e0a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0157600080fd5b505afa158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190614764565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9b57600080fd5b505afa158015611caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd39190614764565b6040518363ffffffff1660e01b8152600401611cf0929190614c69565b602060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d429190614764565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000611dd1611fb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611edb61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90614e0a565b60405180910390fd5b6008811115611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390614eca565b60405180910390fd5b8060118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fe761263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90614e0a565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600f80546120c790615204565b80601f01602080910402602001604051908101604052809291908181526020018280546120f390615204565b80156121405780601f1061211557610100808354040283529160200191612140565b820191906000526020600020905b81548152906001019060200180831161212357829003601f168201915b5050505050905090565b600061220d61215761263b565b846122088560405180606001604052806025815260200161579a602591396006600061218161263b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dcb9092919063ffffffff16565b612643565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061225161224a61263b565b848461280e565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122ea61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236e90614e0a565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123da61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614e0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90614d2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61259c61263b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262090614e0a565b60405180910390fd5b683635c9adc5dea00000601781905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90614e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271a90614d4a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128019190614f0a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561287e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287590614e4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e590614cea565b60405180910390fd5b60008111612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890614e2a565b60405180910390fd5b612939611fb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a75750612977611fb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129fc57601960159054906101000a900460ff166129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614e8a565b60405180910390fd5b5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612aa75750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612afd5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bb657601754811115612b1157600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612b5c57600080fd5b601e42612b69919061501f565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506012546015819055505b6000612bc1306118cf565b9050601960149054906101000a900460ff16158015612c2d5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612c59576000811115612c4f576000811115612c4e57612c4d81612fa8565b5b5b6011546015819055505b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d045750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612dae5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dac5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b15612db857600190505b612dc485858584613003565b5050505050565b6000838311158290612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9190614cc8565b60405180910390fd5b5060008385612e229190615100565b9050809150509392505050565b6000806000612e3c61325a565b91509150612e538183612e5a90919063ffffffff16565b9250505090565b6000612e9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a5565b905092915050565b6000808284612eb3919061501f565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90614d6a565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612f198a613608565b9250925092506000806000612f378d8686612f32612e2f565b613662565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612fa083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dcb565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612fcc816136eb565b60004790506000811115612fe457612fe3476139e8565b5b506000601960146101000a81548160ff02191690831515021790555050565b8061301157613010613a54565b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130b45750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130c9576130c4848484613a97565b613246565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561316c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131815761317c848484613cf7565b613245565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132235750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323857613233848484613f57565b613244565b61324384848461424c565b5b5b5b8061325457613253614417565b5b50505050565b6000806000600c5490506000600b54905060005b600a80549050811015613568578260046000600a84815481106132ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133ce57508160056000600a8481548110613366577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133e557600c54600b54945094505050506135a1565b61349b60046000600a8481548110613426577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f5e90919063ffffffff16565b925061355360056000600a84815481106134de577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f5e90919063ffffffff16565b9150808061356090615236565b91505061326e565b50613580600b54600c54612e5a90919063ffffffff16565b82101561359857600c54600b549350935050506135a1565b81819350935050505b9091565b600080831182906135ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e39190614cc8565b60405180910390fd5b50600083856135fb9190615075565b9050809150509392505050565b6000806000806136178561442b565b905060006136248661445c565b9050600061364d8261363f858a612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061367b858961448d90919063ffffffff16565b90506000613692868961448d90919063ffffffff16565b905060006136a9878961448d90919063ffffffff16565b905060006136d2826136c48587612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff81111561372e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561375c5781602001602082028036833780820191505090505b509050308160008151811061379a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561383c57600080fd5b505afa158015613850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138749190614764565b816001815181106138ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061391530601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612643565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613979959493929190614f55565b600060405180830381600087803b15801561399357600080fd5b505af11580156139a7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516139dc929190614f25565b60405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a50573d6000803e3d6000fd5b5050565b6000601354148015613a6857506000601554145b15613a7257613a95565b601354601481905550601554601681905550600060138190555060006015819055505b565b600080600080600080613aa987612f02565b955095509550955095509550613b0787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b9c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c7d81614508565b613c8784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ce49190614f0a565b60405180910390a3505050505050505050565b600080600080600080613d0987612f02565b955095509550955095509550613d6786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dfc83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613edd81614508565b613ee784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f449190614f0a565b60405180910390a3505050505050505050565b600080600080600080613f6987612f02565b955095509550955095509550613fc787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140f183600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061418685600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d281614508565b6141dc84836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516142399190614f0a565b60405180910390a3505050505050505050565b60008060008060008061425e87612f02565b9550955095509550955095506142bc86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061439d81614508565b6143a784836146ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144049190614f0a565b60405180910390a3505050505050505050565b601454601381905550601654601581905550565b600061445560646144476013548561448d90919063ffffffff16565b612e5a90919063ffffffff16565b9050919050565b600061448660646144786015548561448d90919063ffffffff16565b612e5a90919063ffffffff16565b9050919050565b6000808314156144a05760009050614502565b600082846144ae91906150a6565b90508284826144bd9190615075565b146144fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144f490614dea565b60405180910390fd5b809150505b92915050565b6000614512612e2f565b90506000614529828461448d90919063ffffffff16565b905061457d81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146a85761466483600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6146c282600c54612f5e90919063ffffffff16565b600c819055506146dd81600d54612ea490919063ffffffff16565b600d819055505050565b6000813590506146f68161572c565b92915050565b60008151905061470b8161572c565b92915050565b60008135905061472081615743565b92915050565b6000813590506147358161575a565b92915050565b60006020828403121561474d57600080fd5b600061475b848285016146e7565b91505092915050565b60006020828403121561477657600080fd5b6000614784848285016146fc565b91505092915050565b600080604083850312156147a057600080fd5b60006147ae858286016146e7565b92505060206147bf858286016146e7565b9150509250929050565b6000806000606084860312156147de57600080fd5b60006147ec868287016146e7565b93505060206147fd868287016146e7565b925050604061480e86828701614726565b9150509250925092565b6000806040838503121561482b57600080fd5b6000614839858286016146e7565b925050602061484a85828601614726565b9150509250929050565b60006020828403121561486657600080fd5b600061487484828501614726565b91505092915050565b6000806040838503121561489057600080fd5b600061489e85828601614726565b92505060206148af85828601614711565b9150509250929050565b60006148c583836148e0565b60208301905092915050565b6148da81615146565b82525050565b6148e981615134565b82525050565b6148f881615134565b82525050565b600061490982614fda565b6149138185614ffd565b935061491e83614fca565b8060005b8381101561494f57815161493688826148b9565b975061494183614ff0565b925050600181019050614922565b5085935050505092915050565b61496581615158565b82525050565b6149748161519b565b82525050565b614983816151bf565b82525050565b600061499482614fe5565b61499e818561500e565b93506149ae8185602086016151d1565b6149b78161530c565b840191505092915050565b60006149cf60238361500e565b91506149da8261531d565b604082019050919050565b60006149f2602a8361500e565b91506149fd8261536c565b604082019050919050565b6000614a1560268361500e565b9150614a20826153bb565b604082019050919050565b6000614a3860228361500e565b9150614a438261540a565b604082019050919050565b6000614a5b601b8361500e565b9150614a6682615459565b602082019050919050565b6000614a7e601b8361500e565b9150614a8982615482565b602082019050919050565b6000614aa160178361500e565b9150614aac826154ab565b602082019050919050565b6000614ac4601f8361500e565b9150614acf826154d4565b602082019050919050565b6000614ae760218361500e565b9150614af2826154fd565b604082019050919050565b6000614b0a60208361500e565b9150614b158261554c565b602082019050919050565b6000614b2d60298361500e565b9150614b3882615575565b604082019050919050565b6000614b5060258361500e565b9150614b5b826155c4565b604082019050919050565b6000614b7360248361500e565b9150614b7e82615613565b604082019050919050565b6000614b9660188361500e565b9150614ba182615662565b602082019050919050565b6000614bb9602c8361500e565b9150614bc48261568b565b604082019050919050565b6000614bdc60188361500e565b9150614be7826156da565b602082019050919050565b6000614bff60168361500e565b9150614c0a82615703565b602082019050919050565b614c1e81615184565b82525050565b614c2d8161518e565b82525050565b6000602082019050614c4860008301846148ef565b92915050565b6000602082019050614c6360008301846148d1565b92915050565b6000604082019050614c7e60008301856148ef565b614c8b60208301846148ef565b9392505050565b6000602082019050614ca7600083018461495c565b92915050565b6000602082019050614cc2600083018461496b565b92915050565b60006020820190508181036000830152614ce28184614989565b905092915050565b60006020820190508181036000830152614d03816149c2565b9050919050565b60006020820190508181036000830152614d23816149e5565b9050919050565b60006020820190508181036000830152614d4381614a08565b9050919050565b60006020820190508181036000830152614d6381614a2b565b9050919050565b60006020820190508181036000830152614d8381614a4e565b9050919050565b60006020820190508181036000830152614da381614a71565b9050919050565b60006020820190508181036000830152614dc381614a94565b9050919050565b60006020820190508181036000830152614de381614ab7565b9050919050565b60006020820190508181036000830152614e0381614ada565b9050919050565b60006020820190508181036000830152614e2381614afd565b9050919050565b60006020820190508181036000830152614e4381614b20565b9050919050565b60006020820190508181036000830152614e6381614b43565b9050919050565b60006020820190508181036000830152614e8381614b66565b9050919050565b60006020820190508181036000830152614ea381614b89565b9050919050565b60006020820190508181036000830152614ec381614bac565b9050919050565b60006020820190508181036000830152614ee381614bcf565b9050919050565b60006020820190508181036000830152614f0381614bf2565b9050919050565b6000602082019050614f1f6000830184614c15565b92915050565b6000604082019050614f3a6000830185614c15565b8181036020830152614f4c81846148fe565b90509392505050565b600060a082019050614f6a6000830188614c15565b614f77602083018761497a565b8181036040830152614f8981866148fe565b9050614f9860608301856148ef565b614fa56080830184614c15565b9695505050505050565b6000602082019050614fc46000830184614c24565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061502a82615184565b915061503583615184565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561506a5761506961527f565b5b828201905092915050565b600061508082615184565b915061508b83615184565b92508261509b5761509a6152ae565b5b828204905092915050565b60006150b182615184565b91506150bc83615184565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150f5576150f461527f565b5b828202905092915050565b600061510b82615184565b915061511683615184565b9250828210156151295761512861527f565b5b828203905092915050565b600061513f82615164565b9050919050565b600061515182615164565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151a6826151ad565b9050919050565b60006151b882615164565b9050919050565b60006151ca82615184565b9050919050565b60005b838110156151ef5780820151818401526020810190506151d4565b838111156151fe576000848401525b50505050565b6000600282049050600182168061521c57607f821691505b602082108114156152305761522f6152dd565b5b50919050565b600061524182615184565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152745761527361527f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f627579204665652063616e277420657863656564203225000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f73656c6c206665652063616e2774206578636565642038250000000000000000600082015250565b7f7461784665652063616e27742065786365656420322500000000000000000000600082015250565b61573581615134565b811461574057600080fd5b50565b61574c81615158565b811461575757600080fd5b50565b61576381615184565b811461576e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122016e74d635c3a1f44250a9f35a8932a710b313573fa425978f2761da7f9c34baf64736f6c63430008040033

Deployed Bytecode Sourcemap

14758:17702:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31472:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17259:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18171:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31640:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19292:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16035:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17536:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18340:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14983:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20234:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17445:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20838:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18661:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15815:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19401:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15786:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31227:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19790:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16083:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20495:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31092:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15756:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17067:184;;;;;;;;;;;;;:::i;:::-;;17639:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6389:148;;;;;;;;;;;;;:::i;:::-;;16613:442;;;;;;;;;;;;;:::i;:::-;;19164:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31802:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6164:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31970:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17350:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18887:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14882:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17845:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18020:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31350:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6545:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32261:96;;;;;;;;;;;;;:::i;:::-;;31472:156;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31565:1:::1;31555:6;:11;;31546:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;31614:6;31604:7;:16;;;;31472:156:::0;:::o;17259:83::-;17296:13;17329:5;17322:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17259:83;:::o;18171:161::-;18246:4;18263:39;18272:12;:10;:12::i;:::-;18286:7;18295:6;18263:8;:39::i;:::-;18320:4;18313:11;;18171:161;;;;:::o;31640:150::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31726:1:::1;31716:6;:11;;31707:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31776:6;31766:7;:16;;;;31640:150:::0;:::o;19292:87::-;19334:7;19361:10;;19354:17;;19292:87;:::o;16035:41::-;;;;;;;;;;;;;:::o;17536:95::-;17589:7;17616;;17609:14;;17536:95;:::o;18340:313::-;18438:4;18455:36;18465:6;18473:9;18484:6;18455:9;:36::i;:::-;18502:121;18511:6;18519:12;:10;:12::i;:::-;18533:89;18571:6;18533:89;;;;;;;;;;;;;;;;;:11;:19;18545:6;18533:19;;;;;;;;;;;;;;;:33;18553:12;:10;:12::i;:::-;18533:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18502:8;:121::i;:::-;18641:4;18634:11;;18340:313;;;;;:::o;14983:81::-;;;:::o;20234:253::-;20300:7;20339;;20328;:18;;20320:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20404:19;20427:10;:8;:10::i;:::-;20404:33;;20455:24;20467:11;20455:7;:11;;:24;;;;:::i;:::-;20448:31;;;20234:253;;;:::o;17445:83::-;17486:5;17511:9;;;;;;;;;;;17504:16;;17445:83;:::o;20838:479::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20920:11:::1;:20;20932:7;20920:20;;;;;;;;;;;;;;;;;;;;;;;;;20912:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20988:9;20983:327;21007:9;:16;;;;21003:1;:20;20983:327;;;21065:7;21049:23;;:9;21059:1;21049:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21045:254;;;21108:9;21137:1;21118:9;:16;;;;:20;;;;:::i;:::-;21108:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21093:9;21103:1;21093:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21177:1;21158:7;:16;21166:7;21158:16;;;;;;;;;;;;;;;:20;;;;21220:5;21197:11;:20;21209:7;21197:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21244:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21278:5;;21045:254;21025:3;;;;;:::i;:::-;;;;20983:327;;;;20838:479:::0;:::o;18661:218::-;18749:4;18766:83;18775:12;:10;:12::i;:::-;18789:7;18798:50;18837:10;18798:11;:25;18810:12;:10;:12::i;:::-;18798:25;;;;;;;;;;;;;;;:34;18824:7;18798:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18766:8;:83::i;:::-;18867:4;18860:11;;18661:218;;;;:::o;15815:22::-;;;;:::o;19401:377::-;19453:14;19470:12;:10;:12::i;:::-;19453:29;;19502:11;:19;19514:6;19502:19;;;;;;;;;;;;;;;;;;;;;;;;;19501:20;19493:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19582:15;19606:19;19617:7;19606:10;:19::i;:::-;19581:44;;;;;;;19654:28;19674:7;19654;:15;19662:6;19654:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19636:7;:15;19644:6;19636:15;;;;;;;;;;;;;;;:46;;;;19703:20;19715:7;19703;;:11;;:20;;;;:::i;:::-;19693:7;:30;;;;19747:23;19762:7;19747:10;;:14;;:23;;;;:::i;:::-;19734:10;:36;;;;19401:377;;;:::o;15786:22::-;;;;:::o;31227:111::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31326:4:::1;31296:18;:27;31315:7;31296:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;31227:111:::0;:::o;19790:436::-;19880:7;19919;;19908;:18;;19900:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19978:17;19973:246;;20013:15;20037:19;20048:7;20037:10;:19::i;:::-;20012:44;;;;;;;20078:7;20071:14;;;;;19973:246;20120:23;20151:19;20162:7;20151:10;:19::i;:::-;20118:52;;;;;;;20192:15;20185:22;;;19790:436;;;;;:::o;16083:28::-;;;;;;;;;;;;;:::o;20495:335::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20580:11:::1;:20;20592:7;20580:20;;;;;;;;;;;;;;;;;;;;;;;;;20579:21;20571:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20665:1;20646:7;:16;20654:7;20646:16;;;;;;;;;;;;;;;;:20;20643:108;;;20702:37;20722:7;:16;20730:7;20722:16;;;;;;;;;;;;;;;;20702:19;:37::i;:::-;20683:7;:16;20691:7;20683:16;;;;;;;;;;;;;;;:56;;;;20643:108;20784:4;20761:11;:20;20773:7;20761:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20799:9;20814:7;20799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20495:335:::0;:::o;31092:123::-;31156:4;31180:18;:27;31199:7;31180:27;;;;;;;;;;;;;;;;;;;;;;;;;31173:34;;31092:123;;;:::o;15756:23::-;;;;:::o;17067:184::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17133:1:::1;17123:7;:11;;;;17156:1;17145:8;:12;;;;17176:1;17168:7;:9;;;;17202:4;17188:11;;:18;;;;;;;;;;;;;;;;;;17232:11;17217:12;:26;;;;17067:184::o:0;17639:198::-;17705:7;17729:11;:20;17741:7;17729:20;;;;;;;;;;;;;;;;;;;;;;;;;17725:49;;;17758:7;:16;17766:7;17758:16;;;;;;;;;;;;;;;;17751:23;;;;17725:49;17792:37;17812:7;:16;17820:7;17812:16;;;;;;;;;;;;;;;;17792:19;:37::i;:::-;17785:44;;17639:198;;;;:::o;6389:148::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6496:1:::1;6459:40;;6480:6;::::0;::::1;;;;;;;;6459:40;;;;;;;;;;;;6527:1;6510:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6389:148::o:0;16613:442::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16669:35:::1;16726:42;16669:100;;16814:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16796:66;;;16871:4;16878:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16796:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16780:13;;:122;;;;;;;;;;;;;;;;;;16933:16;16915:15;;:34;;;;;;;;;;;;;;;;;;16992:4;16962:18;:27;16981:7;:5;:7::i;:::-;16962:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;17043:4;17007:18;:33;17034:4;17007:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;6368:1;16613:442::o:0;19164:120::-;19232:4;19256:11;:20;19268:7;19256:20;;;;;;;;;;;;;;;;;;;;;;;;;19249:27;;19164:120;;;:::o;31802:156::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31891:1:::1;31880:7;:12;;31871:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31943:7;31932:8;:18;;;;31802:156:::0;:::o;6164:79::-;6202:7;6229:6;;;;;;;;;;;6222:13;;6164:79;:::o;31970:141::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32085:17:::1;32058:16;;:45;;;;;;;;;;;;;;;;;;31970:141:::0;:::o;17350:87::-;17389:13;17422:7;17415:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17350:87;:::o;18887:269::-;18980:4;18997:129;19006:12;:10;:12::i;:::-;19020:7;19029:96;19068:15;19029:96;;;;;;;;;;;;;;;;;:11;:25;19041:12;:10;:12::i;:::-;19029:25;;;;;;;;;;;;;;;:34;19055:7;19029:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18997:8;:129::i;:::-;19144:4;19137:11;;18887:269;;;;:::o;14882:93::-;;;;;;;;;;;;;:::o;17845:167::-;17923:4;17940:42;17950:12;:10;:12::i;:::-;17964:9;17975:6;17940:9;:42::i;:::-;18000:4;17993:11;;17845:167;;;;:::o;18020:143::-;18101:7;18128:11;:18;18140:5;18128:18;;;;;;;;;;;;;;;:27;18147:7;18128:27;;;;;;;;;;;;;;;;18121:34;;18020:143;;;;:::o;31350:110::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31447:5:::1;31417:18;:27;31436:7;31417:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;31350:110:::0;:::o;6545:244::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6654:1:::1;6634:22;;:8;:22;;;;6626:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6744:8;6715:38;;6736:6;::::0;::::1;;;;;;;;6715:38;;;;;;;;;;;;6773:8;6764:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6545:244:::0;:::o;32261:96::-;6308:12;:10;:12::i;:::-;6298:22;;:6;;;;;;;;;;:22;;;6290:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32337:12:::1;32322;:27;;;;32261:96::o:0;452:115::-;505:15;548:10;533:26;;452:115;:::o;21325:337::-;21435:1;21418:19;;:5;:19;;;;21410:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21516:1;21497:21;;:7;:21;;;;21489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21600:6;21570:11;:18;21582:5;21570:18;;;;;;;;;;;;;;;:27;21589:7;21570:27;;;;;;;;;;;;;;;:36;;;;21638:7;21622:32;;21631:5;21622:32;;;21647:6;21622:32;;;;;;:::i;:::-;;;;;;;;21325:337;;;:::o;21670:1503::-;21808:1;21792:18;;:4;:18;;;;21784:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21885:1;21871:16;;:2;:16;;;;21863:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21955:1;21946:6;:10;21938:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22023:7;:5;:7::i;:::-;22016:14;;:4;:14;;;;:30;;;;;22039:7;:5;:7::i;:::-;22034:12;;:2;:12;;;;22016:30;22012:84;;;22056:11;;;;;;;;;;;22048:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22012:84;22185:13;;;;;;;;;;;22177:21;;:4;:21;;;:55;;;;;22216:15;;;;;;;;;;;22202:30;;:2;:30;;;;22177:55;:82;;;;;22237:18;:22;22256:2;22237:22;;;;;;;;;;;;;;;;;;;;;;;;;22236:23;22177:82;22174:325;;;22294:12;;22284:6;:22;;22276:31;;;;;;22345:15;22330:8;:12;22339:2;22330:12;;;;;;;;;;;;;;;;:30;22322:39;;;;;;22410:10;22391:15;:30;;;;:::i;:::-;22376:8;:12;22385:2;22376:12;;;;;;;;;;;;;;;:45;;;;22466:7;;22450:13;:23;;;;22174:325;22511:28;22542:24;22560:4;22542:9;:24::i;:::-;22511:55;;22608:6;;;;;;;;;;;22607:7;:30;;;;;22624:13;;;;;;;;;;;22618:19;;:2;:19;;;22607:30;22603:261;;;22680:1;22657:20;:24;22654:146;;;22728:1;22705:20;:24;22702:78;;;22748:32;22759:20;22748:10;:32::i;:::-;22702:78;22654:146;22844:8;;22828:13;:24;;;;22603:261;22884:12;22971:13;;;;;;;;;;;22965:19;;:4;:19;;;:40;;;;22992:13;;;;;;;;;;;22988:17;;:2;:17;;;22965:40;22964:99;;;;;23012:18;:24;23031:4;23012:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23040:18;:22;23059:2;23040:22;;;;;;;;;;;;;;;;;;;;;;;;;23012:50;23010:53;22964:99;22959:148;;;23091:4;23081:14;;22959:148;23127:38;23142:4;23147:2;23150:6;23157:7;23127:14;:38::i;:::-;21670:1503;;;;;:::o;1863:192::-;1949:7;1982:1;1977;:6;;1985:12;1969:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2009:9;2025:1;2021;:5;;;;:::i;:::-;2009:17;;2046:1;2039:8;;;1863:192;;;;;:::o;29242:163::-;29283:7;29304:15;29321;29340:19;:17;:19::i;:::-;29303:56;;;;29377:20;29389:7;29377;:11;;:20;;;;:::i;:::-;29370:27;;;;29242:163;:::o;2323:132::-;2381:7;2408:39;2412:1;2415;2408:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2401:46;;2323:132;;;;:::o;1530:181::-;1588:7;1608:9;1624:1;1620;:5;;;;:::i;:::-;1608:17;;1649:1;1644;:6;;1636:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1702:1;1695:8;;;1530:181;;;;:::o;28040:419::-;28099:7;28108;28117;28126;28135;28144;28165:23;28190:12;28204:18;28226:20;28238:7;28226:11;:20::i;:::-;28164:82;;;;;;28258:15;28275:23;28300:12;28316:50;28328:7;28337:4;28343:10;28355;:8;:10::i;:::-;28316:11;:50::i;:::-;28257:109;;;;;;28385:7;28394:15;28411:4;28417:15;28434:4;28440:10;28377:74;;;;;;;;;;;;;;;;;;28040:419;;;;;;;:::o;1719:136::-;1777:7;1804:43;1808:1;1811;1804:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1797:50;;1719:136;;;;:::o;23181:334::-;16414:4;16405:6;;:13;;;;;;;;;;;;;;;;;;23262:38:::1;23279:20;23262:16;:38::i;:::-;23358:26;23387:21;23358:50;;23443:1;23422:18;:22;23419:89;;;23461:35;23474:21;23461:12;:35::i;:::-;23419:89;16429:1;16450:5:::0;16441:6;;:14;;;;;;;;;;;;;;;;;;23181:334;:::o;24845:704::-;24956:7;24952:40;;24978:14;:12;:14::i;:::-;24952:40;25017:11;:19;25029:6;25017:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;25041:11;:22;25053:9;25041:22;;;;;;;;;;;;;;;;;;;;;;;;;25040:23;25017:46;25013:467;;;25080:48;25102:6;25110:9;25121:6;25080:21;:48::i;:::-;25013:467;;;25151:11;:19;25163:6;25151:19;;;;;;;;;;;;;;;;;;;;;;;;;25150:20;:46;;;;;25174:11;:22;25186:9;25174:22;;;;;;;;;;;;;;;;;;;;;;;;;25150:46;25146:334;;;25213:46;25233:6;25241:9;25252:6;25213:19;:46::i;:::-;25146:334;;;25281:11;:19;25293:6;25281:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25304:11;:22;25316:9;25304:22;;;;;;;;;;;;;;;;;;;;;;;;;25281:45;25277:203;;;25343:48;25365:6;25373:9;25384:6;25343:21;:48::i;:::-;25277:203;;;25424:44;25442:6;25450:9;25461:6;25424:17;:44::i;:::-;25277:203;25146:334;25013:467;25504:7;25500:41;;25526:15;:13;:15::i;:::-;25500:41;24845:704;;;;:::o;29413:561::-;29463:7;29472;29492:15;29510:7;;29492:25;;29528:15;29546:7;;29528:25;;29575:9;29570:289;29594:9;:16;;;;29590:1;:20;29570:289;;;29660:7;29636;:21;29644:9;29654:1;29644:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29636:21;;;;;;;;;;;;;;;;:31;:66;;;;29695:7;29671;:21;29679:9;29689:1;29679:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29671:21;;;;;;;;;;;;;;;;:31;29636:66;29632:97;;;29712:7;;29721;;29704:25;;;;;;;;;29632:97;29754:34;29766:7;:21;29774:9;29784:1;29774:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29766:21;;;;;;;;;;;;;;;;29754:7;:11;;:34;;;;:::i;:::-;29744:44;;29813:34;29825:7;:21;29833:9;29843:1;29833:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29825:21;;;;;;;;;;;;;;;;29813:7;:11;;:34;;;;:::i;:::-;29803:44;;29612:3;;;;;:::i;:::-;;;;29570:289;;;;29883:20;29895:7;;29883;;:11;;:20;;;;:::i;:::-;29873:7;:30;29869:61;;;29913:7;;29922;;29905:25;;;;;;;;29869:61;29949:7;29958;29941:25;;;;;;29413:561;;;:::o;2463:278::-;2549:7;2581:1;2577;:5;2584:12;2569:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2608:9;2624:1;2620;:5;;;;:::i;:::-;2608:17;;2732:1;2725:8;;;2463:278;;;;;:::o;28467:330::-;28527:7;28536;28545;28565:12;28580:24;28596:7;28580:15;:24::i;:::-;28565:39;;28615:18;28636:30;28658:7;28636:21;:30::i;:::-;28615:51;;28677:23;28703:33;28725:10;28703:17;28715:4;28703:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;28677:59;;28755:15;28772:4;28778:10;28747:42;;;;;;;;;28467:330;;;;;:::o;28805:429::-;28920:7;28929;28938;28958:15;28976:24;28988:11;28976:7;:11;;:24;;;;:::i;:::-;28958:42;;29011:12;29026:21;29035:11;29026:4;:8;;:21;;;;:::i;:::-;29011:36;;29058:18;29079:27;29094:11;29079:10;:14;;:27;;;;:::i;:::-;29058:48;;29117:23;29143:33;29165:10;29143:17;29155:4;29143:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;29117:59;;29195:7;29204:15;29221:4;29187:39;;;;;;;;;;28805:429;;;;;;;;:::o;23644:666::-;23770:21;23808:1;23794:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23770:40;;23839:4;23821;23826:1;23821:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;23865:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23855:4;23860:1;23855:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;23900:62;23917:4;23932:15;;;;;;;;;;;23950:11;23900:8;:62::i;:::-;24001:15;;;;;;;;;;;:66;;;24082:11;24108:1;24152:4;24179;24215:15;24001:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24267:35;24284:11;24297:4;24267:35;;;;;;;:::i;:::-;;;;;;;;23644:666;;:::o;23527:98::-;23584:16;;;;;;;;;;;:25;;:33;23610:6;23584:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23527:98;:::o;30697:250::-;30754:1;30743:7;;:12;:34;;;;;30776:1;30759:13;;:18;30743:34;30740:46;;;30779:7;;30740:46;30824:7;;30806:15;:25;;;;30866:13;;30842:21;:37;;;;30910:1;30900:7;:11;;;;30938:1;30922:13;:17;;;;30697:250;:::o;26661:566::-;26764:15;26781:23;26806:12;26820:23;26845:12;26859:18;26881:19;26892:7;26881:10;:19::i;:::-;26763:137;;;;;;;;;;;;26929:28;26949:7;26929;:15;26937:6;26929:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26911:7;:15;26919:6;26911:15;;;;;;;;;;;;;;;:46;;;;26986:28;27006:7;26986;:15;26994:6;26986:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26968:7;:15;26976:6;26968:15;;;;;;;;;;;;;;;:46;;;;27046:39;27069:15;27046:7;:18;27054:9;27046:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27025:7;:18;27033:9;27025:18;;;;;;;;;;;;;;;:60;;;;27099:26;27114:10;27099:14;:26::i;:::-;27136:23;27148:4;27154;27136:11;:23::i;:::-;27192:9;27175:44;;27184:6;27175:44;;;27203:15;27175:44;;;;;;:::i;:::-;;;;;;;;26661:566;;;;;;;;;:::o;26067:586::-;26168:15;26185:23;26210:12;26224:23;26249:12;26263:18;26285:19;26296:7;26285:10;:19::i;:::-;26167:137;;;;;;;;;;;;26333:28;26353:7;26333;:15;26341:6;26333:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26315:7;:15;26323:6;26315:15;;;;;;;;;;;;;;;:46;;;;26393:39;26416:15;26393:7;:18;26401:9;26393:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26372:7;:18;26380:9;26372:18;;;;;;;;;;;;;;;:60;;;;26464:39;26487:15;26464:7;:18;26472:9;26464:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26443:7;:18;26451:9;26443:18;;;;;;;;;;;;;;;:60;;;;26525:26;26540:10;26525:14;:26::i;:::-;26562:23;26574:4;26580;26562:11;:23::i;:::-;26618:9;26601:44;;26610:6;26601:44;;;26629:15;26601:44;;;;;;:::i;:::-;;;;;;;;26067:586;;;;;;;;;:::o;27235:642::-;27338:15;27355:23;27380:12;27394:23;27419:12;27433:18;27455:19;27466:7;27455:10;:19::i;:::-;27337:137;;;;;;;;;;;;27503:28;27523:7;27503;:15;27511:6;27503:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27485:7;:15;27493:6;27485:15;;;;;;;;;;;;;;;:46;;;;27560:28;27580:7;27560;:15;27568:6;27560:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27542:7;:15;27550:6;27542:15;;;;;;;;;;;;;;;:46;;;;27620:39;27643:15;27620:7;:18;27628:9;27620:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27599:7;:18;27607:9;27599:18;;;;;;;;;;;;;;;:60;;;;27691:39;27714:15;27691:7;:18;27699:9;27691:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27670:7;:18;27678:9;27670:18;;;;;;;;;;;;;;;:60;;;;27749:26;27764:10;27749:14;:26::i;:::-;27786:23;27798:4;27804;27786:11;:23::i;:::-;27842:9;27825:44;;27834:6;27825:44;;;27853:15;27825:44;;;;;;:::i;:::-;;;;;;;;27235:642;;;;;;;;;:::o;25557:502::-;25656:15;25673:23;25698:12;25712:23;25737:12;25751:18;25773:19;25784:7;25773:10;:19::i;:::-;25655:137;;;;;;;;;;;;25821:28;25841:7;25821;:15;25829:6;25821:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25803:7;:15;25811:6;25803:15;;;;;;;;;;;;;;;:46;;;;25881:39;25904:15;25881:7;:18;25889:9;25881:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25860:7;:18;25868:9;25860:18;;;;;;;;;;;;;;;:60;;;;25931:26;25946:10;25931:14;:26::i;:::-;25968:23;25980:4;25986;25968:11;:23::i;:::-;26024:9;26007:44;;26016:6;26007:44;;;26035:15;26007:44;;;;;;:::i;:::-;;;;;;;;25557:502;;;;;;;;;:::o;30959:125::-;31013:15;;31003:7;:25;;;;31055:21;;31039:13;:37;;;;30959:125::o;30353:154::-;30417:7;30444:55;30483:5;30444:20;30456:7;;30444;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;30437:62;;30353:154;;;:::o;30519:166::-;30589:7;30616:61;30661:5;30616:26;30628:13;;30616:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;30609:68;;30519:166;;;:::o;2063:250::-;2121:7;2150:1;2145;:6;2141:47;;;2175:1;2168:8;;;;2141:47;2200:9;2216:1;2212;:5;;;;:::i;:::-;2200:17;;2245:1;2240;2236;:5;;;;:::i;:::-;:10;2228:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1;2297:8;;;2063:250;;;;;:::o;29986:355::-;30049:19;30072:10;:8;:10::i;:::-;30049:33;;30093:18;30114:27;30129:11;30114:10;:14;;:27;;;;:::i;:::-;30093:48;;30177:38;30204:10;30177:7;:22;30193:4;30177:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30152:7;:22;30168:4;30152:22;;;;;;;;;;;;;;;:63;;;;30229:11;:26;30249:4;30229:26;;;;;;;;;;;;;;;;;;;;;;;;;30226:107;;;30295:38;30322:10;30295:7;:22;30311:4;30295:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30270:7;:22;30286:4;30270:22;;;;;;;;;;;;;;;:63;;;;30226:107;29986:355;;;:::o;27885:147::-;27963:17;27975:4;27963:7;;:11;;:17;;;;:::i;:::-;27953:7;:27;;;;28004:20;28019:4;28004:10;;:14;;:20;;;;:::i;:::-;27991:10;:33;;;;27885:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;644:6;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:284::-;923:6;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:64;1112:7;1103:6;1092:9;1088:22;1056:64;:::i;:::-;1046:74;;1002:128;930:207;;;;:::o;1143:407::-;1211:6;1219;1268:2;1256:9;1247:7;1243:23;1239:32;1236:2;;;1284:1;1281;1274:12;1236:2;1327:1;1352:53;1397:7;1388:6;1377:9;1373:22;1352:53;:::i;:::-;1342:63;;1298:117;1454:2;1480:53;1525:7;1516:6;1505:9;1501:22;1480:53;:::i;:::-;1470:63;;1425:118;1226:324;;;;;:::o;1556:552::-;1633:6;1641;1649;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1757:1;1782:53;1827:7;1818:6;1807:9;1803:22;1782:53;:::i;:::-;1772:63;;1728:117;1884:2;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1855:118;2012:2;2038:53;2083:7;2074:6;2063:9;2059:22;2038:53;:::i;:::-;2028:63;;1983:118;1656:452;;;;;:::o;2114:407::-;2182:6;2190;2239:2;2227:9;2218:7;2214:23;2210:32;2207:2;;;2255:1;2252;2245:12;2207:2;2298:1;2323:53;2368:7;2359:6;2348:9;2344:22;2323:53;:::i;:::-;2313:63;;2269:117;2425:2;2451:53;2496:7;2487:6;2476:9;2472:22;2451:53;:::i;:::-;2441:63;;2396:118;2197:324;;;;;:::o;2527:262::-;2586:6;2635:2;2623:9;2614:7;2610:23;2606:32;2603:2;;;2651:1;2648;2641:12;2603:2;2694:1;2719:53;2764:7;2755:6;2744:9;2740:22;2719:53;:::i;:::-;2709:63;;2665:117;2593:196;;;;:::o;2795:401::-;2860:6;2868;2917:2;2905:9;2896:7;2892:23;2888:32;2885:2;;;2933:1;2930;2923:12;2885:2;2976:1;3001:53;3046:7;3037:6;3026:9;3022:22;3001:53;:::i;:::-;2991:63;;2947:117;3103:2;3129:50;3171:7;3162:6;3151:9;3147:22;3129:50;:::i;:::-;3119:60;;3074:115;2875:321;;;;;:::o;3202:179::-;3271:10;3292:46;3334:3;3326:6;3292:46;:::i;:::-;3370:4;3365:3;3361:14;3347:28;;3282:99;;;;:::o;3387:142::-;3490:32;3516:5;3490:32;:::i;:::-;3485:3;3478:45;3468:61;;:::o;3535:108::-;3612:24;3630:5;3612:24;:::i;:::-;3607:3;3600:37;3590:53;;:::o;3649:118::-;3736:24;3754:5;3736:24;:::i;:::-;3731:3;3724:37;3714:53;;:::o;3803:732::-;3922:3;3951:54;3999:5;3951:54;:::i;:::-;4021:86;4100:6;4095:3;4021:86;:::i;:::-;4014:93;;4131:56;4181:5;4131:56;:::i;:::-;4210:7;4241:1;4226:284;4251:6;4248:1;4245:13;4226:284;;;4327:6;4321:13;4354:63;4413:3;4398:13;4354:63;:::i;:::-;4347:70;;4440:60;4493:6;4440:60;:::i;:::-;4430:70;;4286:224;4273:1;4270;4266:9;4261:14;;4226:284;;;4230:14;4526:3;4519:10;;3927:608;;;;;;;:::o;4541:109::-;4622:21;4637:5;4622:21;:::i;:::-;4617:3;4610:34;4600:50;;:::o;4656:185::-;4770:64;4828:5;4770:64;:::i;:::-;4765:3;4758:77;4748:93;;:::o;4847:147::-;4942:45;4981:5;4942:45;:::i;:::-;4937:3;4930:58;4920:74;;:::o;5000:364::-;5088:3;5116:39;5149:5;5116:39;:::i;:::-;5171:71;5235:6;5230:3;5171:71;:::i;:::-;5164:78;;5251:52;5296:6;5291:3;5284:4;5277:5;5273:16;5251:52;:::i;:::-;5328:29;5350:6;5328:29;:::i;:::-;5323:3;5319:39;5312:46;;5092:272;;;;;:::o;5370:366::-;5512:3;5533:67;5597:2;5592:3;5533:67;:::i;:::-;5526:74;;5609:93;5698:3;5609:93;:::i;:::-;5727:2;5722:3;5718:12;5711:19;;5516:220;;;:::o;5742:366::-;5884:3;5905:67;5969:2;5964:3;5905:67;:::i;:::-;5898:74;;5981:93;6070:3;5981:93;:::i;:::-;6099:2;6094:3;6090:12;6083:19;;5888:220;;;:::o;6114:366::-;6256:3;6277:67;6341:2;6336:3;6277:67;:::i;:::-;6270:74;;6353:93;6442:3;6353:93;:::i;:::-;6471:2;6466:3;6462:12;6455:19;;6260:220;;;:::o;6486:366::-;6628:3;6649:67;6713:2;6708:3;6649:67;:::i;:::-;6642:74;;6725:93;6814:3;6725:93;:::i;:::-;6843:2;6838:3;6834:12;6827:19;;6632:220;;;:::o;6858:366::-;7000:3;7021:67;7085:2;7080:3;7021:67;:::i;:::-;7014:74;;7097:93;7186:3;7097:93;:::i;:::-;7215:2;7210:3;7206:12;7199:19;;7004:220;;;:::o;7230:366::-;7372:3;7393:67;7457:2;7452:3;7393:67;:::i;:::-;7386:74;;7469:93;7558:3;7469:93;:::i;:::-;7587:2;7582:3;7578:12;7571:19;;7376:220;;;:::o;7602:366::-;7744:3;7765:67;7829:2;7824:3;7765:67;:::i;:::-;7758:74;;7841:93;7930:3;7841:93;:::i;:::-;7959:2;7954:3;7950:12;7943:19;;7748:220;;;:::o;7974:366::-;8116:3;8137:67;8201:2;8196:3;8137:67;:::i;:::-;8130:74;;8213:93;8302:3;8213:93;:::i;:::-;8331:2;8326:3;8322:12;8315:19;;8120:220;;;:::o;8346:366::-;8488:3;8509:67;8573:2;8568:3;8509:67;:::i;:::-;8502:74;;8585:93;8674:3;8585:93;:::i;:::-;8703:2;8698:3;8694:12;8687:19;;8492:220;;;:::o;8718:366::-;8860:3;8881:67;8945:2;8940:3;8881:67;:::i;:::-;8874:74;;8957:93;9046:3;8957:93;:::i;:::-;9075:2;9070:3;9066:12;9059:19;;8864:220;;;:::o;9090:366::-;9232:3;9253:67;9317:2;9312:3;9253:67;:::i;:::-;9246:74;;9329:93;9418:3;9329:93;:::i;:::-;9447:2;9442:3;9438:12;9431:19;;9236:220;;;:::o;9462:366::-;9604:3;9625:67;9689:2;9684:3;9625:67;:::i;:::-;9618:74;;9701:93;9790:3;9701:93;:::i;:::-;9819:2;9814:3;9810:12;9803:19;;9608:220;;;:::o;9834:366::-;9976:3;9997:67;10061:2;10056:3;9997:67;:::i;:::-;9990:74;;10073:93;10162:3;10073:93;:::i;:::-;10191:2;10186:3;10182:12;10175:19;;9980:220;;;:::o;10206:366::-;10348:3;10369:67;10433:2;10428:3;10369:67;:::i;:::-;10362:74;;10445:93;10534:3;10445:93;:::i;:::-;10563:2;10558:3;10554:12;10547:19;;10352:220;;;:::o;10578:366::-;10720:3;10741:67;10805:2;10800:3;10741:67;:::i;:::-;10734:74;;10817:93;10906:3;10817:93;:::i;:::-;10935:2;10930:3;10926:12;10919:19;;10724:220;;;:::o;10950:366::-;11092:3;11113:67;11177:2;11172:3;11113:67;:::i;:::-;11106:74;;11189:93;11278:3;11189:93;:::i;:::-;11307:2;11302:3;11298:12;11291:19;;11096:220;;;:::o;11322:366::-;11464:3;11485:67;11549:2;11544:3;11485:67;:::i;:::-;11478:74;;11561:93;11650:3;11561:93;:::i;:::-;11679:2;11674:3;11670:12;11663:19;;11468:220;;;:::o;11694:118::-;11781:24;11799:5;11781:24;:::i;:::-;11776:3;11769:37;11759:53;;:::o;11818:112::-;11901:22;11917:5;11901:22;:::i;:::-;11896:3;11889:35;11879:51;;:::o;11936:222::-;12029:4;12067:2;12056:9;12052:18;12044:26;;12080:71;12148:1;12137:9;12133:17;12124:6;12080:71;:::i;:::-;12034:124;;;;:::o;12164:254::-;12273:4;12311:2;12300:9;12296:18;12288:26;;12324:87;12408:1;12397:9;12393:17;12384:6;12324:87;:::i;:::-;12278:140;;;;:::o;12424:332::-;12545:4;12583:2;12572:9;12568:18;12560:26;;12596:71;12664:1;12653:9;12649:17;12640:6;12596:71;:::i;:::-;12677:72;12745:2;12734:9;12730:18;12721:6;12677:72;:::i;:::-;12550:206;;;;;:::o;12762:210::-;12849:4;12887:2;12876:9;12872:18;12864:26;;12900:65;12962:1;12951:9;12947:17;12938:6;12900:65;:::i;:::-;12854:118;;;;:::o;12978:276::-;13098:4;13136:2;13125:9;13121:18;13113:26;;13149:98;13244:1;13233:9;13229:17;13220:6;13149:98;:::i;:::-;13103:151;;;;:::o;13260:313::-;13373:4;13411:2;13400:9;13396:18;13388:26;;13460:9;13454:4;13450:20;13446:1;13435:9;13431:17;13424:47;13488:78;13561:4;13552:6;13488:78;:::i;:::-;13480:86;;13378:195;;;;:::o;13579:419::-;13745:4;13783:2;13772:9;13768:18;13760:26;;13832:9;13826:4;13822:20;13818:1;13807:9;13803:17;13796:47;13860:131;13986:4;13860:131;:::i;:::-;13852:139;;13750:248;;;:::o;14004:419::-;14170:4;14208:2;14197:9;14193:18;14185:26;;14257:9;14251:4;14247:20;14243:1;14232:9;14228:17;14221:47;14285:131;14411:4;14285:131;:::i;:::-;14277:139;;14175:248;;;:::o;14429:419::-;14595:4;14633:2;14622:9;14618:18;14610:26;;14682:9;14676:4;14672:20;14668:1;14657:9;14653:17;14646:47;14710:131;14836:4;14710:131;:::i;:::-;14702:139;;14600:248;;;:::o;14854:419::-;15020:4;15058:2;15047:9;15043:18;15035:26;;15107:9;15101:4;15097:20;15093:1;15082:9;15078:17;15071:47;15135:131;15261:4;15135:131;:::i;:::-;15127:139;;15025:248;;;:::o;15279:419::-;15445:4;15483:2;15472:9;15468:18;15460:26;;15532:9;15526:4;15522:20;15518:1;15507:9;15503:17;15496:47;15560:131;15686:4;15560:131;:::i;:::-;15552:139;;15450:248;;;:::o;15704:419::-;15870:4;15908:2;15897:9;15893:18;15885:26;;15957:9;15951:4;15947:20;15943:1;15932:9;15928:17;15921:47;15985:131;16111:4;15985:131;:::i;:::-;15977:139;;15875:248;;;:::o;16129:419::-;16295:4;16333:2;16322:9;16318:18;16310:26;;16382:9;16376:4;16372:20;16368:1;16357:9;16353:17;16346:47;16410:131;16536:4;16410:131;:::i;:::-;16402:139;;16300:248;;;:::o;16554:419::-;16720:4;16758:2;16747:9;16743:18;16735:26;;16807:9;16801:4;16797:20;16793:1;16782:9;16778:17;16771:47;16835:131;16961:4;16835:131;:::i;:::-;16827:139;;16725:248;;;:::o;16979:419::-;17145:4;17183:2;17172:9;17168:18;17160:26;;17232:9;17226:4;17222:20;17218:1;17207:9;17203:17;17196:47;17260:131;17386:4;17260:131;:::i;:::-;17252:139;;17150:248;;;:::o;17404:419::-;17570:4;17608:2;17597:9;17593:18;17585:26;;17657:9;17651:4;17647:20;17643:1;17632:9;17628:17;17621:47;17685:131;17811:4;17685:131;:::i;:::-;17677:139;;17575:248;;;:::o;17829:419::-;17995:4;18033:2;18022:9;18018:18;18010:26;;18082:9;18076:4;18072:20;18068:1;18057:9;18053:17;18046:47;18110:131;18236:4;18110:131;:::i;:::-;18102:139;;18000:248;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18425:248;;;:::o;18679:419::-;18845:4;18883:2;18872:9;18868:18;18860:26;;18932:9;18926:4;18922:20;18918:1;18907:9;18903:17;18896:47;18960:131;19086:4;18960:131;:::i;:::-;18952:139;;18850:248;;;:::o;19104:419::-;19270:4;19308:2;19297:9;19293:18;19285:26;;19357:9;19351:4;19347:20;19343:1;19332:9;19328:17;19321:47;19385:131;19511:4;19385:131;:::i;:::-;19377:139;;19275:248;;;:::o;19529:419::-;19695:4;19733:2;19722:9;19718:18;19710:26;;19782:9;19776:4;19772:20;19768:1;19757:9;19753:17;19746:47;19810:131;19936:4;19810:131;:::i;:::-;19802:139;;19700:248;;;:::o;19954:419::-;20120:4;20158:2;20147:9;20143:18;20135:26;;20207:9;20201:4;20197:20;20193:1;20182:9;20178:17;20171:47;20235:131;20361:4;20235:131;:::i;:::-;20227:139;;20125:248;;;:::o;20379:419::-;20545:4;20583:2;20572:9;20568:18;20560:26;;20632:9;20626:4;20622:20;20618:1;20607:9;20603:17;20596:47;20660:131;20786:4;20660:131;:::i;:::-;20652:139;;20550:248;;;:::o;20804:222::-;20897:4;20935:2;20924:9;20920:18;20912:26;;20948:71;21016:1;21005:9;21001:17;20992:6;20948:71;:::i;:::-;20902:124;;;;:::o;21032:483::-;21203:4;21241:2;21230:9;21226:18;21218:26;;21254:71;21322:1;21311:9;21307:17;21298:6;21254:71;:::i;:::-;21372:9;21366:4;21362:20;21357:2;21346:9;21342:18;21335:48;21400:108;21503:4;21494:6;21400:108;:::i;:::-;21392:116;;21208:307;;;;;:::o;21521:831::-;21784:4;21822:3;21811:9;21807:19;21799:27;;21836:71;21904:1;21893:9;21889:17;21880:6;21836:71;:::i;:::-;21917:80;21993:2;21982:9;21978:18;21969:6;21917:80;:::i;:::-;22044:9;22038:4;22034:20;22029:2;22018:9;22014:18;22007:48;22072:108;22175:4;22166:6;22072:108;:::i;:::-;22064:116;;22190:72;22258:2;22247:9;22243:18;22234:6;22190:72;:::i;:::-;22272:73;22340:3;22329:9;22325:19;22316:6;22272:73;:::i;:::-;21789:563;;;;;;;;:::o;22358:214::-;22447:4;22485:2;22474:9;22470:18;22462:26;;22498:67;22562:1;22551:9;22547:17;22538:6;22498:67;:::i;:::-;22452:120;;;;:::o;22578:132::-;22645:4;22668:3;22660:11;;22698:4;22693:3;22689:14;22681:22;;22650:60;;;:::o;22716:114::-;22783:6;22817:5;22811:12;22801:22;;22790:40;;;:::o;22836:99::-;22888:6;22922:5;22916:12;22906:22;;22895:40;;;:::o;22941:113::-;23011:4;23043;23038:3;23034:14;23026:22;;23016:38;;;:::o;23060:184::-;23159:11;23193:6;23188:3;23181:19;23233:4;23228:3;23224:14;23209:29;;23171:73;;;;:::o;23250:169::-;23334:11;23368:6;23363:3;23356:19;23408:4;23403:3;23399:14;23384:29;;23346:73;;;;:::o;23425:305::-;23465:3;23484:20;23502:1;23484:20;:::i;:::-;23479:25;;23518:20;23536:1;23518:20;:::i;:::-;23513:25;;23672:1;23604:66;23600:74;23597:1;23594:81;23591:2;;;23678:18;;:::i;:::-;23591:2;23722:1;23719;23715:9;23708:16;;23469:261;;;;:::o;23736:185::-;23776:1;23793:20;23811:1;23793:20;:::i;:::-;23788:25;;23827:20;23845:1;23827:20;:::i;:::-;23822:25;;23866:1;23856:2;;23871:18;;:::i;:::-;23856:2;23913:1;23910;23906:9;23901:14;;23778:143;;;;:::o;23927:348::-;23967:7;23990:20;24008:1;23990:20;:::i;:::-;23985:25;;24024:20;24042:1;24024:20;:::i;:::-;24019:25;;24212:1;24144:66;24140:74;24137:1;24134:81;24129:1;24122:9;24115:17;24111:105;24108:2;;;24219:18;;:::i;:::-;24108:2;24267:1;24264;24260:9;24249:20;;23975:300;;;;:::o;24281:191::-;24321:4;24341:20;24359:1;24341:20;:::i;:::-;24336:25;;24375:20;24393:1;24375:20;:::i;:::-;24370:25;;24414:1;24411;24408:8;24405:2;;;24419:18;;:::i;:::-;24405:2;24464:1;24461;24457:9;24449:17;;24326:146;;;;:::o;24478:96::-;24515:7;24544:24;24562:5;24544:24;:::i;:::-;24533:35;;24523:51;;;:::o;24580:104::-;24625:7;24654:24;24672:5;24654:24;:::i;:::-;24643:35;;24633:51;;;:::o;24690:90::-;24724:7;24767:5;24760:13;24753:21;24742:32;;24732:48;;;:::o;24786:126::-;24823:7;24863:42;24856:5;24852:54;24841:65;;24831:81;;;:::o;24918:77::-;24955:7;24984:5;24973:16;;24963:32;;;:::o;25001:86::-;25036:7;25076:4;25069:5;25065:16;25054:27;;25044:43;;;:::o;25093:180::-;25170:9;25203:64;25261:5;25203:64;:::i;:::-;25190:77;;25180:93;;;:::o;25279:140::-;25356:9;25389:24;25407:5;25389:24;:::i;:::-;25376:37;;25366:53;;;:::o;25425:121::-;25483:9;25516:24;25534:5;25516:24;:::i;:::-;25503:37;;25493:53;;;:::o;25552:307::-;25620:1;25630:113;25644:6;25641:1;25638:13;25630:113;;;25729:1;25724:3;25720:11;25714:18;25710:1;25705:3;25701:11;25694:39;25666:2;25663:1;25659:10;25654:15;;25630:113;;;25761:6;25758:1;25755:13;25752:2;;;25841:1;25832:6;25827:3;25823:16;25816:27;25752:2;25601:258;;;;:::o;25865:320::-;25909:6;25946:1;25940:4;25936:12;25926:22;;25993:1;25987:4;25983:12;26014:18;26004:2;;26070:4;26062:6;26058:17;26048:27;;26004:2;26132;26124:6;26121:14;26101:18;26098:38;26095:2;;;26151:18;;:::i;:::-;26095:2;25916:269;;;;:::o;26191:233::-;26230:3;26253:24;26271:5;26253:24;:::i;:::-;26244:33;;26299:66;26292:5;26289:77;26286:2;;;26369:18;;:::i;:::-;26286:2;26416:1;26409:5;26405:13;26398:20;;26234:190;;;:::o;26430:180::-;26478:77;26475:1;26468:88;26575:4;26572:1;26565:15;26599:4;26596:1;26589:15;26616:180;26664:77;26661:1;26654:88;26761:4;26758:1;26751:15;26785:4;26782:1;26775:15;26802:180;26850:77;26847:1;26840:88;26947:4;26944:1;26937:15;26971:4;26968:1;26961:15;26988:102;27029:6;27080:2;27076:7;27071:2;27064:5;27060:14;27056:28;27046:38;;27036:54;;;:::o;27096:222::-;27236:34;27232:1;27224:6;27220:14;27213:58;27305:5;27300:2;27292:6;27288:15;27281:30;27202:116;:::o;27324:229::-;27464:34;27460:1;27452:6;27448:14;27441:58;27533:12;27528:2;27520:6;27516:15;27509:37;27430:123;:::o;27559:225::-;27699:34;27695:1;27687:6;27683:14;27676:58;27768:8;27763:2;27755:6;27751:15;27744:33;27665:119;:::o;27790:221::-;27930:34;27926:1;27918:6;27914:14;27907:58;27999:4;27994:2;27986:6;27982:15;27975:29;27896:115;:::o;28017:177::-;28157:29;28153:1;28145:6;28141:14;28134:53;28123:71;:::o;28200:177::-;28340:29;28336:1;28328:6;28324:14;28317:53;28306:71;:::o;28383:173::-;28523:25;28519:1;28511:6;28507:14;28500:49;28489:67;:::o;28562:181::-;28702:33;28698:1;28690:6;28686:14;28679:57;28668:75;:::o;28749:220::-;28889:34;28885:1;28877:6;28873:14;28866:58;28958:3;28953:2;28945:6;28941:15;28934:28;28855:114;:::o;28975:182::-;29115:34;29111:1;29103:6;29099:14;29092:58;29081:76;:::o;29163:228::-;29303:34;29299:1;29291:6;29287:14;29280:58;29372:11;29367:2;29359:6;29355:15;29348:36;29269:122;:::o;29397:224::-;29537:34;29533:1;29525:6;29521:14;29514:58;29606:7;29601:2;29593:6;29589:15;29582:32;29503:118;:::o;29627:223::-;29767:34;29763:1;29755:6;29751:14;29744:58;29836:6;29831:2;29823:6;29819:15;29812:31;29733:117;:::o;29856:174::-;29996:26;29992:1;29984:6;29980:14;29973:50;29962:68;:::o;30036:231::-;30176:34;30172:1;30164:6;30160:14;30153:58;30245:14;30240:2;30232:6;30228:15;30221:39;30142:125;:::o;30273:174::-;30413:26;30409:1;30401:6;30397:14;30390:50;30379:68;:::o;30453:172::-;30593:24;30589:1;30581:6;30577:14;30570:48;30559:66;:::o;30631:122::-;30704:24;30722:5;30704:24;:::i;:::-;30697:5;30694:35;30684:2;;30743:1;30740;30733:12;30684:2;30674:79;:::o;30759:116::-;30829:21;30844:5;30829:21;:::i;:::-;30822:5;30819:32;30809:2;;30865:1;30862;30855:12;30809:2;30799:76;:::o;30881:122::-;30954:24;30972:5;30954:24;:::i;:::-;30947:5;30944:35;30934:2;;30993:1;30990;30983:12;30934:2;30924:79;:::o

Swarm Source

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