ETH Price: $3,479.60 (+0.45%)

Token

Fuchsia (FUCH)
 

Overview

Max Total Supply

777,000,777 FUCH

Holders

193 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,216,119.125699952349047767 FUCH

Value
$0.00
0x8FD8cAdD9353a626C541797816F832fd0E2e684d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Fuchsia is a memecoin experiment looking to build a community movement that paints the memes, pop culture trends, and everything around us in fuchsia - a color that has symbolized wealth, power, and unapologetic confidence for centuries across the globe.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Fuchsia

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-18
*/

/** 

  █████▒█    ██  ▄████▄   ██░ ██   ██████  ██▓ ▄▄▄      
▓██   ▒ ██  ▓██▒▒██▀ ▀█  ▓██░ ██▒▒██    ▒ ▓██▒▒████▄    
▒████ ░▓██  ▒██░▒▓█    ▄ ▒██▀▀██░░ ▓██▄   ▒██▒▒██  ▀█▄  
░▓█▒  ░▓▓█  ░██░▒▓▓▄ ▄██▒░▓█ ░██   ▒   ██▒░██░░██▄▄▄▄██ 
░▒█░   ▒▒█████▓ ▒ ▓███▀ ░░▓█▒░██▓▒██████▒▒░██░ ▓█   ▓██▒
 ▒ ░   ░▒▓▒ ▒ ▒ ░ ░▒ ▒  ░ ▒ ░░▒░▒▒ ▒▓▒ ▒ ░░▓   ▒▒   ▓▒█░
 ░     ░░▒░ ░ ░   ░  ▒    ▒ ░▒░ ░░ ░▒  ░ ░ ▒ ░  ▒   ▒▒ ░
 ░ ░    ░░░ ░ ░ ░         ░  ░░ ░░  ░  ░   ▒ ░  ░   ▒   
          ░     ░ ░       ░  ░  ░      ░   ░        ░  ░
                ░                                       

*/

// 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 () {
        
        _owner = 0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    address payable public marketingWallet = payable(0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2);
    address payable public DeveloperWallet = payable(0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    bool public tradingEnabled;

    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 = 0;
    uint256 public _buyMarketingFee = 99;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 20;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 777000777 * 10**_decimals;

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;

    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

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

    event SwapAndLiquifyEnabledUpdated(bool enabled);

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

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

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

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

        isMarketPair[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

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

    function setTradingEnabled(bool _enabled) external onlyOwner{
        tradingEnabled = _enabled;

    }

    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 setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = 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);
        require(_totalTaxIfBuying <= (feeUnits/25), "Buy fees must be 25% or less");
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
        require(_totalTaxIfSelling <= (feeUnits/25), "Sell fees must be 25% or less");
    }
    

     //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(!_whitelisted[from]) { require(tradingEnabled, "Trading is not enabled yet");}


        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
            liquidityReciever,
            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":"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":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","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":"bool","name":"_enabled","type":"bool"}],"name":"setTradingEnabled","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

