ETH Price: $3,049.49 (+3.37%)

Token

Meme Stocks (B.A.N.G.)
 

Overview

Max Total Supply

100,000 B.A.N.G.

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
37.810642076612874319 B.A.N.G.

Value
$0.00
0x603766bdfc5079fad5109a707fbc5f08aa15122a
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:
MemeStocks

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
 __       __                                           ______    __                          __                 
/  \     /  |                                         /      \  /  |                        /  |                
$$  \   /$$ |  ______   _____  ____    ______        /$$$$$$  |_$$ |_     ______    _______ $$ |   __   _______ 
$$$  \ /$$$ | /      \ /     \/    \  /      \       $$ \__$$// $$   |   /      \  /       |$$ |  /  | /       |
$$$$  /$$$$ |/$$$$$$  |$$$$$$ $$$$  |/$$$$$$  |      $$      \$$$$$$/   /$$$$$$  |/$$$$$$$/ $$ |_/$$/ /$$$$$$$/ 
$$ $$ $$/$$ |$$    $$ |$$ | $$ | $$ |$$    $$ |       $$$$$$  | $$ | __ $$ |  $$ |$$ |      $$   $$<  $$      \ 
$$ |$$$/ $$ |$$$$$$$$/ $$ | $$ | $$ |$$$$$$$$/       /  \__$$ | $$ |/  |$$ \__$$ |$$ \_____ $$$$$$  \  $$$$$$  |
$$ | $/  $$ |$$       |$$ | $$ | $$ |$$       |      $$    $$/  $$  $$/ $$    $$/ $$       |$$ | $$  |/     $$/ 
$$/      $$/  $$$$$$$/ $$/  $$/  $$/  $$$$$$$/        $$$$$$/    $$$$/   $$$$$$/   $$$$$$$/ $$/   $$/ $$$$$$$/                                                                                                                                                                                                                                                                                                                                              
 __i
