ETH Price: $3,391.11 (+1.55%)

Token

Bonk (Bonk!)
 

Overview

Max Total Supply

1,000,000,000,000 Bonk!

Holders

235

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.361899999 Bonk!

Value
$0.00
0xC31A7815075eBBC35cFE9b70bed83D760eF84351
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Bonk

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-10
*/

/**
t.me/bonkerc20
*/
// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.17;

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

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Bonk";
    string constant _symbol = "Bonk!";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) private _isBlacklisted;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 10;
    uint256 private utilityFee      = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1000; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    string private telegram;
    string private website;
    string private medium;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = false;
    uint256 public swapThreshold = _totalSupply * 200 / 10000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[utilityFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[utilityFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xF04e1e6c1AC5FF2C801B4164B5209BF46b4e48f6;
        utilityFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTx(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "You are a bot");

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
           }
        
       
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

       
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(teamFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function swapback() external onlyOwner {
           swapBack();
    
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFees(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
        buyMultiplier = 300;
        sellMultiplier = 300;
        transferMultiplier = 1000;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

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

    function updateTaxBreakdown(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateReceiverWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargets(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveAll","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":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ef2565b64e8d4a51000620000ab919062000f43565b600555620000e56064620000d1600260055462000c1360201b6200235b1790919060201c565b62000c9660201b620023d51790919060201c565b6006556200011f60646200010b600260055462000c1360201b6200235b1790919060201c565b62000c9660201b620023d51790919060201c565b6007556000600d55600a600e556000600f5560006010556000601155601154600f54600d54600e5460105462000156919062000f8e565b62000162919062000f8e565b6200016e919062000f8e565b6200017a919062000f8e565b6012556064601355606460145560646015556103e86016556014601f5560646020556000602360146101000a81548160ff0219169083151502179055506000602360156101000a81548160ff02191690831515021790555061271060c8600554620001e6919062000f43565b620001f2919062000ff8565b6024553480156200020257600080fd5b5060006200021562000ce860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041491906200109a565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e891906200109a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040162000546929190620010dd565b6020604051808303816000875af115801562000566573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058c91906200109a565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f04e1e6c1ac5ff2c801b4164b5209bf46b4e48f6601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000c0591906200111b565b60405180910390a36200128e565b600080830362000c27576000905062000c90565b6000828462000c37919062000f43565b905082848262000c48919062000ff8565b1462000c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c8290620011bf565b60405180910390fd5b809150505b92915050565b600062000ce083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cf060201b60201c565b905092915050565b600033905090565b6000808311829062000d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d3191906200126a565b60405180910390fd5b506000838562000d4b919062000ff8565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000de65780860481111562000dbe5762000dbd62000d58565b5b600185161562000dce5780820291505b808102905062000dde8562000d87565b945062000d9e565b94509492505050565b60008262000e01576001905062000ed4565b8162000e11576000905062000ed4565b816001811462000e2a576002811462000e355762000e6b565b600191505062000ed4565b60ff84111562000e4a5762000e4962000d58565b5b8360020a91508482111562000e645762000e6362000d58565b5b5062000ed4565b5060208310610133831016604e8410600b841016171562000ea55782820a90508381111562000e9f5762000e9e62000d58565b5b62000ed4565b62000eb4848484600162000d94565b9250905081840481111562000ece5762000ecd62000d58565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000eff8262000edb565b915062000f0c8362000ee5565b925062000f3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000def565b905092915050565b600062000f508262000edb565b915062000f5d8362000edb565b925082820262000f6d8162000edb565b9150828204841483151762000f875762000f8662000d58565b5b5092915050565b600062000f9b8262000edb565b915062000fa88362000edb565b925082820190508082111562000fc35762000fc262000d58565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010058262000edb565b9150620010128362000edb565b92508262001025576200102462000fc9565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010628262001035565b9050919050565b620010748162001055565b81146200108057600080fd5b50565b600081519050620010948162001069565b92915050565b600060208284031215620010b357620010b262001030565b5b6000620010c38482850162001083565b91505092915050565b620010d78162001055565b82525050565b6000604082019050620010f46000830185620010cc565b620011036020830184620010cc565b9392505050565b620011158162000edb565b82525050565b60006020820190506200113260008301846200110a565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011a760218362001138565b9150620011b48262001149565b604082019050919050565b60006020820190508181036000830152620011da8162001198565b9050919050565b600081519050919050565b60005b838110156200120c578082015181840152602081019050620011ef565b60008484015250505050565b6000601f19601f8301169050919050565b60006200123682620011e1565b62001242818562001138565b935062001254818560208601620011ec565b6200125f8162001218565b840191505092915050565b6000602082019050818103600083015262001286818462001229565b905092915050565b614b44806200129e6000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108bb578063d78e139d146108f8578063dd62ed3e14610921578063f2fde38b1461095e578063f6a78e1714610987578063f887ea401461099e57610267565b8063b2bdfa7b146107fe578063bc33718214610829578063ccf8c03614610852578063cec10c111461087b578063d148b74c146108a457610267565b8063918924761161010857806391892476146106f057806395d89b41146107195780639acb773e146107445780639f11080e1461076d578063a8aa1b3114610796578063a9059cbb146107c157610267565b80637d1db4a514610641578063893d20e81461066c5780638a4068dd146106975780638a8c523c146106ae5780638da5cb5b146106c557610267565b806323b872dd116101dd5780636ddd1713116101a15780636ddd17131461053157806370a082311461055c578063715018a61461059957806377b54bad146105b057806378109e54146105ed5780637bae52e11461061857610267565b806323b872dd1461044c5780632b112e4914610489578063313ce567146104b45780635b24ea5e146104df5780635d0044ca1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780631161ae391461039057806313f97a8e146103cd57806318160ddd146103f65780631df4ccfc1461042157610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ad2565b6109c9565b005b3480156102a157600080fd5b506102aa610a83565b6040516102b79190613b21565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613b9a565b610a89565b6040516102f49190613bd6565b60405180910390f35b34801561030957600080fd5b50610312610abc565b60405161031f9190613c81565b60405180910390f35b34801561033457600080fd5b5061033d610af9565b60405161034a9190613bd6565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613ca3565b610b0c565b6040516103879190613bd6565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613ce3565b610bfe565b6040516103c49190613bd6565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613e6b565b610c13565b005b34801561040257600080fd5b5061040b610d3d565b6040516104189190613b21565b60405180910390f35b34801561042d57600080fd5b50610436610d47565b6040516104439190613b21565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190613ec7565b610d4d565b6040516104809190613bd6565b60405180910390f35b34801561049557600080fd5b5061049e610f4d565b6040516104ab9190613b21565b60405180910390f35b3480156104c057600080fd5b506104c9610fcf565b6040516104d69190613f36565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613f51565b610fd8565b005b34801561051457600080fd5b5061052f600480360381019061052a9190613f91565b6110c8565b005b34801561053d57600080fd5b5061054661119f565b6040516105539190613bd6565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613b9a565b6111b2565b6040516105909190613b21565b60405180910390f35b3480156105a557600080fd5b506105ae6111fb565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190613ca3565b61134e565b6040516105e49190613bd6565b60405180910390f35b3480156105f957600080fd5b506106026114b1565b60405161060f9190613b21565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613fbe565b6114b7565b005b34801561064d57600080fd5b50610656611698565b6040516106639190613b21565b60405180910390f35b34801561067857600080fd5b5061068161169e565b60405161068e9190614048565b60405180910390f35b3480156106a357600080fd5b506106ac6116ad565b005b3480156106ba57600080fd5b506106c361174c565b005b3480156106d157600080fd5b506106da611819565b6040516106e79190614048565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614063565b611842565b005b34801561072557600080fd5b5061072e6119aa565b60405161073b9190613c81565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613f51565b6119e7565b005b34801561077957600080fd5b50610794600480360381019061078f9190613ce3565b611ad7565b005b3480156107a257600080fd5b506107ab611b7e565b6040516107b89190614048565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613ca3565b611ba4565b6040516107f59190613bd6565b60405180910390f35b34801561080a57600080fd5b50610813611bb9565b6040516108209190614048565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613f91565b611bdd565b005b34801561085e57600080fd5b5061087960048036038101906108749190613f51565b611cb4565b005b34801561088757600080fd5b506108a2600480360381019061089d91906140f0565b611dfb565b005b3480156108b057600080fd5b506108b9611eaa565b005b3480156108c757600080fd5b506108e260048036038101906108dd9190613f91565b611f49565b6040516108ef9190613b21565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613f91565b611fbb565b005b34801561092d57600080fd5b5061094860048036038101906109439190614143565b612044565b6040516109559190613b21565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613b9a565b6120cb565b005b34801561099357600080fd5b5061099c61228c565b005b3480156109aa57600080fd5b506109b3612335565b6040516109c091906141e2565b60405180910390f35b6109d161241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5590614249565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ab5827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b0c565b9050919050565b60606040518060400160405280600481526020017f426f6e6b00000000000000000000000000000000000000000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bec9190613b21565b60405180910390a36001905092915050565b600082610c0a83611f49565b11905092915050565b610c1b61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90614249565b60405180910390fd5b60005b8251811015610d385781600c6000858481518110610ccc57610ccb614269565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d30906142c7565b915050610cab565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f3957610eb8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f4484848461248b565b90509392505050565b6000610fca610f7d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b610fbc610fab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b600554612be690919063ffffffff16565b612be690919063ffffffff16565b905090565b60006009905090565b610fe061241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490614249565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110d061241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614249565b60405180910390fd5b6103e860055461116d919061433e565b600754101561117b57600080fd5b6103e88160055461118c919061436f565b611196919061433e565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113a657600080fd5b6000820361142b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e79190614048565b602060405180830381865afa158015611404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906143c6565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114669291906143f3565b6020604051808303816000875af1158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190614431565b905092915050565b60075481565b6114bf61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614249565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b60006116a8611819565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611749573d6000803e3d6000fd5b50565b61175461241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614249565b60405180910390fd5b6001602360146101000a81548160ff02191690831515021790555061012c60158190555061012c6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61184a61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90614249565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119438261193585611927886119198b8d612c3090919063ffffffff16565b612c3090919063ffffffff16565b612c3090919063ffffffff16565b612c3090919063ffffffff16565b60128190555080601381905550600560135461195f919061433e565b601254106119a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611999906144aa565b60405180910390fd5b505050505050565b60606040518060400160405280600581526020017f426f6e6b21000000000000000000000000000000000000000000000000000000815250905090565b6119ef61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390614249565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611adf61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614249565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bb133848461248b565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be561241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6990614249565b60405180910390fd5b6103e8600554611c82919061433e565b6006541015611c9057600080fd5b6103e881600554611ca1919061436f565b611cab919061433e565b60068190555050565b611cbc61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614249565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e0361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614249565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611eb261241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690614249565b60405180910390fd5b611f47612c8e565b565b6000611fb4611f56610f4d565b611fa6611f976002611f89602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b61235b90919063ffffffff16565b8561235b90919063ffffffff16565b6123d590919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461200a919061436f565b612014919061433e565b9081150290604051600060405180830381858888f1935050505015801561203f573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c69061453c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61229461241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231890614249565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080830361236d57600090506123cf565b6000828461237b919061436f565b905082848261238a919061433e565b146123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c1906145ce565b60405180910390fd5b809150505b92915050565b600061241783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132b5565b905092915050565b600033905090565b600083831115829061246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124669190613c81565b60405180910390fd5b506000838561247e91906145ee565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125315750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061466e565b60405180910390fd5b602560009054906101000a900460ff161561259757612590848484613318565b9050612bdf565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561263b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269057602360149054906101000a900460ff1661268f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612686906146da565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561271657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127705750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127ca5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128245750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561287e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128d45750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129385760006128e4846111b2565b905060075483826128f591906146fa565b1115612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d906147a0565b60405180910390fd5b505b61294284836134eb565b61294a613588565b1561295857612957612c8e565b5b6129e1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ac75750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612adb57612ad685848661365f565b612add565b825b9050612b3181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bd19190613b21565b60405180910390a360019150505b9392505050565b6000612c2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612427565b905092915050565b6000808284612c3f91906146fa565b905083811015612c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7b9061480c565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612cb9601f54602054610bfe565b612cc557600d54612cc8565b60005b90506000612d086002612cfa601254612cec8660245461235b90919063ffffffff16565b6123d590919063ffffffff16565b6123d590919063ffffffff16565b90506000612d2182602454612be690919063ffffffff16565b90506000600267ffffffffffffffff811115612d4057612d3f613d28565b5b604051908082528060200260200182016040528015612d6e5781602001602082028036833780820191505090505b5090503081600081518110612d8657612d85614269565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612df757612df6614269565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612e9a959493929190614925565b600060405180830381600087803b158015612eb457600080fd5b505af1158015612ec8573d6000803e3d6000fd5b505050506000612ee18247612be690919063ffffffff16565b90506000612f0d612efc6002896123d590919063ffffffff16565b601254612be690919063ffffffff16565b90506000612f496002612f3b84612f2d8c8861235b90919063ffffffff16565b6123d590919063ffffffff16565b6123d590919063ffffffff16565b90506000612f7483612f66600e548761235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000612f9f84612f916010548861235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000612fca85612fbc600f548961235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051613014906149b0565b60006040518083038185875af1925050503d8060008114613051576040519150601f19603f3d011682016040523d82523d6000602084013e613056565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130a0906149b0565b60006040518083038185875af1925050503d80600081146130dd576040519150601f19603f3d011682016040523d82523d6000602084013e6130e2565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161312e906149b0565b60006040518083038185875af1925050503d806000811461316b576040519150601f19603f3d011682016040523d82523d6000602084013e613170565b606091505b5050809150506000905060008b111561328c57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161320c969594939291906149c5565b60606040518083038185885af115801561322a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061324f9190614a26565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051613283929190614a79565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b600080831182906132fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f39190613c81565b60405180910390fd5b506000838561330b919061433e565b9050809150509392505050565b60006133a3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061343882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134d89190613b21565b60405180910390a3600190509392505050565b600654811115806135455750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357b90614aee565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135f55750602560009054906101000a900460ff16155b801561360d5750602360159054906101000a900460ff165b801561365a5750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136c6576014549050613722565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036137215760155490505b5b600061376b6064601354613736919061436f565b61375d8461374f6012548a61235b90919063ffffffff16565b61235b90919063ffffffff16565b6123d590919063ffffffff16565b9050600061379860125461378a6011548561235b90919063ffffffff16565b6123d590919063ffffffff16565b905060006137af8284612be690919063ffffffff16565b905061380381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ba8260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397c9190613b21565b60405180910390a36000821115613a30576139a282600554612be690919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a279190613b21565b60405180910390a35b613a438388612be690919063ffffffff16565b9450505050509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a7981613a64565b8114613a8457600080fd5b50565b600081359050613a9681613a70565b92915050565b6000819050919050565b613aaf81613a9c565b8114613aba57600080fd5b50565b600081359050613acc81613aa6565b92915050565b60008060408385031215613ae957613ae8613a5a565b5b6000613af785828601613a87565b9250506020613b0885828601613abd565b9150509250929050565b613b1b81613a9c565b82525050565b6000602082019050613b366000830184613b12565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b6782613b3c565b9050919050565b613b7781613b5c565b8114613b8257600080fd5b50565b600081359050613b9481613b6e565b92915050565b600060208284031215613bb057613baf613a5a565b5b6000613bbe84828501613b85565b91505092915050565b613bd081613a64565b82525050565b6000602082019050613beb6000830184613bc7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c2b578082015181840152602081019050613c10565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c5382613bf1565b613c5d8185613bfc565b9350613c6d818560208601613c0d565b613c7681613c37565b840191505092915050565b60006020820190508181036000830152613c9b8184613c48565b905092915050565b60008060408385031215613cba57613cb9613a5a565b5b6000613cc885828601613b85565b9250506020613cd985828601613abd565b9150509250929050565b60008060408385031215613cfa57613cf9613a5a565b5b6000613d0885828601613abd565b9250506020613d1985828601613abd565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d6082613c37565b810181811067ffffffffffffffff82111715613d7f57613d7e613d28565b5b80604052505050565b6000613d92613a50565b9050613d9e8282613d57565b919050565b600067ffffffffffffffff821115613dbe57613dbd613d28565b5b602082029050602081019050919050565b600080fd5b6000613de7613de284613da3565b613d88565b90508083825260208201905060208402830185811115613e0a57613e09613dcf565b5b835b81811015613e335780613e1f8882613b85565b845260208401935050602081019050613e0c565b5050509392505050565b600082601f830112613e5257613e51613d23565b5b8135613e62848260208601613dd4565b91505092915050565b60008060408385031215613e8257613e81613a5a565b5b600083013567ffffffffffffffff811115613ea057613e9f613a5f565b5b613eac85828601613e3d565b9250506020613ebd85828601613a87565b9150509250929050565b600080600060608486031215613ee057613edf613a5a565b5b6000613eee86828701613b85565b9350506020613eff86828701613b85565b9250506040613f1086828701613abd565b9150509250925092565b600060ff82169050919050565b613f3081613f1a565b82525050565b6000602082019050613f4b6000830184613f27565b92915050565b60008060408385031215613f6857613f67613a5a565b5b6000613f7685828601613b85565b9250506020613f8785828601613a87565b9150509250929050565b600060208284031215613fa757613fa6613a5a565b5b6000613fb584828501613abd565b91505092915050565b600080600080600060a08688031215613fda57613fd9613a5a565b5b6000613fe888828901613b85565b9550506020613ff988828901613b85565b945050604061400a88828901613b85565b935050606061401b88828901613b85565b925050608061402c88828901613b85565b9150509295509295909350565b61404281613b5c565b82525050565b600060208201905061405d6000830184614039565b92915050565b60008060008060008060c087890312156140805761407f613a5a565b5b600061408e89828a01613abd565b965050602061409f89828a01613abd565b95505060406140b089828a01613abd565b94505060606140c189828a01613abd565b93505060806140d289828a01613abd565b92505060a06140e389828a01613abd565b9150509295509295509295565b60008060006060848603121561410957614108613a5a565b5b600061411786828701613abd565b935050602061412886828701613abd565b925050604061413986828701613abd565b9150509250925092565b6000806040838503121561415a57614159613a5a565b5b600061416885828601613b85565b925050602061417985828601613b85565b9150509250929050565b6000819050919050565b60006141a86141a361419e84613b3c565b614183565b613b3c565b9050919050565b60006141ba8261418d565b9050919050565b60006141cc826141af565b9050919050565b6141dc816141c1565b82525050565b60006020820190506141f760008301846141d3565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614233602083613bfc565b915061423e826141fd565b602082019050919050565b6000602082019050818103600083015261426281614226565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142d282613a9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430457614303614298565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061434982613a9c565b915061435483613a9c565b9250826143645761436361430f565b5b828204905092915050565b600061437a82613a9c565b915061438583613a9c565b925082820261439381613a9c565b915082820484148315176143aa576143a9614298565b5b5092915050565b6000815190506143c081613aa6565b92915050565b6000602082840312156143dc576143db613a5a565b5b60006143ea848285016143b1565b91505092915050565b60006040820190506144086000830185614039565b6144156020830184613b12565b9392505050565b60008151905061442b81613a70565b92915050565b60006020828403121561444757614446613a5a565b5b60006144558482850161441c565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614494601d83613bfc565b915061449f8261445e565b602082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614526602683613bfc565b9150614531826144ca565b604082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006145b8602183613bfc565b91506145c38261455c565b604082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b60006145f982613a9c565b915061460483613a9c565b925082820390508181111561461c5761461b614298565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614658600d83613bfc565b915061466382614622565b602082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006146c4601483613bfc565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b600061470582613a9c565b915061471083613a9c565b925082820190508082111561472857614727614298565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b600061478a603e83613bfc565b91506147958261472e565b604082019050919050565b600060208201905081810360008301526147b98161477d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147f6601b83613bfc565b9150614801826147c0565b602082019050919050565b60006020820190508181036000830152614825816147e9565b9050919050565b6000819050919050565b600061485161484c6148478461482c565b614183565b613a9c565b9050919050565b61486181614836565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61489c81613b5c565b82525050565b60006148ae8383614893565b60208301905092915050565b6000602082019050919050565b60006148d282614867565b6148dc8185614872565b93506148e783614883565b8060005b838110156149185781516148ff88826148a2565b975061490a836148ba565b9250506001810190506148eb565b5085935050505092915050565b600060a08201905061493a6000830188613b12565b6149476020830187614858565b818103604083015261495981866148c7565b90506149686060830185614039565b6149756080830184613b12565b9695505050505050565b600081905092915050565b50565b600061499a60008361497f565b91506149a58261498a565b600082019050919050565b60006149bb8261498d565b9150819050919050565b600060c0820190506149da6000830189614039565b6149e76020830188613b12565b6149f46040830187614858565b614a016060830186614858565b614a0e6080830185614039565b614a1b60a0830184613b12565b979650505050505050565b600080600060608486031215614a3f57614a3e613a5a565b5b6000614a4d868287016143b1565b9350506020614a5e868287016143b1565b9250506040614a6f868287016143b1565b9150509250925092565b6000604082019050614a8e6000830185613b12565b614a9b6020830184613b12565b9392505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614ad8601183613bfc565b9150614ae382614aa2565b602082019050919050565b60006020820190508181036000830152614b0781614acb565b905091905056fea2646970667358221220541c91629afc217ecc3643bbe86547851b4110bd9fec6585581a6441ee08710d64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637d1db4a511610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108bb578063d78e139d146108f8578063dd62ed3e14610921578063f2fde38b1461095e578063f6a78e1714610987578063f887ea401461099e57610267565b8063b2bdfa7b146107fe578063bc33718214610829578063ccf8c03614610852578063cec10c111461087b578063d148b74c146108a457610267565b8063918924761161010857806391892476146106f057806395d89b41146107195780639acb773e146107445780639f11080e1461076d578063a8aa1b3114610796578063a9059cbb146107c157610267565b80637d1db4a514610641578063893d20e81461066c5780638a4068dd146106975780638a8c523c146106ae5780638da5cb5b146106c557610267565b806323b872dd116101dd5780636ddd1713116101a15780636ddd17131461053157806370a082311461055c578063715018a61461059957806377b54bad146105b057806378109e54146105ed5780637bae52e11461061857610267565b806323b872dd1461044c5780632b112e4914610489578063313ce567146104b45780635b24ea5e146104df5780635d0044ca1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780631161ae391461039057806313f97a8e146103cd57806318160ddd146103f65780631df4ccfc1461042157610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ad2565b6109c9565b005b3480156102a157600080fd5b506102aa610a83565b6040516102b79190613b21565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613b9a565b610a89565b6040516102f49190613bd6565b60405180910390f35b34801561030957600080fd5b50610312610abc565b60405161031f9190613c81565b60405180910390f35b34801561033457600080fd5b5061033d610af9565b60405161034a9190613bd6565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613ca3565b610b0c565b6040516103879190613bd6565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613ce3565b610bfe565b6040516103c49190613bd6565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613e6b565b610c13565b005b34801561040257600080fd5b5061040b610d3d565b6040516104189190613b21565b60405180910390f35b34801561042d57600080fd5b50610436610d47565b6040516104439190613b21565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190613ec7565b610d4d565b6040516104809190613bd6565b60405180910390f35b34801561049557600080fd5b5061049e610f4d565b6040516104ab9190613b21565b60405180910390f35b3480156104c057600080fd5b506104c9610fcf565b6040516104d69190613f36565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613f51565b610fd8565b005b34801561051457600080fd5b5061052f600480360381019061052a9190613f91565b6110c8565b005b34801561053d57600080fd5b5061054661119f565b6040516105539190613bd6565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613b9a565b6111b2565b6040516105909190613b21565b60405180910390f35b3480156105a557600080fd5b506105ae6111fb565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190613ca3565b61134e565b6040516105e49190613bd6565b60405180910390f35b3480156105f957600080fd5b506106026114b1565b60405161060f9190613b21565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613fbe565b6114b7565b005b34801561064d57600080fd5b50610656611698565b6040516106639190613b21565b60405180910390f35b34801561067857600080fd5b5061068161169e565b60405161068e9190614048565b60405180910390f35b3480156106a357600080fd5b506106ac6116ad565b005b3480156106ba57600080fd5b506106c361174c565b005b3480156106d157600080fd5b506106da611819565b6040516106e79190614048565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614063565b611842565b005b34801561072557600080fd5b5061072e6119aa565b60405161073b9190613c81565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613f51565b6119e7565b005b34801561077957600080fd5b50610794600480360381019061078f9190613ce3565b611ad7565b005b3480156107a257600080fd5b506107ab611b7e565b6040516107b89190614048565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613ca3565b611ba4565b6040516107f59190613bd6565b60405180910390f35b34801561080a57600080fd5b50610813611bb9565b6040516108209190614048565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613f91565b611bdd565b005b34801561085e57600080fd5b5061087960048036038101906108749190613f51565b611cb4565b005b34801561088757600080fd5b506108a2600480360381019061089d91906140f0565b611dfb565b005b3480156108b057600080fd5b506108b9611eaa565b005b3480156108c757600080fd5b506108e260048036038101906108dd9190613f91565b611f49565b6040516108ef9190613b21565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613f91565b611fbb565b005b34801561092d57600080fd5b5061094860048036038101906109439190614143565b612044565b6040516109559190613b21565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613b9a565b6120cb565b005b34801561099357600080fd5b5061099c61228c565b005b3480156109aa57600080fd5b506109b3612335565b6040516109c091906141e2565b60405180910390f35b6109d161241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5590614249565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ab5827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b0c565b9050919050565b60606040518060400160405280600481526020017f426f6e6b00000000000000000000000000000000000000000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bec9190613b21565b60405180910390a36001905092915050565b600082610c0a83611f49565b11905092915050565b610c1b61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90614249565b60405180910390fd5b60005b8251811015610d385781600c6000858481518110610ccc57610ccb614269565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d30906142c7565b915050610cab565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f3957610eb8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f4484848461248b565b90509392505050565b6000610fca610f7d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b610fbc610fab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b600554612be690919063ffffffff16565b612be690919063ffffffff16565b905090565b60006009905090565b610fe061241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490614249565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110d061241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614249565b60405180910390fd5b6103e860055461116d919061433e565b600754101561117b57600080fd5b6103e88160055461118c919061436f565b611196919061433e565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113a657600080fd5b6000820361142b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e79190614048565b602060405180830381865afa158015611404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906143c6565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114669291906143f3565b6020604051808303816000875af1158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190614431565b905092915050565b60075481565b6114bf61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614249565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b60006116a8611819565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611749573d6000803e3d6000fd5b50565b61175461241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614249565b60405180910390fd5b6001602360146101000a81548160ff02191690831515021790555061012c60158190555061012c6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61184a61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90614249565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119438261193585611927886119198b8d612c3090919063ffffffff16565b612c3090919063ffffffff16565b612c3090919063ffffffff16565b612c3090919063ffffffff16565b60128190555080601381905550600560135461195f919061433e565b601254106119a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611999906144aa565b60405180910390fd5b505050505050565b60606040518060400160405280600581526020017f426f6e6b21000000000000000000000000000000000000000000000000000000815250905090565b6119ef61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390614249565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611adf61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614249565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bb133848461248b565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be561241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6990614249565b60405180910390fd5b6103e8600554611c82919061433e565b6006541015611c9057600080fd5b6103e881600554611ca1919061436f565b611cab919061433e565b60068190555050565b611cbc61241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614249565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e0361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614249565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611eb261241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690614249565b60405180910390fd5b611f47612c8e565b565b6000611fb4611f56610f4d565b611fa6611f976002611f89602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b61235b90919063ffffffff16565b8561235b90919063ffffffff16565b6123d590919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461200a919061436f565b612014919061433e565b9081150290604051600060405180830381858888f1935050505015801561203f573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d361241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c69061453c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61229461241f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231890614249565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080830361236d57600090506123cf565b6000828461237b919061436f565b905082848261238a919061433e565b146123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c1906145ce565b60405180910390fd5b809150505b92915050565b600061241783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132b5565b905092915050565b600033905090565b600083831115829061246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124669190613c81565b60405180910390fd5b506000838561247e91906145ee565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125315750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061466e565b60405180910390fd5b602560009054906101000a900460ff161561259757612590848484613318565b9050612bdf565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561263b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269057602360149054906101000a900460ff1661268f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612686906146da565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561271657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127705750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127ca5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128245750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561287e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128d45750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129385760006128e4846111b2565b905060075483826128f591906146fa565b1115612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d906147a0565b60405180910390fd5b505b61294284836134eb565b61294a613588565b1561295857612957612c8e565b5b6129e1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ac75750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612adb57612ad685848661365f565b612add565b825b9050612b3181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bd19190613b21565b60405180910390a360019150505b9392505050565b6000612c2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612427565b905092915050565b6000808284612c3f91906146fa565b905083811015612c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7b9061480c565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612cb9601f54602054610bfe565b612cc557600d54612cc8565b60005b90506000612d086002612cfa601254612cec8660245461235b90919063ffffffff16565b6123d590919063ffffffff16565b6123d590919063ffffffff16565b90506000612d2182602454612be690919063ffffffff16565b90506000600267ffffffffffffffff811115612d4057612d3f613d28565b5b604051908082528060200260200182016040528015612d6e5781602001602082028036833780820191505090505b5090503081600081518110612d8657612d85614269565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612df757612df6614269565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612e9a959493929190614925565b600060405180830381600087803b158015612eb457600080fd5b505af1158015612ec8573d6000803e3d6000fd5b505050506000612ee18247612be690919063ffffffff16565b90506000612f0d612efc6002896123d590919063ffffffff16565b601254612be690919063ffffffff16565b90506000612f496002612f3b84612f2d8c8861235b90919063ffffffff16565b6123d590919063ffffffff16565b6123d590919063ffffffff16565b90506000612f7483612f66600e548761235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000612f9f84612f916010548861235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000612fca85612fbc600f548961235b90919063ffffffff16565b6123d590919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051613014906149b0565b60006040518083038185875af1925050503d8060008114613051576040519150601f19603f3d011682016040523d82523d6000602084013e613056565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130a0906149b0565b60006040518083038185875af1925050503d80600081146130dd576040519150601f19603f3d011682016040523d82523d6000602084013e6130e2565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161312e906149b0565b60006040518083038185875af1925050503d806000811461316b576040519150601f19603f3d011682016040523d82523d6000602084013e613170565b606091505b5050809150506000905060008b111561328c57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161320c969594939291906149c5565b60606040518083038185885af115801561322a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061324f9190614a26565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051613283929190614a79565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b600080831182906132fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f39190613c81565b60405180910390fd5b506000838561330b919061433e565b9050809150509392505050565b60006133a3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061343882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134d89190613b21565b60405180910390a3600190509392505050565b600654811115806135455750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357b90614aee565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135f55750602560009054906101000a900460ff16155b801561360d5750602360159054906101000a900460ff165b801561365a5750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136c6576014549050613722565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036137215760155490505b5b600061376b6064601354613736919061436f565b61375d8461374f6012548a61235b90919063ffffffff16565b61235b90919063ffffffff16565b6123d590919063ffffffff16565b9050600061379860125461378a6011548561235b90919063ffffffff16565b6123d590919063ffffffff16565b905060006137af8284612be690919063ffffffff16565b905061380381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ba8260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3090919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397c9190613b21565b60405180910390a36000821115613a30576139a282600554612be690919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a279190613b21565b60405180910390a35b613a438388612be690919063ffffffff16565b9450505050509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a7981613a64565b8114613a8457600080fd5b50565b600081359050613a9681613a70565b92915050565b6000819050919050565b613aaf81613a9c565b8114613aba57600080fd5b50565b600081359050613acc81613aa6565b92915050565b60008060408385031215613ae957613ae8613a5a565b5b6000613af785828601613a87565b9250506020613b0885828601613abd565b9150509250929050565b613b1b81613a9c565b82525050565b6000602082019050613b366000830184613b12565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b6782613b3c565b9050919050565b613b7781613b5c565b8114613b8257600080fd5b50565b600081359050613b9481613b6e565b92915050565b600060208284031215613bb057613baf613a5a565b5b6000613bbe84828501613b85565b91505092915050565b613bd081613a64565b82525050565b6000602082019050613beb6000830184613bc7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c2b578082015181840152602081019050613c10565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c5382613bf1565b613c5d8185613bfc565b9350613c6d818560208601613c0d565b613c7681613c37565b840191505092915050565b60006020820190508181036000830152613c9b8184613c48565b905092915050565b60008060408385031215613cba57613cb9613a5a565b5b6000613cc885828601613b85565b9250506020613cd985828601613abd565b9150509250929050565b60008060408385031215613cfa57613cf9613a5a565b5b6000613d0885828601613abd565b9250506020613d1985828601613abd565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d6082613c37565b810181811067ffffffffffffffff82111715613d7f57613d7e613d28565b5b80604052505050565b6000613d92613a50565b9050613d9e8282613d57565b919050565b600067ffffffffffffffff821115613dbe57613dbd613d28565b5b602082029050602081019050919050565b600080fd5b6000613de7613de284613da3565b613d88565b90508083825260208201905060208402830185811115613e0a57613e09613dcf565b5b835b81811015613e335780613e1f8882613b85565b845260208401935050602081019050613e0c565b5050509392505050565b600082601f830112613e5257613e51613d23565b5b8135613e62848260208601613dd4565b91505092915050565b60008060408385031215613e8257613e81613a5a565b5b600083013567ffffffffffffffff811115613ea057613e9f613a5f565b5b613eac85828601613e3d565b9250506020613ebd85828601613a87565b9150509250929050565b600080600060608486031215613ee057613edf613a5a565b5b6000613eee86828701613b85565b9350506020613eff86828701613b85565b9250506040613f1086828701613abd565b9150509250925092565b600060ff82169050919050565b613f3081613f1a565b82525050565b6000602082019050613f4b6000830184613f27565b92915050565b60008060408385031215613f6857613f67613a5a565b5b6000613f7685828601613b85565b9250506020613f8785828601613a87565b9150509250929050565b600060208284031215613fa757613fa6613a5a565b5b6000613fb584828501613abd565b91505092915050565b600080600080600060a08688031215613fda57613fd9613a5a565b5b6000613fe888828901613b85565b9550506020613ff988828901613b85565b945050604061400a88828901613b85565b935050606061401b88828901613b85565b925050608061402c88828901613b85565b9150509295509295909350565b61404281613b5c565b82525050565b600060208201905061405d6000830184614039565b92915050565b60008060008060008060c087890312156140805761407f613a5a565b5b600061408e89828a01613abd565b965050602061409f89828a01613abd565b95505060406140b089828a01613abd565b94505060606140c189828a01613abd565b93505060806140d289828a01613abd565b92505060a06140e389828a01613abd565b9150509295509295509295565b60008060006060848603121561410957614108613a5a565b5b600061411786828701613abd565b935050602061412886828701613abd565b925050604061413986828701613abd565b9150509250925092565b6000806040838503121561415a57614159613a5a565b5b600061416885828601613b85565b925050602061417985828601613b85565b9150509250929050565b6000819050919050565b60006141a86141a361419e84613b3c565b614183565b613b3c565b9050919050565b60006141ba8261418d565b9050919050565b60006141cc826141af565b9050919050565b6141dc816141c1565b82525050565b60006020820190506141f760008301846141d3565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614233602083613bfc565b915061423e826141fd565b602082019050919050565b6000602082019050818103600083015261426281614226565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142d282613a9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430457614303614298565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061434982613a9c565b915061435483613a9c565b9250826143645761436361430f565b5b828204905092915050565b600061437a82613a9c565b915061438583613a9c565b925082820261439381613a9c565b915082820484148315176143aa576143a9614298565b5b5092915050565b6000815190506143c081613aa6565b92915050565b6000602082840312156143dc576143db613a5a565b5b60006143ea848285016143b1565b91505092915050565b60006040820190506144086000830185614039565b6144156020830184613b12565b9392505050565b60008151905061442b81613a70565b92915050565b60006020828403121561444757614446613a5a565b5b60006144558482850161441c565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614494601d83613bfc565b915061449f8261445e565b602082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614526602683613bfc565b9150614531826144ca565b604082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006145b8602183613bfc565b91506145c38261455c565b604082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b60006145f982613a9c565b915061460483613a9c565b925082820390508181111561461c5761461b614298565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614658600d83613bfc565b915061466382614622565b602082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006146c4601483613bfc565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b600061470582613a9c565b915061471083613a9c565b925082820190508082111561472857614727614298565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b600061478a603e83613bfc565b91506147958261472e565b604082019050919050565b600060208201905081810360008301526147b98161477d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147f6601b83613bfc565b9150614801826147c0565b602082019050919050565b60006020820190508181036000830152614825816147e9565b9050919050565b6000819050919050565b600061485161484c6148478461482c565b614183565b613a9c565b9050919050565b61486181614836565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61489c81613b5c565b82525050565b60006148ae8383614893565b60208301905092915050565b6000602082019050919050565b60006148d282614867565b6148dc8185614872565b93506148e783614883565b8060005b838110156149185781516148ff88826148a2565b975061490a836148ba565b9250506001810190506148eb565b5085935050505092915050565b600060a08201905061493a6000830188613b12565b6149476020830187614858565b818103604083015261495981866148c7565b90506149686060830185614039565b6149756080830184613b12565b9695505050505050565b600081905092915050565b50565b600061499a60008361497f565b91506149a58261498a565b600082019050919050565b60006149bb8261498d565b9150819050919050565b600060c0820190506149da6000830189614039565b6149e76020830188613b12565b6149f46040830187614858565b614a016060830186614858565b614a0e6080830185614039565b614a1b60a0830184613b12565b979650505050505050565b600080600060608486031215614a3f57614a3e613a5a565b5b6000614a4d868287016143b1565b9350506020614a5e868287016143b1565b9250506040614a6f868287016143b1565b9150509250925092565b6000604082019050614a8e6000830185613b12565b614a9b6020830184613b12565b9392505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614ad8601183613bfc565b9150614ae382614aa2565b602082019050919050565b60006020820190508181036000830152614b0781614acb565b905091905056fea2646970667358221220541c91629afc217ecc3643bbe86547851b4110bd9fec6585581a6441ee08710d64736f6c63430008110033

Deployed Bytecode Sourcemap

5006:14107:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18212:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6849:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9011:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8365:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6767:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8787:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18887:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14044:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8095:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6029:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9305:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18562:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8189:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13906:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9687:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6811:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8535:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3063:148;;;;;;;;;;;;;:::i;:::-;;14261:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17749:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5412:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8451:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13749:149;;;;;;;;;;;;;:::i;:::-;;14792:176;;;;;;;;;;;;;:::i;:::-;;2849:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17162:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8275:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17034:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18376:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6735:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9141:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2469:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9914:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16869:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14577:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13520:77;;;;;;;;;;;;;:::i;:::-;;18712:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13313:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8646:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3219:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13605:136;;;;;;;;;;;;;:::i;:::-;;6665:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18212:156;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18318:8:::1;18304:11;;:22;;;;;;;;;;;;;;;;;;18353:7;18337:13;:23;;;;18212:156:::0;;:::o;6849:57::-;;;;:::o;9011:122::-;9066:4;9090:35;9098:7;9107:17;9090:7;:35::i;:::-;9083:42;;9011:122;;;:::o;8365:80::-;8413:13;8437:5;;;;;;;;;;;;;;;;;8430:12;;8365:80;:::o;6767:31::-;;;;;;;;;;;;;:::o;8787:216::-;8862:4;8914:6;8879:11;:23;8891:10;8879:23;;;;;;;;;;;;;;;:32;8903:7;8879:32;;;;;;;;;;;;;;;:41;;;;8957:7;8936:37;;8945:10;8936:37;;;8966:6;8936:37;;;;;;:::i;:::-;;;;;;;;8991:4;8984:11;;8787:216;;;;:::o;18887:150::-;18967:4;19023:6;18991:29;19011:8;18991:19;:29::i;:::-;:38;18984:45;;18887:150;;;;:::o;14044:209::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14143:9:::1;14139:107;14161:8;:15;14157:1;:19;14139:107;;;14227:5;14197:14;:27;14212:8;14221:1;14212:11;;;;;;;;:::i;:::-;;;;;;;;14197:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14178:3;;;;;:::i;:::-;;;;14139:107;;;;14044:209:::0;;:::o;8095:88::-;8150:7;8168:12;;8161:19;;8095:88;:::o;6029:94::-;;;;:::o;9305:370::-;9405:4;9460:17;9425:11;:19;9437:6;9425:19;;;;;;;;;;;;;;;:31;9445:10;9425:31;;;;;;;;;;;;;;;;:52;9422:186;;9527:69;9563:6;9527:69;;;;;;;;;;;;;;;;;:11;:19;9539:6;9527:19;;;;;;;;;;;;;;;:31;9547:10;9527:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9493:11;:19;9505:6;9493:19;;;;;;;;;;;;;;;:31;9513:10;9493:31;;;;;;;;;;;;;;;:103;;;;9422:186;9627:40;9641:6;9649:9;9660:6;9627:13;:40::i;:::-;9620:47;;9305:370;;;;;:::o;18562:142::-;18615:7;18642:54;18680:15;18690:4;;;;;;;;;;;18680:9;:15::i;:::-;18642:33;18659:15;18669:4;;;;;;;;;;;18659:9;:15::i;:::-;18642:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18635:61;;18562:142;:::o;8189:80::-;8241:5;5339:1;8250:16;;8189:80;:::o;13906:126::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14019:5:::1;13993:14;:23;14008:7;13993:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13906:126:::0;;:::o;9687:219::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9806:4:::1;9791:12;;:19;;;;:::i;:::-;9772:15;;:38;;9764:47;;;::::0;::::1;;9876:4;9857:14;9842:12;;:29;;;;:::i;:::-;9841:39;;;;:::i;:::-;9823:15;:57;;;;9687:219:::0;:::o;6811:31::-;;;;;;;;;;;;;:::o;8535:105::-;8601:7;8619:9;:18;8629:7;8619:18;;;;;;;;;;;;;;;;8612:25;;8535:105;;;:::o;3063:148::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3170:1:::1;3133:40;;3154:6;::::0;::::1;;;;;;;;3133:40;;;;;;;;;;;;3201:1;3184:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3063:148::o:0;14261:308::-;14340:4;14365:15;:27;14381:10;14365:27;;;;;;;;;;;;;;;;;;;;;;;;;14357:36;;;;;;14414:1;14404:6;:11;14401:95;;14446:12;14440:29;;;14478:4;14440:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14431:53;;14401:95;14519:12;14513:28;;;14542:10;14554:6;14513:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14506:55;;14261:308;;;;:::o;5477:61::-;;;;:::o;17749:455::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17978:22:::1;17954:21;;:46;;;;;;;;;;;;;;;;;;18034:21;18011:20;;:44;;;;;;;;;;;;;;;;;;18087:19;18066:18;;:40;;;;;;;;;;;;;;;;;;18135:16;18117:15;;:34;;;;;;;;;;;;;;;;;;18180:16;18162:15;;:34;;;;;;;;;;;;;;;;;;17749:455:::0;;;;;:::o;5412:58::-;;;;:::o;8451:78::-;8503:7;8520;:5;:7::i;:::-;8513:14;;8451:78;:::o;13749:149::-;13798:15;:27;13814:10;13798:27;;;;;;;;;;;;;;;;;;;;;;;;;13790:36;;;;;;13845:10;13837:28;;:51;13866:21;13837:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:149::o;14792:176::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14859:4:::1;14845:11;;:18;;;;;;;;;;;;;;;;;;14890:3;14874:13;:19;;;;14921:3;14904:14;:20;;;;14956:4;14935:18;:25;;;;14792:176::o:0;2849:79::-;2887:7;2914:6;;;;;;;;;;;2907:13;;2849:79;:::o;17162:579::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17363:13:::1;17348:12;:28;;;;17397:8;17387:7;:18;;;;17431:13;17416:12;:28;;;;17468:11;17455:10;:24;;;;17500:8;17490:7;:18;;;;17530:77;17598:8;17530:63;17581:11;17530:46;17562:13;17530:27;17548:8;17530:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;:67;;:77;;;;:::i;:::-;17519:8;:88;;;;17635:15;17618:14;:32;;;;17697:1;17680:14;;:18;;;;:::i;:::-;17669:8;;:29;17661:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17162:579:::0;;;;;;:::o;8275:84::-;8325:13;8349:7;;;;;;;;;;;;;;;;;8342:14;;8275:84;:::o;17034:120::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17140:6:::1;17114:15;:23;17130:6;17114:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17034:120:::0;;:::o;18376:174::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18483:7:::1;18465:15;:25;;;;18530:12;18501:26;:41;;;;18376:174:::0;;:::o;6735:19::-;;;;;;;;;;;;;:::o;9141:156::-;9221:4;9245:44;9259:10;9271:9;9282:6;9245:13;:44::i;:::-;9238:51;;9141:156;;;;:::o;2469:21::-;;;;;;;;;;;;:::o;9914:187::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10024:4:::1;10009:12;;:19;;;;:::i;:::-;9993:12;;:35;;9985:44;;;::::0;::::1;;10089:4;10072:12;10057;;:27;;;;:::i;:::-;10056:37;;;;:::i;:::-;10041:12;:52;;;;9914:187:::0;:::o;16869:157::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16969:6:::1;16947:11;:19;16959:6;16947:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17012:6;16986:15;:23;17002:6;16986:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16869:157:::0;;:::o;14577:207::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14686:5:::1;14669:14;:22;;;;14718:4;14702:13;:20;;;;14754:6;14733:18;:27;;;;14577:207:::0;;;:::o;13520:77::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13573:10:::1;:8;:10::i;:::-;13520:77::o:0;18712:167::-;18780:7;18807:64;18848:22;:20;:22::i;:::-;18807:36;18820:22;18840:1;18820:15;18830:4;;;;;;;;;;;18820:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18807:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;18800:71;;18712:167;;;:::o;13313:198::-;13382:17;13402:21;13382:41;;13442:15;;;;;;;;;;;13434:33;;:69;13499:3;13480:16;13468:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13434:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13371:140;13313:198;:::o;8646:133::-;8730:7;8748:11;:19;8760:6;8748:19;;;;;;;;;;;;;;;:28;8768:7;8748:28;;;;;;;;;;;;;;;;8741:35;;8646:133;;;;:::o;3219:244::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3328:1:::1;3308:22;;:8;:22;;::::0;3300:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3418:8;3389:38;;3410:6;::::0;::::1;;;;;;;;3389:38;;;;;;;;;;;;3447:8;3438:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3219:244:::0;:::o;13605:136::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13681:12:::1;;13663:15;:30;;;;13719:12;;13704;:27;;;;13605:136::o:0;6665:24::-;;;;;;;;;;;;;:::o;648:250::-;706:7;735:1;730;:6;726:47;;760:1;753:8;;;;726:47;785:9;801:1;797;:5;;;;:::i;:::-;785:17;;830:1;825;821;:5;;;;:::i;:::-;:10;813:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;889:1;882:8;;;648:250;;;;;:::o;904:132::-;962:7;989:39;993:1;996;989:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;982:46;;904:132;;;;:::o;2190:115::-;2243:15;2286:10;2271:26;;2190:115;:::o;450:192::-;536:7;569:1;564;:6;;572:12;556:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;596:9;612:1;608;:5;;;;:::i;:::-;596:17;;633:1;626:8;;;450:192;;;;;:::o;10118:1329::-;10210:4;10236:14;:22;10251:6;10236:22;;;;;;;;;;;;;;;;;;;;;;;;;10235:23;:53;;;;;10263:14;:25;10278:9;10263:25;;;;;;;;;;;;;;;;;;;;;;;;;10262:26;10235:53;10227:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10322:6;;;;;;;;;;;10319:63;;;10338:41;10353:6;10361:9;10372:6;10338:14;:41::i;:::-;10331:48;;;;10319:63;10398:14;:22;10413:6;10398:22;;;;;;;;;;;;;;;;;;;;;;;;;10397:23;:53;;;;;10425:14;:25;10440:9;10425:25;;;;;;;;;;;;;;;;;;;;;;;;;10424:26;10397:53;10394:140;;;10474:11;;;;;;;;;;;10466:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10394:140;10568:14;:22;10583:6;10568:22;;;;;;;;;;;;;;;;;;;;;;;;;10567:23;:53;;;;;10615:4;10594:26;;:9;:26;;;;10567:53;:84;;;;;10646:4;;;;;;;;;;;10625:26;;:9;:26;;;;10567:84;:105;;;;;10668:4;;;;;;;;;;;10655:17;;:9;:17;;;;10567:105;:137;;;;;10689:15;;;;;;;;;;;10676:28;;:9;:28;;;;10567:137;:174;;;;;10721:20;;;;;;;;;;;10708:33;;:9;:33;;;;10567:174;:205;;;;;10746:15;:26;10762:9;10746:26;;;;;;;;;;;;;;;;;;;;;;;;;10745:27;10567:205;10563:397;;;10788:18;10809:20;10819:9;10809;:20::i;:::-;10788:41;;10877:15;;10866:6;10853:10;:19;;;;:::i;:::-;10852:40;;10844:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10773:187;10563:397;10981:28;10994:6;11002;10981:12;:28::i;:::-;11026:16;:14;:16::i;:::-;11023:35;;;11045:10;:8;:10::i;:::-;11023:35;11098:53;11120:6;11098:53;;;;;;;;;;;;;;;;;:9;:17;11108:6;11098:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11078:9;:17;11088:6;11078:17;;;;;;;;;;;;;;;:73;;;;11164:22;11190:11;:19;11202:6;11190:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11213:11;:22;11225:9;11213:22;;;;;;;;;;;;;;;;;;;;;;;;;11190:45;11189:93;;11248:34;11256:6;11264;11272:9;11248:7;:34::i;:::-;11189:93;;;11239:6;11189:93;11164:118;;11316:40;11341:14;11316:9;:20;11326:9;11316:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11293:9;:20;11303:9;11293:20;;;;;;;;;;;;;;;:63;;;;11391:9;11374:43;;11383:6;11374:43;;;11402:14;11374:43;;;;;;:::i;:::-;;;;;;;;11435:4;11428:11;;;10118:1329;;;;;;:::o;308:136::-;366:7;393:43;397:1;400;393:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;386:50;;308:136;;;;:::o;121:181::-;179:7;199:9;215:1;211;:5;;;;:::i;:::-;199:17;;240:1;235;:6;;227:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;293:1;286:8;;;121:181;;;;:::o;14984:1877::-;6963:4;6954:6;;:13;;;;;;;;;;;;;;;;;;15033:27:::1;15063:60;15079:15;;15096:26;;15063:15;:60::i;:::-;:79;;15130:12;;15063:79;;;15126:1;15063:79;15033:109;;15153:23;15179:59;15236:1;15179:52;15222:8;;15179:38;15197:19;15179:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;15153:85;;15249:20;15272:34;15290:15;15272:13;;:17;;:34;;;;:::i;:::-;15249:57;;15319:21;15357:1;15343:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15319:40;;15388:4;15370;15375:1;15370:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15414:4;;;;;;;;;;;15404;15409:1;15404:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15431:21;15455;15431:45;;15489:6;;;;;;;;;;;:57;;;15561:12;15588:1;15604:4;15631;15651:15;15489:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15690:17;15710:40;15736:13;15710:21;:25;;:40;;;;:::i;:::-;15690:60;;15763:19;15785:40;15798:26;15822:1;15798:19;:23;;:26;;;;:::i;:::-;15785:8;;:12;;:40;;;;:::i;:::-;15763:62;;15846:26;15875:58;15931:1;15875:51;15914:11;15875:34;15889:19;15875:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15846:87;;15944:26;15973:44;16005:11;15973:27;15987:12;;15973:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;15944:73;;16028:21;16052:39;16079:11;16052:22;16066:7;;16052:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;16028:63;;16102:24;16129:42;16159:11;16129:25;16143:10;;16129:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;16102:69;;16185:15;16213:20;;;;;;;;;;;16205:34;;16247:18;16205:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16184:86;;;16305:18;;;;;;;;;;;16297:32;;16337:16;16297:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16281:77;;;;;16393:15;;;;;;;;;;;16385:29;;16422:13;16385:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16369:71;;;;;16474:5;16461:18;;16513:1;16495:15;:19;16492:362;;;16530:6;;;;;;;;;;;:22;;;16560:18;16606:4;16630:15;16664:1;16684::::0;16704:21:::1;;;;;;;;;;;16744:15;16530:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16794:48;16806:18;16826:15;16794:48;;;;;;;:::i;:::-;;;;;;;;16492:362;15022:1839;;;;;;;;;;;;6981:5:::0;6972:6;;:14;;;;;;;;;;;;;;;;;;14984:1877::o;1042:189::-;1128:7;1160:1;1156;:5;1163:12;1148:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1187:9;1203:1;1199;:5;;;;:::i;:::-;1187:17;;1222:1;1215:8;;;1042:189;;;;;:::o;11459:330::-;11552:4;11589:53;11611:6;11589:53;;;;;;;;;;;;;;;;;:9;:17;11599:6;11589:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11569:9;:17;11579:6;11569:17;;;;;;;;;;;;;;;:73;;;;11676:32;11701:6;11676:9;:20;11686:9;11676:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11653:9;:20;11663:9;11653:20;;;;;;;;;;;;;;;:55;;;;11741:9;11724:35;;11733:6;11724:35;;;11752:6;11724:35;;;;;;:::i;:::-;;;;;;;;11777:4;11770:11;;11459:330;;;;;:::o;11797:166::-;11894:12;;11884:6;:22;;:49;;;;11910:15;:23;11926:6;11910:23;;;;;;;;;;;;;;;;;;;;;;;;;11884:49;11876:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11797:166;;:::o;13108:197::-;13157:4;13195;;;;;;;;;;;13181:18;;:10;:18;;;;:38;;;;;13213:6;;;;;;;;;;;13212:7;13181:38;:62;;;;;13232:11;;;;;;;;;;;13181:62;:116;;;;;13284:13;;13256:9;:24;13274:4;13256:24;;;;;;;;;;;;;;;;:41;;13181:116;13174:123;;13108:197;:::o;12093:1007::-;12179:7;12209:18;12230;;12209:39;;12277:4;;;;;;;;;;;12264:17;;:9;:17;;;12261:154;;12311:14;;12298:27;;12261:154;;;12356:4;;;;;;;;;;;12346:14;;:6;:14;;;12343:72;;12390:13;;12377:26;;12343:72;12261:154;12427:17;12447:62;12505:3;12488:14;;:20;;;;:::i;:::-;12447:36;12472:10;12447:20;12458:8;;12447:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;12427:82;;12520:18;12541:36;12568:8;;12541:22;12555:7;;12541:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;12520:57;;12588:22;12613:25;12627:10;12613:9;:13;;:25;;;;:::i;:::-;12588:50;;12678:44;12707:14;12678:9;:24;12696:4;12678:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12651:9;:24;12669:4;12651:24;;;;;;;;;;;;;;;:71;;;;12762:42;12793:10;12762:9;:26;12772:15;;;;;;;;;;;12762:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;12733:9;:26;12743:15;;;;;;;;;;;12733:26;;;;;;;;;;;;;;;:71;;;;12845:4;12820:47;;12829:6;12820:47;;;12852:14;12820:47;;;;;;:::i;:::-;;;;;;;;12914:1;12901:10;:14;12898:154;;;12946:28;12963:10;12946:12;;:16;;:28;;;;:::i;:::-;12931:12;:43;;;;13011:4;;;;;;;;;;;12994:34;;13003:6;12994:34;;;13017:10;12994:34;;;;;;:::i;:::-;;;;;;;;12898:154;13071:21;13082:9;13071:6;:10;;:21;;;;:::i;:::-;13064:28;;;;;;12093:1007;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:77::-;728:7;757:5;746:16;;691:77;;;:::o;774:122::-;847:24;865:5;847:24;:::i;:::-;840:5;837:35;827:63;;886:1;883;876:12;827:63;774:122;:::o;902:139::-;948:5;986:6;973:20;964:29;;1002:33;1029:5;1002:33;:::i;:::-;902:139;;;;:::o;1047:468::-;1112:6;1120;1169:2;1157:9;1148:7;1144:23;1140:32;1137:119;;;1175:79;;:::i;:::-;1137:119;1295:1;1320:50;1362:7;1353:6;1342:9;1338:22;1320:50;:::i;:::-;1310:60;;1266:114;1419:2;1445:53;1490:7;1481:6;1470:9;1466:22;1445:53;:::i;:::-;1435:63;;1390:118;1047:468;;;;;:::o;1521:118::-;1608:24;1626:5;1608:24;:::i;:::-;1603:3;1596:37;1521:118;;:::o;1645:222::-;1738:4;1776:2;1765:9;1761:18;1753:26;;1789:71;1857:1;1846:9;1842:17;1833:6;1789:71;:::i;:::-;1645:222;;;;:::o;1873:126::-;1910:7;1950:42;1943:5;1939:54;1928:65;;1873:126;;;:::o;2005:96::-;2042:7;2071:24;2089:5;2071:24;:::i;:::-;2060:35;;2005:96;;;:::o;2107:122::-;2180:24;2198:5;2180:24;:::i;:::-;2173:5;2170:35;2160:63;;2219:1;2216;2209:12;2160:63;2107:122;:::o;2235:139::-;2281:5;2319:6;2306:20;2297:29;;2335:33;2362:5;2335:33;:::i;:::-;2235:139;;;;:::o;2380:329::-;2439:6;2488:2;2476:9;2467:7;2463:23;2459:32;2456:119;;;2494:79;;:::i;:::-;2456:119;2614:1;2639:53;2684:7;2675:6;2664:9;2660:22;2639:53;:::i;:::-;2629:63;;2585:117;2380:329;;;;:::o;2715:109::-;2796:21;2811:5;2796:21;:::i;:::-;2791:3;2784:34;2715:109;;:::o;2830:210::-;2917:4;2955:2;2944:9;2940:18;2932:26;;2968:65;3030:1;3019:9;3015:17;3006:6;2968:65;:::i;:::-;2830:210;;;;:::o;3046:99::-;3098:6;3132:5;3126:12;3116:22;;3046:99;;;:::o;3151:169::-;3235:11;3269:6;3264:3;3257:19;3309:4;3304:3;3300:14;3285:29;;3151:169;;;;:::o;3326:246::-;3407:1;3417:113;3431:6;3428:1;3425:13;3417:113;;;3516:1;3511:3;3507:11;3501:18;3497:1;3492:3;3488:11;3481:39;3453:2;3450:1;3446:10;3441:15;;3417:113;;;3564:1;3555:6;3550:3;3546:16;3539:27;3388:184;3326:246;;;:::o;3578:102::-;3619:6;3670:2;3666:7;3661:2;3654:5;3650:14;3646:28;3636:38;;3578:102;;;:::o;3686:377::-;3774:3;3802:39;3835:5;3802:39;:::i;:::-;3857:71;3921:6;3916:3;3857:71;:::i;:::-;3850:78;;3937:65;3995:6;3990:3;3983:4;3976:5;3972:16;3937:65;:::i;:::-;4027:29;4049:6;4027:29;:::i;:::-;4022:3;4018:39;4011:46;;3778:285;3686:377;;;;:::o;4069:313::-;4182:4;4220:2;4209:9;4205:18;4197:26;;4269:9;4263:4;4259:20;4255:1;4244:9;4240:17;4233:47;4297:78;4370:4;4361:6;4297:78;:::i;:::-;4289:86;;4069:313;;;;:::o;4388:474::-;4456:6;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4388:474;;;;;:::o;4868:::-;4936:6;4944;4993:2;4981:9;4972:7;4968:23;4964:32;4961:119;;;4999:79;;:::i;:::-;4961:119;5119:1;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5090:117;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4868:474;;;;;:::o;5348:117::-;5457:1;5454;5447:12;5471:180;5519:77;5516:1;5509:88;5616:4;5613:1;5606:15;5640:4;5637:1;5630:15;5657:281;5740:27;5762:4;5740:27;:::i;:::-;5732:6;5728:40;5870:6;5858:10;5855:22;5834:18;5822:10;5819:34;5816:62;5813:88;;;5881:18;;:::i;:::-;5813:88;5921:10;5917:2;5910:22;5700:238;5657:281;;:::o;5944:129::-;5978:6;6005:20;;:::i;:::-;5995:30;;6034:33;6062:4;6054:6;6034:33;:::i;:::-;5944:129;;;:::o;6079:311::-;6156:4;6246:18;6238:6;6235:30;6232:56;;;6268:18;;:::i;:::-;6232:56;6318:4;6310:6;6306:17;6298:25;;6378:4;6372;6368:15;6360:23;;6079:311;;;:::o;6396:117::-;6505:1;6502;6495:12;6536:710;6632:5;6657:81;6673:64;6730:6;6673:64;:::i;:::-;6657:81;:::i;:::-;6648:90;;6758:5;6787:6;6780:5;6773:21;6821:4;6814:5;6810:16;6803:23;;6874:4;6866:6;6862:17;6854:6;6850:30;6903:3;6895:6;6892:15;6889:122;;;6922:79;;:::i;:::-;6889:122;7037:6;7020:220;7054:6;7049:3;7046:15;7020:220;;;7129:3;7158:37;7191:3;7179:10;7158:37;:::i;:::-;7153:3;7146:50;7225:4;7220:3;7216:14;7209:21;;7096:144;7080:4;7075:3;7071:14;7064:21;;7020:220;;;7024:21;6638:608;;6536:710;;;;;:::o;7269:370::-;7340:5;7389:3;7382:4;7374:6;7370:17;7366:27;7356:122;;7397:79;;:::i;:::-;7356:122;7514:6;7501:20;7539:94;7629:3;7621:6;7614:4;7606:6;7602:17;7539:94;:::i;:::-;7530:103;;7346:293;7269:370;;;;:::o;7645:678::-;7735:6;7743;7792:2;7780:9;7771:7;7767:23;7763:32;7760:119;;;7798:79;;:::i;:::-;7760:119;7946:1;7935:9;7931:17;7918:31;7976:18;7968:6;7965:30;7962:117;;;7998:79;;:::i;:::-;7962:117;8103:78;8173:7;8164:6;8153:9;8149:22;8103:78;:::i;:::-;8093:88;;7889:302;8230:2;8256:50;8298:7;8289:6;8278:9;8274:22;8256:50;:::i;:::-;8246:60;;8201:115;7645:678;;;;;:::o;8329:619::-;8406:6;8414;8422;8471:2;8459:9;8450:7;8446:23;8442:32;8439:119;;;8477:79;;:::i;:::-;8439:119;8597:1;8622:53;8667:7;8658:6;8647:9;8643:22;8622:53;:::i;:::-;8612:63;;8568:117;8724:2;8750:53;8795:7;8786:6;8775:9;8771:22;8750:53;:::i;:::-;8740:63;;8695:118;8852:2;8878:53;8923:7;8914:6;8903:9;8899:22;8878:53;:::i;:::-;8868:63;;8823:118;8329:619;;;;;:::o;8954:86::-;8989:7;9029:4;9022:5;9018:16;9007:27;;8954:86;;;:::o;9046:112::-;9129:22;9145:5;9129:22;:::i;:::-;9124:3;9117:35;9046:112;;:::o;9164:214::-;9253:4;9291:2;9280:9;9276:18;9268:26;;9304:67;9368:1;9357:9;9353:17;9344:6;9304:67;:::i;:::-;9164:214;;;;:::o;9384:468::-;9449:6;9457;9506:2;9494:9;9485:7;9481:23;9477:32;9474:119;;;9512:79;;:::i;:::-;9474:119;9632:1;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9603:117;9759:2;9785:50;9827:7;9818:6;9807:9;9803:22;9785:50;:::i;:::-;9775:60;;9730:115;9384:468;;;;;:::o;9858:329::-;9917:6;9966:2;9954:9;9945:7;9941:23;9937:32;9934:119;;;9972:79;;:::i;:::-;9934:119;10092:1;10117:53;10162:7;10153:6;10142:9;10138:22;10117:53;:::i;:::-;10107:63;;10063:117;9858:329;;;;:::o;10193:911::-;10288:6;10296;10304;10312;10320;10369:3;10357:9;10348:7;10344:23;10340:33;10337:120;;;10376:79;;:::i;:::-;10337:120;10496:1;10521:53;10566:7;10557:6;10546:9;10542:22;10521:53;:::i;:::-;10511:63;;10467:117;10623:2;10649:53;10694:7;10685:6;10674:9;10670:22;10649:53;:::i;:::-;10639:63;;10594:118;10751:2;10777:53;10822:7;10813:6;10802:9;10798:22;10777:53;:::i;:::-;10767:63;;10722:118;10879:2;10905:53;10950:7;10941:6;10930:9;10926:22;10905:53;:::i;:::-;10895:63;;10850:118;11007:3;11034:53;11079:7;11070:6;11059:9;11055:22;11034:53;:::i;:::-;11024:63;;10978:119;10193:911;;;;;;;;:::o;11110:118::-;11197:24;11215:5;11197:24;:::i;:::-;11192:3;11185:37;11110:118;;:::o;11234:222::-;11327:4;11365:2;11354:9;11350:18;11342:26;;11378:71;11446:1;11435:9;11431:17;11422:6;11378:71;:::i;:::-;11234:222;;;;:::o;11462:1057::-;11566:6;11574;11582;11590;11598;11606;11655:3;11643:9;11634:7;11630:23;11626:33;11623:120;;;11662:79;;:::i;:::-;11623:120;11782:1;11807:53;11852:7;11843:6;11832:9;11828:22;11807:53;:::i;:::-;11797:63;;11753:117;11909:2;11935:53;11980:7;11971:6;11960:9;11956:22;11935:53;:::i;:::-;11925:63;;11880:118;12037:2;12063:53;12108:7;12099:6;12088:9;12084:22;12063:53;:::i;:::-;12053:63;;12008:118;12165:2;12191:53;12236:7;12227:6;12216:9;12212:22;12191:53;:::i;:::-;12181:63;;12136:118;12293:3;12320:53;12365:7;12356:6;12345:9;12341:22;12320:53;:::i;:::-;12310:63;;12264:119;12422:3;12449:53;12494:7;12485:6;12474:9;12470:22;12449:53;:::i;:::-;12439:63;;12393:119;11462:1057;;;;;;;;:::o;12525:619::-;12602:6;12610;12618;12667:2;12655:9;12646:7;12642:23;12638:32;12635:119;;;12673:79;;:::i;:::-;12635:119;12793:1;12818:53;12863:7;12854:6;12843:9;12839:22;12818:53;:::i;:::-;12808:63;;12764:117;12920:2;12946:53;12991:7;12982:6;12971:9;12967:22;12946:53;:::i;:::-;12936:63;;12891:118;13048:2;13074:53;13119:7;13110:6;13099:9;13095:22;13074:53;:::i;:::-;13064:63;;13019:118;12525:619;;;;;:::o;13150:474::-;13218:6;13226;13275:2;13263:9;13254:7;13250:23;13246:32;13243:119;;;13281:79;;:::i;:::-;13243:119;13401:1;13426:53;13471:7;13462:6;13451:9;13447:22;13426:53;:::i;:::-;13416:63;;13372:117;13528:2;13554:53;13599:7;13590:6;13579:9;13575:22;13554:53;:::i;:::-;13544:63;;13499:118;13150:474;;;;;:::o;13630:60::-;13658:3;13679:5;13672:12;;13630:60;;;:::o;13696:142::-;13746:9;13779:53;13797:34;13806:24;13824:5;13806:24;:::i;:::-;13797:34;:::i;:::-;13779:53;:::i;:::-;13766:66;;13696:142;;;:::o;13844:126::-;13894:9;13927:37;13958:5;13927:37;:::i;:::-;13914:50;;13844:126;;;:::o;13976:144::-;14044:9;14077:37;14108:5;14077:37;:::i;:::-;14064:50;;13976:144;;;:::o;14126:167::-;14231:55;14280:5;14231:55;:::i;:::-;14226:3;14219:68;14126:167;;:::o;14299:258::-;14410:4;14448:2;14437:9;14433:18;14425:26;;14461:89;14547:1;14536:9;14532:17;14523:6;14461:89;:::i;:::-;14299:258;;;;:::o;14563:182::-;14703:34;14699:1;14691:6;14687:14;14680:58;14563:182;:::o;14751:366::-;14893:3;14914:67;14978:2;14973:3;14914:67;:::i;:::-;14907:74;;14990:93;15079:3;14990:93;:::i;:::-;15108:2;15103:3;15099:12;15092:19;;14751:366;;;:::o;15123:419::-;15289:4;15327:2;15316:9;15312:18;15304:26;;15376:9;15370:4;15366:20;15362:1;15351:9;15347:17;15340:47;15404:131;15530:4;15404:131;:::i;:::-;15396:139;;15123:419;;;:::o;15548:180::-;15596:77;15593:1;15586:88;15693:4;15690:1;15683:15;15717:4;15714:1;15707:15;15734:180;15782:77;15779:1;15772:88;15879:4;15876:1;15869:15;15903:4;15900:1;15893:15;15920:233;15959:3;15982:24;16000:5;15982:24;:::i;:::-;15973:33;;16028:66;16021:5;16018:77;16015:103;;16098:18;;:::i;:::-;16015:103;16145:1;16138:5;16134:13;16127:20;;15920:233;;;:::o;16159:180::-;16207:77;16204:1;16197:88;16304:4;16301:1;16294:15;16328:4;16325:1;16318:15;16345:185;16385:1;16402:20;16420:1;16402:20;:::i;:::-;16397:25;;16436:20;16454:1;16436:20;:::i;:::-;16431:25;;16475:1;16465:35;;16480:18;;:::i;:::-;16465:35;16522:1;16519;16515:9;16510:14;;16345:185;;;;:::o;16536:410::-;16576:7;16599:20;16617:1;16599:20;:::i;:::-;16594:25;;16633:20;16651:1;16633:20;:::i;:::-;16628:25;;16688:1;16685;16681:9;16710:30;16728:11;16710:30;:::i;:::-;16699:41;;16889:1;16880:7;16876:15;16873:1;16870:22;16850:1;16843:9;16823:83;16800:139;;16919:18;;:::i;:::-;16800:139;16584:362;16536:410;;;;:::o;16952:143::-;17009:5;17040:6;17034:13;17025:22;;17056:33;17083:5;17056:33;:::i;:::-;16952:143;;;;:::o;17101:351::-;17171:6;17220:2;17208:9;17199:7;17195:23;17191:32;17188:119;;;17226:79;;:::i;:::-;17188:119;17346:1;17371:64;17427:7;17418:6;17407:9;17403:22;17371:64;:::i;:::-;17361:74;;17317:128;17101:351;;;;:::o;17458:332::-;17579:4;17617:2;17606:9;17602:18;17594:26;;17630:71;17698:1;17687:9;17683:17;17674:6;17630:71;:::i;:::-;17711:72;17779:2;17768:9;17764:18;17755:6;17711:72;:::i;:::-;17458:332;;;;;:::o;17796:137::-;17850:5;17881:6;17875:13;17866:22;;17897:30;17921:5;17897:30;:::i;:::-;17796:137;;;;:::o;17939:345::-;18006:6;18055:2;18043:9;18034:7;18030:23;18026:32;18023:119;;;18061:79;;:::i;:::-;18023:119;18181:1;18206:61;18259:7;18250:6;18239:9;18235:22;18206:61;:::i;:::-;18196:71;;18152:125;17939:345;;;;:::o;18290:179::-;18430:31;18426:1;18418:6;18414:14;18407:55;18290:179;:::o;18475:366::-;18617:3;18638:67;18702:2;18697:3;18638:67;:::i;:::-;18631:74;;18714:93;18803:3;18714:93;:::i;:::-;18832:2;18827:3;18823:12;18816:19;;18475:366;;;:::o;18847:419::-;19013:4;19051:2;19040:9;19036:18;19028:26;;19100:9;19094:4;19090:20;19086:1;19075:9;19071:17;19064:47;19128:131;19254:4;19128:131;:::i;:::-;19120:139;;18847:419;;;:::o;19272:225::-;19412:34;19408:1;19400:6;19396:14;19389:58;19481:8;19476:2;19468:6;19464:15;19457:33;19272:225;:::o;19503:366::-;19645:3;19666:67;19730:2;19725:3;19666:67;:::i;:::-;19659:74;;19742:93;19831:3;19742:93;:::i;:::-;19860:2;19855:3;19851:12;19844:19;;19503:366;;;:::o;19875:419::-;20041:4;20079:2;20068:9;20064:18;20056:26;;20128:9;20122:4;20118:20;20114:1;20103:9;20099:17;20092:47;20156:131;20282:4;20156:131;:::i;:::-;20148:139;;19875:419;;;:::o;20300:220::-;20440:34;20436:1;20428:6;20424:14;20417:58;20509:3;20504:2;20496:6;20492:15;20485:28;20300:220;:::o;20526:366::-;20668:3;20689:67;20753:2;20748:3;20689:67;:::i;:::-;20682:74;;20765:93;20854:3;20765:93;:::i;:::-;20883:2;20878:3;20874:12;20867:19;;20526:366;;;:::o;20898:419::-;21064:4;21102:2;21091:9;21087:18;21079:26;;21151:9;21145:4;21141:20;21137:1;21126:9;21122:17;21115:47;21179:131;21305:4;21179:131;:::i;:::-;21171:139;;20898:419;;;:::o;21323:194::-;21363:4;21383:20;21401:1;21383:20;:::i;:::-;21378:25;;21417:20;21435:1;21417:20;:::i;:::-;21412:25;;21461:1;21458;21454:9;21446:17;;21485:1;21479:4;21476:11;21473:37;;;21490:18;;:::i;:::-;21473:37;21323:194;;;;:::o;21523:163::-;21663:15;21659:1;21651:6;21647:14;21640:39;21523:163;:::o;21692:366::-;21834:3;21855:67;21919:2;21914:3;21855:67;:::i;:::-;21848:74;;21931:93;22020:3;21931:93;:::i;:::-;22049:2;22044:3;22040:12;22033:19;;21692:366;;;:::o;22064:419::-;22230:4;22268:2;22257:9;22253:18;22245:26;;22317:9;22311:4;22307:20;22303:1;22292:9;22288:17;22281:47;22345:131;22471:4;22345:131;:::i;:::-;22337:139;;22064:419;;;:::o;22489:170::-;22629:22;22625:1;22617:6;22613:14;22606:46;22489:170;:::o;22665:366::-;22807:3;22828:67;22892:2;22887:3;22828:67;:::i;:::-;22821:74;;22904:93;22993:3;22904:93;:::i;:::-;23022:2;23017:3;23013:12;23006:19;;22665:366;;;:::o;23037:419::-;23203:4;23241:2;23230:9;23226:18;23218:26;;23290:9;23284:4;23280:20;23276:1;23265:9;23261:17;23254:47;23318:131;23444:4;23318:131;:::i;:::-;23310:139;;23037:419;;;:::o;23462:191::-;23502:3;23521:20;23539:1;23521:20;:::i;:::-;23516:25;;23555:20;23573:1;23555:20;:::i;:::-;23550:25;;23598:1;23595;23591:9;23584:16;;23619:3;23616:1;23613:10;23610:36;;;23626:18;;:::i;:::-;23610:36;23462:191;;;;:::o;23659:249::-;23799:34;23795:1;23787:6;23783:14;23776:58;23868:32;23863:2;23855:6;23851:15;23844:57;23659:249;:::o;23914:366::-;24056:3;24077:67;24141:2;24136:3;24077:67;:::i;:::-;24070:74;;24153:93;24242:3;24153:93;:::i;:::-;24271:2;24266:3;24262:12;24255:19;;23914:366;;;:::o;24286:419::-;24452:4;24490:2;24479:9;24475:18;24467:26;;24539:9;24533:4;24529:20;24525:1;24514:9;24510:17;24503:47;24567:131;24693:4;24567:131;:::i;:::-;24559:139;;24286:419;;;:::o;24711:177::-;24851:29;24847:1;24839:6;24835:14;24828:53;24711:177;:::o;24894:366::-;25036:3;25057:67;25121:2;25116:3;25057:67;:::i;:::-;25050:74;;25133:93;25222:3;25133:93;:::i;:::-;25251:2;25246:3;25242:12;25235:19;;24894:366;;;:::o;25266:419::-;25432:4;25470:2;25459:9;25455:18;25447:26;;25519:9;25513:4;25509:20;25505:1;25494:9;25490:17;25483:47;25547:131;25673:4;25547:131;:::i;:::-;25539:139;;25266:419;;;:::o;25691:85::-;25736:7;25765:5;25754:16;;25691:85;;;:::o;25782:158::-;25840:9;25873:61;25891:42;25900:32;25926:5;25900:32;:::i;:::-;25891:42;:::i;:::-;25873:61;:::i;:::-;25860:74;;25782:158;;;:::o;25946:147::-;26041:45;26080:5;26041:45;:::i;:::-;26036:3;26029:58;25946:147;;:::o;26099:114::-;26166:6;26200:5;26194:12;26184:22;;26099:114;;;:::o;26219:184::-;26318:11;26352:6;26347:3;26340:19;26392:4;26387:3;26383:14;26368:29;;26219:184;;;;:::o;26409:132::-;26476:4;26499:3;26491:11;;26529:4;26524:3;26520:14;26512:22;;26409:132;;;:::o;26547:108::-;26624:24;26642:5;26624:24;:::i;:::-;26619:3;26612:37;26547:108;;:::o;26661:179::-;26730:10;26751:46;26793:3;26785:6;26751:46;:::i;:::-;26829:4;26824:3;26820:14;26806:28;;26661:179;;;;:::o;26846:113::-;26916:4;26948;26943:3;26939:14;26931:22;;26846:113;;;:::o;26995:732::-;27114:3;27143:54;27191:5;27143:54;:::i;:::-;27213:86;27292:6;27287:3;27213:86;:::i;:::-;27206:93;;27323:56;27373:5;27323:56;:::i;:::-;27402:7;27433:1;27418:284;27443:6;27440:1;27437:13;27418:284;;;27519:6;27513:13;27546:63;27605:3;27590:13;27546:63;:::i;:::-;27539:70;;27632:60;27685:6;27632:60;:::i;:::-;27622:70;;27478:224;27465:1;27462;27458:9;27453:14;;27418:284;;;27422:14;27718:3;27711:10;;27119:608;;;26995:732;;;;:::o;27733:831::-;27996:4;28034:3;28023:9;28019:19;28011:27;;28048:71;28116:1;28105:9;28101:17;28092:6;28048:71;:::i;:::-;28129:80;28205:2;28194:9;28190:18;28181:6;28129:80;:::i;:::-;28256:9;28250:4;28246:20;28241:2;28230:9;28226:18;28219:48;28284:108;28387:4;28378:6;28284:108;:::i;:::-;28276:116;;28402:72;28470:2;28459:9;28455:18;28446:6;28402:72;:::i;:::-;28484:73;28552:3;28541:9;28537:19;28528:6;28484:73;:::i;:::-;27733:831;;;;;;;;:::o;28570:147::-;28671:11;28708:3;28693:18;;28570:147;;;;:::o;28723:114::-;;:::o;28843:398::-;29002:3;29023:83;29104:1;29099:3;29023:83;:::i;:::-;29016:90;;29115:93;29204:3;29115:93;:::i;:::-;29233:1;29228:3;29224:11;29217:18;;28843:398;;;:::o;29247:379::-;29431:3;29453:147;29596:3;29453:147;:::i;:::-;29446:154;;29617:3;29610:10;;29247:379;;;:::o;29632:807::-;29881:4;29919:3;29908:9;29904:19;29896:27;;29933:71;30001:1;29990:9;29986:17;29977:6;29933:71;:::i;:::-;30014:72;30082:2;30071:9;30067:18;30058:6;30014:72;:::i;:::-;30096:80;30172:2;30161:9;30157:18;30148:6;30096:80;:::i;:::-;30186;30262:2;30251:9;30247:18;30238:6;30186:80;:::i;:::-;30276:73;30344:3;30333:9;30329:19;30320:6;30276:73;:::i;:::-;30359;30427:3;30416:9;30412:19;30403:6;30359:73;:::i;:::-;29632:807;;;;;;;;;:::o;30445:663::-;30533:6;30541;30549;30598:2;30586:9;30577:7;30573:23;30569:32;30566:119;;;30604:79;;:::i;:::-;30566:119;30724:1;30749:64;30805:7;30796:6;30785:9;30781:22;30749:64;:::i;:::-;30739:74;;30695:128;30862:2;30888:64;30944:7;30935:6;30924:9;30920:22;30888:64;:::i;:::-;30878:74;;30833:129;31001:2;31027:64;31083:7;31074:6;31063:9;31059:22;31027:64;:::i;:::-;31017:74;;30972:129;30445:663;;;;;:::o;31114:332::-;31235:4;31273:2;31262:9;31258:18;31250:26;;31286:71;31354:1;31343:9;31339:17;31330:6;31286:71;:::i;:::-;31367:72;31435:2;31424:9;31420:18;31411:6;31367:72;:::i;:::-;31114:332;;;;;:::o;31452:167::-;31592:19;31588:1;31580:6;31576:14;31569:43;31452:167;:::o;31625:366::-;31767:3;31788:67;31852:2;31847:3;31788:67;:::i;:::-;31781:74;;31864:93;31953:3;31864:93;:::i;:::-;31982:2;31977:3;31973:12;31966:19;;31625:366;;;:::o;31997:419::-;32163:4;32201:2;32190:9;32186:18;32178:26;;32250:9;32244:4;32240:20;32236:1;32225:9;32221:17;32214:47;32278:131;32404:4;32278:131;:::i;:::-;32270:139;;31997:419;;;:::o

Swarm Source

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