60c06040526040518060400160405280600781526020017f4675636873696100000000000000000000000000000000000000000000000000815250600190816200004a9190620012bb565b506040518060400160405280600481526020017f465543480000000000000000000000000000000000000000000000000000000081525060029081620000919190620012bb565b506012600360006101000a81548160ff021916908360ff160217905550736b8b7564b0b952bc052a9a2aa8aaa12a99023bc2600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736b8b7564b0b952bc052a9a2aa8aaa12a99023bc2600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506000600d556063600e556000600f556000601055601460115560006012556064601355600360009054906101000a900460ff16600a62000202919062001532565b632e50174962000213919062001583565b6016556200024d606462000239600160165462000e7860201b6200327a1790919060201c565b62000efb60201b620032f41790919060201c565b60175562000287606462000273600260165462000e7860201b6200327a1790919060201c565b62000efb60201b620032f41790919060201c565b601855620002c16064620002ad600260165462000e7860201b6200327a1790919060201c565b62000efb60201b620032f41790919060201c565b6019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055503480156200033d57600080fd5b50736b8b7564b0b952bc052a9a2aa8aaa12a99023bc26000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000498919062001638565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000526919062001638565b6040518363ffffffff1660e01b8152600401620005459291906200167b565b6020604051808303816000875af115801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b919062001638565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620006c762000f4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200087a62000f4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000aa762000f4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c7d600f5462000c69600e54600d5462000f7660201b6200333e1790919060201c565b62000f7660201b6200333e1790919060201c565b60148190555062000cbc60125462000ca860115460105462000f7660201b6200333e1790919060201c565b62000f7660201b6200333e1790919060201c565b6015819055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165460066000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000e699190620016b9565b60405180910390a35062001935565b600080830362000e8c576000905062000ef5565b6000828462000e9c919062001583565b905082848262000ead919062001705565b1462000ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee790620017c4565b60405180910390fd5b809150505b92915050565b600062000f4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fd960201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f879190620017e6565b90508381101562000fcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fc69062001871565b60405180910390fd5b8091505092915050565b6000808311829062001023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200101a919062001911565b60405180910390fd5b506000838562001034919062001705565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010c357607f821691505b602082108103620010d957620010d86200107b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001104565b6200114f868362001104565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200119c62001196620011908462001167565b62001171565b62001167565b9050919050565b6000819050919050565b620011b8836200117b565b620011d0620011c782620011a3565b84845462001111565b825550505050565b600090565b620011e7620011d8565b620011f4818484620011ad565b505050565b5b818110156200121c5762001210600082620011dd565b600181019050620011fa565b5050565b601f8211156200126b576200123581620010df565b6200124084620010f4565b8101602085101562001250578190505b620012686200125f85620010f4565b830182620011f9565b50505b505050565b600082821c905092915050565b6000620012906000198460080262001270565b1980831691505092915050565b6000620012ab83836200127d565b9150826002028217905092915050565b620012c68262001041565b67ffffffffffffffff811115620012e257620012e16200104c565b5b620012ee8254620010aa565b620012fb82828562001220565b600060209050601f8311600181146200133357600084156200131e578287015190505b6200132a85826200129d565b8655506200139a565b601f1984166200134386620010df565b60005b828110156200136d5784890151825560018201915060208501945060208101905062001346565b868310156200138d578489015162001389601f8916826200127d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200143057808604811115620014085762001407620013a2565b5b6001851615620014185780820291505b80810290506200142885620013d1565b9450620013e8565b94509492505050565b6000826200144b57600190506200151e565b816200145b57600090506200151e565b81600181146200147457600281146200147f57620014b5565b60019150506200151e565b60ff841115620014945762001493620013a2565b5b8360020a915084821115620014ae57620014ad620013a2565b5b506200151e565b5060208310610133831016604e8410600b8410161715620014ef5782820a905083811115620014e957620014e8620013a2565b5b6200151e565b620014fe8484846001620013de565b92509050818404811115620015185762001517620013a2565b5b81810290505b9392505050565b600060ff82169050919050565b60006200153f8262001167565b91506200154c8362001525565b92506200157b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001439565b905092915050565b6000620015908262001167565b91506200159d8362001167565b9250828202620015ad8162001167565b91508282048414831517620015c757620015c6620013a2565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200160082620015d3565b9050919050565b6200161281620015f3565b81146200161e57600080fd5b50565b600081519050620016328162001607565b92915050565b600060208284031215620016515762001650620015ce565b5b6000620016618482850162001621565b91505092915050565b6200167581620015f3565b82525050565b60006040820190506200169260008301856200166a565b620016a160208301846200166a565b9392505050565b620016b38162001167565b82525050565b6000602082019050620016d06000830184620016a8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620017128262001167565b91506200171f8362001167565b925082620017325762001731620016d6565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620017ac6021836200173d565b9150620017b9826200174e565b604082019050919050565b60006020820190508181036000830152620017df816200179d565b9050919050565b6000620017f38262001167565b9150620018008362001167565b92508282019050808211156200181b576200181a620013a2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001859601b836200173d565b9150620018668262001821565b602082019050919050565b600060208201905081810360008301526200188c816200184a565b9050919050565b60005b83811015620018b357808201518184015260208101905062001896565b60008484015250505050565b6000601f19601f8301169050919050565b6000620018dd8262001041565b620018e981856200173d565b9350620018fb81856020860162001893565b6200190681620018bf565b840191505092915050565b600060208201905081810360008301526200192d8184620018d0565b905092915050565b60805160a051615a4e62001969600039600081816110e2015261153501526000818161150901526115610152615a4e6000f3fe6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190614780565b60405180910390f35b34801561040a57600080fd5b50610425600480360381019061042091906147e2565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190614876565b60405180910390f35b34801561045e57600080fd5b50610479600480360381019061047491906148bd565b611104565b6040516104869190614918565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190614992565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc91906149bc565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906147e2565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614a03565b611285565b005b34801561054357600080fd5b5061054c611375565b60405161055991906149bc565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a43565b61137b565b6040516105969190614918565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614a96565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190614876565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b60405161061591906149bc565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b6040516106409190614adf565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b91906148bd565b6115c0565b60405161067d9190614918565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614afa565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614b27565b611712565b6040516106e39190614918565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e9190614918565b60405180910390f35b34801561072357600080fd5b5061072c611745565b6040516107399190614918565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614b27565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d91906149bc565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614b27565b611837565b6040516107ca9190614918565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614b27565b611857565b6040516108079190614876565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614c0f565b611ce0565b005b34801561084557600080fd5b50610860600480360381019061085b9190614b27565b6120bb565b60405161086d91906149bc565b60405180910390f35b34801561088257600080fd5b5061088b612104565b005b34801561089957600080fd5b506108a2612259565b6040516108af9190614cb1565b60405180910390f35b3480156108c457600080fd5b506108cd61227f565b6040516108da91906149bc565b60405180910390f35b3480156108ef57600080fd5b506108f8612285565b60405161090591906149bc565b60405180910390f35b34801561091a57600080fd5b5061092361228b565b60405161093091906149bc565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a03565b612291565b005b34801561096e57600080fd5b50610977612381565b6040516109849190614918565b60405180910390f35b34801561099957600080fd5b506109a2612394565b6040516109af91906149bc565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614b27565b61239a565b6040516109ec9190614918565b60405180910390f35b348015610a0157600080fd5b50610a0a6123ba565b604051610a179190614876565b60405180910390f35b348015610a2c57600080fd5b50610a356123e3565b604051610a429190614780565b60405180910390f35b348015610a5757600080fd5b50610a60612475565b604051610a6d9190614876565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a9891906148bd565b61249b565b604051610aaa9190614918565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614a96565b612568565b005b348015610ae857600080fd5b50610b036004803603810190610afe91906148bd565b61261a565b604051610b109190614918565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614a96565b612639565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614a96565b6126eb565b005b348015610b7757600080fd5b50610b806127d4565b604051610b8d91906149bc565b60405180910390f35b348015610ba257600080fd5b50610bab6127da565b604051610bb89190614876565b60405180910390f35b348015610bcd57600080fd5b50610bd6612800565b604051610be391906149bc565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e9190614b27565b612806565b604051610c209190614918565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614b27565b612826565b005b348015610c5e57600080fd5b50610c676128ff565b604051610c7491906149bc565b60405180910390f35b348015610c8957600080fd5b50610c92612905565b604051610c9f9190614918565b60405180910390f35b348015610cb457600080fd5b50610cbd612918565b604051610cca91906149bc565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614ccc565b61291e565b604051610d0791906149bc565b60405180910390f35b348015610d1c57600080fd5b50610d256129a5565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614afa565b612ab3565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614a96565b612b52565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614a03565b612c04565b005b348015610dae57600080fd5b50610db7612cf4565b604051610dc491906149bc565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614afa565b612cfa565b005b348015610e0257600080fd5b50610e1d6004803603810190610e189190614b27565b612d99565b005b348015610e2b57600080fd5b50610e466004803603810190610e4191906148bd565b612f5a565b005b348015610e5457600080fd5b50610e5d613072565b604051610e6a91906149bc565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614a03565b613078565b005b348015610ea857600080fd5b50610eb1613168565b604051610ebe9190614918565b60405180910390f35b348015610ed357600080fd5b50610edc61317b565b604051610ee99190614cb1565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f149190614b27565b6131a1565b005b606060018054610f2a90614d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690614d3b565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb561339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614db8565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461333e90919063ffffffff16565b61333e90919063ffffffff16565b60158190555060196013546110979190614e36565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290614eb3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061111861111161339c565b84846133a4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614db8565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461333e90919063ffffffff16565b61333e90919063ffffffff16565b601481905550601960135461123c9190614e36565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614f1f565b60405180910390fd5b505050565b61128d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614db8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600061138884848461356d565b5061144a8461139561339c565b611445856040518060600160405280602881526020016159cc60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b600190509392505050565b61145d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190614db8565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006120bb565b6115966115857f00000000000000000000000000000000000000000000000000000000000000006120bb565b601654613c0290919063ffffffff16565b613c0290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd61339c565b8461166485600760006115de61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b6133a4565b6001905092915050565b61167b61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614db8565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b61176061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614db8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b600061186161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614db8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119629190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190614f54565b6040518363ffffffff1660e01b8152600401611a0a929190614f81565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614f54565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bde578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af09190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614f54565b6040518363ffffffff1660e01b8152600401611b98929190614f81565b6020604051808303816000875af1158015611bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdb9190614f54565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ce861339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614db8565b60405180910390fd5b6000339050828290508585905014611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614ff6565b60405180910390fd5b600080600090505b84849050811015611e0f57848482818110611de857611de7615016565b5b9050602002013582611dfa9190615045565b91508080611e0790615079565b915050611dca565b5080611e1a836120bb565b1015611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061510d565b60405180910390fd5b611ead81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c0290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b257611f90858583818110611f1457611f13615016565b5b90506020020135600660008a8a86818110611f3257611f31615016565b5b9050602002016020810190611f479190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b60066000898985818110611fa757611fa6615016565b5b9050602002016020810190611fbc9190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061200d5761200c615016565b5b90506020020160208101906120229190614b27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061208357612082615016565b5b9050602002013560405161209791906149bc565b60405180910390a380806120aa90615079565b915050611ef3565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61210c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614db8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b61229961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614db8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f290614d3b565b80601f016020809104026020016040519081016040528092919081815260200182805461241e90614d3b565b801561246b5780601f106124405761010080835404028352916020019161246b565b820191906000526020600020905b81548152906001019060200180831161244e57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061255e6124a861339c565b84612559856040518060600160405280602581526020016159f460259139600760006124d261339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b6001905092915050565b61257061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db8565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061262e61262761339c565b848461356d565b506001905092915050565b61264161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614db8565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6126f361339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277790614db8565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127c99190614918565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61282e61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614db8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129ad61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190614db8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a609061515e565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b5050905080612ab057600080fd5b50565b612abb61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db8565b60405180910390fd5b8060188190555050565b612b5a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bde90614db8565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612c0c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090614db8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612d0261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614db8565b60405180910390fd5b8060198190555050565b612da161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94906151e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f6261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690614db8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161302a929190615205565b6020604051808303816000875af1158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190615243565b505050565b60135481565b61308061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461310d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310490614db8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131a961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322d90614db8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361328c57600090506132ee565b6000828461329a9190615270565b90508284826132a99190614e36565b146132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090615324565b60405180910390fd5b809150505b92915050565b600061333683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c4c565b905092915050565b600080828461334d9190615045565b905083811015613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615390565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613479906154b4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161356091906149bc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d490615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361364c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613643906155d8565b60405180910390fd5b601b60149054906101000a900460ff16156136735761366c848484613caf565b9050613b97565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137175750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561372f5750601b60189054906101000a900460ff165b1561377a57601854821115613779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137709061566a565b60405180910390fd5b5b6000613785306120bb565b9050600060175482101590508080156137ab5750601b60149054906101000a900460ff16155b80156138015750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138195750601b60159054906101000a900460ff165b1561384357601b60169054906101000a900460ff16156138395760175491505b61384282613e82565b5b6138cc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139b25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c6576139c187878761414d565b6139c8565b845b9050601b60179054906101000a900460ff168015613a305750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9557601954613a5382613a45896120bb565b61333e90919063ffffffff16565b1115613a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8b906156fc565b60405180910390fd5b5b613ae781600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b8791906149bc565b60405180910390a3600193505050505b9392505050565b6000838311158290613be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdd9190614780565b60405180910390fd5b5060008385613bf5919061571c565b9050809150509392505050565b6000613c4483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b905092915050565b60008083118290613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a9190614780565b60405180910390fd5b5060008385613ca29190614e36565b9050809150509392505050565b6000613d3a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e6f91906149bc565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613eb660155460145461333e90919063ffffffff16565b90506000613ed1601054600d5461333e90919063ffffffff16565b90506000613eec601154600e5461333e90919063ffffffff16565b90506000613f286002613f1a86613f0c878a61327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613f3f8287613c0290919063ffffffff16565b90506000479050613f4f82614374565b6000613f648247613c0290919063ffffffff16565b90506000613f8e613f7f6002896132f490919063ffffffff16565b89613c0290919063ffffffff16565b90506000613fca6002613fbc84613fae8c8861327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613ff383613fe58a8761327a90919063ffffffff16565b6132f490919063ffffffff16565b9050600061401c8261400e8588613c0290919063ffffffff16565b613c0290919063ffffffff16565b9050600082111561409157600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561408f573d6000803e3d6000fd5b505b600081111561410457600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614102573d6000803e3d6000fd5b505b6000831180156141145750600088115b156141245761412388846145f0565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d5576141ce60646141c06014548661327a90919063ffffffff16565b6132f490919063ffffffff16565b9050614253565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142525761424f60646142416015548661327a90919063ffffffff16565b6132f490919063ffffffff16565b90505b5b6000811115614357576142ae81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161434e91906149bc565b60405180910390a35b61436a8184613c0290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561439157614390615750565b5b6040519080825280602002602001820160405280156143bf5781602001602082028036833780820191505090505b50905030816000815181106143d7576143d6615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190614f54565b816001815181106144b6576144b5615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061451d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614581959493929190615878565b600060405180830381600087803b15801561459b57600080fd5b505af11580156145af573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145e49291906158d2565b60405180910390a15050565b61461d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a696959493929190615902565b60606040518083038185885af11580156146c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e99190615978565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b600080fd5b600080fd5b6000819050919050565b6147bf816147ac565b81146147ca57600080fd5b50565b6000813590506147dc816147b6565b92915050565b6000806000606084860312156147fb576147fa6147a2565b5b6000614809868287016147cd565b935050602061481a868287016147cd565b925050604061482b868287016147cd565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061486082614835565b9050919050565b61487081614855565b82525050565b600060208201905061488b6000830184614867565b92915050565b61489a81614855565b81146148a557600080fd5b50565b6000813590506148b781614891565b92915050565b600080604083850312156148d4576148d36147a2565b5b60006148e2858286016148a8565b92505060206148f3858286016147cd565b9150509250929050565b60008115159050919050565b614912816148fd565b82525050565b600060208201905061492d6000830184614909565b92915050565b6000819050919050565b600061495861495361494e84614835565b614933565b614835565b9050919050565b600061496a8261493d565b9050919050565b600061497c8261495f565b9050919050565b61498c81614971565b82525050565b60006020820190506149a76000830184614983565b92915050565b6149b6816147ac565b82525050565b60006020820190506149d160008301846149ad565b92915050565b6149e0816148fd565b81146149eb57600080fd5b50565b6000813590506149fd816149d7565b92915050565b60008060408385031215614a1a57614a196147a2565b5b6000614a28858286016148a8565b9250506020614a39858286016149ee565b9150509250929050565b600080600060608486031215614a5c57614a5b6147a2565b5b6000614a6a868287016148a8565b9350506020614a7b868287016148a8565b9250506040614a8c868287016147cd565b9150509250925092565b600060208284031215614aac57614aab6147a2565b5b6000614aba848285016149ee565b91505092915050565b600060ff82169050919050565b614ad981614ac3565b82525050565b6000602082019050614af46000830184614ad0565b92915050565b600060208284031215614b1057614b0f6147a2565b5b6000614b1e848285016147cd565b91505092915050565b600060208284031215614b3d57614b3c6147a2565b5b6000614b4b848285016148a8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614b7957614b78614b54565b5b8235905067ffffffffffffffff811115614b9657614b95614b59565b5b602083019150836020820283011115614bb257614bb1614b5e565b5b9250929050565b60008083601f840112614bcf57614bce614b54565b5b8235905067ffffffffffffffff811115614bec57614beb614b59565b5b602083019150836020820283011115614c0857614c07614b5e565b5b9250929050565b60008060008060408587031215614c2957614c286147a2565b5b600085013567ffffffffffffffff811115614c4757614c466147a7565b5b614c5387828801614b63565b9450945050602085013567ffffffffffffffff811115614c7657614c756147a7565b5b614c8287828801614bb9565b925092505092959194509250565b6000614c9b82614835565b9050919050565b614cab81614c90565b82525050565b6000602082019050614cc66000830184614ca2565b92915050565b60008060408385031215614ce357614ce26147a2565b5b6000614cf1858286016148a8565b9250506020614d02858286016148a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d5357607f821691505b602082108103614d6657614d65614d0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da26020836146fb565b9150614dad82614d6c565b602082019050919050565b60006020820190508181036000830152614dd181614d95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e41826147ac565b9150614e4c836147ac565b925082614e5c57614e5b614dd8565b5b828204905092915050565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b6000614e9d601d836146fb565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b6000614f09601c836146fb565b9150614f1482614ed3565b602082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b600081519050614f4e81614891565b92915050565b600060208284031215614f6a57614f696147a2565b5b6000614f7884828501614f3f565b91505092915050565b6000604082019050614f966000830185614867565b614fa36020830184614867565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614fe06016836146fb565b9150614feb82614faa565b602082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000615050826147ac565b915061505b836147ac565b925082820190508082111561507357615072614e07565b5b92915050565b6000615084826147ac565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150b6576150b5614e07565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b60006150f7601b836146fb565b9150615102826150c1565b602082019050919050565b60006020820190508181036000830152615126816150ea565b9050919050565b600081905092915050565b50565b600061514860008361512d565b915061515382615138565b600082019050919050565b60006151698261513b565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151cf6026836146fb565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b600060408201905061521a6000830185614867565b61522760208301846149ad565b9392505050565b60008151905061523d816149d7565b92915050565b600060208284031215615259576152586147a2565b5b60006152678482850161522e565b91505092915050565b600061527b826147ac565b9150615286836147ac565b9250828202615294816147ac565b915082820484148315176152ab576152aa614e07565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061530e6021836146fb565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061537a601b836146fb565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061540c6024836146fb565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061549e6022836146fb565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155306025836146fb565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155c26023836146fb565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156546028836146fb565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156e66025836146fb565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b6000615727826147ac565b9150615732836147ac565b925082820390508181111561574a57615749614e07565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006157a461579f61579a8461577f565b614933565b6147ac565b9050919050565b6157b481615789565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ef81614855565b82525050565b600061580183836157e6565b60208301905092915050565b6000602082019050919050565b6000615825826157ba565b61582f81856157c5565b935061583a836157d6565b8060005b8381101561586b57815161585288826157f5565b975061585d8361580d565b92505060018101905061583e565b5085935050505092915050565b600060a08201905061588d60008301886149ad565b61589a60208301876157ab565b81810360408301526158ac818661581a565b90506158bb6060830185614867565b6158c860808301846149ad565b9695505050505050565b60006040820190506158e760008301856149ad565b81810360208301526158f9818461581a565b90509392505050565b600060c0820190506159176000830189614867565b61592460208301886149ad565b61593160408301876157ab565b61593e60608301866157ab565b61594b6080830185614867565b61595860a08301846149ad565b979650505050505050565b600081519050615972816147b6565b92915050565b600080600060608486031215615991576159906147a2565b5b600061599f86828701615963565b93505060206159b086828701615963565b92505060406159c186828701615963565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122023bf5c0704b2c1e1b50c2b599b6376ec67c68b92aeebf1674d3621d8652557df64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190614780565b60405180910390f35b34801561040a57600080fd5b50610425600480360381019061042091906147e2565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190614876565b60405180910390f35b34801561045e57600080fd5b50610479600480360381019061047491906148bd565b611104565b6040516104869190614918565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190614992565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc91906149bc565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906147e2565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614a03565b611285565b005b34801561054357600080fd5b5061054c611375565b60405161055991906149bc565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a43565b61137b565b6040516105969190614918565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614a96565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190614876565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b60405161061591906149bc565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b6040516106409190614adf565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b91906148bd565b6115c0565b60405161067d9190614918565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614afa565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614b27565b611712565b6040516106e39190614918565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e9190614918565b60405180910390f35b34801561072357600080fd5b5061072c611745565b6040516107399190614918565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614b27565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d91906149bc565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614b27565b611837565b6040516107ca9190614918565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614b27565b611857565b6040516108079190614876565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614c0f565b611ce0565b005b34801561084557600080fd5b50610860600480360381019061085b9190614b27565b6120bb565b60405161086d91906149bc565b60405180910390f35b34801561088257600080fd5b5061088b612104565b005b34801561089957600080fd5b506108a2612259565b6040516108af9190614cb1565b60405180910390f35b3480156108c457600080fd5b506108cd61227f565b6040516108da91906149bc565b60405180910390f35b3480156108ef57600080fd5b506108f8612285565b60405161090591906149bc565b60405180910390f35b34801561091a57600080fd5b5061092361228b565b60405161093091906149bc565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a03565b612291565b005b34801561096e57600080fd5b50610977612381565b6040516109849190614918565b60405180910390f35b34801561099957600080fd5b506109a2612394565b6040516109af91906149bc565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614b27565b61239a565b6040516109ec9190614918565b60405180910390f35b348015610a0157600080fd5b50610a0a6123ba565b604051610a179190614876565b60405180910390f35b348015610a2c57600080fd5b50610a356123e3565b604051610a429190614780565b60405180910390f35b348015610a5757600080fd5b50610a60612475565b604051610a6d9190614876565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a9891906148bd565b61249b565b604051610aaa9190614918565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614a96565b612568565b005b348015610ae857600080fd5b50610b036004803603810190610afe91906148bd565b61261a565b604051610b109190614918565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614a96565b612639565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614a96565b6126eb565b005b348015610b7757600080fd5b50610b806127d4565b604051610b8d91906149bc565b60405180910390f35b348015610ba257600080fd5b50610bab6127da565b604051610bb89190614876565b60405180910390f35b348015610bcd57600080fd5b50610bd6612800565b604051610be391906149bc565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e9190614b27565b612806565b604051610c209190614918565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614b27565b612826565b005b348015610c5e57600080fd5b50610c676128ff565b604051610c7491906149bc565b60405180910390f35b348015610c8957600080fd5b50610c92612905565b604051610c9f9190614918565b60405180910390f35b348015610cb457600080fd5b50610cbd612918565b604051610cca91906149bc565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614ccc565b61291e565b604051610d0791906149bc565b60405180910390f35b348015610d1c57600080fd5b50610d256129a5565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614afa565b612ab3565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614a96565b612b52565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614a03565b612c04565b005b348015610dae57600080fd5b50610db7612cf4565b604051610dc491906149bc565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614afa565b612cfa565b005b348015610e0257600080fd5b50610e1d6004803603810190610e189190614b27565b612d99565b005b348015610e2b57600080fd5b50610e466004803603810190610e4191906148bd565b612f5a565b005b348015610e5457600080fd5b50610e5d613072565b604051610e6a91906149bc565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614a03565b613078565b005b348015610ea857600080fd5b50610eb1613168565b604051610ebe9190614918565b60405180910390f35b348015610ed357600080fd5b50610edc61317b565b604051610ee99190614cb1565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f149190614b27565b6131a1565b005b606060018054610f2a90614d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690614d3b565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb561339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614db8565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461333e90919063ffffffff16565b61333e90919063ffffffff16565b60158190555060196013546110979190614e36565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290614eb3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061111861111161339c565b84846133a4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614db8565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461333e90919063ffffffff16565b61333e90919063ffffffff16565b601481905550601960135461123c9190614e36565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614f1f565b60405180910390fd5b505050565b61128d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614db8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600061138884848461356d565b5061144a8461139561339c565b611445856040518060600160405280602881526020016159cc60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b600190509392505050565b61145d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190614db8565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006120bb565b6115966115857f000000000000000000000000000000000000000000000000000000000000dead6120bb565b601654613c0290919063ffffffff16565b613c0290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd61339c565b8461166485600760006115de61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b6133a4565b6001905092915050565b61167b61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614db8565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b61176061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614db8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b600061186161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614db8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119629190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190614f54565b6040518363ffffffff1660e01b8152600401611a0a929190614f81565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614f54565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bde578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af09190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614f54565b6040518363ffffffff1660e01b8152600401611b98929190614f81565b6020604051808303816000875af1158015611bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdb9190614f54565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ce861339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614db8565b60405180910390fd5b6000339050828290508585905014611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614ff6565b60405180910390fd5b600080600090505b84849050811015611e0f57848482818110611de857611de7615016565b5b9050602002013582611dfa9190615045565b91508080611e0790615079565b915050611dca565b5080611e1a836120bb565b1015611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061510d565b60405180910390fd5b611ead81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c0290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b257611f90858583818110611f1457611f13615016565b5b90506020020135600660008a8a86818110611f3257611f31615016565b5b9050602002016020810190611f479190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b60066000898985818110611fa757611fa6615016565b5b9050602002016020810190611fbc9190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061200d5761200c615016565b5b90506020020160208101906120229190614b27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061208357612082615016565b5b9050602002013560405161209791906149bc565b60405180910390a380806120aa90615079565b915050611ef3565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61210c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614db8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b61229961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614db8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f290614d3b565b80601f016020809104026020016040519081016040528092919081815260200182805461241e90614d3b565b801561246b5780601f106124405761010080835404028352916020019161246b565b820191906000526020600020905b81548152906001019060200180831161244e57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061255e6124a861339c565b84612559856040518060600160405280602581526020016159f460259139600760006124d261339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b6001905092915050565b61257061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db8565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061262e61262761339c565b848461356d565b506001905092915050565b61264161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614db8565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6126f361339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277790614db8565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127c99190614918565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61282e61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614db8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129ad61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190614db8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a609061515e565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b5050905080612ab057600080fd5b50565b612abb61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db8565b60405180910390fd5b8060188190555050565b612b5a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bde90614db8565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612c0c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090614db8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612d0261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614db8565b60405180910390fd5b8060198190555050565b612da161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94906151e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f6261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690614db8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161302a929190615205565b6020604051808303816000875af1158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190615243565b505050565b60135481565b61308061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461310d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310490614db8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131a961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322d90614db8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361328c57600090506132ee565b6000828461329a9190615270565b90508284826132a99190614e36565b146132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090615324565b60405180910390fd5b809150505b92915050565b600061333683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c4c565b905092915050565b600080828461334d9190615045565b905083811015613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615390565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613479906154b4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161356091906149bc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d490615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361364c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613643906155d8565b60405180910390fd5b601b60149054906101000a900460ff16156136735761366c848484613caf565b9050613b97565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137175750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561372f5750601b60189054906101000a900460ff165b1561377a57601854821115613779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137709061566a565b60405180910390fd5b5b6000613785306120bb565b9050600060175482101590508080156137ab5750601b60149054906101000a900460ff16155b80156138015750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138195750601b60159054906101000a900460ff165b1561384357601b60169054906101000a900460ff16156138395760175491505b61384282613e82565b5b6138cc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139b25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c6576139c187878761414d565b6139c8565b845b9050601b60179054906101000a900460ff168015613a305750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9557601954613a5382613a45896120bb565b61333e90919063ffffffff16565b1115613a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8b906156fc565b60405180910390fd5b5b613ae781600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b8791906149bc565b60405180910390a3600193505050505b9392505050565b6000838311158290613be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdd9190614780565b60405180910390fd5b5060008385613bf5919061571c565b9050809150509392505050565b6000613c4483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b905092915050565b60008083118290613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a9190614780565b60405180910390fd5b5060008385613ca29190614e36565b9050809150509392505050565b6000613d3a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e6f91906149bc565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613eb660155460145461333e90919063ffffffff16565b90506000613ed1601054600d5461333e90919063ffffffff16565b90506000613eec601154600e5461333e90919063ffffffff16565b90506000613f286002613f1a86613f0c878a61327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613f3f8287613c0290919063ffffffff16565b90506000479050613f4f82614374565b6000613f648247613c0290919063ffffffff16565b90506000613f8e613f7f6002896132f490919063ffffffff16565b89613c0290919063ffffffff16565b90506000613fca6002613fbc84613fae8c8861327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613ff383613fe58a8761327a90919063ffffffff16565b6132f490919063ffffffff16565b9050600061401c8261400e8588613c0290919063ffffffff16565b613c0290919063ffffffff16565b9050600082111561409157600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561408f573d6000803e3d6000fd5b505b600081111561410457600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614102573d6000803e3d6000fd5b505b6000831180156141145750600088115b156141245761412388846145f0565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d5576141ce60646141c06014548661327a90919063ffffffff16565b6132f490919063ffffffff16565b9050614253565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142525761424f60646142416015548661327a90919063ffffffff16565b6132f490919063ffffffff16565b90505b5b6000811115614357576142ae81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161434e91906149bc565b60405180910390a35b61436a8184613c0290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561439157614390615750565b5b6040519080825280602002602001820160405280156143bf5781602001602082028036833780820191505090505b50905030816000815181106143d7576143d6615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190614f54565b816001815181106144b6576144b5615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061451d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614581959493929190615878565b600060405180830381600087803b15801561459b57600080fd5b505af11580156145af573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145e49291906158d2565b60405180910390a15050565b61461d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a696959493929190615902565b60606040518083038185885af11580156146c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e99190615978565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b600080fd5b600080fd5b6000819050919050565b6147bf816147ac565b81146147ca57600080fd5b50565b6000813590506147dc816147b6565b92915050565b6000806000606084860312156147fb576147fa6147a2565b5b6000614809868287016147cd565b935050602061481a868287016147cd565b925050604061482b868287016147cd565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061486082614835565b9050919050565b61487081614855565b82525050565b600060208201905061488b6000830184614867565b92915050565b61489a81614855565b81146148a557600080fd5b50565b6000813590506148b781614891565b92915050565b600080604083850312156148d4576148d36147a2565b5b60006148e2858286016148a8565b92505060206148f3858286016147cd565b9150509250929050565b60008115159050919050565b614912816148fd565b82525050565b600060208201905061492d6000830184614909565b92915050565b6000819050919050565b600061495861495361494e84614835565b614933565b614835565b9050919050565b600061496a8261493d565b9050919050565b600061497c8261495f565b9050919050565b61498c81614971565b82525050565b60006020820190506149a76000830184614983565b92915050565b6149b6816147ac565b82525050565b60006020820190506149d160008301846149ad565b92915050565b6149e0816148fd565b81146149eb57600080fd5b50565b6000813590506149fd816149d7565b92915050565b60008060408385031215614a1a57614a196147a2565b5b6000614a28858286016148a8565b9250506020614a39858286016149ee565b9150509250929050565b600080600060608486031215614a5c57614a5b6147a2565b5b6000614a6a868287016148a8565b9350506020614a7b868287016148a8565b9250506040614a8c868287016147cd565b9150509250925092565b600060208284031215614aac57614aab6147a2565b5b6000614aba848285016149ee565b91505092915050565b600060ff82169050919050565b614ad981614ac3565b82525050565b6000602082019050614af46000830184614ad0565b92915050565b600060208284031215614b1057614b0f6147a2565b5b6000614b1e848285016147cd565b91505092915050565b600060208284031215614b3d57614b3c6147a2565b5b6000614b4b848285016148a8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614b7957614b78614b54565b5b8235905067ffffffffffffffff811115614b9657614b95614b59565b5b602083019150836020820283011115614bb257614bb1614b5e565b5b9250929050565b60008083601f840112614bcf57614bce614b54565b5b8235905067ffffffffffffffff811115614bec57614beb614b59565b5b602083019150836020820283011115614c0857614c07614b5e565b5b9250929050565b60008060008060408587031215614c2957614c286147a2565b5b600085013567ffffffffffffffff811115614c4757614c466147a7565b5b614c5387828801614b63565b9450945050602085013567ffffffffffffffff811115614c7657614c756147a7565b5b614c8287828801614bb9565b925092505092959194509250565b6000614c9b82614835565b9050919050565b614cab81614c90565b82525050565b6000602082019050614cc66000830184614ca2565b92915050565b60008060408385031215614ce357614ce26147a2565b5b6000614cf1858286016148a8565b9250506020614d02858286016148a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d5357607f821691505b602082108103614d6657614d65614d0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da26020836146fb565b9150614dad82614d6c565b602082019050919050565b60006020820190508181036000830152614dd181614d95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e41826147ac565b9150614e4c836147ac565b925082614e5c57614e5b614dd8565b5b828204905092915050565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b6000614e9d601d836146fb565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b6000614f09601c836146fb565b9150614f1482614ed3565b602082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b600081519050614f4e81614891565b92915050565b600060208284031215614f6a57614f696147a2565b5b6000614f7884828501614f3f565b91505092915050565b6000604082019050614f966000830185614867565b614fa36020830184614867565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614fe06016836146fb565b9150614feb82614faa565b602082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000615050826147ac565b915061505b836147ac565b925082820190508082111561507357615072614e07565b5b92915050565b6000615084826147ac565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150b6576150b5614e07565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b60006150f7601b836146fb565b9150615102826150c1565b602082019050919050565b60006020820190508181036000830152615126816150ea565b9050919050565b600081905092915050565b50565b600061514860008361512d565b915061515382615138565b600082019050919050565b60006151698261513b565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151cf6026836146fb565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b600060408201905061521a6000830185614867565b61522760208301846149ad565b9392505050565b60008151905061523d816149d7565b92915050565b600060208284031215615259576152586147a2565b5b60006152678482850161522e565b91505092915050565b600061527b826147ac565b9150615286836147ac565b9250828202615294816147ac565b915082820484148315176152ab576152aa614e07565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061530e6021836146fb565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061537a601b836146fb565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061540c6024836146fb565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061549e6022836146fb565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155306025836146fb565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155c26023836146fb565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156546028836146fb565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156e66025836146fb565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b6000615727826147ac565b9150615732836147ac565b925082820390508181111561574a57615749614e07565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006157a461579f61579a8461577f565b614933565b6147ac565b9050919050565b6157b481615789565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ef81614855565b82525050565b600061580183836157e6565b60208301905092915050565b6000602082019050919050565b6000615825826157ba565b61582f81856157c5565b935061583a836157d6565b8060005b8381101561586b57815161585288826157f5565b975061585d8361580d565b92505060018101905061583e565b5085935050505092915050565b600060a08201905061588d60008301886149ad565b61589a60208301876157ab565b81810360408301526158ac818661581a565b90506158bb6060830185614867565b6158c860808301846149ad565b9695505050505050565b60006040820190506158e760008301856149ad565b81810360208301526158f9818461581a565b90509392505050565b600060c0820190506159176000830189614867565b61592460208301886149ad565b61593160408301876157ab565b61593e60608301866157ab565b61594b6080830185614867565b61595860a08301846149ad565b979650505050505050565b600081519050615972816147b6565b92915050565b600080600060608486031215615991576159906147a2565b5b600061599f86828701615963565b93505060206159b086828701615963565b92505060406159c186828701615963565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122023bf5c0704b2c1e1b50c2b599b6376ec67c68b92aeebf1674d3621d8652557df64736f6c63430008110033

