ETH Price: $2,686.24 (-1.76%)

Token

Duragan (DRGN)
 

Overview

Max Total Supply

1,000,000 DRGN

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.03173903311994468 DRGN

Value
$0.00
0xDf4cbf2E27C8187B72CAAe219468Cb0dB5207519
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:
Duragan

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-16
*/

/*
                 ___====-_  _-====___
           _--^^^#####//      \\#####^^^--_
        _-^##########// (    ) \\##########^-_
       -############//  |\^^/|  \\############-
     _/############//   (@::@)   \\############\_
    /#############((     \\//     ))#############\
   -###############\\    (oo)    //###############-
  -#################\\  / VV \  //#################-
 -###################\\/      \//###################-
_#/|##########/\######(   /\   )######/\##########|\#_
|/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
`  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
   `   `  `      `   / | |  | | \   '      '  '   '
                    (  | |  | |  )
                   __\ | |  | | /__
                  (vvv(VVV)(VVV)vvv)
*/

// 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 Duragan is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Duragan";
    string private _symbol = "DRGN";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x03E8Ad7A55A6A7A4c450c037CADD8563b434E755);
    address payable public DeveloperWallet = payable(0x03E8Ad7A55A6A7A4c450c037CADD8563b434E755);
    
    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 = 15;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyDeveloperFee = 2;
    
    uint256 public _sellLiquidityFee = 15;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellDeveloperFee = 2;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

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

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

    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"}]

60c06040526040518060400160405280600781526020017f4475726167616e00000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001001565b506040518060400160405280600481526020017f4452474e00000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001001565b506012600360006101000a81548160ff021916908360ff1602179055507303e8ad7a55a6a7a4c450c037cadd8563b434e755600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507303e8ad7a55a6a7a4c450c037cadd8563b434e755600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b815250600f600c556003600d556002600e55600f805560036010556002601155600360009054906101000a900460ff16600a62000210919062001363565b620f4240620002209190620014a0565b6014556200025a606462000246600160145462000e2f60201b620031db1790919060201c565b62000eb360201b620032561790919060201c565b60155562000294606462000280600160145462000e2f60201b620031db1790919060201c565b62000eb360201b620032561790919060201c565b601655620002ce6064620002ba600160145462000e2f60201b620031db1790919060201c565b62000eb360201b620032561790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034a57600080fd5b5060006200035d62000f0560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045b57600080fd5b505afa15801562000470573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004969190620010c8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004f957600080fd5b505afa1580156200050e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005349190620010c8565b6040518363ffffffff1660e01b815260040162000553929190620011a5565b602060405180830381600087803b1580156200056e57600080fd5b505af115801562000583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a99190620010c8565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e562000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089862000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac562000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9b600e5462000c87600d54600c5462000f3660201b620032a01790919060201c565b62000f3660201b620032a01790919060201c565b60128190555062000cda60115462000cc6601054600f5462000f3660201b620032a01790919060201c565b62000f3660201b620032a01790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7162000f0560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dbf62000f0560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e2091906200123a565b60405180910390a350620016f5565b60008083141562000e44576000905062000ead565b6000828462000e549190620014a0565b905082848262000e659190620012d0565b1462000ea8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e9f9062001218565b60405180910390fd5b809150505b92915050565b600062000efd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9960201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f47919062001273565b90508381101562000f8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8690620011f6565b60405180910390fd5b8091505092915050565b6000808311829062000fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fda9190620011d2565b60405180910390fd5b506000838562000ff49190620012d0565b9050809150509392505050565b8280546200100f9062001582565b90600052602060002090601f0160209004810192826200103357600085556200107f565b82601f106200104e57805160ff19168380011785556200107f565b828001600101855582156200107f579182015b828111156200107e57825182559160200191906001019062001061565b5b5090506200108e919062001092565b5090565b5b80821115620010ad57600081600090555060010162001093565b5090565b600081519050620010c281620016db565b92915050565b600060208284031215620010db57600080fd5b6000620010eb84828501620010b1565b91505092915050565b620010ff8162001501565b82525050565b6000620011128262001257565b6200111e818562001262565b9350620011308185602086016200154c565b6200113b8162001645565b840191505092915050565b600062001155601b8362001262565b9150620011628262001663565b602082019050919050565b60006200117c60218362001262565b915062001189826200168c565b604082019050919050565b6200119f8162001535565b82525050565b6000604082019050620011bc6000830185620010f4565b620011cb6020830184620010f4565b9392505050565b60006020820190508181036000830152620011ee818462001105565b905092915050565b60006020820190508181036000830152620012118162001146565b9050919050565b6000602082019050818103600083015262001233816200116d565b9050919050565b600060208201905062001251600083018462001194565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012808262001535565b91506200128d8362001535565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012c557620012c4620015b8565b5b828201905092915050565b6000620012dd8262001535565b9150620012ea8362001535565b925082620012fd57620012fc620015e7565b5b828204905092915050565b6000808291508390505b60018511156200135a57808604811115620013325762001331620015b8565b5b6001851615620013425780820291505b8081029050620013528562001656565b945062001312565b94509492505050565b6000620013708262001535565b91506200137d836200153f565b9250620013ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b4565b905092915050565b600082620013c6576001905062001499565b81620013d6576000905062001499565b8160018114620013ef5760028114620013fa5762001430565b600191505062001499565b60ff8411156200140f576200140e620015b8565b5b8360020a915084821115620014295762001428620015b8565b5b5062001499565b5060208310610133831016604e8410600b84101617156200146a5782820a905083811115620014645762001463620015b8565b5b62001499565b62001479848484600162001308565b92509050818404811115620014935762001492620015b8565b5b81810290505b9392505050565b6000620014ad8262001535565b9150620014ba8362001535565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014f657620014f5620015b8565b5b828202905092915050565b60006200150e8262001515565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200156c5780820151818401526020810190506200154f565b838111156200157c576000848401525b50505050565b600060028204905060018216806200159b57607f821691505b60208210811415620015b257620015b162001616565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016e68162001501565b8114620016f257600080fd5b50565b60805160601c60a05160601c6159d86200172f6000396000818161100101526114f10152600081816114c5015261151d01526159d86000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ecfae12ec2e5a590103d5a27a1dc75236d75fbccb328a1c42b44ea17d6c595aa64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ecfae12ec2e5a590103d5a27a1dc75236d75fbccb328a1c42b44ea17d6c595aa64736f6c63430008040033