|---|    
|[_]|    
|:::|    
|:::|    
`\   \   
  \_=_\ BB            
                    --- AMC                                      
                    -        --                             
                --( /     \ )XXXXXXXXXXXXX                   
            --XXX(   O   O  )XXXXXXXXXXXXXXX-              
           /XXX(       U     )        XXXXXXX\               
         /XXXXX(              )--   XXXXXXXXXXX\             
        /XXXXX/ (      O     )   XXXXXX   \XXXXX\
        XXXXX/   /            XXXXXX   \   \XXXXX----        
        XXXXXX  /          XXXXXX         \  ----  -         
---     XXX  /          XXXXXX      \           ---        
  --  --  /      /\  XXXXXX            /     ---=         
    -        /    XXXXXX              '--- XXXXXX         
      --\/XXX\ XXXXXX                      /XXXXX         
        \XXXXXXXXX                        /XXXXX/
         \XXXXXX                         /XXXXX/         
           \XXXXX--  /                -- XXXX/       
            --XXXXXXX---------------  XXXXX--         
               \XXXXXXXXXXXXXXXXXXXXXXXX-            
                 --XXXXXXXXXXXXXXXXXX-
|_
(O)
|#|   NOK
'-'   
================================================.
     .-.   .-.     .--.                         |
    | OO| | OO|   / _.-' .-.   .-.  .-.   .''.  |
    |   | |   |   \  '-. '-'   '-'  '-'   '..'  |
    '^^^' '^^^'    '--'                         |
===============.  .-.  .================.  .-.  |
               | |   | |                |  '-'  |
               | |   | |      GME       |       |
               | ':-:' |                |  .-.  |
               |  '-'  |                |  '-'  |
==============='       '================'       |
                                        
https://twitter.com/MemeStocksETH
https://t.me/MemeStocksEntry

*/

// SPDX-License-Identifier: MIT

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

}

interface 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;
}

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

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

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 MemeStocks is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Meme Stocks";
    string private _symbol = "B.A.N.G.";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x796ef8EAb4bb6A4B4150F6A8973dDFa3744ee02f);
    address payable public DeveloperWallet = payable(0x60D3fC7144d162e72098e5AF5eD348276E5b1d43);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyDeveloperFee = 1;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellDeveloperFee = 1;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    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 _totalSupply;
    }

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

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

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600b81526020017f4d656d652053746f636b73000000000000000000000000000000000000000000815250600190805190602001906200005192919062001002565b506040518060400160405280600881526020017f422e412e4e2e472e000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001002565b506012600360006101000a81548160ff021916908360ff16021790555073796ef8eab4bb6a4b4150f6a8973ddfa3744ee02f600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360d3fc7144d162e72098e5af5ed348276e5b1d43600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556003600d556001600e556001600f5560036010556001601155600360009054906101000a900460ff16600a6200021191906200136a565b620186a0620002219190620014a7565b6014556200025b606462000247600160145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b60155562000295606462000281600260145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b601655620002cf6064620002bb600260145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f0660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620010c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005359190620010c9565b6040518363ffffffff1660e01b815260040162000554929190620011ac565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa9190620010c9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089962000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600e5462000c88600d54600c5462000f3760201b620031bc1790919060201c565b62000f3760201b620031bc1790919060201c565b60128190555062000cdb60115462000cc7601054600f5462000f3760201b620031bc1790919060201c565b62000f3760201b620031bc1790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7262000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dc062000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e21919062001241565b60405180910390a35062001701565b60008083141562000e45576000905062000eae565b6000828462000e559190620014a7565b905082848262000e669190620012d7565b1462000ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea0906200121f565b60405180910390fd5b809150505b92915050565b600062000efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9a60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f4891906200127a565b90508381101562000f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8790620011fd565b60405180910390fd5b8091505092915050565b6000808311829062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fdb9190620011d9565b60405180910390fd5b506000838562000ff59190620012d7565b9050809150509392505050565b828054620010109062001589565b90600052602060002090601f01602090048101928262001034576000855562001080565b82601f106200104f57805160ff191683800117855562001080565b8280016001018555821562001080579182015b828111156200107f57825182559160200191906001019062001062565b5b5090506200108f919062001093565b5090565b5b80821115620010ae57600081600090555060010162001094565b5090565b600081519050620010c381620016e7565b92915050565b600060208284031215620010e257620010e16200164c565b5b6000620010f284828501620010b2565b91505092915050565b620011068162001508565b82525050565b600062001119826200125e565b62001125818562001269565b93506200113781856020860162001553565b620011428162001651565b840191505092915050565b60006200115c601b8362001269565b915062001169826200166f565b602082019050919050565b60006200118360218362001269565b9150620011908262001698565b604082019050919050565b620011a6816200153c565b82525050565b6000604082019050620011c36000830185620010fb565b620011d26020830184620010fb565b9392505050565b60006020820190508181036000830152620011f581846200110c565b905092915050565b6000602082019050818103600083015262001218816200114d565b9050919050565b600060208201905081810360008301526200123a8162001174565b9050919050565b60006020820190506200125860008301846200119b565b92915050565b600081519050919050565b600082825260208201905092915050565b600062001287826200153c565b915062001294836200153c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012cc57620012cb620015bf565b5b828201905092915050565b6000620012e4826200153c565b9150620012f1836200153c565b925082620013045762001303620015ee565b5b828204905092915050565b6000808291508390505b60018511156200136157808604811115620013395762001338620015bf565b5b6001851615620013495780820291505b8081029050620013598562001662565b945062001319565b94509492505050565b600062001377826200153c565b9150620013848362001546565b9250620013b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013bb565b905092915050565b600082620013cd5760019050620014a0565b81620013dd5760009050620014a0565b8160018114620013f65760028114620014015762001437565b6001915050620014a0565b60ff841115620014165762001415620015bf565b5b8360020a91508482111562001430576200142f620015bf565b5b50620014a0565b5060208310610133831016604e8410600b8410161715620014715782820a9050838111156200146b576200146a620015bf565b5b620014a0565b6200148084848460016200130f565b925090508184048111156200149a5762001499620015bf565b5b81810290505b9392505050565b6000620014b4826200153c565b9150620014c1836200153c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014fd57620014fc620015bf565b5b828202905092915050565b600062001515826200151c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200157357808201518184015260208101905062001556565b8381111562001583576000848401525b50505050565b60006002820490506001821680620015a257607f821691505b60208210811415620015b957620015b86200161d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016f28162001508565b8114620016fe57600080fd5b50565b60805160601c60a05160601c61595b6200173b6000396000818161100101526114f10152600081816114c5015261151d015261595b6000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220efcfba8c773538735e14512ad3036d24d9f572a907871a788fa9e973df25b75064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220efcfba8c773538735e14512ad3036d24d9f572a907871a788fa9e973df25b75064736f6c63430008070033

Deployed Bytecode Sourcemap

14699:16334:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18623:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23554:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15213:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19789:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22222:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16345:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18900:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23237:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20722:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15788:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24148:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21099:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15125:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22058:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18809:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19286:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21330:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15487:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16460:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21462:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15922:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15430:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22481:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30325:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19008:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6376:230;;;;;;;;;;;;;:::i;:::-;;14921:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16199:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16006:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20303:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16603:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15836:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15647:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6151:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18714:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19512:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21921:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23973:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21742:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15746:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16393:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15879:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15588:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16110:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16507:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15704:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19135:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26510:154;;;;;;;;;;;;;:::i;:::-;;20980:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20865:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20440:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15967:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21220:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6614:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26363:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20583:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16561:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15020:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15539:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21602:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18623:83;18660:13;18693:5;18686:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18623:83;:::o;23554:317::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23676:10:::1;23656:17;:30;;;;23717:10;23697:17;:30;;;;23758:10;23738:17;:30;;;;23800:63;23845:17;;23800:40;23822:17;;23800;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;23779:18;:84;;;;23554:317:::0;;;:::o;15213:81::-;;;:::o;19789:161::-;19864:4;19881:39;19890:12;:10;:12::i;:::-;19904:7;19913:6;19881:8;:39::i;:::-;19938:4;19931:11;;19789:161;;;;:::o;22222:113::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22320:7:::1;22302:9;:15;22312:4;22302:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;22222:113:::0;;:::o;16345:41::-;;;;;;;;;;;;;:::o;18900:100::-;18953:7;18980:12;;18973:19;;18900:100;:::o;23237:309::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23357:10:::1;23338:16;:29;;;;23397:10;23378:16;:29;;;;23437:10;23418:16;:29;;;;23478:60;23521:16;;23478:38;23499:16;;23478;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;23458:17;:80;;;;23237:309:::0;;;:::o;20722:135::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20843:6:::1;20813:19;:27;20833:6;20813:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20722:135:::0;;:::o;15788:35::-;;;;:::o;24148:313::-;24246:4;24263:36;24273:6;24281:9;24292:6;24263:9;:36::i;:::-;;24310:121;24319:6;24327:12;:10;:12::i;:::-;24341:89;24379:6;24341:89;;;;;;;;;;;;;;;;;:11;:19;24353:6;24341:19;;;;;;;;;;;;;;;:33;24361:12;:10;:12::i;:::-;24341:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24310:8;:121::i;:::-;24449:4;24442:11;;24148:313;;;;;:::o;21099:113::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21196:8:::1;21177:16;;:27;;;;;;;;;;;;;;;;;;21099:113:::0;:::o;15125:81::-;;;:::o;22058:156::-;22111:7;22138:68;22183:22;22193:11;22183:9;:22::i;:::-;22138:40;22155:22;22165:11;22155:9;:22::i;:::-;22138:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;22131:75;;22058:156;:::o;18809:83::-;18850:5;18875:9;;;;;;;;;;;18868:16;;18809:83;:::o;19286:218::-;19374:4;19391:83;19400:12;:10;:12::i;:::-;19414:7;19423:50;19462:10;19423:11;:25;19435:12;:10;:12::i;:::-;19423:25;;;;;;;;;;;;;;;:34;19449:7;19423:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19391:8;:83::i;:::-;19492:4;19485:11;;19286:218;;;;:::o;21330:124::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21438:8:::1;21412:23;:34;;;;21330:124:::0;:::o;15487:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16460:40::-;;;;;;;;;;;;;:::o;21462:132::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21575:10:::1;21549:15;;:37;;;;;;;;;;;;;;;;;;21462:132:::0;:::o;15922:36::-;;;;:::o;15430:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;22481:748::-;22561:22;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22598:35:::1;22655:16;22598:74;;22721:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22703:53;;;22765:4;22772:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22703:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22686:110;;22838:1;22812:28;;:14;:28;;;22809:225;;;22926:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22908:74;;;22991:4;22998:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22908:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22891:131;;22809:225;23060:14;23046:11;;:28;;;;;;;;;;;;;;;;;;23126:16;23108:15;;:34;;;;;;;;;;;;;;;;;;23217:4;23180:12;:34;23201:11;;;;;;;;;;;23180:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22585:644;22481:748:::0;;;:::o;30325:697::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30425:15:::1;30443:10;30425:28;;30491:7;;:14;;30472:8;;:15;;:33;30464:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30542:15;30572:6:::0;30581:1:::1;30572:10;;30568:92;30588:7;;:14;;30584:1;:18;30568:92;;;30638:7;;30646:1;30638:10;;;;;;;:::i;:::-;;;;;;;;30624:24;;;;;:::i;:::-;;;30604:3;;;;;:::i;:::-;;;;30568:92;;;;30700:10;30678:18;30688:7;30678:9;:18::i;:::-;:32;;30670:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;30773:34;30796:10;30773:9;:18;30783:7;30773:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;30752:9;:18;30762:7;30752:18;;;;;;;;;;;;;;;:55;;;;30823:6;30819:194;30839:8;;:15;;30835:1;:19;30819:194;;;30901:38;30928:7;;30936:1;30928:10;;;;;;;:::i;:::-;;;;;;;;30901:9;:22;30911:8;;30920:1;30911:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30901:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30876:9;:22;30886:8;;30895:1;30886:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30876:22;;;;;;;;;;;;;;;:63;;;;30977:8;;30986:1;30977:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30959:42;;30968:7;30959:42;;;30990:7;;30998:1;30990:10;;;;;;;:::i;:::-;;;;;;;;30959:42;;;;;;:::i;:::-;;;;;;;;30856:3;;;;;:::i;:::-;;;;30819:194;;;;30414:608;;30325:697:::0;;;;:::o;19008:119::-;19074:7;19101:9;:18;19111:7;19101:18;;;;;;;;;;;;;;;;19094:25;;19008:119;;;:::o;6376:230::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6483:42:::1;6446:81;;6467:6;::::0;::::1;;;;;;;;6446:81;;;;;;;;;;;;6555:42;6538:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6376:230::o:0;14921:92::-;;;;;;;;;;;;;:::o;16199:59::-;;;;:::o;16271:58::-;;;;:::o;16006:33::-;;;;:::o;20303:129::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20416:8:::1;20392:12;:21;20405:7;20392:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20303:129:::0;;:::o;16603:41::-;;;;;;;;;;;;;:::o;15836:36::-;;;;:::o;15647:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;6151:79::-;6189:7;6216:6;;;;;;;;;;;6209:13;;6151:79;:::o;18714:87::-;18753:13;18786:7;18779:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18714:87;:::o;19512:269::-;19605:4;19622:129;19631:12;:10;:12::i;:::-;19645:7;19654:96;19693:15;19654:96;;;;;;;;;;;;;;;;;:11;:25;19666:12;:10;:12::i;:::-;19654:25;;;;;;;;;;;;;;;:34;19680:7;19654:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19622:8;:129::i;:::-;19769:4;19762:11;;19512:269;;;;:::o;21921:125::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22030:8:::1;22002:25;;:36;;;;;;;;;;;;;;;;;;21921:125:::0;:::o;23973:167::-;24051:4;24068:42;24078:12;:10;:12::i;:::-;24092:9;24103:6;24068:9;:42::i;:::-;;24128:4;24121:11;;23973:167;;;;:::o;21742:171::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21843:8:::1;21819:21;;:32;;;;;;;;;;;;;;;;;;21867:38;21896:8;21867:38;;;;;;:::i;:::-;;;;;;;;21742:171:::0;:::o;15746:35::-;;;;:::o;16393:26::-;;;;;;;;;;;;;:::o;15879:36::-;;;;:::o;15588:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16110:69::-;;;;:::o;16507:45::-;;;;;;;;;;;;;:::o;15704:35::-;;;;:::o;19135:143::-;19216:7;19243:11;:18;19255:5;19243:18;;;;;;;;;;;;;;;:27;19262:7;19243:27;;;;;;;;;;;;;;;;19236:34;;19135:143;;;;:::o;26510:154::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26564:7:::1;26584:10;26576:24;;26608:21;26576:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26563:71;;;26653:2;26645:11;;;::::0;::::1;;26552:112;26510:154::o:0;20980:111::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21072:11:::1;21057:12;:26;;;;20980:111:::0;:::o;20865:107::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20957:7:::1;20932:22;;:32;;;;;;;;;;;;;;;;;;20865:107:::0;:::o;20440:135::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20559:8:::1;20530:17;:26;20548:7;20530:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20440:135:::0;;:::o;15967:32::-;;;;:::o;21220:102::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21306:8:::1;21292:10;:22;;;;21220:102:::0;:::o;6614:244::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6723:1:::1;6703:22;;:8;:22;;;;6695:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6813:8;6784:38;;6805:6;::::0;::::1;;;;;;;;6784:38;;;;;;;;;;;;6842:8;6833:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6614:244:::0;:::o;26363:139::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26458:6:::1;26451:23;;;26475:10;26486:7;26451:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26363:139:::0;;:::o;20583:127::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20696:6:::1;20670:15;:23;20686:6;20670:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20583:127:::0;;:::o;16561:35::-;;;;;;;;;;;;;:::o;15020:92::-;;;;;;;;;;;;;:::o;15539:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;21602:132::-;6295:12;:10;:12::i;:::-;6285:22;;:6;;;;;;;;;;:22;;;6277:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21715:10:::1;21689:15;;:37;;;;;;;;;;;;;;;;;;21602:132:::0;:::o;4836:250::-;4894:7;4923:1;4918;:6;4914:47;;;4948:1;4941:8;;;;4914:47;4973:9;4989:1;4985;:5;;;;:::i;:::-;4973:17;;5018:1;5013;5009;:5;;;;:::i;:::-;:10;5001:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5077:1;5070:8;;;4836:250;;;;;:::o;5094:132::-;5152:7;5179:39;5183:1;5186;5179:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5172:46;;5094:132;;;;:::o;4303:181::-;4361:7;4381:9;4397:1;4393;:5;;;;:::i;:::-;4381:17;;4422:1;4417;:6;;4409:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4475:1;4468:8;;;4303:181;;;;:::o;3361:115::-;3414:15;3457:10;3442:26;;3361:115;:::o;19958:337::-;20068:1;20051:19;;:5;:19;;;;20043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20149:1;20130:21;;:7;:21;;;;20122:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20233:6;20203:11;:18;20215:5;20203:18;;;;;;;;;;;;;;;:27;20222:7;20203:27;;;;;;;;;;;;;;;:36;;;;20271:7;20255:32;;20264:5;20255:32;;;20280:6;20255:32;;;;;;:::i;:::-;;;;;;;;19958:337;;;:::o;24469:1886::-;24556:4;24601:1;24583:20;;:6;:20;;;;24575:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24685:1;24664:23;;:9;:23;;;;24656:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24747:9;:17;24757:6;24747:17;;;;;;;;;;;;;;;;;;;;;;;;;24746:18;:43;;;;;24769:9;:20;24779:9;24769:20;;;;;;;;;;;;;;;;;;;;;;;;;24768:21;24746:43;24738:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24839:16;;;;;;;;;;;24836:1502;;;24889:41;24904:6;24912:9;24923:6;24889:14;:41::i;:::-;24882:48;;;;24836:1502;24988:15;:23;25004:6;24988:23;;;;;;;;;;;;;;;;;;;;;;;;;24987:24;:55;;;;;25016:15;:26;25032:9;25016:26;;;;;;;;;;;;;;;;;;;;;;;;;25015:27;24987:55;:81;;;;;25046:22;;;;;;;;;;;24987:81;24984:196;;;25107:12;;25097:6;:22;;25089:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24984:196;25196:28;25227:24;25245:4;25227:9;:24::i;:::-;25196:55;;25266:28;25321:23;;25297:20;:47;;25266:78;;25377:23;:44;;;;;25405:16;;;;;;;;;;;25404:17;25377:44;:69;;;;;25426:12;:20;25439:6;25426:20;;;;;;;;;;;;;;;;;;;;;;;;;25425:21;25377:69;:94;;;;;25450:21;;;;;;;;;;;25377:94;25373:305;;;25509:25;;;;;;;;;;;25506:97;;;25580:23;;25557:46;;25506:97;25622:36;25637:20;25622:14;:36::i;:::-;25373:305;25714:53;25736:6;25714:53;;;;;;;;;;;;;;;;;:9;:17;25724:6;25714:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25694:9;:17;25704:6;25694:17;;;;;;;;;;;;;;;:73;;;;25784:19;25807:17;:25;25825:6;25807:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25836:17;:28;25854:9;25836:28;;;;;;;;;;;;;;;;;;;;;;;;;25807:57;25806:148;;25920:34;25928:6;25936:9;25947:6;25920:7;:34::i;:::-;25806:148;;;25911:6;25806:148;25784:170;;25974:16;;;;;;;;;;;:51;;;;;25995:19;:30;26015:9;25995:30;;;;;;;;;;;;;;;;;;;;;;;;;25994:31;25974:51;25971:191;;;26095:10;;26054:37;26079:11;26054:20;26064:9;26054;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26046:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;25971:191;26201:37;26226:11;26201:9;:20;26211:9;26201:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26178:9;:20;26188:9;26178:20;;;;;;;;;;;;;;;:60;;;;26277:9;26260:40;;26269:6;26260:40;;;26288:11;26260:40;;;;;;:::i;:::-;;;;;;;;26322:4;26315:11;;;;;24469:1886;;;;;;:::o;4636:192::-;4722:7;4755:1;4750;:6;;4758:12;4742:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4782:9;4798:1;4794;:5;;;;:::i;:::-;4782:17;;4819:1;4812:8;;;4636:192;;;;;:::o;4492:136::-;4550:7;4577:43;4581:1;4584;4577:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4570:50;;4492:136;;;;:::o;5234:278::-;5320:7;5352:1;5348;:5;5355:12;5340:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5379:9;5395:1;5391;:5;;;;:::i;:::-;5379:17;;5503:1;5496:8;;;5234:278;;;;;:::o;26672:330::-;26765:4;26802:53;26824:6;26802:53;;;;;;;;;;;;;;;;;:9;:17;26812:6;26802:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26782:9;:17;26792:6;26782:17;;;;;;;;;;;;;;;:73;;;;26889:32;26914:6;26889:9;:20;26899:9;26889:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26866:9;:20;26876:9;26866:20;;;;;;;;;;;;;;;:55;;;;26954:9;26937:35;;26946:6;26937:35;;;26965:6;26937:35;;;;;;:::i;:::-;;;;;;;;26990:4;26983:11;;26672:330;;;;;:::o;27010:1449::-;17088:4;17069:16;;:23;;;;;;;;;;;;;;;;;;27084:19:::1;27106:41;27128:18;;27106:17;;:21;;:41;;;;:::i;:::-;27084:63;;27160:22;27185:39;27206:17;;27185:16;;:20;;:39;;;;:::i;:::-;27160:64;;27235:22;27260:39;27281:17;;27260:16;;:20;;:39;;;;:::i;:::-;27235:64;;27398:18;27419:51;27468:1;27419:44;27451:11;27419:27;27431:14;27419:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;27398:72;;27481:20;27504:23;27516:10;27504:7;:11;;:23;;;;:::i;:::-;27481:46;;27540:22;27566:21;27540:47;;27598:30;27615:12;27598:16;:30::i;:::-;27639:23;27666:41;27692:14;27666:21;:25;;:41;;;;:::i;:::-;27639:68;;27720:19;27742:38;27758:21;27777:1;27758:14;:18;;:21;;;;:::i;:::-;27742:11;:15;;:38;;;;:::i;:::-;27720:60;;27793:26;27822:59;27879:1;27822:52;27862:11;27822:35;27842:14;27822:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27793:88;;27892:26;27921:52;27961:11;27921:35;27941:14;27921:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;27892:81;;27984:26;28013:63;28057:18;28013:39;28033:18;28013:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;27984:92;;28113:1;28092:18;:22;28089:107;;;28139:15;;;;;;;;;;;28131:33;;:53;28165:18;28131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28089:107;28232:1;28211:18;:22;28208:107;;;28258:15;;;;;;;;;;;28250:33;;:53;28284:18;28250:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28208:107;28360:1;28339:18;:22;:40;;;;;28378:1;28365:10;:14;28339:40;28336:116;;;28396:44;28409:10;28421:18;28396:12;:44::i;:::-;28336:116;27071:1388;;;;;;;;;;;17134:5:::0;17115:16;;:24;;;;;;;;;;;;;;;;;;27010:1449;:::o;29666:622::-;29752:7;29782:17;29802:1;29782:21;;29827:12;:20;29840:6;29827:20;;;;;;;;;;;;;;;;;;;;;;;;;29824:223;;;29876:38;29910:3;29876:29;29887:17;;29876:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29864:50;;29824:223;;;29944:12;:23;29957:9;29944:23;;;;;;;;;;;;;;;;;;;;;;;;;29941:106;;;29996:39;30031:3;29996:30;30007:18;;29996:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29984:51;;29941:106;29824:223;30082:1;30070:9;:13;30067:173;;;30127:39;30156:9;30127;:24;30145:4;30127:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30100:9;:24;30118:4;30100:24;;;;;;;;;;;;;;;:66;;;;30211:4;30186:42;;30195:6;30186:42;;;30218:9;30186:42;;;;;;:::i;:::-;;;;;;;;30067:173;30259:21;30270:9;30259:6;:10;;:21;;;;:::i;:::-;30252:28;;;29666:622;;;;;:::o;28471:666::-;28597:21;28635:1;28621:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28597:40;;28666:4;28648;28653:1;28648:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28692:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28682:4;28687:1;28682:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28727:62;28744:4;28759:15;;;;;;;;;;;28777:11;28727:8;:62::i;:::-;28828:15;;;;;;;;;;;:66;;;28909:11;28935:1;28979:4;29006;29042:15;28828:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29094:35;29111:11;29124:4;29094:35;;;;;;;:::i;:::-;;;;;;;;28526:611;28471:666;:::o;29145:513::-;29293:62;29310:4;29325:15;;;;;;;;;;;29343:11;29293:8;:62::i;:::-;29398:15;;;;;;;;;;;:31;;;29437:9;29470:4;29490:11;29516:1;29559;29602:7;:5;:7::i;:::-;29624:15;29398:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29145:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:137::-;1676:5;1707:6;1701:13;1692:22;;1723:30;1747:5;1723:30;:::i;:::-;1622:137;;;;:::o;1765:139::-;1811:5;1849:6;1836:20;1827:29;;1865:33;1892:5;1865:33;:::i;:::-;1765:139;;;;:::o;1910:143::-;1967:5;1998:6;1992:13;1983:22;;2014:33;2041:5;2014:33;:::i;:::-;1910:143;;;;:::o;2059:329::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:119;;;2173:79;;:::i;:::-;2135:119;2293:1;2318:53;2363:7;2354:6;2343:9;2339:22;2318:53;:::i;:::-;2308:63;;2264:117;2059:329;;;;:::o;2394:351::-;2464:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:119;;;2519:79;;:::i;:::-;2481:119;2639:1;2664:64;2720:7;2711:6;2700:9;2696:22;2664:64;:::i;:::-;2654:74;;2610:128;2394:351;;;;:::o;2751:474::-;2819:6;2827;2876:2;2864:9;2855:7;2851:23;2847:32;2844:119;;;2882:79;;:::i;:::-;2844:119;3002:1;3027:53;3072:7;3063:6;3052:9;3048:22;3027:53;:::i;:::-;3017:63;;2973:117;3129:2;3155:53;3200:7;3191:6;3180:9;3176:22;3155:53;:::i;:::-;3145:63;;3100:118;2751:474;;;;;:::o;3231:619::-;3308:6;3316;3324;3373:2;3361:9;3352:7;3348:23;3344:32;3341:119;;;3379:79;;:::i;:::-;3341:119;3499:1;3524:53;3569:7;3560:6;3549:9;3545:22;3524:53;:::i;:::-;3514:63;;3470:117;3626:2;3652:53;3697:7;3688:6;3677:9;3673:22;3652:53;:::i;:::-;3642:63;;3597:118;3754:2;3780:53;3825:7;3816:6;3805:9;3801:22;3780:53;:::i;:::-;3770:63;;3725:118;3231:619;;;;;:::o;3856:468::-;3921:6;3929;3978:2;3966:9;3957:7;3953:23;3949:32;3946:119;;;3984:79;;:::i;:::-;3946:119;4104:1;4129:53;4174:7;4165:6;4154:9;4150:22;4129:53;:::i;:::-;4119:63;;4075:117;4231:2;4257:50;4299:7;4290:6;4279:9;4275:22;4257:50;:::i;:::-;4247:60;;4202:115;3856:468;;;;;:::o;4330:474::-;4398:6;4406;4455:2;4443:9;4434:7;4430:23;4426:32;4423:119;;;4461:79;;:::i;:::-;4423:119;4581:1;4606:53;4651:7;4642:6;4631:9;4627:22;4606:53;:::i;:::-;4596:63;;4552:117;4708:2;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4679:118;4330:474;;;;;:::o;4810:934::-;4932:6;4940;4948;4956;5005:2;4993:9;4984:7;4980:23;4976:32;4973:119;;;5011:79;;:::i;:::-;4973:119;5159:1;5148:9;5144:17;5131:31;5189:18;5181:6;5178:30;5175:117;;;5211:79;;:::i;:::-;5175:117;5324:80;5396:7;5387:6;5376:9;5372:22;5324:80;:::i;:::-;5306:98;;;;5102:312;5481:2;5470:9;5466:18;5453:32;5512:18;5504:6;5501:30;5498:117;;;5534:79;;:::i;:::-;5498:117;5647:80;5719:7;5710:6;5699:9;5695:22;5647:80;:::i;:::-;5629:98;;;;5424:313;4810:934;;;;;;;:::o;5750:323::-;5806:6;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:50;6048:7;6039:6;6028:9;6024:22;6006:50;:::i;:::-;5996:60;;5952:114;5750:323;;;;:::o;6079:345::-;6146:6;6195:2;6183:9;6174:7;6170:23;6166:32;6163:119;;;6201:79;;:::i;:::-;6163:119;6321:1;6346:61;6399:7;6390:6;6379:9;6375:22;6346:61;:::i;:::-;6336:71;;6292:125;6079:345;;;;:::o;6430:329::-;6489:6;6538:2;6526:9;6517:7;6513:23;6509:32;6506:119;;;6544:79;;:::i;:::-;6506:119;6664:1;6689:53;6734:7;6725:6;6714:9;6710:22;6689:53;:::i;:::-;6679:63;;6635:117;6430:329;;;;:::o;6765:619::-;6842:6;6850;6858;6907:2;6895:9;6886:7;6882:23;6878:32;6875:119;;;6913:79;;:::i;:::-;6875:119;7033:1;7058:53;7103:7;7094:6;7083:9;7079:22;7058:53;:::i;:::-;7048:63;;7004:117;7160:2;7186:53;7231:7;7222:6;7211:9;7207:22;7186:53;:::i;:::-;7176:63;;7131:118;7288:2;7314:53;7359:7;7350:6;7339:9;7335:22;7314:53;:::i;:::-;7304:63;;7259:118;6765:619;;;;;:::o;7390:663::-;7478:6;7486;7494;7543:2;7531:9;7522:7;7518:23;7514:32;7511:119;;;7549:79;;:::i;:::-;7511:119;7669:1;7694:64;7750:7;7741:6;7730:9;7726:22;7694:64;:::i;:::-;7684:74;;7640:128;7807:2;7833:64;7889:7;7880:6;7869:9;7865:22;7833:64;:::i;:::-;7823:74;;7778:129;7946:2;7972:64;8028:7;8019:6;8008:9;8004:22;7972:64;:::i;:::-;7962:74;;7917:129;7390:663;;;;;:::o;8059:179::-;8128:10;8149:46;8191:3;8183:6;8149:46;:::i;:::-;8227:4;8222:3;8218:14;8204:28;;8059:179;;;;:::o;8244:142::-;8347:32;8373:5;8347:32;:::i;:::-;8342:3;8335:45;8244:142;;:::o;8392:108::-;8469:24;8487:5;8469:24;:::i;:::-;8464:3;8457:37;8392:108;;:::o;8506:118::-;8593:24;8611:5;8593:24;:::i;:::-;8588:3;8581:37;8506:118;;:::o;8660:732::-;8779:3;8808:54;8856:5;8808:54;:::i;:::-;8878:86;8957:6;8952:3;8878:86;:::i;:::-;8871:93;;8988:56;9038:5;8988:56;:::i;:::-;9067:7;9098:1;9083:284;9108:6;9105:1;9102:13;9083:284;;;9184:6;9178:13;9211:63;9270:3;9255:13;9211:63;:::i;:::-;9204:70;;9297:60;9350:6;9297:60;:::i;:::-;9287:70;;9143:224;9130:1;9127;9123:9;9118:14;;9083:284;;;9087:14;9383:3;9376:10;;8784:608;;;8660:732;;;;:::o;9398:109::-;9479:21;9494:5;9479:21;:::i;:::-;9474:3;9467:34;9398:109;;:::o;9513:185::-;9627:64;9685:5;9627:64;:::i;:::-;9622:3;9615:77;9513:185;;:::o;9704:147::-;9799:45;9838:5;9799:45;:::i;:::-;9794:3;9787:58;9704:147;;:::o;9857:364::-;9945:3;9973:39;10006:5;9973:39;:::i;:::-;10028:71;10092:6;10087:3;10028:71;:::i;:::-;10021:78;;10108:52;10153:6;10148:3;10141:4;10134:5;10130:16;10108:52;:::i;:::-;10185:29;10207:6;10185:29;:::i;:::-;10180:3;10176:39;10169:46;;9949:272;9857:364;;;;:::o;10227:366::-;10369:3;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10466:93;10555:3;10466:93;:::i;:::-;10584:2;10579:3;10575:12;10568:19;;10227:366;;;:::o;10599:::-;10741:3;10762:67;10826:2;10821:3;10762:67;:::i;:::-;10755:74;;10838:93;10927:3;10838:93;:::i;:::-;10956:2;10951:3;10947:12;10940:19;;10599:366;;;:::o;10971:::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:::-;11485:3;11506:67;11570:2;11565:3;11506:67;:::i;:::-;11499:74;;11582:93;11671:3;11582:93;:::i;:::-;11700:2;11695:3;11691:12;11684:19;;11343:366;;;:::o;11715:::-;11857:3;11878:67;11942:2;11937:3;11878:67;:::i;:::-;11871:74;;11954:93;12043:3;11954:93;:::i;:::-;12072:2;12067:3;12063:12;12056:19;;11715:366;;;:::o;12087:::-;12229:3;12250:67;12314:2;12309:3;12250:67;:::i;:::-;12243:74;;12326:93;12415:3;12326:93;:::i;:::-;12444:2;12439:3;12435:12;12428:19;;12087:366;;;:::o;12459:::-;12601:3;12622:67;12686:2;12681:3;12622:67;:::i;:::-;12615:74;;12698:93;12787:3;12698:93;:::i;:::-;12816:2;12811:3;12807:12;12800:19;;12459:366;;;:::o;12831:::-;12973:3;12994:67;13058:2;13053:3;12994:67;:::i;:::-;12987:74;;13070:93;13159:3;13070:93;:::i;:::-;13188:2;13183:3;13179:12;13172:19;;12831:366;;;:::o;13203:::-;13345:3;13366:67;13430:2;13425:3;13366:67;:::i;:::-;13359:74;;13442:93;13531:3;13442:93;:::i;:::-;13560:2;13555:3;13551:12;13544:19;;13203:366;;;:::o;13575:::-;13717:3;13738:67;13802:2;13797:3;13738:67;:::i;:::-;13731:74;;13814:93;13903:3;13814:93;:::i;:::-;13932:2;13927:3;13923:12;13916:19;;13575:366;;;:::o;13947:::-;14089:3;14110:67;14174:2;14169:3;14110:67;:::i;:::-;14103:74;;14186:93;14275:3;14186:93;:::i;:::-;14304:2;14299:3;14295:12;14288:19;;13947:366;;;:::o;14319:::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:398::-;14850:3;14871:83;14952:1;14947:3;14871:83;:::i;:::-;14864:90;;14963:93;15052:3;14963:93;:::i;:::-;15081:1;15076:3;15072:11;15065:18;;14691:398;;;:::o;15095:366::-;15237:3;15258:67;15322:2;15317:3;15258:67;:::i;:::-;15251:74;;15334:93;15423:3;15334:93;:::i;:::-;15452:2;15447:3;15443:12;15436:19;;15095:366;;;:::o;15467:118::-;15554:24;15572:5;15554:24;:::i;:::-;15549:3;15542:37;15467:118;;:::o;15591:112::-;15674:22;15690:5;15674:22;:::i;:::-;15669:3;15662:35;15591:112;;:::o;15709:379::-;15893:3;15915:147;16058:3;15915:147;:::i;:::-;15908:154;;16079:3;16072:10;;15709:379;;;:::o;16094:222::-;16187:4;16225:2;16214:9;16210:18;16202:26;;16238:71;16306:1;16295:9;16291:17;16282:6;16238:71;:::i;:::-;16094:222;;;;:::o;16322:254::-;16431:4;16469:2;16458:9;16454:18;16446:26;;16482:87;16566:1;16555:9;16551:17;16542:6;16482:87;:::i;:::-;16322:254;;;;:::o;16582:332::-;16703:4;16741:2;16730:9;16726:18;16718:26;;16754:71;16822:1;16811:9;16807:17;16798:6;16754:71;:::i;:::-;16835:72;16903:2;16892:9;16888:18;16879:6;16835:72;:::i;:::-;16582:332;;;;;:::o;16920:::-;17041:4;17079:2;17068:9;17064:18;17056:26;;17092:71;17160:1;17149:9;17145:17;17136:6;17092:71;:::i;:::-;17173:72;17241:2;17230:9;17226:18;17217:6;17173:72;:::i;:::-;16920:332;;;;;:::o;17258:807::-;17507:4;17545:3;17534:9;17530:19;17522:27;;17559:71;17627:1;17616:9;17612:17;17603:6;17559:71;:::i;:::-;17640:72;17708:2;17697:9;17693:18;17684:6;17640:72;:::i;:::-;17722:80;17798:2;17787:9;17783:18;17774:6;17722:80;:::i;:::-;17812;17888:2;17877:9;17873:18;17864:6;17812:80;:::i;:::-;17902:73;17970:3;17959:9;17955:19;17946:6;17902:73;:::i;:::-;17985;18053:3;18042:9;18038:19;18029:6;17985:73;:::i;:::-;17258:807;;;;;;;;;:::o;18071:210::-;18158:4;18196:2;18185:9;18181:18;18173:26;;18209:65;18271:1;18260:9;18256:17;18247:6;18209:65;:::i;:::-;18071:210;;;;:::o;18287:276::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18458:98;18553:1;18542:9;18538:17;18529:6;18458:98;:::i;:::-;18287:276;;;;:::o;18569:313::-;18682:4;18720:2;18709:9;18705:18;18697:26;;18769:9;18763:4;18759:20;18755:1;18744:9;18740:17;18733:47;18797:78;18870:4;18861:6;18797:78;:::i;:::-;18789:86;;18569:313;;;;:::o;18888:419::-;19054:4;19092:2;19081:9;19077:18;19069:26;;19141:9;19135:4;19131:20;19127:1;19116:9;19112:17;19105:47;19169:131;19295:4;19169:131;:::i;:::-;19161:139;;18888:419;;;:::o;19313:::-;19479:4;19517:2;19506:9;19502:18;19494:26;;19566:9;19560:4;19556:20;19552:1;19541:9;19537:17;19530:47;19594:131;19720:4;19594:131;:::i;:::-;19586:139;;19313:419;;;:::o;19738:::-;19904:4;19942:2;19931:9;19927:18;19919:26;;19991:9;19985:4;19981:20;19977:1;19966:9;19962:17;19955:47;20019:131;20145:4;20019:131;:::i;:::-;20011:139;;19738:419;;;:::o;20163:::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:::-;20754:4;20792:2;20781:9;20777:18;20769:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20869:131;20995:4;20869:131;:::i;:::-;20861:139;;20588:419;;;:::o;21013:::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:::-;22029:4;22067:2;22056:9;22052:18;22044:26;;22116:9;22110:4;22106:20;22102:1;22091:9;22087:17;22080:47;22144:131;22270:4;22144:131;:::i;:::-;22136:139;;21863:419;;;:::o;22288:::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:::-;22879:4;22917:2;22906:9;22902:18;22894:26;;22966:9;22960:4;22956:20;22952:1;22941:9;22937:17;22930:47;22994:131;23120:4;22994:131;:::i;:::-;22986:139;;22713:419;;;:::o;23138:::-;23304:4;23342:2;23331:9;23327:18;23319:26;;23391:9;23385:4;23381:20;23377:1;23366:9;23362:17;23355:47;23419:131;23545:4;23419:131;:::i;:::-;23411:139;;23138:419;;;:::o;23563:::-;23729:4;23767:2;23756:9;23752:18;23744:26;;23816:9;23810:4;23806:20;23802:1;23791:9;23787:17;23780:47;23844:131;23970:4;23844:131;:::i;:::-;23836:139;;23563:419;;;:::o;23988:::-;24154:4;24192:2;24181:9;24177:18;24169:26;;24241:9;24235:4;24231:20;24227:1;24216:9;24212:17;24205:47;24269:131;24395:4;24269:131;:::i;:::-;24261:139;;23988:419;;;:::o;24413:222::-;24506:4;24544:2;24533:9;24529:18;24521:26;;24557:71;24625:1;24614:9;24610:17;24601:6;24557:71;:::i;:::-;24413:222;;;;:::o;24641:483::-;24812:4;24850:2;24839:9;24835:18;24827:26;;24863:71;24931:1;24920:9;24916:17;24907:6;24863:71;:::i;:::-;24981:9;24975:4;24971:20;24966:2;24955:9;24951:18;24944:48;25009:108;25112:4;25103:6;25009:108;:::i;:::-;25001:116;;24641:483;;;;;:::o;25130:831::-;25393:4;25431:3;25420:9;25416:19;25408:27;;25445:71;25513:1;25502:9;25498:17;25489:6;25445:71;:::i;:::-;25526:80;25602:2;25591:9;25587:18;25578:6;25526:80;:::i;:::-;25653:9;25647:4;25643:20;25638:2;25627:9;25623:18;25616:48;25681:108;25784:4;25775:6;25681:108;:::i;:::-;25673:116;;25799:72;25867:2;25856:9;25852:18;25843:6;25799:72;:::i;:::-;25881:73;25949:3;25938:9;25934:19;25925:6;25881:73;:::i;:::-;25130:831;;;;;;;;:::o;25967:214::-;26056:4;26094:2;26083:9;26079:18;26071:26;;26107:67;26171:1;26160:9;26156:17;26147:6;26107:67;:::i;:::-;25967:214;;;;:::o;26268:132::-;26335:4;26358:3;26350:11;;26388:4;26383:3;26379:14;26371:22;;26268:132;;;:::o;26406:114::-;26473:6;26507:5;26501:12;26491:22;;26406:114;;;:::o;26526:99::-;26578:6;26612:5;26606:12;26596:22;;26526:99;;;:::o;26631:113::-;26701:4;26733;26728:3;26724:14;26716:22;;26631:113;;;:::o;26750:184::-;26849:11;26883:6;26878:3;26871:19;26923:4;26918:3;26914:14;26899:29;;26750:184;;;;:::o;26940:147::-;27041:11;27078:3;27063:18;;26940:147;;;;:::o;27093:169::-;27177:11;27211:6;27206:3;27199:19;27251:4;27246:3;27242:14;27227:29;;27093:169;;;;:::o;27268:305::-;27308:3;27327:20;27345:1;27327:20;:::i;:::-;27322:25;;27361:20;27379:1;27361:20;:::i;:::-;27356:25;;27515:1;27447:66;27443:74;27440:1;27437:81;27434:107;;;27521:18;;:::i;:::-;27434:107;27565:1;27562;27558:9;27551:16;;27268:305;;;;:::o;27579:185::-;27619:1;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27670:20;27688:1;27670:20;:::i;:::-;27665:25;;27709:1;27699:35;;27714:18;;:::i;:::-;27699:35;27756:1;27753;27749:9;27744:14;;27579:185;;;;:::o;27770:348::-;27810:7;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27867:20;27885:1;27867:20;:::i;:::-;27862:25;;28055:1;27987:66;27983:74;27980:1;27977:81;27972:1;27965:9;27958:17;27954:105;27951:131;;;28062:18;;:::i;:::-;27951:131;28110:1;28107;28103:9;28092:20;;27770:348;;;;:::o;28124:191::-;28164:4;28184:20;28202:1;28184:20;:::i;:::-;28179:25;;28218:20;28236:1;28218:20;:::i;:::-;28213:25;;28257:1;28254;28251:8;28248:34;;;28262:18;;:::i;:::-;28248:34;28307:1;28304;28300:9;28292:17;;28124:191;;;;:::o;28321:96::-;28358:7;28387:24;28405:5;28387:24;:::i;:::-;28376:35;;28321:96;;;:::o;28423:104::-;28468:7;28497:24;28515:5;28497:24;:::i;:::-;28486:35;;28423:104;;;:::o;28533:90::-;28567:7;28610:5;28603:13;28596:21;28585:32;;28533:90;;;:::o;28629:126::-;28666:7;28706:42;28699:5;28695:54;28684:65;;28629:126;;;:::o;28761:77::-;28798:7;28827:5;28816:16;;28761:77;;;:::o;28844:86::-;28879:7;28919:4;28912:5;28908:16;28897:27;;28844:86;;;:::o;28936:153::-;29013:9;29046:37;29077:5;29046:37;:::i;:::-;29033:50;;28936:153;;;:::o;29095:121::-;29153:9;29186:24;29204:5;29186:24;:::i;:::-;29173:37;;29095:121;;;:::o;29222:126::-;29272:9;29305:37;29336:5;29305:37;:::i;:::-;29292:50;;29222:126;;;:::o;29354:113::-;29404:9;29437:24;29455:5;29437:24;:::i;:::-;29424:37;;29354:113;;;:::o;29473:307::-;29541:1;29551:113;29565:6;29562:1;29559:13;29551:113;;;29650:1;29645:3;29641:11;29635:18;29631:1;29626:3;29622:11;29615:39;29587:2;29584:1;29580:10;29575:15;;29551:113;;;29682:6;29679:1;29676:13;29673:101;;;29762:1;29753:6;29748:3;29744:16;29737:27;29673:101;29522:258;29473:307;;;:::o;29786:320::-;29830:6;29867:1;29861:4;29857:12;29847:22;;29914:1;29908:4;29904:12;29935:18;29925:81;;29991:4;29983:6;29979:17;29969:27;;29925:81;30053:2;30045:6;30042:14;30022:18;30019:38;30016:84;;;30072:18;;:::i;:::-;30016:84;29837:269;29786:320;;;:::o;30112:233::-;30151:3;30174:24;30192:5;30174:24;:::i;:::-;30165:33;;30220:66;30213:5;30210:77;30207:103;;;30290:18;;:::i;:::-;30207:103;30337:1;30330:5;30326:13;30319:20;;30112:233;;;:::o;30351:180::-;30399:77;30396:1;30389:88;30496:4;30493:1;30486:15;30520:4;30517:1;30510:15;30537:180;30585:77;30582:1;30575:88;30682:4;30679:1;30672:15;30706:4;30703:1;30696:15;30723:180;30771:77;30768:1;30761:88;30868:4;30865:1;30858:15;30892:4;30889:1;30882:15;30909:180;30957:77;30954:1;30947:88;31054:4;31051:1;31044:15;31078:4;31075:1;31068:15;31095:180;31143:77;31140:1;31133:88;31240:4;31237:1;31230:15;31264:4;31261:1;31254:15;31281:117;31390:1;31387;31380:12;31404:117;31513:1;31510;31503:12;31527:117;31636:1;31633;31626:12;31650:117;31759:1;31756;31749:12;31773:117;31882:1;31879;31872:12;31896:102;31937:6;31988:2;31984:7;31979:2;31972:5;31968:14;31964:28;31954:38;;31896:102;;;:::o;32004:222::-;32144:34;32140:1;32132:6;32128:14;32121:58;32213:5;32208:2;32200:6;32196:15;32189:30;32004:222;:::o;32232:177::-;32372:29;32368:1;32360:6;32356:14;32349:53;32232:177;:::o;32415:225::-;32555:34;32551:1;32543:6;32539:14;32532:58;32624:8;32619:2;32611:6;32607:15;32600:33;32415:225;:::o;32646:221::-;32786:34;32782:1;32774:6;32770:14;32763:58;32855:4;32850:2;32842:6;32838:15;32831:29;32646:221;:::o;32873:177::-;33013:29;33009:1;33001:6;32997:14;32990:53;32873:177;:::o;33056:224::-;33196:34;33192:1;33184:6;33180:14;33173:58;33265:7;33260:2;33252:6;33248:15;33241:32;33056:224;:::o;33286:179::-;33426:31;33422:1;33414:6;33410:14;33403:55;33286:179;:::o;33471:227::-;33611:34;33607:1;33599:6;33595:14;33588:58;33680:10;33675:2;33667:6;33663:15;33656:35;33471:227;:::o;33704:220::-;33844:34;33840:1;33832:6;33828:14;33821:58;33913:3;33908:2;33900:6;33896:15;33889:28;33704:220;:::o;33930:172::-;34070:24;34066:1;34058:6;34054:14;34047:48;33930:172;:::o;34108:182::-;34248:34;34244:1;34236:6;34232:14;34225:58;34108:182;:::o;34296:224::-;34436:34;34432:1;34424:6;34420:14;34413:58;34505:7;34500:2;34492:6;34488:15;34481:32;34296:224;:::o;34526:114::-;;:::o;34646:223::-;34786:34;34782:1;34774:6;34770:14;34763:58;34855:6;34850:2;34842:6;34838:15;34831:31;34646:223;:::o;34875:122::-;34948:24;34966:5;34948:24;:::i;:::-;34941:5;34938:35;34928:63;;34987:1;34984;34977:12;34928:63;34875:122;:::o;35003:116::-;35073:21;35088:5;35073:21;:::i;:::-;35066:5;35063:32;35053:60;;35109:1;35106;35099:12;35053:60;35003:116;:::o;35125:122::-;35198:24;35216:5;35198:24;:::i;:::-;35191:5;35188:35;35178:63;;35237:1;35234;35227:12;35178:63;35125:122;:::o

Swarm Source

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