Deployed Bytecode Sourcemap

12600:17062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16811:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21979:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13142:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17977:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14361:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17088:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21576:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18910:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13762:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22667:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19287:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13054:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20388:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16997:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17474:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19518:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13451:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14478:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13359:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19650:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13897:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13394:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20820:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28954:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17196:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4277:230;;;;;;;;;;;;;:::i;:::-;;12811:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14215:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14287:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14019:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18491:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14621:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13810:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13620:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4052:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16902:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13009:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17700:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20251:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22492:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16697:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20072:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13719:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14409:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13853:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13561:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19790:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14126:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14525:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13677:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17323:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25129:154;;;;;;;;;;;;;:::i;:::-;;19168:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19053:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18628:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13980:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19408:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4515:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24982:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13942:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18771:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14579:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12910:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19932:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16811:83;16848:13;16881:5;16874:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16811:83;:::o;21979:405::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22101:10:::1;22081:17;:30;;;;22142:10;22122:17;:30;;;;22183:10;22163:17;:30;;;;22225:63;22270:17;;22225:40;22247:17;;22225;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;22204:18;:84;;;;22339:2;22330:8;;:11;;;;:::i;:::-;22307:18;;:35;;22299:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21979:405:::0;;;:::o;13142:81::-;;;:::o;17977:161::-;18052:4;18069:39;18078:12;:10;:12::i;:::-;18092:7;18101:6;18069:8;:39::i;:::-;18126:4;18119:11;;17977:161;;;;:::o;14361:41::-;;;;;;;;;;;;;:::o;17088:100::-;17141:7;17168:12;;17161:19;;17088:100;:::o;21576:395::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21696:10:::1;21677:16;:29;;;;21736:10;21717:16;:29;;;;21776:10;21757:16;:29;;;;21817:60;21860:16;;21817:38;21838:16;;21817;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;21797:17;:80;;;;21927:2;21918:8;;:11;;;;:::i;:::-;21896:17;;:34;;21888:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21576:395:::0;;;:::o;18910:135::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19031:6:::1;19001:19;:27;19021:6;19001:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18910:135:::0;;:::o;13762:35::-;;;;:::o;22667:313::-;22765:4;22782:36;22792:6;22800:9;22811:6;22782:9;:36::i;:::-;;22829:121;22838:6;22846:12;:10;:12::i;:::-;22860:89;22898:6;22860:89;;;;;;;;;;;;;;;;;:11;:19;22872:6;22860:19;;;;;;;;;;;;;;;:33;22880:12;:10;:12::i;:::-;22860:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22829:8;:121::i;:::-;22968:4;22961:11;;22667:313;;;;;:::o;19287:113::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19384:8:::1;19365:16;;:27;;;;;;;;;;;;;;;;;;19287:113:::0;:::o;13054:81::-;;;:::o;20388:156::-;20441:7;20468:68;20513:22;20523:11;20513:9;:22::i;:::-;20468:40;20485:22;20495:11;20485:9;:22::i;:::-;20468:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;20461:75;;20388:156;:::o;16997:83::-;17038:5;17063:9;;;;;;;;;;;17056:16;;16997:83;:::o;17474:218::-;17562:4;17579:83;17588:12;:10;:12::i;:::-;17602:7;17611:50;17650:10;17611:11;:25;17623:12;:10;:12::i;:::-;17611:25;;;;;;;;;;;;;;;:34;17637:7;17611:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17579:8;:83::i;:::-;17680:4;17673:11;;17474:218;;;;:::o;19518:124::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19626:8:::1;19600:23;:34;;;;19518:124:::0;:::o;13451:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14478:40::-;;;;;;;;;;;;;:::o;13359:26::-;;;;;;;;;;;;;:::o;19650:132::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19763:10:::1;19737:15;;:37;;;;;;;;;;;;;;;;;;19650:132:::0;:::o;13897:36::-;;;;:::o;13394:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20820:748::-;20900:22;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20937:35:::1;20994:16;20937:74;;21060:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21042:53;;;21104:4;21111:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21042:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21025:110;;21177:1;21151:28;;:14;:28;;::::0;21148:225:::1;;21265:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21247:74;;;21330:4;21337:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21247:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21230:131;;21148:225;21399:14;21385:11;;:28;;;;;;;;;;;;;;;;;;21465:16;21447:15;;:34;;;;;;;;;;;;;;;;;;21556:4;21519:12;:34;21540:11;;;;;;;;;;;21519:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20924:644;20820:748:::0;;;:::o;28954:697::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29054:15:::1;29072:10;29054:28;;29120:7;;:14;;29101:8;;:15;;:33;29093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29171:15;29201:6:::0;29210:1:::1;29201:10;;29197:92;29217:7;;:14;;29213:1;:18;29197:92;;;29267:7;;29275:1;29267:10;;;;;;;:::i;:::-;;;;;;;;29253:24;;;;;:::i;:::-;;;29233:3;;;;;:::i;:::-;;;;29197:92;;;;29329:10;29307:18;29317:7;29307:9;:18::i;:::-;:32;;29299:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29402:34;29425:10;29402:9;:18;29412:7;29402:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;29381:9;:18;29391:7;29381:18;;;;;;;;;;;;;;;:55;;;;29452:6;29448:194;29468:8;;:15;;29464:1;:19;29448:194;;;29530:38;29557:7;;29565:1;29557:10;;;;;;;:::i;:::-;;;;;;;;29530:9;:22;29540:8;;29549:1;29540:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29530:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;29505:9;:22;29515:8;;29524:1;29515:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29505:22;;;;;;;;;;;;;;;:63;;;;29606:8;;29615:1;29606:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29588:42;;29597:7;29588:42;;;29619:7;;29627:1;29619:10;;;;;;;:::i;:::-;;;;;;;;29588:42;;;;;;:::i;:::-;;;;;;;;29485:3;;;;;:::i;:::-;;;;29448:194;;;;29043:608;;28954:697:::0;;;;:::o;17196:119::-;17262:7;17289:9;:18;17299:7;17289:18;;;;;;;;;;;;;;;;17282:25;;17196:119;;;:::o;4277:230::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:42:::1;4347:81;;4368:6;::::0;::::1;;;;;;;;4347:81;;;;;;;;;;;;4456:42;4439:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;4277:230::o:0;12811:92::-;;;;;;;;;;;;;:::o;14215:59::-;;;;:::o;14287:58::-;;;;:::o;14019:33::-;;;;:::o;18491:129::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18604:8:::1;18580:12;:21;18593:7;18580:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18491:129:::0;;:::o;14621:41::-;;;;;;;;;;;;;:::o;13810:36::-;;;;:::o;13620:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4052:79::-;4090:7;4117:6;;;;;;;;;;;4110:13;;4052:79;:::o;16902:87::-;16941:13;16974:7;16967:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16902:87;:::o;13009:32::-;;;;;;;;;;;;;:::o;17700:269::-;17793:4;17810:129;17819:12;:10;:12::i;:::-;17833:7;17842:96;17881:15;17842:96;;;;;;;;;;;;;;;;;:11;:25;17854:12;:10;:12::i;:::-;17842:25;;;;;;;;;;;;;;;:34;17868:7;17842:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17810:8;:129::i;:::-;17957:4;17950:11;;17700:269;;;;:::o;20251:125::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20360:8:::1;20332:25;;:36;;;;;;;;;;;;;;;;;;20251:125:::0;:::o;22492:167::-;22570:4;22587:42;22597:12;:10;:12::i;:::-;22611:9;22622:6;22587:9;:42::i;:::-;;22647:4;22640:11;;22492:167;;;;:::o;16697:106::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16785:8:::1;16768:14;;:25;;;;;;;;;;;;;;;;;;16697:106:::0;:::o;20072:171::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20173:8:::1;20149:21;;:32;;;;;;;;;;;;;;;;;;20197:38;20226:8;20197:38;;;;;;:::i;:::-;;;;;;;;20072:171:::0;:::o;13719:36::-;;;;:::o;14409:26::-;;;;;;;;;;;;;:::o;13853:37::-;;;;:::o;13561:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19790:134::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19905:10:::1;19877:17;;:39;;;;;;;;;;;;;;;;;;19790:134:::0;:::o;14126:69::-;;;;:::o;14525:45::-;;;;;;;;;;;;;:::o;13677:35::-;;;;:::o;17323:143::-;17404:7;17431:11;:18;17443:5;17431:18;;;;;;;;;;;;;;;:27;17450:7;17431:27;;;;;;;;;;;;;;;;17424:34;;17323:143;;;;:::o;25129:154::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25183:7:::1;25203:10;25195:24;;25227:21;25195:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25182:71;;;25272:2;25264:11;;;::::0;::::1;;25171:112;25129:154::o:0;19168:111::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19260:11:::1;19245:12;:26;;;;19168:111:::0;:::o;19053:107::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19145:7:::1;19120:22;;:32;;;;;;;;;;;;;;;;;;19053:107:::0;:::o;18628:135::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18747:8:::1;18718:17;:26;18736:7;18718:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18628:135:::0;;:::o;13980:32::-;;;;:::o;19408:102::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19494:8:::1;19480:10;:22;;;;19408:102:::0;:::o;4515:244::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4624:1:::1;4604:22;;:8;:22;;::::0;4596:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4714:8;4685:38;;4706:6;::::0;::::1;;;;;;;;4685:38;;;;;;;;;;;;4743:8;4734:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4515:244:::0;:::o;24982:139::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25077:6:::1;25070:23;;;25094:10;25105:7;25070:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24982:139:::0;;:::o;13942:29::-;;;;:::o;18771:127::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18884:6:::1;18858:15;:23;18874:6;18858:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18771:127:::0;;:::o;14579:35::-;;;;;;;;;;;;;:::o;12910:92::-;;;;;;;;;;;;;:::o;19932:132::-;4196:12;:10;:12::i;:::-;4186:22;;:6;;;;;;;;;;:22;;;4178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20045:10:::1;20019:15;;:37;;;;;;;;;;;;;;;;;;19932:132:::0;:::o;2740:250::-;2798:7;2827:1;2822;:6;2818:47;;2852:1;2845:8;;;;2818:47;2877:9;2893:1;2889;:5;;;;:::i;:::-;2877:17;;2922:1;2917;2913;:5;;;;:::i;:::-;:10;2905:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2981:1;2974:8;;;2740:250;;;;;:::o;2998:132::-;3056:7;3083:39;3087:1;3090;3083:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3076:46;;2998:132;;;;:::o;2207:181::-;2265:7;2285:9;2301:1;2297;:5;;;;:::i;:::-;2285:17;;2326:1;2321;:6;;2313:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2379:1;2372:8;;;2207:181;;;;:::o;1265:115::-;1318:15;1361:10;1346:26;;1265:115;:::o;18146:337::-;18256:1;18239:19;;:5;:19;;;18231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:1;18318:21;;:7;:21;;;18310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:6;18391:11;:18;18403:5;18391:18;;;;;;;;;;;;;;;:27;18410:7;18391:27;;;;;;;;;;;;;;;:36;;;;18459:7;18443:32;;18452:5;18443:32;;;18468:6;18443:32;;;;;;:::i;:::-;;;;;;;;18146:337;;;:::o;22988:1986::-;23075:4;23120:1;23102:20;;:6;:20;;;23094:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23204:1;23183:23;;:9;:23;;;23175:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23458:16;;;;;;;;;;;23455:1502;;;23508:41;23523:6;23531:9;23542:6;23508:14;:41::i;:::-;23501:48;;;;23455:1502;23607:15;:23;23623:6;23607:23;;;;;;;;;;;;;;;;;;;;;;;;;23606:24;:55;;;;;23635:15;:26;23651:9;23635:26;;;;;;;;;;;;;;;;;;;;;;;;;23634:27;23606:55;:81;;;;;23665:22;;;;;;;;;;;23606:81;23603:196;;;23726:12;;23716:6;:22;;23708:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23603:196;23815:28;23846:24;23864:4;23846:9;:24::i;:::-;23815:55;;23885:28;23940:23;;23916:20;:47;;23885:78;;23996:23;:44;;;;;24024:16;;;;;;;;;;;24023:17;23996:44;:69;;;;;24045:12;:20;24058:6;24045:20;;;;;;;;;;;;;;;;;;;;;;;;;24044:21;23996:69;:94;;;;;24069:21;;;;;;;;;;;23996:94;23992:305;;;24128:25;;;;;;;;;;;24125:97;;;24199:23;;24176:46;;24125:97;24241:36;24256:20;24241:14;:36::i;:::-;23992:305;24333:53;24355:6;24333:53;;;;;;;;;;;;;;;;;:9;:17;24343:6;24333:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24313:9;:17;24323:6;24313:17;;;;;;;;;;;;;;;:73;;;;24403:19;24426:17;:25;24444:6;24426:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24455:17;:28;24473:9;24455:28;;;;;;;;;;;;;;;;;;;;;;;;;24426:57;24425:148;;24539:34;24547:6;24555:9;24566:6;24539:7;:34::i;:::-;24425:148;;;24530:6;24425:148;24403:170;;24593:16;;;;;;;;;;;:51;;;;;24614:19;:30;24634:9;24614:30;;;;;;;;;;;;;;;;;;;;;;;;;24613:31;24593:51;24590:191;;;24714:10;;24673:37;24698:11;24673:20;24683:9;24673;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24665:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24590:191;24820:37;24845:11;24820:9;:20;24830:9;24820:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24797:9;:20;24807:9;24797:20;;;;;;;;;;;;;;;:60;;;;24896:9;24879:40;;24888:6;24879:40;;;24907:11;24879:40;;;;;;:::i;:::-;;;;;;;;24941:4;24934:11;;;;;22988:1986;;;;;;:::o;2540:192::-;2626:7;2659:1;2654;:6;;2662:12;2646:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2723:1;2716:8;;;2540:192;;;;;:::o;2396:136::-;2454:7;2481:43;2485:1;2488;2481:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2474:50;;2396:136;;;;:::o;3138:278::-;3224:7;3256:1;3252;:5;3259:12;3244:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3283:9;3299:1;3295;:5;;;;:::i;:::-;3283:17;;3407:1;3400:8;;;3138:278;;;;;:::o;25291:330::-;25384:4;25421:53;25443:6;25421:53;;;;;;;;;;;;;;;;;:9;:17;25431:6;25421:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25401:9;:17;25411:6;25401:17;;;;;;;;;;;;;;;:73;;;;25508:32;25533:6;25508:9;:20;25518:9;25508:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25485:9;:20;25495:9;25485:20;;;;;;;;;;;;;;;:55;;;;25573:9;25556:35;;25565:6;25556:35;;;25584:6;25556:35;;;;;;:::i;:::-;;;;;;;;25609:4;25602:11;;25291:330;;;;;:::o;25629:1449::-;15106:4;15087:16;;:23;;;;;;;;;;;;;;;;;;25703:19:::1;25725:41;25747:18;;25725:17;;:21;;:41;;;;:::i;:::-;25703:63;;25779:22;25804:39;25825:17;;25804:16;;:20;;:39;;;;:::i;:::-;25779:64;;25854:22;25879:39;25900:17;;25879:16;;:20;;:39;;;;:::i;:::-;25854:64;;26017:18;26038:51;26087:1;26038:44;26070:11;26038:27;26050:14;26038:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;26017:72;;26100:20;26123:23;26135:10;26123:7;:11;;:23;;;;:::i;:::-;26100:46;;26159:22;26185:21;26159:47;;26217:30;26234:12;26217:16;:30::i;:::-;26258:23;26285:41;26311:14;26285:21;:25;;:41;;;;:::i;:::-;26258:68;;26339:19;26361:38;26377:21;26396:1;26377:14;:18;;:21;;;;:::i;:::-;26361:11;:15;;:38;;;;:::i;:::-;26339:60;;26412:26;26441:59;26498:1;26441:52;26481:11;26441:35;26461:14;26441:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;26412:88;;26511:26;26540:52;26580:11;26540:35;26560:14;26540:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;26511:81;;26603:26;26632:63;26676:18;26632:39;26652:18;26632:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;26603:92;;26732:1;26711:18;:22;26708:107;;;26758:15;;;;;;;;;;;26750:33;;:53;26784:18;26750:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26708:107;26851:1;26830:18;:22;26827:107;;;26877:15;;;;;;;;;;;26869:33;;:53;26903:18;26869:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26827:107;26979:1;26958:18;:22;:40;;;;;26997:1;26984:10;:14;26958:40;26955:116;;;27015:44;27028:10;27040:18;27015:12;:44::i;:::-;26955:116;25690:1388;;;;;;;;;;;15152:5:::0;15133:16;;:24;;;;;;;;;;;;;;;;;;25629:1449;:::o;28295:622::-;28381:7;28411:17;28431:1;28411:21;;28456:12;:20;28469:6;28456:20;;;;;;;;;;;;;;;;;;;;;;;;;28453:223;;;28505:38;28539:3;28505:29;28516:17;;28505:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28493:50;;28453:223;;;28573:12;:23;28586:9;28573:23;;;;;;;;;;;;;;;;;;;;;;;;;28570:106;;;28625:39;28660:3;28625:30;28636:18;;28625:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28613:51;;28570:106;28453:223;28711:1;28699:9;:13;28696:173;;;28756:39;28785:9;28756;:24;28774:4;28756:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28729:9;:24;28747:4;28729:24;;;;;;;;;;;;;;;:66;;;;28840:4;28815:42;;28824:6;28815:42;;;28847:9;28815:42;;;;;;:::i;:::-;;;;;;;;28696:173;28888:21;28899:9;28888:6;:10;;:21;;;;:::i;:::-;28881:28;;;28295:622;;;;;:::o;27090:666::-;27216:21;27254:1;27240:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27216:40;;27285:4;27267;27272:1;27267:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27311:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27301:4;27306:1;27301:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27346:62;27363:4;27378:15;;;;;;;;;;;27396:11;27346:8;:62::i;:::-;27447:15;;;;;;;;;;;:66;;;27528:11;27554:1;27598:4;27625;27661:15;27447:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27713:35;27730:11;27743:4;27713:35;;;;;;;:::i;:::-;;;;;;;;27145:611;27090:666;:::o;27764:523::-;27912:62;27929:4;27944:15;;;;;;;;;;;27962:11;27912:8;:62::i;:::-;28017:15;;;;;;;;;;;:31;;;28056:9;28089:4;28109:11;28135:1;28178;28221:17;;;;;;;;;;;28253:15;28017:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27764:523;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:153::-;4846:9;4879:37;4910:5;4879:37;:::i;:::-;4866:50;;4769:153;;;:::o;4928:185::-;5042:64;5100:5;5042:64;:::i;:::-;5037:3;5030:77;4928:185;;:::o;5119:276::-;5239:4;5277:2;5266:9;5262:18;5254:26;;5290:98;5385:1;5374:9;5370:17;5361:6;5290:98;:::i;:::-;5119:276;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:116::-;5823:21;5838:5;5823:21;:::i;:::-;5816:5;5813:32;5803:60;;5859:1;5856;5849:12;5803:60;5753:116;:::o;5875:133::-;5918:5;5956:6;5943:20;5934:29;;5972:30;5996:5;5972:30;:::i;:::-;5875:133;;;;:::o;6014:468::-;6079:6;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:50;6457:7;6448:6;6437:9;6433:22;6415:50;:::i;:::-;6405:60;;6360:115;6014:468;;;;;:::o;6488:619::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:323::-;7169:6;7218:2;7206:9;7197:7;7193:23;7189:32;7186:119;;;7224:79;;:::i;:::-;7186:119;7344:1;7369:50;7411:7;7402:6;7391:9;7387:22;7369:50;:::i;:::-;7359:60;;7315:114;7113:323;;;;:::o;7442:86::-;7477:7;7517:4;7510:5;7506:16;7495:27;;7442:86;;;:::o;7534:112::-;7617:22;7633:5;7617:22;:::i;:::-;7612:3;7605:35;7534:112;;:::o;7652:214::-;7741:4;7779:2;7768:9;7764:18;7756:26;;7792:67;7856:1;7845:9;7841:17;7832:6;7792:67;:::i;:::-;7652:214;;;;:::o;7872:329::-;7931:6;7980:2;7968:9;7959:7;7955:23;7951:32;7948:119;;;7986:79;;:::i;:::-;7948:119;8106:1;8131:53;8176:7;8167:6;8156:9;8152:22;8131:53;:::i;:::-;8121:63;;8077:117;7872:329;;;;:::o;8207:::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:117::-;8651:1;8648;8641:12;8665:117;8774:1;8771;8764:12;8788:117;8897:1;8894;8887:12;8928:568;9001:8;9011:6;9061:3;9054:4;9046:6;9042:17;9038:27;9028:122;;9069:79;;:::i;:::-;9028:122;9182:6;9169:20;9159:30;;9212:18;9204:6;9201:30;9198:117;;;9234:79;;:::i;:::-;9198:117;9348:4;9340:6;9336:17;9324:29;;9402:3;9394:4;9386:6;9382:17;9372:8;9368:32;9365:41;9362:128;;;9409:79;;:::i;:::-;9362:128;8928:568;;;;;:::o;9519:::-;9592:8;9602:6;9652:3;9645:4;9637:6;9633:17;9629:27;9619:122;;9660:79;;:::i;:::-;9619:122;9773:6;9760:20;9750:30;;9803:18;9795:6;9792:30;9789:117;;;9825:79;;:::i;:::-;9789:117;9939:4;9931:6;9927:17;9915:29;;9993:3;9985:4;9977:6;9973:17;9963:8;9959:32;9956:41;9953:128;;;10000:79;;:::i;:::-;9953:128;9519:568;;;;;:::o;10093:934::-;10215:6;10223;10231;10239;10288:2;10276:9;10267:7;10263:23;10259:32;10256:119;;;10294:79;;:::i;:::-;10256:119;10442:1;10431:9;10427:17;10414:31;10472:18;10464:6;10461:30;10458:117;;;10494:79;;:::i;:::-;10458:117;10607:80;10679:7;10670:6;10659:9;10655:22;10607:80;:::i;:::-;10589:98;;;;10385:312;10764:2;10753:9;10749:18;10736:32;10795:18;10787:6;10784:30;10781:117;;;10817:79;;:::i;:::-;10781:117;10930:80;11002:7;10993:6;10982:9;10978:22;10930:80;:::i;:::-;10912:98;;;;10707:313;10093:934;;;;;;;:::o;11033:104::-;11078:7;11107:24;11125:5;11107:24;:::i;:::-;11096:35;;11033:104;;;:::o;11143:142::-;11246:32;11272:5;11246:32;:::i;:::-;11241:3;11234:45;11143:142;;:::o;11291:254::-;11400:4;11438:2;11427:9;11423:18;11415:26;;11451:87;11535:1;11524:9;11520:17;11511:6;11451:87;:::i;:::-;11291:254;;;;:::o;11551:474::-;11619:6;11627;11676:2;11664:9;11655:7;11651:23;11647:32;11644:119;;;11682:79;;:::i;:::-;11644:119;11802:1;11827:53;11872:7;11863:6;11852:9;11848:22;11827:53;:::i;:::-;11817:63;;11773:117;11929:2;11955:53;12000:7;11991:6;11980:9;11976:22;11955:53;:::i;:::-;11945:63;;11900:118;11551:474;;;;;:::o;12031:180::-;12079:77;12076:1;12069:88;12176:4;12173:1;12166:15;12200:4;12197:1;12190:15;12217:320;12261:6;12298:1;12292:4;12288:12;12278:22;;12345:1;12339:4;12335:12;12366:18;12356:81;;12422:4;12414:6;12410:17;12400:27;;12356:81;12484:2;12476:6;12473:14;12453:18;12450:38;12447:84;;12503:18;;:::i;:::-;12447:84;12268:269;12217:320;;;:::o;12543:182::-;12683:34;12679:1;12671:6;12667:14;12660:58;12543:182;:::o;12731:366::-;12873:3;12894:67;12958:2;12953:3;12894:67;:::i;:::-;12887:74;;12970:93;13059:3;12970:93;:::i;:::-;13088:2;13083:3;13079:12;13072:19;;12731:366;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13103:419;;;:::o;13528:180::-;13576:77;13573:1;13566:88;13673:4;13670:1;13663:15;13697:4;13694:1;13687:15;13714:180;13762:77;13759:1;13752:88;13859:4;13856:1;13849:15;13883:4;13880:1;13873:15;13900:185;13940:1;13957:20;13975:1;13957:20;:::i;:::-;13952:25;;13991:20;14009:1;13991:20;:::i;:::-;13986:25;;14030:1;14020:35;;14035:18;;:::i;:::-;14020:35;14077:1;14074;14070:9;14065:14;;13900:185;;;;:::o;14091:179::-;14231:31;14227:1;14219:6;14215:14;14208:55;14091:179;:::o;14276:366::-;14418:3;14439:67;14503:2;14498:3;14439:67;:::i;:::-;14432:74;;14515:93;14604:3;14515:93;:::i;:::-;14633:2;14628:3;14624:12;14617:19;;14276:366;;;:::o;14648:419::-;14814:4;14852:2;14841:9;14837:18;14829:26;;14901:9;14895:4;14891:20;14887:1;14876:9;14872:17;14865:47;14929:131;15055:4;14929:131;:::i;:::-;14921:139;;14648:419;;;:::o;15073:178::-;15213:30;15209:1;15201:6;15197:14;15190:54;15073:178;:::o;15257:366::-;15399:3;15420:67;15484:2;15479:3;15420:67;:::i;:::-;15413:74;;15496:93;15585:3;15496:93;:::i;:::-;15614:2;15609:3;15605:12;15598:19;;15257:366;;;:::o;15629:419::-;15795:4;15833:2;15822:9;15818:18;15810:26;;15882:9;15876:4;15872:20;15868:1;15857:9;15853:17;15846:47;15910:131;16036:4;15910:131;:::i;:::-;15902:139;;15629:419;;;:::o;16054:143::-;16111:5;16142:6;16136:13;16127:22;;16158:33;16185:5;16158:33;:::i;:::-;16054:143;;;;:::o;16203:351::-;16273:6;16322:2;16310:9;16301:7;16297:23;16293:32;16290:119;;;16328:79;;:::i;:::-;16290:119;16448:1;16473:64;16529:7;16520:6;16509:9;16505:22;16473:64;:::i;:::-;16463:74;;16419:128;16203:351;;;;:::o;16560:332::-;16681:4;16719:2;16708:9;16704:18;16696:26;;16732:71;16800:1;16789:9;16785:17;16776:6;16732:71;:::i;:::-;16813:72;16881:2;16870:9;16866:18;16857:6;16813:72;:::i;:::-;16560:332;;;;;:::o;16898:172::-;17038:24;17034:1;17026:6;17022:14;17015:48;16898:172;:::o;17076:366::-;17218:3;17239:67;17303:2;17298:3;17239:67;:::i;:::-;17232:74;;17315:93;17404:3;17315:93;:::i;:::-;17433:2;17428:3;17424:12;17417:19;;17076:366;;;:::o;17448:419::-;17614:4;17652:2;17641:9;17637:18;17629:26;;17701:9;17695:4;17691:20;17687:1;17676:9;17672:17;17665:47;17729:131;17855:4;17729:131;:::i;:::-;17721:139;;17448:419;;;:::o;17873:180::-;17921:77;17918:1;17911:88;18018:4;18015:1;18008:15;18042:4;18039:1;18032:15;18059:191;18099:3;18118:20;18136:1;18118:20;:::i;:::-;18113:25;;18152:20;18170:1;18152:20;:::i;:::-;18147:25;;18195:1;18192;18188:9;18181:16;;18216:3;18213:1;18210:10;18207:36;;;18223:18;;:::i;:::-;18207:36;18059:191;;;;:::o;18256:233::-;18295:3;18318:24;18336:5;18318:24;:::i;:::-;18309:33;;18364:66;18357:5;18354:77;18351:103;;18434:18;;:::i;:::-;18351:103;18481:1;18474:5;18470:13;18463:20;;18256:233;;;:::o;18495:177::-;18635:29;18631:1;18623:6;18619:14;18612:53;18495:177;:::o;18678:366::-;18820:3;18841:67;18905:2;18900:3;18841:67;:::i;:::-;18834:74;;18917:93;19006:3;18917:93;:::i;:::-;19035:2;19030:3;19026:12;19019:19;;18678:366;;;:::o;19050:419::-;19216:4;19254:2;19243:9;19239:18;19231:26;;19303:9;19297:4;19293:20;19289:1;19278:9;19274:17;19267:47;19331:131;19457:4;19331:131;:::i;:::-;19323:139;;19050:419;;;:::o;19475:147::-;19576:11;19613:3;19598:18;;19475:147;;;;:::o;19628:114::-;;:::o;19748:398::-;19907:3;19928:83;20009:1;20004:3;19928:83;:::i;:::-;19921:90;;20020:93;20109:3;20020:93;:::i;:::-;20138:1;20133:3;20129:11;20122:18;;19748:398;;;:::o;20152:379::-;20336:3;20358:147;20501:3;20358:147;:::i;:::-;20351:154;;20522:3;20515:10;;20152:379;;;:::o;20537:225::-;20677:34;20673:1;20665:6;20661:14;20654:58;20746:8;20741:2;20733:6;20729:15;20722:33;20537:225;:::o;20768:366::-;20910:3;20931:67;20995:2;20990:3;20931:67;:::i;:::-;20924:74;;21007:93;21096:3;21007:93;:::i;:::-;21125:2;21120:3;21116:12;21109:19;;20768:366;;;:::o;21140:419::-;21306:4;21344:2;21333:9;21329:18;21321:26;;21393:9;21387:4;21383:20;21379:1;21368:9;21364:17;21357:47;21421:131;21547:4;21421:131;:::i;:::-;21413:139;;21140:419;;;:::o;21565:332::-;21686:4;21724:2;21713:9;21709:18;21701:26;;21737:71;21805:1;21794:9;21790:17;21781:6;21737:71;:::i;:::-;21818:72;21886:2;21875:9;21871:18;21862:6;21818:72;:::i;:::-;21565:332;;;;;:::o;21903:137::-;21957:5;21988:6;21982:13;21973:22;;22004:30;22028:5;22004:30;:::i;:::-;21903:137;;;;:::o;22046:345::-;22113:6;22162:2;22150:9;22141:7;22137:23;22133:32;22130:119;;;22168:79;;:::i;:::-;22130:119;22288:1;22313:61;22366:7;22357:6;22346:9;22342:22;22313:61;:::i;:::-;22303:71;;22259:125;22046:345;;;;:::o;22397:410::-;22437:7;22460:20;22478:1;22460:20;:::i;:::-;22455:25;;22494:20;22512:1;22494:20;:::i;:::-;22489:25;;22549:1;22546;22542:9;22571:30;22589:11;22571:30;:::i;:::-;22560:41;;22750:1;22741:7;22737:15;22734:1;22731:22;22711:1;22704:9;22684:83;22661:139;;22780:18;;:::i;:::-;22661:139;22445:362;22397:410;;;;:::o;22813:220::-;22953:34;22949:1;22941:6;22937:14;22930:58;23022:3;23017:2;23009:6;23005:15;22998:28;22813:220;:::o;23039:366::-;23181:3;23202:67;23266:2;23261:3;23202:67;:::i;:::-;23195:74;;23278:93;23367:3;23278:93;:::i;:::-;23396:2;23391:3;23387:12;23380:19;;23039:366;;;:::o;23411:419::-;23577:4;23615:2;23604:9;23600:18;23592:26;;23664:9;23658:4;23654:20;23650:1;23639:9;23635:17;23628:47;23692:131;23818:4;23692:131;:::i;:::-;23684:139;;23411:419;;;:::o;23836:177::-;23976:29;23972:1;23964:6;23960:14;23953:53;23836:177;:::o;24019:366::-;24161:3;24182:67;24246:2;24241:3;24182:67;:::i;:::-;24175:74;;24258:93;24347:3;24258:93;:::i;:::-;24376:2;24371:3;24367:12;24360:19;;24019:366;;;:::o;24391:419::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:223::-;24956:34;24952:1;24944:6;24940:14;24933:58;25025:6;25020:2;25012:6;25008:15;25001:31;24816:223;:::o;25045:366::-;25187:3;25208:67;25272:2;25267:3;25208:67;:::i;:::-;25201:74;;25284:93;25373:3;25284:93;:::i;:::-;25402:2;25397:3;25393:12;25386:19;;25045:366;;;:::o;25417:419::-;25583:4;25621:2;25610:9;25606:18;25598:26;;25670:9;25664:4;25660:20;25656:1;25645:9;25641:17;25634:47;25698:131;25824:4;25698:131;:::i;:::-;25690:139;;25417:419;;;:::o;25842:221::-;25982:34;25978:1;25970:6;25966:14;25959:58;26051:4;26046:2;26038:6;26034:15;26027:29;25842:221;:::o;26069:366::-;26211:3;26232:67;26296:2;26291:3;26232:67;:::i;:::-;26225:74;;26308:93;26397:3;26308:93;:::i;:::-;26426:2;26421:3;26417:12;26410:19;;26069:366;;;:::o;26441:419::-;26607:4;26645:2;26634:9;26630:18;26622:26;;26694:9;26688:4;26684:20;26680:1;26669:9;26665:17;26658:47;26722:131;26848:4;26722:131;:::i;:::-;26714:139;;26441:419;;;:::o;26866:224::-;27006:34;27002:1;26994:6;26990:14;26983:58;27075:7;27070:2;27062:6;27058:15;27051:32;26866:224;:::o;27096:366::-;27238:3;27259:67;27323:2;27318:3;27259:67;:::i;:::-;27252:74;;27335:93;27424:3;27335:93;:::i;:::-;27453:2;27448:3;27444:12;27437:19;;27096:366;;;:::o;27468:419::-;27634:4;27672:2;27661:9;27657:18;27649:26;;27721:9;27715:4;27711:20;27707:1;27696:9;27692:17;27685:47;27749:131;27875:4;27749:131;:::i;:::-;27741:139;;27468:419;;;:::o;27893:222::-;28033:34;28029:1;28021:6;28017:14;28010:58;28102:5;28097:2;28089:6;28085:15;28078:30;27893:222;:::o;28121:366::-;28263:3;28284:67;28348:2;28343:3;28284:67;:::i;:::-;28277:74;;28360:93;28449:3;28360:93;:::i;:::-;28478:2;28473:3;28469:12;28462:19;;28121:366;;;:::o;28493:419::-;28659:4;28697:2;28686:9;28682:18;28674:26;;28746:9;28740:4;28736:20;28732:1;28721:9;28717:17;28710:47;28774:131;28900:4;28774:131;:::i;:::-;28766:139;;28493:419;;;:::o;28918:227::-;29058:34;29054:1;29046:6;29042:14;29035:58;29127:10;29122:2;29114:6;29110:15;29103:35;28918:227;:::o;29151:366::-;29293:3;29314:67;29378:2;29373:3;29314:67;:::i;:::-;29307:74;;29390:93;29479:3;29390:93;:::i;:::-;29508:2;29503:3;29499:12;29492:19;;29151:366;;;:::o;29523:419::-;29689:4;29727:2;29716:9;29712:18;29704:26;;29776:9;29770:4;29766:20;29762:1;29751:9;29747:17;29740:47;29804:131;29930:4;29804:131;:::i;:::-;29796:139;;29523:419;;;:::o;29948:224::-;30088:34;30084:1;30076:6;30072:14;30065:58;30157:7;30152:2;30144:6;30140:15;30133:32;29948:224;:::o;30178:366::-;30320:3;30341:67;30405:2;30400:3;30341:67;:::i;:::-;30334:74;;30417:93;30506:3;30417:93;:::i;:::-;30535:2;30530:3;30526:12;30519:19;;30178:366;;;:::o;30550:419::-;30716:4;30754:2;30743:9;30739:18;30731:26;;30803:9;30797:4;30793:20;30789:1;30778:9;30774:17;30767:47;30831:131;30957:4;30831:131;:::i;:::-;30823:139;;30550:419;;;:::o;30975:194::-;31015:4;31035:20;31053:1;31035:20;:::i;:::-;31030:25;;31069:20;31087:1;31069:20;:::i;:::-;31064:25;;31113:1;31110;31106:9;31098:17;;31137:1;31131:4;31128:11;31125:37;;;31142:18;;:::i;:::-;31125:37;30975:194;;;;:::o;31175:180::-;31223:77;31220:1;31213:88;31320:4;31317:1;31310:15;31344:4;31341:1;31334:15;31361:85;31406:7;31435:5;31424:16;;31361:85;;;:::o;31452:158::-;31510:9;31543:61;31561:42;31570:32;31596:5;31570:32;:::i;:::-;31561:42;:::i;:::-;31543:61;:::i;:::-;31530:74;;31452:158;;;:::o;31616:147::-;31711:45;31750:5;31711:45;:::i;:::-;31706:3;31699:58;31616:147;;:::o;31769:114::-;31836:6;31870:5;31864:12;31854:22;;31769:114;;;:::o;31889:184::-;31988:11;32022:6;32017:3;32010:19;32062:4;32057:3;32053:14;32038:29;;31889:184;;;;:::o;32079:132::-;32146:4;32169:3;32161:11;;32199:4;32194:3;32190:14;32182:22;;32079:132;;;:::o;32217:108::-;32294:24;32312:5;32294:24;:::i;:::-;32289:3;32282:37;32217:108;;:::o;32331:179::-;32400:10;32421:46;32463:3;32455:6;32421:46;:::i;:::-;32499:4;32494:3;32490:14;32476:28;;32331:179;;;;:::o;32516:113::-;32586:4;32618;32613:3;32609:14;32601:22;;32516:113;;;:::o;32665:732::-;32784:3;32813:54;32861:5;32813:54;:::i;:::-;32883:86;32962:6;32957:3;32883:86;:::i;:::-;32876:93;;32993:56;33043:5;32993:56;:::i;:::-;33072:7;33103:1;33088:284;33113:6;33110:1;33107:13;33088:284;;;33189:6;33183:13;33216:63;33275:3;33260:13;33216:63;:::i;:::-;33209:70;;33302:60;33355:6;33302:60;:::i;:::-;33292:70;;33148:224;33135:1;33132;33128:9;33123:14;;33088:284;;;33092:14;33388:3;33381:10;;32789:608;;;32665:732;;;;:::o;33403:831::-;33666:4;33704:3;33693:9;33689:19;33681:27;;33718:71;33786:1;33775:9;33771:17;33762:6;33718:71;:::i;:::-;33799:80;33875:2;33864:9;33860:18;33851:6;33799:80;:::i;:::-;33926:9;33920:4;33916:20;33911:2;33900:9;33896:18;33889:48;33954:108;34057:4;34048:6;33954:108;:::i;:::-;33946:116;;34072:72;34140:2;34129:9;34125:18;34116:6;34072:72;:::i;:::-;34154:73;34222:3;34211:9;34207:19;34198:6;34154:73;:::i;:::-;33403:831;;;;;;;;:::o;34240:483::-;34411:4;34449:2;34438:9;34434:18;34426:26;;34462:71;34530:1;34519:9;34515:17;34506:6;34462:71;:::i;:::-;34580:9;34574:4;34570:20;34565:2;34554:9;34550:18;34543:48;34608:108;34711:4;34702:6;34608:108;:::i;:::-;34600:116;;34240:483;;;;;:::o;34729:807::-;34978:4;35016:3;35005:9;35001:19;34993:27;;35030:71;35098:1;35087:9;35083:17;35074:6;35030:71;:::i;:::-;35111:72;35179:2;35168:9;35164:18;35155:6;35111:72;:::i;:::-;35193:80;35269:2;35258:9;35254:18;35245:6;35193:80;:::i;:::-;35283;35359:2;35348:9;35344:18;35335:6;35283:80;:::i;:::-;35373:73;35441:3;35430:9;35426:19;35417:6;35373:73;:::i;:::-;35456;35524:3;35513:9;35509:19;35500:6;35456:73;:::i;:::-;34729:807;;;;;;;;;:::o;35542:143::-;35599:5;35630:6;35624:13;35615:22;;35646:33;35673:5;35646:33;:::i;:::-;35542:143;;;;:::o;35691:663::-;35779:6;35787;35795;35844:2;35832:9;35823:7;35819:23;35815:32;35812:119;;;35850:79;;:::i;:::-;35812:119;35970:1;35995:64;36051:7;36042:6;36031:9;36027:22;35995:64;:::i;:::-;35985:74;;35941:128;36108:2;36134:64;36190:7;36181:6;36170:9;36166:22;36134:64;:::i;:::-;36124:74;;36079:129;36247:2;36273:64;36329:7;36320:6;36309:9;36305:22;36273:64;:::i;:::-;36263:74;;36218:129;35691:663;;;;;:::o

Swarm Source

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