Deployed Bytecode Sourcemap

12223:16326:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16139:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21070:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12726:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17305:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19738:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13861:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16416:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20753:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18238:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13302:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21664:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12638:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19574:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16325:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16802:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18846:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13000:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13976:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18978:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13437:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12943:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19997:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27841:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16524:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3900:230;;;;;;;;;;;;;:::i;:::-;;12434:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13715:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13787:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13521:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17819:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14119:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13350:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13160:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3675:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16230:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17028:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19437:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21489:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19258:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13260:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13909:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13394:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13101:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13626:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14023:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13217:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16651:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24026:154;;;;;;;;;;;;;:::i;:::-;;18496:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18381:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17956:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13482:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18736:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4138:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23879:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18099:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14077:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13052:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19118:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16139:83;16176:13;16209:5;16202:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16139:83;:::o;21070:317::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21192:10:::1;21172:17;:30;;;;21233:10;21213:17;:30;;;;21274:10;21254:17;:30;;;;21316:63;21361:17;;21316:40;21338:17;;21316;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;21295:18;:84;;;;21070:317:::0;;;:::o;12726:81::-;;;:::o;17305:161::-;17380:4;17397:39;17406:12;:10;:12::i;:::-;17420:7;17429:6;17397:8;:39::i;:::-;17454:4;17447:11;;17305:161;;;;:::o;19738:113::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19836:7:::1;19818:9;:15;19828:4;19818:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19738:113:::0;;:::o;13861:41::-;;;;;;;;;;;;;:::o;16416:100::-;16469:7;16496:12;;16489:19;;16416:100;:::o;20753:309::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20873:10:::1;20854:16;:29;;;;20913:10;20894:16;:29;;;;20953:10;20934:16;:29;;;;20994:60;21037:16;;20994:38;21015:16;;20994;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20974:17;:80;;;;20753:309:::0;;;:::o;18238:135::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18359:6:::1;18329:19;:27;18349:6;18329:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18238:135:::0;;:::o;13302:35::-;;;;:::o;21664:313::-;21762:4;21779:36;21789:6;21797:9;21808:6;21779:9;:36::i;:::-;;21826:121;21835:6;21843:12;:10;:12::i;:::-;21857:89;21895:6;21857:89;;;;;;;;;;;;;;;;;:11;:19;21869:6;21857:19;;;;;;;;;;;;;;;:33;21877:12;:10;:12::i;:::-;21857:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21826:8;:121::i;:::-;21965:4;21958:11;;21664:313;;;;;:::o;18615:113::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18712:8:::1;18693:16;;:27;;;;;;;;;;;;;;;;;;18615:113:::0;:::o;12638:81::-;;;:::o;19574:156::-;19627:7;19654:68;19699:22;19709:11;19699:9;:22::i;:::-;19654:40;19671:22;19681:11;19671:9;:22::i;:::-;19654:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19647:75;;19574:156;:::o;16325:83::-;16366:5;16391:9;;;;;;;;;;;16384:16;;16325:83;:::o;16802:218::-;16890:4;16907:83;16916:12;:10;:12::i;:::-;16930:7;16939:50;16978:10;16939:11;:25;16951:12;:10;:12::i;:::-;16939:25;;;;;;;;;;;;;;;:34;16965:7;16939:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16907:8;:83::i;:::-;17008:4;17001:11;;16802:218;;;;:::o;18846:124::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18954:8:::1;18928:23;:34;;;;18846:124:::0;:::o;13000:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13976:40::-;;;;;;;;;;;;;:::o;18978:132::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19091:10:::1;19065:15;;:37;;;;;;;;;;;;;;;;;;18978:132:::0;:::o;13437:36::-;;;;:::o;12943:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19997:748::-;20077:22;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20114:35:::1;20171:16;20114:74;;20237:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20219:53;;;20281:4;20288:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20219:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20202:110;;20354:1;20328:28;;:14;:28;;;20325:225;;;20442:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20424:74;;;20507:4;20514:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20424:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20407:131;;20325:225;20576:14;20562:11;;:28;;;;;;;;;;;;;;;;;;20642:16;20624:15;;:34;;;;;;;;;;;;;;;;;;20733:4;20696:12;:34;20717:11;;;;;;;;;;;20696:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3879:1;19997:748:::0;;;:::o;27841:697::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27941:15:::1;27959:10;27941:28;;28007:7;;:14;;27988:8;;:15;;:33;27980:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28058:15;28088:6:::0;28097:1:::1;28088:10;;28084:92;28104:7;;:14;;28100:1;:18;28084:92;;;28154:7;;28162:1;28154:10;;;;;;;;;;;;;;;;;;;;;28140:24;;;;;:::i;:::-;;;28120:3;;;;;:::i;:::-;;;;28084:92;;;;28216:10;28194:18;28204:7;28194:9;:18::i;:::-;:32;;28186:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28289:34;28312:10;28289:9;:18;28299:7;28289:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;28268:9;:18;28278:7;28268:18;;;;;;;;;;;;;;;:55;;;;28339:6;28335:194;28355:8;;:15;;28351:1;:19;28335:194;;;28417:38;28444:7;;28452:1;28444:10;;;;;;;;;;;;;;;;;;;;;28417:9;:22;28427:8;;28436:1;28427:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28417:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28392:9;:22;28402:8;;28411:1;28402:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28392:22;;;;;;;;;;;;;;;:63;;;;28493:8;;28502:1;28493:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28475:42;;28484:7;28475:42;;;28506:7;;28514:1;28506:10;;;;;;;;;;;;;;;;;;;;;28475:42;;;;;;:::i;:::-;;;;;;;;28372:3;;;;;:::i;:::-;;;;28335:194;;;;3879:1;;27841:697:::0;;;;:::o;16524:119::-;16590:7;16617:9;:18;16627:7;16617:18;;;;;;;;;;;;;;;;16610:25;;16524:119;;;:::o;3900:230::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4007:42:::1;3970:81;;3991:6;::::0;::::1;;;;;;;;3970:81;;;;;;;;;;;;4079:42;4062:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3900:230::o:0;12434:92::-;;;;;;;;;;;;;:::o;13715:59::-;;;;:::o;13787:58::-;;;;:::o;13521:33::-;;;;:::o;17819:129::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17932:8:::1;17908:12;:21;17921:7;17908:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17819:129:::0;;:::o;14119:41::-;;;;;;;;;;;;;:::o;13350:37::-;;;;:::o;13160:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3675:79::-;3713:7;3740:6;;;;;;;;;;;3733:13;;3675:79;:::o;16230:87::-;16269:13;16302:7;16295:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16230:87;:::o;17028:269::-;17121:4;17138:129;17147:12;:10;:12::i;:::-;17161:7;17170:96;17209:15;17170:96;;;;;;;;;;;;;;;;;:11;:25;17182:12;:10;:12::i;:::-;17170:25;;;;;;;;;;;;;;;:34;17196:7;17170:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17138:8;:129::i;:::-;17285:4;17278:11;;17028:269;;;;:::o;19437:125::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19546:8:::1;19518:25;;:36;;;;;;;;;;;;;;;;;;19437:125:::0;:::o;21489:167::-;21567:4;21584:42;21594:12;:10;:12::i;:::-;21608:9;21619:6;21584:9;:42::i;:::-;;21644:4;21637:11;;21489:167;;;;:::o;19258:171::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19359:8:::1;19335:21;;:32;;;;;;;;;;;;;;;;;;19383:38;19412:8;19383:38;;;;;;:::i;:::-;;;;;;;;19258:171:::0;:::o;13260:35::-;;;;:::o;13909:26::-;;;;;;;;;;;;;:::o;13394:36::-;;;;:::o;13101:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;13626:69::-;;;;:::o;14023:45::-;;;;;;;;;;;;;:::o;13217:36::-;;;;:::o;16651:143::-;16732:7;16759:11;:18;16771:5;16759:18;;;;;;;;;;;;;;;:27;16778:7;16759:27;;;;;;;;;;;;;;;;16752:34;;16651:143;;;;:::o;24026:154::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24080:7:::1;24100:10;24092:24;;24124:21;24092:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24079:71;;;24169:2;24161:11;;;::::0;::::1;;3879:1;24026:154::o:0;18496:111::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18588:11:::1;18573:12;:26;;;;18496:111:::0;:::o;18381:107::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18473:7:::1;18448:22;;:32;;;;;;;;;;;;;;;;;;18381:107:::0;:::o;17956:135::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18075:8:::1;18046:17;:26;18064:7;18046:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17956:135:::0;;:::o;13482:32::-;;;;:::o;18736:102::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18822:8:::1;18808:10;:22;;;;18736:102:::0;:::o;4138:244::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4247:1:::1;4227:22;;:8;:22;;;;4219:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4337:8;4308:38;;4329:6;::::0;::::1;;;;;;;;4308:38;;;;;;;;;;;;4366:8;4357:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4138:244:::0;:::o;23879:139::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23974:6:::1;23967:23;;;23991:10;24002:7;23967:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23879:139:::0;;:::o;18099:127::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18212:6:::1;18186:15;:23;18202:6;18186:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18099:127:::0;;:::o;14077:35::-;;;;;;;;;;;;;:::o;12533:92::-;;;;;;;;;;;;;:::o;13052:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;19118:132::-;3819:12;:10;:12::i;:::-;3809:22;;:6;;;;;;;;;;:22;;;3801:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19231:10:::1;19205:15;;:37;;;;;;;;;;;;;;;;;;19118:132:::0;:::o;2360:250::-;2418:7;2447:1;2442;:6;2438:47;;;2472:1;2465:8;;;;2438:47;2497:9;2513:1;2509;:5;;;;:::i;:::-;2497:17;;2542:1;2537;2533;:5;;;;:::i;:::-;:10;2525:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2601:1;2594:8;;;2360:250;;;;;:::o;2618:132::-;2676:7;2703:39;2707:1;2710;2703:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2696:46;;2618:132;;;;:::o;1827:181::-;1885:7;1905:9;1921:1;1917;:5;;;;:::i;:::-;1905:17;;1946:1;1941;:6;;1933:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1999:1;1992:8;;;1827:181;;;;:::o;885:115::-;938:15;981:10;966:26;;885:115;:::o;17474:337::-;17584:1;17567:19;;:5;:19;;;;17559:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17665:1;17646:21;;:7;:21;;;;17638:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17749:6;17719:11;:18;17731:5;17719:18;;;;;;;;;;;;;;;:27;17738:7;17719:27;;;;;;;;;;;;;;;:36;;;;17787:7;17771:32;;17780:5;17771:32;;;17796:6;17771:32;;;;;;:::i;:::-;;;;;;;;17474:337;;;:::o;21985:1886::-;22072:4;22117:1;22099:20;;:6;:20;;;;22091:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22201:1;22180:23;;:9;:23;;;;22172:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22263:9;:17;22273:6;22263:17;;;;;;;;;;;;;;;;;;;;;;;;;22262:18;:43;;;;;22285:9;:20;22295:9;22285:20;;;;;;;;;;;;;;;;;;;;;;;;;22284:21;22262:43;22254:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22355:16;;;;;;;;;;;22352:1502;;;22405:41;22420:6;22428:9;22439:6;22405:14;:41::i;:::-;22398:48;;;;22352:1502;22504:15;:23;22520:6;22504:23;;;;;;;;;;;;;;;;;;;;;;;;;22503:24;:55;;;;;22532:15;:26;22548:9;22532:26;;;;;;;;;;;;;;;;;;;;;;;;;22531:27;22503:55;:81;;;;;22562:22;;;;;;;;;;;22503:81;22500:196;;;22623:12;;22613:6;:22;;22605:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22500:196;22712:28;22743:24;22761:4;22743:9;:24::i;:::-;22712:55;;22782:28;22837:23;;22813:20;:47;;22782:78;;22893:23;:44;;;;;22921:16;;;;;;;;;;;22920:17;22893:44;:69;;;;;22942:12;:20;22955:6;22942:20;;;;;;;;;;;;;;;;;;;;;;;;;22941:21;22893:69;:94;;;;;22966:21;;;;;;;;;;;22893:94;22889:305;;;23025:25;;;;;;;;;;;23022:97;;;23096:23;;23073:46;;23022:97;23138:36;23153:20;23138:14;:36::i;:::-;22889:305;23230:53;23252:6;23230:53;;;;;;;;;;;;;;;;;:9;:17;23240:6;23230:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23210:9;:17;23220:6;23210:17;;;;;;;;;;;;;;;:73;;;;23300:19;23323:17;:25;23341:6;23323:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23352:17;:28;23370:9;23352:28;;;;;;;;;;;;;;;;;;;;;;;;;23323:57;23322:148;;23436:34;23444:6;23452:9;23463:6;23436:7;:34::i;:::-;23322:148;;;23427:6;23322:148;23300:170;;23490:16;;;;;;;;;;;:51;;;;;23511:19;:30;23531:9;23511:30;;;;;;;;;;;;;;;;;;;;;;;;;23510:31;23490:51;23487:191;;;23611:10;;23570:37;23595:11;23570:20;23580:9;23570;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23562:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23487:191;23717:37;23742:11;23717:9;:20;23727:9;23717:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23694:9;:20;23704:9;23694:20;;;;;;;;;;;;;;;:60;;;;23793:9;23776:40;;23785:6;23776:40;;;23804:11;23776:40;;;;;;:::i;:::-;;;;;;;;23838:4;23831:11;;;;;21985:1886;;;;;;:::o;2160:192::-;2246:7;2279:1;2274;:6;;2282:12;2266:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2306:9;2322:1;2318;:5;;;;:::i;:::-;2306:17;;2343:1;2336:8;;;2160:192;;;;;:::o;2016:136::-;2074:7;2101:43;2105:1;2108;2101:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2094:50;;2016:136;;;;:::o;2758:278::-;2844:7;2876:1;2872;:5;2879:12;2864:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2903:9;2919:1;2915;:5;;;;:::i;:::-;2903:17;;3027:1;3020:8;;;2758:278;;;;;:::o;24188:330::-;24281:4;24318:53;24340:6;24318:53;;;;;;;;;;;;;;;;;:9;:17;24328:6;24318:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24298:9;:17;24308:6;24298:17;;;;;;;;;;;;;;;:73;;;;24405:32;24430:6;24405:9;:20;24415:9;24405:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24382:9;:20;24392:9;24382:20;;;;;;;;;;;;;;;:55;;;;24470:9;24453:35;;24462:6;24453:35;;;24481:6;24453:35;;;;;;:::i;:::-;;;;;;;;24506:4;24499:11;;24188:330;;;;;:::o;24526:1449::-;14604:4;14585:16;;:23;;;;;;;;;;;;;;;;;;24600:19:::1;24622:41;24644:18;;24622:17;;:21;;:41;;;;:::i;:::-;24600:63;;24676:22;24701:39;24722:17;;24701:16;;:20;;:39;;;;:::i;:::-;24676:64;;24751:22;24776:39;24797:17;;24776:16;;:20;;:39;;;;:::i;:::-;24751:64;;24914:18;24935:51;24984:1;24935:44;24967:11;24935:27;24947:14;24935:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24914:72;;24997:20;25020:23;25032:10;25020:7;:11;;:23;;;;:::i;:::-;24997:46;;25056:22;25082:21;25056:47;;25114:30;25131:12;25114:16;:30::i;:::-;25155:23;25182:41;25208:14;25182:21;:25;;:41;;;;:::i;:::-;25155:68;;25236:19;25258:38;25274:21;25293:1;25274:14;:18;;:21;;;;:::i;:::-;25258:11;:15;;:38;;;;:::i;:::-;25236:60;;25309:26;25338:59;25395:1;25338:52;25378:11;25338:35;25358:14;25338:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25309:88;;25408:26;25437:52;25477:11;25437:35;25457:14;25437:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25408:81;;25500:26;25529:63;25573:18;25529:39;25549:18;25529:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25500:92;;25629:1;25608:18;:22;25605:107;;;25655:15;;;;;;;;;;;25647:33;;:53;25681:18;25647:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25605:107;25748:1;25727:18;:22;25724:107;;;25774:15;;;;;;;;;;;25766:33;;:53;25800:18;25766:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25724:107;25876:1;25855:18;:22;:40;;;;;25894:1;25881:10;:14;25855:40;25852:116;;;25912:44;25925:10;25937:18;25912:12;:44::i;:::-;25852:116;14619:1;;;;;;;;;;;14650:5:::0;14631:16;;:24;;;;;;;;;;;;;;;;;;24526:1449;:::o;27182:622::-;27268:7;27298:17;27318:1;27298:21;;27343:12;:20;27356:6;27343:20;;;;;;;;;;;;;;;;;;;;;;;;;27340:223;;;27392:38;27426:3;27392:29;27403:17;;27392:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27380:50;;27340:223;;;27460:12;:23;27473:9;27460:23;;;;;;;;;;;;;;;;;;;;;;;;;27457:106;;;27512:39;27547:3;27512:30;27523:18;;27512:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27500:51;;27457:106;27340:223;27598:1;27586:9;:13;27583:173;;;27643:39;27672:9;27643;:24;27661:4;27643:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27616:9;:24;27634:4;27616:24;;;;;;;;;;;;;;;:66;;;;27727:4;27702:42;;27711:6;27702:42;;;27734:9;27702:42;;;;;;:::i;:::-;;;;;;;;27583:173;27775:21;27786:9;27775:6;:10;;:21;;;;:::i;:::-;27768:28;;;27182:622;;;;;:::o;25987:666::-;26113:21;26151:1;26137:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26113:40;;26182:4;26164;26169:1;26164:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26208:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26198:4;26203:1;26198:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26243:62;26260:4;26275:15;;;;;;;;;;;26293:11;26243:8;:62::i;:::-;26344:15;;;;;;;;;;;:66;;;26425:11;26451:1;26495:4;26522;26558:15;26344:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26610:35;26627:11;26640:4;26610:35;;;;;;;:::i;:::-;;;;;;;;25987:666;;:::o;26661:513::-;26809:62;26826:4;26841:15;;;;;;;;;;;26859:11;26809:8;:62::i;:::-;26914:15;;;;;;;;;;;:31;;;26953:9;26986:4;27006:11;27032:1;27075;27118:7;:5;:7::i;:::-;27140:15;26914:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26661:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:398::-;13510:3;13531:83;13612:1;13607:3;13531:83;:::i;:::-;13524:90;;13623:93;13712:3;13623:93;:::i;:::-;13741:1;13736:3;13732:11;13725:18;;13514:235;;;:::o;13755:366::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13901:220;;;:::o;14127:118::-;14214:24;14232:5;14214:24;:::i;:::-;14209:3;14202:37;14192:53;;:::o;14251:112::-;14334:22;14350:5;14334:22;:::i;:::-;14329:3;14322:35;14312:51;;:::o;14369:379::-;14553:3;14575:147;14718:3;14575:147;:::i;:::-;14568:154;;14739:3;14732:10;;14557:191;;;:::o;14754:222::-;14847:4;14885:2;14874:9;14870:18;14862:26;;14898:71;14966:1;14955:9;14951:17;14942:6;14898:71;:::i;:::-;14852:124;;;;:::o;14982:254::-;15091:4;15129:2;15118:9;15114:18;15106:26;;15142:87;15226:1;15215:9;15211:17;15202:6;15142:87;:::i;:::-;15096:140;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15368:206;;;;;:::o;15580:332::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15752:71;15820:1;15809:9;15805:17;15796:6;15752:71;:::i;:::-;15833:72;15901:2;15890:9;15886:18;15877:6;15833:72;:::i;:::-;15706:206;;;;;:::o;15918:807::-;16167:4;16205:3;16194:9;16190:19;16182:27;;16219:71;16287:1;16276:9;16272:17;16263:6;16219:71;:::i;:::-;16300:72;16368:2;16357:9;16353:18;16344:6;16300:72;:::i;:::-;16382:80;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472;16548:2;16537:9;16533:18;16524:6;16472:80;:::i;:::-;16562:73;16630:3;16619:9;16615:19;16606:6;16562:73;:::i;:::-;16645;16713:3;16702:9;16698:19;16689:6;16645:73;:::i;:::-;16172:553;;;;;;;;;:::o;16731:210::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16869:65;16931:1;16920:9;16916:17;16907:6;16869:65;:::i;:::-;16823:118;;;;:::o;16947:276::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17118:98;17213:1;17202:9;17198:17;17189:6;17118:98;:::i;:::-;17072:151;;;;:::o;17229:313::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:78;17530:4;17521:6;17457:78;:::i;:::-;17449:86;;17347:195;;;;:::o;17548:419::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:131;17955:4;17829:131;:::i;:::-;17821:139;;17719:248;;;:::o;17973:419::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18226:9;18220:4;18216:20;18212:1;18201:9;18197:17;18190:47;18254:131;18380:4;18254:131;:::i;:::-;18246:139;;18144:248;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18569:248;;;:::o;18823:419::-;18989:4;19027:2;19016:9;19012:18;19004:26;;19076:9;19070:4;19066:20;19062:1;19051:9;19047:17;19040:47;19104:131;19230:4;19104:131;:::i;:::-;19096:139;;18994:248;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:222::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23217:71;23285:1;23274:9;23270:17;23261:6;23217:71;:::i;:::-;23171:124;;;;:::o;23301:483::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23523:71;23591:1;23580:9;23576:17;23567:6;23523:71;:::i;:::-;23641:9;23635:4;23631:20;23626:2;23615:9;23611:18;23604:48;23669:108;23772:4;23763:6;23669:108;:::i;:::-;23661:116;;23477:307;;;;;:::o;23790:831::-;24053:4;24091:3;24080:9;24076:19;24068:27;;24105:71;24173:1;24162:9;24158:17;24149:6;24105:71;:::i;:::-;24186:80;24262:2;24251:9;24247:18;24238:6;24186:80;:::i;:::-;24313:9;24307:4;24303:20;24298:2;24287:9;24283:18;24276:48;24341:108;24444:4;24435:6;24341:108;:::i;:::-;24333:116;;24459:72;24527:2;24516:9;24512:18;24503:6;24459:72;:::i;:::-;24541:73;24609:3;24598:9;24594:19;24585:6;24541:73;:::i;:::-;24058:563;;;;;;;;:::o;24627:214::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24767:67;24831:1;24820:9;24816:17;24807:6;24767:67;:::i;:::-;24721:120;;;;:::o;24847:132::-;24914:4;24937:3;24929:11;;24967:4;24962:3;24958:14;24950:22;;24919:60;;;:::o;24985:114::-;25052:6;25086:5;25080:12;25070:22;;25059:40;;;:::o;25105:99::-;25157:6;25191:5;25185:12;25175:22;;25164:40;;;:::o;25210:113::-;25280:4;25312;25307:3;25303:14;25295:22;;25285:38;;;:::o;25329:184::-;25428:11;25462:6;25457:3;25450:19;25502:4;25497:3;25493:14;25478:29;;25440:73;;;;:::o;25519:147::-;25620:11;25657:3;25642:18;;25632:34;;;;:::o;25672:169::-;25756:11;25790:6;25785:3;25778:19;25830:4;25825:3;25821:14;25806:29;;25768:73;;;;:::o;25847:305::-;25887:3;25906:20;25924:1;25906:20;:::i;:::-;25901:25;;25940:20;25958:1;25940:20;:::i;:::-;25935:25;;26094:1;26026:66;26022:74;26019:1;26016:81;26013:2;;;26100:18;;:::i;:::-;26013:2;26144:1;26141;26137:9;26130:16;;25891:261;;;;:::o;26158:185::-;26198:1;26215:20;26233:1;26215:20;:::i;:::-;26210:25;;26249:20;26267:1;26249:20;:::i;:::-;26244:25;;26288:1;26278:2;;26293:18;;:::i;:::-;26278:2;26335:1;26332;26328:9;26323:14;;26200:143;;;;:::o;26349:348::-;26389:7;26412:20;26430:1;26412:20;:::i;:::-;26407:25;;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26634:1;26566:66;26562:74;26559:1;26556:81;26551:1;26544:9;26537:17;26533:105;26530:2;;;26641:18;;:::i;:::-;26530:2;26689:1;26686;26682:9;26671:20;;26397:300;;;;:::o;26703:191::-;26743:4;26763:20;26781:1;26763:20;:::i;:::-;26758:25;;26797:20;26815:1;26797:20;:::i;:::-;26792:25;;26836:1;26833;26830:8;26827:2;;;26841:18;;:::i;:::-;26827:2;26886:1;26883;26879:9;26871:17;;26748:146;;;;:::o;26900:96::-;26937:7;26966:24;26984:5;26966:24;:::i;:::-;26955:35;;26945:51;;;:::o;27002:104::-;27047:7;27076:24;27094:5;27076:24;:::i;:::-;27065:35;;27055:51;;;:::o;27112:90::-;27146:7;27189:5;27182:13;27175:21;27164:32;;27154:48;;;:::o;27208:126::-;27245:7;27285:42;27278:5;27274:54;27263:65;;27253:81;;;:::o;27340:77::-;27377:7;27406:5;27395:16;;27385:32;;;:::o;27423:86::-;27458:7;27498:4;27491:5;27487:16;27476:27;;27466:43;;;:::o;27515:180::-;27592:9;27625:64;27683:5;27625:64;:::i;:::-;27612:77;;27602:93;;;:::o;27701:140::-;27778:9;27811:24;27829:5;27811:24;:::i;:::-;27798:37;;27788:53;;;:::o;27847:121::-;27905:9;27938:24;27956:5;27938:24;:::i;:::-;27925:37;;27915:53;;;:::o;27974:307::-;28042:1;28052:113;28066:6;28063:1;28060:13;28052:113;;;28151:1;28146:3;28142:11;28136:18;28132:1;28127:3;28123:11;28116:39;28088:2;28085:1;28081:10;28076:15;;28052:113;;;28183:6;28180:1;28177:13;28174:2;;;28263:1;28254:6;28249:3;28245:16;28238:27;28174:2;28023:258;;;;:::o;28287:320::-;28331:6;28368:1;28362:4;28358:12;28348:22;;28415:1;28409:4;28405:12;28436:18;28426:2;;28492:4;28484:6;28480:17;28470:27;;28426:2;28554;28546:6;28543:14;28523:18;28520:38;28517:2;;;28573:18;;:::i;:::-;28517:2;28338:269;;;;:::o;28613:233::-;28652:3;28675:24;28693:5;28675:24;:::i;:::-;28666:33;;28721:66;28714:5;28711:77;28708:2;;;28791:18;;:::i;:::-;28708:2;28838:1;28831:5;28827:13;28820:20;;28656:190;;;:::o;28852:180::-;28900:77;28897:1;28890:88;28997:4;28994:1;28987:15;29021:4;29018:1;29011:15;29038:180;29086:77;29083:1;29076:88;29183:4;29180:1;29173:15;29207:4;29204:1;29197:15;29224:180;29272:77;29269:1;29262:88;29369:4;29366:1;29359:15;29393:4;29390:1;29383:15;29410:102;29451:6;29502:2;29498:7;29493:2;29486:5;29482:14;29478:28;29468:38;;29458:54;;;:::o;29518:222::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:5;29722:2;29714:6;29710:15;29703:30;29624:116;:::o;29746:177::-;29886:29;29882:1;29874:6;29870:14;29863:53;29852:71;:::o;29929:225::-;30069:34;30065:1;30057:6;30053:14;30046:58;30138:8;30133:2;30125:6;30121:15;30114:33;30035:119;:::o;30160:221::-;30300:34;30296:1;30288:6;30284:14;30277:58;30369:4;30364:2;30356:6;30352:15;30345:29;30266:115;:::o;30387:177::-;30527:29;30523:1;30515:6;30511:14;30504:53;30493:71;:::o;30570:224::-;30710:34;30706:1;30698:6;30694:14;30687:58;30779:7;30774:2;30766:6;30762:15;30755:32;30676:118;:::o;30800:179::-;30940:31;30936:1;30928:6;30924:14;30917:55;30906:73;:::o;30985:227::-;31125:34;31121:1;31113:6;31109:14;31102:58;31194:10;31189:2;31181:6;31177:15;31170:35;31091:121;:::o;31218:220::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:3;31422:2;31414:6;31410:15;31403:28;31324:114;:::o;31444:172::-;31584:24;31580:1;31572:6;31568:14;31561:48;31550:66;:::o;31622:182::-;31762:34;31758:1;31750:6;31746:14;31739:58;31728:76;:::o;31810:224::-;31950:34;31946:1;31938:6;31934:14;31927:58;32019:7;32014:2;32006:6;32002:15;31995:32;31916:118;:::o;32040:114::-;32146:8;:::o;32160:223::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:6;32364:2;32356:6;32352:15;32345:31;32266:117;:::o;32389:122::-;32462:24;32480:5;32462:24;:::i;:::-;32455:5;32452:35;32442:2;;32501:1;32498;32491:12;32442:2;32432:79;:::o;32517:116::-;32587:21;32602:5;32587:21;:::i;:::-;32580:5;32577:32;32567:2;;32623:1;32620;32613:12;32567:2;32557:76;:::o;32639:122::-;32712:24;32730:5;32712:24;:::i;:::-;32705:5;32702:35;32692:2;;32751:1;32748;32741:12;32692:2;32682:79;:::o

Swarm Source

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