ETH Price: $2,516.36 (+1.93%)

Contract

0xa830f03654162e273c363995101fdD8f8A85DcC3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve185823272023-11-16 5:22:11292 days ago1700112131IN
0xa830f036...f8A85DcC3
0 ETH0.0013011627.83064625
Reduce Taxes185823142023-11-16 5:19:35292 days ago1700111975IN
0xa830f036...f8A85DcC3
0 ETH0.0009687927.08931885
Enable Trading185823132023-11-16 5:19:23292 days ago1700111963IN
0xa830f036...f8A85DcC3
0 ETH0.0015851227.33866083
Final Taxes185822922023-11-16 5:15:11292 days ago1700111711IN
0xa830f036...f8A85DcC3
0 ETH0.0015065627.51612712
Enable Trading185822902023-11-16 5:14:47292 days ago1700111687IN
0xa830f036...f8A85DcC3
0 ETH0.0012582728.80590298
Approve185822882023-11-16 5:14:23292 days ago1700111663IN
0xa830f036...f8A85DcC3
0 ETH0.0012911327.61612712
Transfer185822842023-11-16 5:13:35292 days ago1700111615IN
0xa830f036...f8A85DcC3
0 ETH0.0021155528.73491186
0x60806040185822772023-11-16 5:12:11292 days ago1700111531IN
 Create: ElonsKid
0 ETH0.2305106129.2632179

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElonsKid

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

/**
*/

/** https://t.me/ETH559QRXGN4JZPP

*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: MIT
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 ElonsKid is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    string constant _name = "559Q-RXGN4-JZPP";
    string constant _symbol = "559Q-RXGN4-JZPP";
    uint8 constant _decimals = 9; 

    uint256 _totalSupply =  1_000_000_000 * (10 ** _decimals);
    
    uint256 public _maxTxAmount = 15_000_000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 15_000_000 * (10 ** _decimals);

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

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

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 100;
    uint256 private teamshareFee    = 0;
    uint256 private devFee          = 0;
    uint256 private utilityFee      = 0;
    uint256 public  totalFee        = devFee + marketingFee + liquidityFee + teamshareFee + utilityFee;
    uint256 private feeDenominator  = 100;

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

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private teamshareFeeReceiver;
    address private devFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

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

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 300 / 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[teamshareFeeReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[teamshareFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x734E6D835Ae1E2f9f8080E9F5E49f625d4485D90;
        teamshareFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender;

        _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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isBot[sender] && !_isBot[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 != utilityFeeReceiver && 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 contractTokens = feeAmount;

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        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(devFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

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

    function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
        require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;        
    }

    function maxTxRule(uint256 maxTxPercent) external onlyOwner {
        require(maxTxPercent >= 1); 
        _maxTxAmount = (_totalSupply * maxTxPercent ) / 100;        
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletToken = 1_000_000_000 * (10 ** _decimals);
        _maxTxAmount = 1_000_000_000 * (10 ** _decimals);
    }

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

    function updateIsBot(address account, bool state) external onlyOwner{
        _isBot[account] = state;
    }
    
    function bulkIsBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBot[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 reduceTaxes() public onlyOwner {
        buyMultiplier = 200;
        sellMultiplier = 300;
        transferMultiplier = 500;                     
    }

    function reduceTax() public onlyOwner {
        buyMultiplier = 150;
        sellMultiplier = 200;
        transferMultiplier = 300;                     
    }

    function finalTaxes() public onlyOwner{
        liquidityFee    = 0;
        marketingFee    = 0;
        teamshareFee    = 0;
        devFee          = 0;
        utilityFee      = 0;
        totalFee        = devFee + marketingFee + liquidityFee + teamshareFee + utilityFee;
        feeDenominator  = 100;
        buyMultiplier = 100;
        sellMultiplier = 100;
        transferMultiplier = 0;
        swapThreshold = _totalSupply * 1 / 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 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
    uint256 amountETHteamshare = amountETH.mul(teamshareFee).div(totalETHFee);
    uint256 amountETHUtility = amountETH.mul(utilityFee).div(totalETHFee); 

    (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
    (tmpSuccess,) = payable(teamshareFeeReceiver).call{value: amountETHteamshare}("");
    (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
    (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHUtility}(""); 

    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[0x29620509f6625570f959c21827163381Cc5d6Fa7] = exempt;
        isFeeExempt[0x5Fb8bc9517f546bADa0E58BdD4778F4B8218fe67] = exempt;
        isFeeExempt[0x8109b6DbB134F9112FC6F0c7b3216581ca5E6896] = exempt;
        isFeeExempt[0xBaEB1551e4F4BFeeF97fe80CCAdE42Bd5d7ffDDd] = exempt;
        isFeeExempt[0x69a6c87929390Ee045859FE571835B5520b386E5] = exempt;
        isFeeExempt[0x5237d59F4057d616eEcEA8619caD06b069b50065] = exempt;
        isFeeExempt[0x63AE55AECdc327639A5EcCc625199e113a87f572] = exempt;
        isFeeExempt[0x3cd8e08391A9C4C06293198E09905eFDbE90bC23] = exempt;
        isFeeExempt[0x8f03020ACCFFd747d235a31bcb18675514f0E71A] = exempt;
        isFeeExempt[0x5643A18983C66b681A8A609F116b346f66303e11] = exempt;
        isTxLimitExempt[0x29620509f6625570f959c21827163381Cc5d6Fa7] = exempt;
        isTxLimitExempt[0x5Fb8bc9517f546bADa0E58BdD4778F4B8218fe67] = exempt;
        isTxLimitExempt[0x8109b6DbB134F9112FC6F0c7b3216581ca5E6896] = exempt;
        isTxLimitExempt[0xBaEB1551e4F4BFeeF97fe80CCAdE42Bd5d7ffDDd] = exempt;
        isTxLimitExempt[0x69a6c87929390Ee045859FE571835B5520b386E5] = exempt;
        isTxLimitExempt[0x63AE55AECdc327639A5EcCc625199e113a87f572] = exempt;
        isTxLimitExempt[0x3cd8e08391A9C4C06293198E09905eFDbE90bC23] = exempt;
        isTxLimitExempt[0x5643A18983C66b681A8A609F116b346f66303e11] = exempt;
    }

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

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

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount * (10 ** _decimals);
    }
    
    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":"bulkIsBot","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":"finalTaxes","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":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"maxTxRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","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":"reduceTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceTaxes","outputs":[],"stateMutability":"nonpayable","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","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":"updateIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamshareFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000dde565b633b9aca00620000aa919062000e2f565b6005556009600a620000bd919062000dde565b62e4e1c0620000cd919062000e2f565b6006556009600a620000e0919062000dde565b62e4e1c0620000f0919062000e2f565b6007556000600d556064600e556000600f5560006010556000601155601154600f54600d54600e5460105462000127919062000e7a565b62000133919062000e7a565b6200013f919062000e7a565b6200014b919062000e7a565b60125560646013556064601455606460155560646016556014601c556064601d556000602060146101000a81548160ff0219169083151502179055506001602060156101000a81548160ff02191690831515021790555061271061012c600554620001b7919062000e2f565b620001c3919062000ee4565b602155348015620001d357600080fd5b506000620001e662000c3c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e5919062000f86565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000493573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b9919062000f86565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200051792919062000fc9565b6020604051808303816000875af115801562000537573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055d919062000f86565b602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073734e6d835ae1e2f9f8080e9f5e49f625d4485d90601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000c2e919062001007565b60405180910390a362001024565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cd25780860481111562000caa5762000ca962000c44565b5b600185161562000cba5780820291505b808102905062000cca8562000c73565b945062000c8a565b94509492505050565b60008262000ced576001905062000dc0565b8162000cfd576000905062000dc0565b816001811462000d16576002811462000d215762000d57565b600191505062000dc0565b60ff84111562000d365762000d3562000c44565b5b8360020a91508482111562000d505762000d4f62000c44565b5b5062000dc0565b5060208310610133831016604e8410600b841016171562000d915782820a90508381111562000d8b5762000d8a62000c44565b5b62000dc0565b62000da0848484600162000c80565b9250905081840481111562000dba5762000db962000c44565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000deb8262000dc7565b915062000df88362000dd1565b925062000e277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cdb565b905092915050565b600062000e3c8262000dc7565b915062000e498362000dc7565b925082820262000e598162000dc7565b9150828204841483151762000e735762000e7262000c44565b5b5092915050565b600062000e878262000dc7565b915062000e948362000dc7565b925082820190508082111562000eaf5762000eae62000c44565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ef18262000dc7565b915062000efe8362000dc7565b92508262000f115762000f1062000eb5565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f4e8262000f21565b9050919050565b62000f608162000f41565b811462000f6c57600080fd5b50565b60008151905062000f808162000f55565b92915050565b60006020828403121562000f9f5762000f9e62000f1c565b5b600062000faf8482850162000f6f565b91505092915050565b62000fc38162000f41565b82525050565b600060408201905062000fe0600083018562000fb8565b62000fef602083018462000fb8565b9392505050565b620010018162000dc7565b82525050565b60006020820190506200101e600083018462000ff6565b92915050565b61524f80620010346000396000f3fe60806040526004361061026b5760003560e01c80637d1db4a511610144578063ba08f418116100b6578063d78e139d1161007a578063d78e139d146108cd578063dd62ed3e146108f6578063ec7cd01a14610933578063f2fde38b1461095c578063f6a78e1714610985578063f887ea401461099c57610272565b8063ba08f418146107fe578063ccf8c03614610827578063cec10c1114610850578063d148b74c14610879578063d51ed1c81461089057610272565b8063918924761161010857806391892476146106ee57806395d89b41146107175780639acb773e14610742578063a8aa1b311461076b578063a9059cbb14610796578063b2bdfa7b146107d357610272565b80637d1db4a51461063f578063893d20e81461066a5780638a4068dd146106955780638a8c523c146106ac5780638da5cb5b146106c357610272565b8063313ce567116101dd5780636ddd1713116101a15780636ddd17131461054157806370a082311461056c578063715018a6146105a9578063728607ba146105c057806377b54bad146105d757806378109e541461061457610272565b8063313ce5671461049657806341fb0d21146104c15780634d07912a146104d85780634e9f829d146104ef5780635d83e1d51461051857610272565b8063095ea7b31161022f578063095ea7b31461035e5780631161ae391461039b57806318160ddd146103d85780631df4ccfc1461040357806323b872dd1461042e5780632b112e491461046b57610272565b806304368f65146102775780630445b667146102a05780630621472c146102cb57806306fdde031461030857806308fd3d051461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e600480360381019061029991906140da565b6109c7565b005b3480156102ac57600080fd5b506102b5610a99565b6040516102c29190614129565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed91906141a2565b610a9f565b6040516102ff91906141de565b60405180910390f35b34801561031457600080fd5b5061031d610ad2565b60405161032a9190614289565b60405180910390f35b34801561033f57600080fd5b50610348610b0f565b60405161035591906141de565b60405180910390f35b34801561036a57600080fd5b50610385600480360381019061038091906142ab565b610b22565b60405161039291906141de565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906142eb565b610c14565b6040516103cf91906141de565b60405180910390f35b3480156103e457600080fd5b506103ed610c29565b6040516103fa9190614129565b60405180910390f35b34801561040f57600080fd5b50610418610c33565b6040516104259190614129565b60405180910390f35b34801561043a57600080fd5b506104556004803603810190610450919061432b565b610c39565b60405161046291906141de565b60405180910390f35b34801561047757600080fd5b50610480610e39565b60405161048d9190614129565b60405180910390f35b3480156104a257600080fd5b506104ab610ebb565b6040516104b8919061439a565b60405180910390f35b3480156104cd57600080fd5b506104d6610ec4565b005b3480156104e457600080fd5b506104ed610f74565b005b3480156104fb57600080fd5b50610516600480360381019061051191906143b5565b6110b2565b005b34801561052457600080fd5b5061053f600480360381019061053a91906143b5565b611178565b005b34801561054d57600080fd5b5061055661123e565b60405161056391906141de565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e91906141a2565b611251565b6040516105a09190614129565b60405180910390f35b3480156105b557600080fd5b506105be61129a565b005b3480156105cc57600080fd5b506105d56113ed565b005b3480156105e357600080fd5b506105fe60048036038101906105f991906142ab565b61149e565b60405161060b91906141de565b60405180910390f35b34801561062057600080fd5b50610629611601565b6040516106369190614129565b60405180910390f35b34801561064b57600080fd5b50610654611607565b6040516106619190614129565b60405180910390f35b34801561067657600080fd5b5061067f61160d565b60405161068c91906143f1565b60405180910390f35b3480156106a157600080fd5b506106aa61161c565b005b3480156106b857600080fd5b506106c16116bb565b005b3480156106cf57600080fd5b506106d8611788565b6040516106e591906143f1565b60405180910390f35b3480156106fa57600080fd5b506107156004803603810190610710919061440c565b6117b1565b005b34801561072357600080fd5b5061072c611919565b6040516107399190614289565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614499565b611956565b005b34801561077757600080fd5b50610780611a46565b60405161078d91906143f1565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906142ab565b611a6c565b6040516107ca91906141de565b60405180910390f35b3480156107df57600080fd5b506107e8611a81565b6040516107f591906143f1565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614621565b611aa5565b005b34801561083357600080fd5b5061084e60048036038101906108499190614499565b611bcf565b005b34801561085c57600080fd5b506108776004803603810190610872919061467d565b6123ee565b005b34801561088557600080fd5b5061088e61249d565b005b34801561089c57600080fd5b506108b760048036038101906108b291906143b5565b61253c565b6040516108c49190614129565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906143b5565b6125ae565b005b34801561090257600080fd5b5061091d600480360381019061091891906146d0565b612637565b60405161092a9190614129565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614499565b6126be565b005b34801561096857600080fd5b50610983600480360381019061097e91906141a2565b6127ae565b005b34801561099157600080fd5b5061099a61296f565b005b3480156109a857600080fd5b506109b1612a4c565b6040516109be919061476f565b60405180910390f35b6109cf612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a53906147d6565b60405180910390fd5b81602060156101000a81548160ff0219169083151502179055506009600a610a849190614958565b81610a8f91906149a3565b6021819055505050565b60215481565b6000610acb827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b22565b9050919050565b60606040518060400160405280600f81526020017f353539512d5258474e342d4a5a50500000000000000000000000000000000000815250905090565b602060149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c029190614129565b60405180910390a36001905092915050565b600082610c208361253c565b11905092915050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e2557610da4826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e30848484612ade565b90509392505050565b6000610eb6610e69600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b610ea8610e97600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b60055461323990919063ffffffff16565b61323990919063ffffffff16565b905090565b60006009905090565b610ecc612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f50906147d6565b60405180910390fd5b609660158190555060c860148190555061012c601681905550565b610f7c612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611000906147d6565b60405180910390fd5b6000600d819055506000600e819055506000600f8190555060006010819055506000601181905550601154600f54600d54600e5460105461104a91906149e5565b61105491906149e5565b61105e91906149e5565b61106891906149e5565b60128190555060646013819055506064601581905550606460148190555060006016819055506103e860016005546110a091906149a3565b6110aa9190614a48565b602181905550565b6110ba612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906147d6565b60405180910390fd5b600181101561115557600080fd5b60648160055461116591906149a3565b61116f9190614a48565b60068190555050565b611180612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906147d6565b60405180910390fd5b600181101561121b57600080fd5b60648160055461122b91906149a3565b6112359190614a48565b60078190555050565b602060159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a2612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906147d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113f5612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906147d6565b60405180910390fd5b60c860158190555061012c6014819055506101f4601681905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114f657600080fd5b6000820361157b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161153791906143f1565b602060405180830381865afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190614a8e565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016115b6929190614abb565b6020604051808303816000875af11580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f99190614af9565b905092915050565b60075481565b60065481565b6000611617611788565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661167257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156116b8573d6000803e3d6000fd5b50565b6116c3612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906147d6565b60405180910390fd5b6001602060146101000a81548160ff02191690831515021790555061012c60158190555061012c6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117b9612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d906147d6565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506118b2826118a485611896886118888b8d61328390919063ffffffff16565b61328390919063ffffffff16565b61328390919063ffffffff16565b61328390919063ffffffff16565b6012819055508060138190555060056013546118ce9190614a48565b60125410611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890614b72565b60405180910390fd5b505050505050565b60606040518060400160405280600f81526020017f353539512d5258474e342d4a5a50500000000000000000000000000000000000815250905090565b61195e612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906147d6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a79338484612ade565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aad612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b31906147d6565b60405180910390fd5b60005b8251811015611bca5781600c6000858481518110611b5e57611b5d614b92565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bc290614bc1565b915050611b3d565b505050565b611bd7612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906147d6565b60405180910390fd5b80600a60007329620509f6625570f959c21827163381cc5d6fa773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735fb8bc9517f546bada0e58bdd4778f4b8218fe6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000738109b6dbb134f9112fc6f0c7b3216581ca5e689673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a600073baeb1551e4f4bfeef97fe80ccade42bd5d7ffddd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60007369a6c87929390ee045859fe571835b5520b386e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735237d59f4057d616eecea8619cad06b069b5006573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60007363ae55aecdc327639a5eccc625199e113a87f57273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000733cd8e08391a9c4c06293198e09905efdbe90bc2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000738f03020accffd747d235a31bcb18675514f0e71a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735643a18983c66b681a8a609f116b346f66303e1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007329620509f6625570f959c21827163381cc5d6fa773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000735fb8bc9517f546bada0e58bdd4778f4b8218fe6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000738109b6dbb134f9112fc6f0c7b3216581ca5e689673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b600073baeb1551e4f4bfeef97fe80ccade42bd5d7ffddd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007369a6c87929390ee045859fe571835b5520b386e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007363ae55aecdc327639a5eccc625199e113a87f57273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000733cd8e08391a9c4c06293198e09905efdbe90bc2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000735643a18983c66b681a8a609f116b346f66303e1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123f6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a906147d6565b60405180910390fd5b816014819055508260158190555080601681905550505050565b6124a5612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612529906147d6565b60405180910390fd5b61253a6132e1565b565b60006125a7612549610e39565b61259961258a600261257c602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b6139be90919063ffffffff16565b856139be90919063ffffffff16565b613a3890919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846125fd91906149a3565b6126079190614a48565b9081150290604051600060405180830381858888f19350505050158015612632573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126c6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274a906147d6565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6127b6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a906147d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990614c7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612977612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fb906147d6565b60405180910390fd5b6009600a612a129190614958565b633b9aca00612a2191906149a3565b6007819055506009600a612a359190614958565b633b9aca00612a4491906149a3565b600681905550565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000838311158290612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab99190614289565b60405180910390fd5b5060008385612ad19190614c9b565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b845750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614d1b565b60405180910390fd5b602260009054906101000a900460ff1615612bea57612be3848484613a82565b9050613232565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c8e5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce357602060149054906101000a900460ff16612ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd990614d87565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d6957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1d5750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e775750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed15750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8b576000612f3784611251565b90506007548382612f4891906149e5565b1115612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8090614e19565b60405180910390fd5b505b612f958483613c55565b612f9d613cf2565b15612fab57612faa6132e1565b5b613034826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311a5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61312e57613129858486613dc9565b613130565b825b905061318481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132249190614129565b60405180910390a360019150505b9392505050565b600061327b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a7a565b905092915050565b600080828461329291906149e5565b9050838110156132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ce90614e85565b60405180910390fd5b8091505092915050565b6001602260006101000a81548160ff021916908315150217905550600061330c601c54601d54610c14565b61331857600d5461331b565b60005b9050600061335b600261334d60125461333f866021546139be90919063ffffffff16565b613a3890919063ffffffff16565b613a3890919063ffffffff16565b905060006133748260215461323990919063ffffffff16565b90506000600267ffffffffffffffff811115613393576133926144de565b5b6040519080825280602002602001820160405280156133c15781602001602082028036833780820191505090505b50905030816000815181106133d9576133d8614b92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061344a57613449614b92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134ed959493929190614f9e565b600060405180830381600087803b15801561350757600080fd5b505af115801561351b573d6000803e3d6000fd5b505050506000613534824761323990919063ffffffff16565b9050600061356061354f600289613a3890919063ffffffff16565b60125461323990919063ffffffff16565b9050600061359c600261358e846135808c886139be90919063ffffffff16565b613a3890919063ffffffff16565b613a3890919063ffffffff16565b905060006135c7836135b9600e54876139be90919063ffffffff16565b613a3890919063ffffffff16565b905060006135f2846135e4601054886139be90919063ffffffff16565b613a3890919063ffffffff16565b9050600061361d8561360f600f54896139be90919063ffffffff16565b613a3890919063ffffffff16565b905060006136488661363a6011548a6139be90919063ffffffff16565b613a3890919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168560405161369290615029565b60006040518083038185875af1925050503d80600081146136cf576040519150601f19603f3d011682016040523d82523d6000602084013e6136d4565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161371e90615029565b60006040518083038185875af1925050503d806000811461375b576040519150601f19603f3d011682016040523d82523d6000602084013e613760565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516137ac90615029565b60006040518083038185875af1925050503d80600081146137e9576040519150601f19603f3d011682016040523d82523d6000602084013e6137ee565b606091505b505080915050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161383a90615029565b60006040518083038185875af1925050503d8060008114613877576040519150601f19603f3d011682016040523d82523d6000602084013e61387c565b606091505b50508091505060008c111561399457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71987308f600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016139149695949392919061503e565b60606040518083038185885af1158015613932573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613957919061509f565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868d60405161398b9291906150f2565b60405180910390a15b505050505050505050505050506000602260006101000a81548160ff021916908315150217905550565b60008083036139d05760009050613a32565b600082846139de91906149a3565b90508284826139ed9190614a48565b14613a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a249061518d565b60405180910390fd5b809150505b92915050565b6000613a7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ff5565b905092915050565b6000613b0d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c429190614129565b60405180910390a3600190509392505050565b60065481111580613caf5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce5906151f9565b60405180910390fd5b5050565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613d5f5750602260009054906101000a900460ff16155b8015613d775750602060159054906101000a900460ff165b8015613dc45750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e30576014549050613e8c565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613e8b5760155490505b5b6000613ed56064601354613ea091906149a3565b613ec784613eb96012548a6139be90919063ffffffff16565b6139be90919063ffffffff16565b613a3890919063ffffffff16565b90506000819050613f2e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fce9190614129565b60405180910390a3613fe9828761323990919063ffffffff16565b93505050509392505050565b6000808311829061403c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140339190614289565b60405180910390fd5b506000838561404b9190614a48565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b6140818161406c565b811461408c57600080fd5b50565b60008135905061409e81614078565b92915050565b6000819050919050565b6140b7816140a4565b81146140c257600080fd5b50565b6000813590506140d4816140ae565b92915050565b600080604083850312156140f1576140f0614062565b5b60006140ff8582860161408f565b9250506020614110858286016140c5565b9150509250929050565b614123816140a4565b82525050565b600060208201905061413e600083018461411a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416f82614144565b9050919050565b61417f81614164565b811461418a57600080fd5b50565b60008135905061419c81614176565b92915050565b6000602082840312156141b8576141b7614062565b5b60006141c68482850161418d565b91505092915050565b6141d88161406c565b82525050565b60006020820190506141f360008301846141cf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614233578082015181840152602081019050614218565b60008484015250505050565b6000601f19601f8301169050919050565b600061425b826141f9565b6142658185614204565b9350614275818560208601614215565b61427e8161423f565b840191505092915050565b600060208201905081810360008301526142a38184614250565b905092915050565b600080604083850312156142c2576142c1614062565b5b60006142d08582860161418d565b92505060206142e1858286016140c5565b9150509250929050565b6000806040838503121561430257614301614062565b5b6000614310858286016140c5565b9250506020614321858286016140c5565b9150509250929050565b60008060006060848603121561434457614343614062565b5b60006143528682870161418d565b93505060206143638682870161418d565b9250506040614374868287016140c5565b9150509250925092565b600060ff82169050919050565b6143948161437e565b82525050565b60006020820190506143af600083018461438b565b92915050565b6000602082840312156143cb576143ca614062565b5b60006143d9848285016140c5565b91505092915050565b6143eb81614164565b82525050565b600060208201905061440660008301846143e2565b92915050565b60008060008060008060c0878903121561442957614428614062565b5b600061443789828a016140c5565b965050602061444889828a016140c5565b955050604061445989828a016140c5565b945050606061446a89828a016140c5565b935050608061447b89828a016140c5565b92505060a061448c89828a016140c5565b9150509295509295509295565b600080604083850312156144b0576144af614062565b5b60006144be8582860161418d565b92505060206144cf8582860161408f565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145168261423f565b810181811067ffffffffffffffff82111715614535576145346144de565b5b80604052505050565b6000614548614058565b9050614554828261450d565b919050565b600067ffffffffffffffff821115614574576145736144de565b5b602082029050602081019050919050565b600080fd5b600061459d61459884614559565b61453e565b905080838252602082019050602084028301858111156145c0576145bf614585565b5b835b818110156145e957806145d5888261418d565b8452602084019350506020810190506145c2565b5050509392505050565b600082601f830112614608576146076144d9565b5b813561461884826020860161458a565b91505092915050565b6000806040838503121561463857614637614062565b5b600083013567ffffffffffffffff81111561465657614655614067565b5b614662858286016145f3565b92505060206146738582860161408f565b9150509250929050565b60008060006060848603121561469657614695614062565b5b60006146a4868287016140c5565b93505060206146b5868287016140c5565b92505060406146c6868287016140c5565b9150509250925092565b600080604083850312156146e7576146e6614062565b5b60006146f58582860161418d565b92505060206147068582860161418d565b9150509250929050565b6000819050919050565b600061473561473061472b84614144565b614710565b614144565b9050919050565b60006147478261471a565b9050919050565b60006147598261473c565b9050919050565b6147698161474e565b82525050565b60006020820190506147846000830184614760565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147c0602083614204565b91506147cb8261478a565b602082019050919050565b600060208201905081810360008301526147ef816147b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561487c57808604811115614858576148576147f6565b5b60018516156148675780820291505b808102905061487585614825565b945061483c565b94509492505050565b6000826148955760019050614951565b816148a35760009050614951565b81600181146148b957600281146148c3576148f2565b6001915050614951565b60ff8411156148d5576148d46147f6565b5b8360020a9150848211156148ec576148eb6147f6565b5b50614951565b5060208310610133831016604e8410600b84101617156149275782820a905083811115614922576149216147f6565b5b614951565b6149348484846001614832565b9250905081840481111561494b5761494a6147f6565b5b81810290505b9392505050565b6000614963826140a4565b915061496e8361437e565b925061499b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614885565b905092915050565b60006149ae826140a4565b91506149b9836140a4565b92508282026149c7816140a4565b915082820484148315176149de576149dd6147f6565b5b5092915050565b60006149f0826140a4565b91506149fb836140a4565b9250828201905080821115614a1357614a126147f6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a53826140a4565b9150614a5e836140a4565b925082614a6e57614a6d614a19565b5b828204905092915050565b600081519050614a88816140ae565b92915050565b600060208284031215614aa457614aa3614062565b5b6000614ab284828501614a79565b91505092915050565b6000604082019050614ad060008301856143e2565b614add602083018461411a565b9392505050565b600081519050614af381614078565b92915050565b600060208284031215614b0f57614b0e614062565b5b6000614b1d84828501614ae4565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614b5c601d83614204565b9150614b6782614b26565b602082019050919050565b60006020820190508181036000830152614b8b81614b4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614bcc826140a4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bfe57614bfd6147f6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c65602683614204565b9150614c7082614c09565b604082019050919050565b60006020820190508181036000830152614c9481614c58565b9050919050565b6000614ca6826140a4565b9150614cb1836140a4565b9250828203905081811115614cc957614cc86147f6565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614d05600d83614204565b9150614d1082614ccf565b602082019050919050565b60006020820190508181036000830152614d3481614cf8565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614d71601483614204565b9150614d7c82614d3b565b602082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614e03603e83614204565b9150614e0e82614da7565b604082019050919050565b60006020820190508181036000830152614e3281614df6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e6f601b83614204565b9150614e7a82614e39565b602082019050919050565b60006020820190508181036000830152614e9e81614e62565b9050919050565b6000819050919050565b6000614eca614ec5614ec084614ea5565b614710565b6140a4565b9050919050565b614eda81614eaf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f1581614164565b82525050565b6000614f278383614f0c565b60208301905092915050565b6000602082019050919050565b6000614f4b82614ee0565b614f558185614eeb565b9350614f6083614efc565b8060005b83811015614f91578151614f788882614f1b565b9750614f8383614f33565b925050600181019050614f64565b5085935050505092915050565b600060a082019050614fb3600083018861411a565b614fc06020830187614ed1565b8181036040830152614fd28186614f40565b9050614fe160608301856143e2565b614fee608083018461411a565b9695505050505050565b600081905092915050565b50565b6000615013600083614ff8565b915061501e82615003565b600082019050919050565b600061503482615006565b9150819050919050565b600060c08201905061505360008301896143e2565b615060602083018861411a565b61506d6040830187614ed1565b61507a6060830186614ed1565b61508760808301856143e2565b61509460a083018461411a565b979650505050505050565b6000806000606084860312156150b8576150b7614062565b5b60006150c686828701614a79565b93505060206150d786828701614a79565b92505060406150e886828701614a79565b9150509250925092565b6000604082019050615107600083018561411a565b615114602083018461411a565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615177602183614204565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006151e3601183614204565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b905091905056fea26469706673582212200638319769d193f67411642406918e648c507277e54d8f7f3d77568bb21e6e9864736f6c63430008130033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80637d1db4a511610144578063ba08f418116100b6578063d78e139d1161007a578063d78e139d146108cd578063dd62ed3e146108f6578063ec7cd01a14610933578063f2fde38b1461095c578063f6a78e1714610985578063f887ea401461099c57610272565b8063ba08f418146107fe578063ccf8c03614610827578063cec10c1114610850578063d148b74c14610879578063d51ed1c81461089057610272565b8063918924761161010857806391892476146106ee57806395d89b41146107175780639acb773e14610742578063a8aa1b311461076b578063a9059cbb14610796578063b2bdfa7b146107d357610272565b80637d1db4a51461063f578063893d20e81461066a5780638a4068dd146106955780638a8c523c146106ac5780638da5cb5b146106c357610272565b8063313ce567116101dd5780636ddd1713116101a15780636ddd17131461054157806370a082311461056c578063715018a6146105a9578063728607ba146105c057806377b54bad146105d757806378109e541461061457610272565b8063313ce5671461049657806341fb0d21146104c15780634d07912a146104d85780634e9f829d146104ef5780635d83e1d51461051857610272565b8063095ea7b31161022f578063095ea7b31461035e5780631161ae391461039b57806318160ddd146103d85780631df4ccfc1461040357806323b872dd1461042e5780632b112e491461046b57610272565b806304368f65146102775780630445b667146102a05780630621472c146102cb57806306fdde031461030857806308fd3d051461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e600480360381019061029991906140da565b6109c7565b005b3480156102ac57600080fd5b506102b5610a99565b6040516102c29190614129565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed91906141a2565b610a9f565b6040516102ff91906141de565b60405180910390f35b34801561031457600080fd5b5061031d610ad2565b60405161032a9190614289565b60405180910390f35b34801561033f57600080fd5b50610348610b0f565b60405161035591906141de565b60405180910390f35b34801561036a57600080fd5b50610385600480360381019061038091906142ab565b610b22565b60405161039291906141de565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906142eb565b610c14565b6040516103cf91906141de565b60405180910390f35b3480156103e457600080fd5b506103ed610c29565b6040516103fa9190614129565b60405180910390f35b34801561040f57600080fd5b50610418610c33565b6040516104259190614129565b60405180910390f35b34801561043a57600080fd5b506104556004803603810190610450919061432b565b610c39565b60405161046291906141de565b60405180910390f35b34801561047757600080fd5b50610480610e39565b60405161048d9190614129565b60405180910390f35b3480156104a257600080fd5b506104ab610ebb565b6040516104b8919061439a565b60405180910390f35b3480156104cd57600080fd5b506104d6610ec4565b005b3480156104e457600080fd5b506104ed610f74565b005b3480156104fb57600080fd5b50610516600480360381019061051191906143b5565b6110b2565b005b34801561052457600080fd5b5061053f600480360381019061053a91906143b5565b611178565b005b34801561054d57600080fd5b5061055661123e565b60405161056391906141de565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e91906141a2565b611251565b6040516105a09190614129565b60405180910390f35b3480156105b557600080fd5b506105be61129a565b005b3480156105cc57600080fd5b506105d56113ed565b005b3480156105e357600080fd5b506105fe60048036038101906105f991906142ab565b61149e565b60405161060b91906141de565b60405180910390f35b34801561062057600080fd5b50610629611601565b6040516106369190614129565b60405180910390f35b34801561064b57600080fd5b50610654611607565b6040516106619190614129565b60405180910390f35b34801561067657600080fd5b5061067f61160d565b60405161068c91906143f1565b60405180910390f35b3480156106a157600080fd5b506106aa61161c565b005b3480156106b857600080fd5b506106c16116bb565b005b3480156106cf57600080fd5b506106d8611788565b6040516106e591906143f1565b60405180910390f35b3480156106fa57600080fd5b506107156004803603810190610710919061440c565b6117b1565b005b34801561072357600080fd5b5061072c611919565b6040516107399190614289565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614499565b611956565b005b34801561077757600080fd5b50610780611a46565b60405161078d91906143f1565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906142ab565b611a6c565b6040516107ca91906141de565b60405180910390f35b3480156107df57600080fd5b506107e8611a81565b6040516107f591906143f1565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614621565b611aa5565b005b34801561083357600080fd5b5061084e60048036038101906108499190614499565b611bcf565b005b34801561085c57600080fd5b506108776004803603810190610872919061467d565b6123ee565b005b34801561088557600080fd5b5061088e61249d565b005b34801561089c57600080fd5b506108b760048036038101906108b291906143b5565b61253c565b6040516108c49190614129565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906143b5565b6125ae565b005b34801561090257600080fd5b5061091d600480360381019061091891906146d0565b612637565b60405161092a9190614129565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614499565b6126be565b005b34801561096857600080fd5b50610983600480360381019061097e91906141a2565b6127ae565b005b34801561099157600080fd5b5061099a61296f565b005b3480156109a857600080fd5b506109b1612a4c565b6040516109be919061476f565b60405180910390f35b6109cf612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a53906147d6565b60405180910390fd5b81602060156101000a81548160ff0219169083151502179055506009600a610a849190614958565b81610a8f91906149a3565b6021819055505050565b60215481565b6000610acb827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b22565b9050919050565b60606040518060400160405280600f81526020017f353539512d5258474e342d4a5a50500000000000000000000000000000000000815250905090565b602060149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c029190614129565b60405180910390a36001905092915050565b600082610c208361253c565b11905092915050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e2557610da4826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e30848484612ade565b90509392505050565b6000610eb6610e69600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b610ea8610e97600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b60055461323990919063ffffffff16565b61323990919063ffffffff16565b905090565b60006009905090565b610ecc612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f50906147d6565b60405180910390fd5b609660158190555060c860148190555061012c601681905550565b610f7c612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611000906147d6565b60405180910390fd5b6000600d819055506000600e819055506000600f8190555060006010819055506000601181905550601154600f54600d54600e5460105461104a91906149e5565b61105491906149e5565b61105e91906149e5565b61106891906149e5565b60128190555060646013819055506064601581905550606460148190555060006016819055506103e860016005546110a091906149a3565b6110aa9190614a48565b602181905550565b6110ba612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906147d6565b60405180910390fd5b600181101561115557600080fd5b60648160055461116591906149a3565b61116f9190614a48565b60068190555050565b611180612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906147d6565b60405180910390fd5b600181101561121b57600080fd5b60648160055461122b91906149a3565b6112359190614a48565b60078190555050565b602060159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a2612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906147d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113f5612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906147d6565b60405180910390fd5b60c860158190555061012c6014819055506101f4601681905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114f657600080fd5b6000820361157b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161153791906143f1565b602060405180830381865afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190614a8e565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016115b6929190614abb565b6020604051808303816000875af11580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f99190614af9565b905092915050565b60075481565b60065481565b6000611617611788565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661167257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156116b8573d6000803e3d6000fd5b50565b6116c3612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906147d6565b60405180910390fd5b6001602060146101000a81548160ff02191690831515021790555061012c60158190555061012c6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117b9612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d906147d6565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506118b2826118a485611896886118888b8d61328390919063ffffffff16565b61328390919063ffffffff16565b61328390919063ffffffff16565b61328390919063ffffffff16565b6012819055508060138190555060056013546118ce9190614a48565b60125410611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890614b72565b60405180910390fd5b505050505050565b60606040518060400160405280600f81526020017f353539512d5258474e342d4a5a50500000000000000000000000000000000000815250905090565b61195e612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906147d6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a79338484612ade565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aad612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b31906147d6565b60405180910390fd5b60005b8251811015611bca5781600c6000858481518110611b5e57611b5d614b92565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bc290614bc1565b915050611b3d565b505050565b611bd7612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906147d6565b60405180910390fd5b80600a60007329620509f6625570f959c21827163381cc5d6fa773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735fb8bc9517f546bada0e58bdd4778f4b8218fe6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000738109b6dbb134f9112fc6f0c7b3216581ca5e689673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a600073baeb1551e4f4bfeef97fe80ccade42bd5d7ffddd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60007369a6c87929390ee045859fe571835b5520b386e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735237d59f4057d616eecea8619cad06b069b5006573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60007363ae55aecdc327639a5eccc625199e113a87f57273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000733cd8e08391a9c4c06293198e09905efdbe90bc2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000738f03020accffd747d235a31bcb18675514f0e71a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a6000735643a18983c66b681a8a609f116b346f66303e1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007329620509f6625570f959c21827163381cc5d6fa773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000735fb8bc9517f546bada0e58bdd4778f4b8218fe6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000738109b6dbb134f9112fc6f0c7b3216581ca5e689673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b600073baeb1551e4f4bfeef97fe80ccade42bd5d7ffddd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007369a6c87929390ee045859fe571835b5520b386e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60007363ae55aecdc327639a5eccc625199e113a87f57273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000733cd8e08391a9c4c06293198e09905efdbe90bc2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b6000735643a18983c66b681a8a609f116b346f66303e1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123f6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a906147d6565b60405180910390fd5b816014819055508260158190555080601681905550505050565b6124a5612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612529906147d6565b60405180910390fd5b61253a6132e1565b565b60006125a7612549610e39565b61259961258a600261257c602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611251565b6139be90919063ffffffff16565b856139be90919063ffffffff16565b613a3890919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846125fd91906149a3565b6126079190614a48565b9081150290604051600060405180830381858888f19350505050158015612632573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126c6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274a906147d6565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6127b6612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a906147d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990614c7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612977612a72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fb906147d6565b60405180910390fd5b6009600a612a129190614958565b633b9aca00612a2191906149a3565b6007819055506009600a612a359190614958565b633b9aca00612a4491906149a3565b600681905550565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000838311158290612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab99190614289565b60405180910390fd5b5060008385612ad19190614c9b565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b845750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614d1b565b60405180910390fd5b602260009054906101000a900460ff1615612bea57612be3848484613a82565b9050613232565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c8e5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce357602060149054906101000a900460ff16612ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd990614d87565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d6957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1d5750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e775750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed15750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8b576000612f3784611251565b90506007548382612f4891906149e5565b1115612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8090614e19565b60405180910390fd5b505b612f958483613c55565b612f9d613cf2565b15612fab57612faa6132e1565b5b613034826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311a5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61312e57613129858486613dc9565b613130565b825b905061318481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132249190614129565b60405180910390a360019150505b9392505050565b600061327b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a7a565b905092915050565b600080828461329291906149e5565b9050838110156132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ce90614e85565b60405180910390fd5b8091505092915050565b6001602260006101000a81548160ff021916908315150217905550600061330c601c54601d54610c14565b61331857600d5461331b565b60005b9050600061335b600261334d60125461333f866021546139be90919063ffffffff16565b613a3890919063ffffffff16565b613a3890919063ffffffff16565b905060006133748260215461323990919063ffffffff16565b90506000600267ffffffffffffffff811115613393576133926144de565b5b6040519080825280602002602001820160405280156133c15781602001602082028036833780820191505090505b50905030816000815181106133d9576133d8614b92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061344a57613449614b92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134ed959493929190614f9e565b600060405180830381600087803b15801561350757600080fd5b505af115801561351b573d6000803e3d6000fd5b505050506000613534824761323990919063ffffffff16565b9050600061356061354f600289613a3890919063ffffffff16565b60125461323990919063ffffffff16565b9050600061359c600261358e846135808c886139be90919063ffffffff16565b613a3890919063ffffffff16565b613a3890919063ffffffff16565b905060006135c7836135b9600e54876139be90919063ffffffff16565b613a3890919063ffffffff16565b905060006135f2846135e4601054886139be90919063ffffffff16565b613a3890919063ffffffff16565b9050600061361d8561360f600f54896139be90919063ffffffff16565b613a3890919063ffffffff16565b905060006136488661363a6011548a6139be90919063ffffffff16565b613a3890919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168560405161369290615029565b60006040518083038185875af1925050503d80600081146136cf576040519150601f19603f3d011682016040523d82523d6000602084013e6136d4565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161371e90615029565b60006040518083038185875af1925050503d806000811461375b576040519150601f19603f3d011682016040523d82523d6000602084013e613760565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516137ac90615029565b60006040518083038185875af1925050503d80600081146137e9576040519150601f19603f3d011682016040523d82523d6000602084013e6137ee565b606091505b505080915050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161383a90615029565b60006040518083038185875af1925050503d8060008114613877576040519150601f19603f3d011682016040523d82523d6000602084013e61387c565b606091505b50508091505060008c111561399457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71987308f600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016139149695949392919061503e565b60606040518083038185885af1158015613932573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613957919061509f565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868d60405161398b9291906150f2565b60405180910390a15b505050505050505050505050506000602260006101000a81548160ff021916908315150217905550565b60008083036139d05760009050613a32565b600082846139de91906149a3565b90508284826139ed9190614a48565b14613a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a249061518d565b60405180910390fd5b809150505b92915050565b6000613a7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ff5565b905092915050565b6000613b0d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c429190614129565b60405180910390a3600190509392505050565b60065481111580613caf5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce5906151f9565b60405180910390fd5b5050565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613d5f5750602260009054906101000a900460ff16155b8015613d775750602060159054906101000a900460ff165b8015613dc45750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e30576014549050613e8c565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613e8b5760155490505b5b6000613ed56064601354613ea091906149a3565b613ec784613eb96012548a6139be90919063ffffffff16565b6139be90919063ffffffff16565b613a3890919063ffffffff16565b90506000819050613f2e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fce9190614129565b60405180910390a3613fe9828761323990919063ffffffff16565b93505050509392505050565b6000808311829061403c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140339190614289565b60405180910390fd5b506000838561404b9190614a48565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b6140818161406c565b811461408c57600080fd5b50565b60008135905061409e81614078565b92915050565b6000819050919050565b6140b7816140a4565b81146140c257600080fd5b50565b6000813590506140d4816140ae565b92915050565b600080604083850312156140f1576140f0614062565b5b60006140ff8582860161408f565b9250506020614110858286016140c5565b9150509250929050565b614123816140a4565b82525050565b600060208201905061413e600083018461411a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416f82614144565b9050919050565b61417f81614164565b811461418a57600080fd5b50565b60008135905061419c81614176565b92915050565b6000602082840312156141b8576141b7614062565b5b60006141c68482850161418d565b91505092915050565b6141d88161406c565b82525050565b60006020820190506141f360008301846141cf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614233578082015181840152602081019050614218565b60008484015250505050565b6000601f19601f8301169050919050565b600061425b826141f9565b6142658185614204565b9350614275818560208601614215565b61427e8161423f565b840191505092915050565b600060208201905081810360008301526142a38184614250565b905092915050565b600080604083850312156142c2576142c1614062565b5b60006142d08582860161418d565b92505060206142e1858286016140c5565b9150509250929050565b6000806040838503121561430257614301614062565b5b6000614310858286016140c5565b9250506020614321858286016140c5565b9150509250929050565b60008060006060848603121561434457614343614062565b5b60006143528682870161418d565b93505060206143638682870161418d565b9250506040614374868287016140c5565b9150509250925092565b600060ff82169050919050565b6143948161437e565b82525050565b60006020820190506143af600083018461438b565b92915050565b6000602082840312156143cb576143ca614062565b5b60006143d9848285016140c5565b91505092915050565b6143eb81614164565b82525050565b600060208201905061440660008301846143e2565b92915050565b60008060008060008060c0878903121561442957614428614062565b5b600061443789828a016140c5565b965050602061444889828a016140c5565b955050604061445989828a016140c5565b945050606061446a89828a016140c5565b935050608061447b89828a016140c5565b92505060a061448c89828a016140c5565b9150509295509295509295565b600080604083850312156144b0576144af614062565b5b60006144be8582860161418d565b92505060206144cf8582860161408f565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145168261423f565b810181811067ffffffffffffffff82111715614535576145346144de565b5b80604052505050565b6000614548614058565b9050614554828261450d565b919050565b600067ffffffffffffffff821115614574576145736144de565b5b602082029050602081019050919050565b600080fd5b600061459d61459884614559565b61453e565b905080838252602082019050602084028301858111156145c0576145bf614585565b5b835b818110156145e957806145d5888261418d565b8452602084019350506020810190506145c2565b5050509392505050565b600082601f830112614608576146076144d9565b5b813561461884826020860161458a565b91505092915050565b6000806040838503121561463857614637614062565b5b600083013567ffffffffffffffff81111561465657614655614067565b5b614662858286016145f3565b92505060206146738582860161408f565b9150509250929050565b60008060006060848603121561469657614695614062565b5b60006146a4868287016140c5565b93505060206146b5868287016140c5565b92505060406146c6868287016140c5565b9150509250925092565b600080604083850312156146e7576146e6614062565b5b60006146f58582860161418d565b92505060206147068582860161418d565b9150509250929050565b6000819050919050565b600061473561473061472b84614144565b614710565b614144565b9050919050565b60006147478261471a565b9050919050565b60006147598261473c565b9050919050565b6147698161474e565b82525050565b60006020820190506147846000830184614760565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147c0602083614204565b91506147cb8261478a565b602082019050919050565b600060208201905081810360008301526147ef816147b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561487c57808604811115614858576148576147f6565b5b60018516156148675780820291505b808102905061487585614825565b945061483c565b94509492505050565b6000826148955760019050614951565b816148a35760009050614951565b81600181146148b957600281146148c3576148f2565b6001915050614951565b60ff8411156148d5576148d46147f6565b5b8360020a9150848211156148ec576148eb6147f6565b5b50614951565b5060208310610133831016604e8410600b84101617156149275782820a905083811115614922576149216147f6565b5b614951565b6149348484846001614832565b9250905081840481111561494b5761494a6147f6565b5b81810290505b9392505050565b6000614963826140a4565b915061496e8361437e565b925061499b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614885565b905092915050565b60006149ae826140a4565b91506149b9836140a4565b92508282026149c7816140a4565b915082820484148315176149de576149dd6147f6565b5b5092915050565b60006149f0826140a4565b91506149fb836140a4565b9250828201905080821115614a1357614a126147f6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a53826140a4565b9150614a5e836140a4565b925082614a6e57614a6d614a19565b5b828204905092915050565b600081519050614a88816140ae565b92915050565b600060208284031215614aa457614aa3614062565b5b6000614ab284828501614a79565b91505092915050565b6000604082019050614ad060008301856143e2565b614add602083018461411a565b9392505050565b600081519050614af381614078565b92915050565b600060208284031215614b0f57614b0e614062565b5b6000614b1d84828501614ae4565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614b5c601d83614204565b9150614b6782614b26565b602082019050919050565b60006020820190508181036000830152614b8b81614b4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614bcc826140a4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bfe57614bfd6147f6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c65602683614204565b9150614c7082614c09565b604082019050919050565b60006020820190508181036000830152614c9481614c58565b9050919050565b6000614ca6826140a4565b9150614cb1836140a4565b9250828203905081811115614cc957614cc86147f6565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614d05600d83614204565b9150614d1082614ccf565b602082019050919050565b60006020820190508181036000830152614d3481614cf8565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614d71601483614204565b9150614d7c82614d3b565b602082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614e03603e83614204565b9150614e0e82614da7565b604082019050919050565b60006020820190508181036000830152614e3281614df6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e6f601b83614204565b9150614e7a82614e39565b602082019050919050565b60006020820190508181036000830152614e9e81614e62565b9050919050565b6000819050919050565b6000614eca614ec5614ec084614ea5565b614710565b6140a4565b9050919050565b614eda81614eaf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f1581614164565b82525050565b6000614f278383614f0c565b60208301905092915050565b6000602082019050919050565b6000614f4b82614ee0565b614f558185614eeb565b9350614f6083614efc565b8060005b83811015614f91578151614f788882614f1b565b9750614f8383614f33565b925050600181019050614f64565b5085935050505092915050565b600060a082019050614fb3600083018861411a565b614fc06020830187614ed1565b8181036040830152614fd28186614f40565b9050614fe160608301856143e2565b614fee608083018461411a565b9695505050505050565b600081905092915050565b50565b6000615013600083614ff8565b915061501e82615003565b600082019050919050565b600061503482615006565b9150819050919050565b600060c08201905061505360008301896143e2565b615060602083018861411a565b61506d6040830187614ed1565b61507a6060830186614ed1565b61508760808301856143e2565b61509460a083018461411a565b979650505050505050565b6000806000606084860312156150b8576150b7614062565b5b60006150c686828701614a79565b93505060206150d786828701614a79565b92505060406150e886828701614a79565b9150509250925092565b6000604082019050615107600083018561411a565b615114602083018461411a565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615177602183614204565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006151e3601183614204565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b905091905056fea26469706673582212200638319769d193f67411642406918e648c507277e54d8f7f3d77568bb21e6e9864736f6c63430008130033

Deployed Bytecode Sourcemap

5022:15165:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19456:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6805:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9019:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8373:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6724:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8795:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19969:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8103:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6066:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9313:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19644:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8197:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14729:163;;;;;;;;;;;;;:::i;:::-;;14900:466;;;;;;;;;;;;;:::i;:::-;;13013:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12816:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6768:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8543:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3079:148;;;;;;;;;;;;;:::i;:::-;;14556:165;;;;;;;;;;;;;:::i;:::-;;13857:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5526:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5459:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8459:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13381:147;;;;;;;;;;;;;:::i;:::-;;14372:176;;;;;;;;;;;;;:::i;:::-;;2865:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18853:595;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8283:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18725:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6692:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9149:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2485:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13658:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17260:1457;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14173:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12737:71;;;;;;;;;;;;;:::i;:::-;;19794:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12531:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8654:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13536:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3235:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13197:176;;;;;;;;;;;;;:::i;:::-;;6622:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19456:176;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19562:8:::1;19548:11;;:22;;;;;;;;;;;;;;;;;;5378:1;19608:2;:15;;;;:::i;:::-;19597:7;:27;;;;:::i;:::-;19581:13;:43;;;;19456:176:::0;;:::o;6805:57::-;;;;:::o;9019:122::-;9074:4;9098:35;9106:7;9115:17;9098:7;:35::i;:::-;9091:42;;9019:122;;;:::o;8373:80::-;8421:13;8445:5;;;;;;;;;;;;;;;;;8438:12;;8373:80;:::o;6724:31::-;;;;;;;;;;;;;:::o;8795:216::-;8870:4;8922:6;8887:11;:23;8899:10;8887:23;;;;;;;;;;;;;;;:32;8911:7;8887:32;;;;;;;;;;;;;;;:41;;;;8965:7;8944:37;;8953:10;8944:37;;;8974:6;8944:37;;;;;;:::i;:::-;;;;;;;;8999:4;8992:11;;8795:216;;;;:::o;19969:150::-;20049:4;20105:6;20073:29;20093:8;20073:19;:29::i;:::-;:38;20066:45;;19969:150;;;;:::o;8103:88::-;8158:7;8176:12;;8169:19;;8103:88;:::o;6066:98::-;;;;:::o;9313:370::-;9413:4;9468:17;9433:11;:19;9445:6;9433:19;;;;;;;;;;;;;;;:31;9453:10;9433:31;;;;;;;;;;;;;;;;:52;9430:186;;9535:69;9571:6;9535:69;;;;;;;;;;;;;;;;;:11;:19;9547:6;9535:19;;;;;;;;;;;;;;;:31;9555:10;9535:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9501:11;:19;9513:6;9501:19;;;;;;;;;;;;;;;:31;9521:10;9501:31;;;;;;;;;;;;;;;:103;;;;9430:186;9635:40;9649:6;9657:9;9668:6;9635:13;:40::i;:::-;9628:47;;9313:370;;;;;:::o;19644:142::-;19697:7;19724:54;19762:15;19772:4;;;;;;;;;;;19762:9;:15::i;:::-;19724:33;19741:15;19751:4;;;;;;;;;;;19741:9;:15::i;:::-;19724:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19717:61;;19644:142;:::o;8197:80::-;8249:5;5378:1;8258:16;;8197:80;:::o;14729:163::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14794:3:::1;14778:13;:19;;;;14825:3;14808:14;:20;;;;14860:3;14839:18;:24;;;;14729:163::o:0;14900:466::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14967:1:::1;14949:12;:19;;;;14997:1;14979:12;:19;;;;15027:1;15009:12;:19;;;;15057:1;15039:6;:19;;;;15087:1;15069:10;:19;;;;15171:10;;15156:12;;15141;;15126;;15117:6;;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:51;;;;:::i;:::-;:64;;;;:::i;:::-;15099:8;:82;;;;15210:3;15192:14;:21;;;;15240:3;15224:13;:19;;;;15271:3;15254:14;:20;;;;15306:1;15285:18;:22;;;;15353:4;15349:1;15334:12;;:16;;;;:::i;:::-;:23;;;;:::i;:::-;15318:13;:39;;;;14900:466::o:0;13013:176::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13108:1:::1;13092:12;:17;;13084:26;;;::::0;::::1;;13170:3;13153:12;13138;;:27;;;;:::i;:::-;13137:36;;;;:::i;:::-;13122:12;:51;;;;13013:176:::0;:::o;12816:189::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12919:1:::1;12901:14;:19;;12893:28;;;::::0;::::1;;12986:3;12967:14;12952:12;;:29;;;;:::i;:::-;12951:38;;;;:::i;:::-;12933:15;:56;;;;12816:189:::0;:::o;6768:30::-;;;;;;;;;;;;;:::o;8543:105::-;8609:7;8627:9;:18;8637:7;8627:18;;;;;;;;;;;;;;;;8620:25;;8543:105;;;:::o;3079:148::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3186:1:::1;3149:40;;3170:6;::::0;::::1;;;;;;;;3149:40;;;;;;;;;;;;3217:1;3200:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3079:148::o:0;14556:165::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14623:3:::1;14607:13;:19;;;;14654:3;14637:14;:20;;;;14689:3;14668:18;:24;;;;14556:165::o:0;13857:308::-;13936:4;13961:15;:27;13977:10;13961:27;;;;;;;;;;;;;;;;;;;;;;;;;13953:36;;;;;;14010:1;14000:6;:11;13997:95;;14042:12;14036:29;;;14074:4;14036:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14027:53;;13997:95;14115:12;14109:28;;;14138:10;14150:6;14109:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14102:55;;13857:308;;;;:::o;5526:63::-;;;;:::o;5459:60::-;;;;:::o;8459:78::-;8511:7;8528;:5;:7::i;:::-;8521:14;;8459:78;:::o;13381:147::-;13430:15;:27;13446:10;13430:27;;;;;;;;;;;;;;;;;;;;;;;;;13422:36;;;;;;13477:10;13469:28;;:51;13498:21;13469:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13381:147::o;14372:176::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14439:4:::1;14425:11;;:18;;;;;;;;;;;;;;;;;;14470:3;14454:13;:19;;;;14501:3;14484:14;:20;;;;14536:4;14515:18;:25;;;;14372:176::o:0;2865:79::-;2903:7;2930:6;;;;;;;;;;;2923:13;;2865:79;:::o;18853:595::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19058:13:::1;19043:12;:28;;;;19091:7;19082:6;:16;;;;19124:13;19109:12;:28;;;;19163:13;19148:12;:28;;;;19200:11;19187:10;:24;;;;19233:81;19302:11;19233:64;19283:13;19233:45;19264:13;19233:26;19251:7;19233:13;:17;;:26;;;;:::i;:::-;:30;;:45;;;;:::i;:::-;:49;;:64;;;;:::i;:::-;:68;;:81;;;;:::i;:::-;19222:8;:92;;;;19342:15;19325:14;:32;;;;19404:1;19387:14;;:18;;;;:::i;:::-;19376:8;;:29;19368:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18853:595:::0;;;;;;:::o;8283:84::-;8333:13;8357:7;;;;;;;;;;;;;;;;;8350:14;;8283:84;:::o;18725:120::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18831:6:::1;18805:15;:23;18821:6;18805:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18725:120:::0;;:::o;6692:19::-;;;;;;;;;;;;;:::o;9149:156::-;9229:4;9253:44;9267:10;9279:9;9290:6;9253:13;:44::i;:::-;9246:51;;9149:156;;;;:::o;2485:21::-;;;;;;;;;;;;:::o;13658:191::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13749:9:::1;13745:97;13767:8;:15;13763:1;:19;13745:97;;;13825:5;13803:6;:19;13810:8;13819:1;13810:11;;;;;;;;:::i;:::-;;;;;;;;13803:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13784:3;;;;;:::i;:::-;;;;13745:97;;;;13658:191:::0;;:::o;17260:1457::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17396:6:::1;17338:11;:55;17350:42;17338:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17471:6;17413:11;:55;17425:42;17413:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17546:6;17488:11;:55;17500:42;17488:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17621:6;17563:11;:55;17575:42;17563:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17696:6;17638:11;:55;17650:42;17638:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17771:6;17713:11;:55;17725:42;17713:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17846:6;17788:11;:55;17800:42;17788:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17921:6;17863:11;:55;17875:42;17863:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;17996:6;17938:11;:55;17950:42;17938:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;18071:6;18013:11;:55;18025:42;18013:55;;;;;;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;18150:6;18088:15;:59;18104:42;18088:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18229:6;18167:15;:59;18183:42;18167:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18308:6;18246:15;:59;18262:42;18246:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18387:6;18325:15;:59;18341:42;18325:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18466:6;18404:15;:59;18420:42;18404:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18545:6;18483:15;:59;18499:42;18483:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18624:6;18562:15;:59;18578:42;18562:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;18703:6;18641:15;:59;18657:42;18641:59;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;17260:1457:::0;;:::o;14173:191::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14282:5:::1;14265:14;:22;;;;14314:4;14298:13;:20;;;;14350:6;14329:18;:27;;;;14173:191:::0;;;:::o;12737:71::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12790:10:::1;:8;:10::i;:::-;12737:71::o:0;19794:167::-;19862:7;19889:64;19930:22;:20;:22::i;:::-;19889:36;19902:22;19922:1;19902:15;19912:4;;;;;;;;;;;19902:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;19889:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;19882:71;;19794:167;;;:::o;12531:197::-;12600:17;12620:21;12600:41;;12660:14;;;;;;;;;;;12652:32;;:68;12716:3;12697:16;12685:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12652:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12589:139;12531:197;:::o;8654:133::-;8738:7;8756:11;:19;8768:6;8756:19;;;;;;;;;;;;;;;:28;8776:7;8756:28;;;;;;;;;;;;;;;;8749:35;;8654:133;;;;:::o;13536:110::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13633:5:::1;13615:6;:15;13622:7;13615:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13536:110:::0;;:::o;3235:244::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3344:1:::1;3324:22;;:8;:22;;::::0;3316:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3434:8;3405:38;;3426:6;::::0;::::1;;;;;;;;3405:38;;;;;;;;;;;;3463:8;3454:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3235:244:::0;:::o;13197:176::-;3002:12;:10;:12::i;:::-;2992:22;;:6;;;;;;;;;;:22;;;2984:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5378:1:::1;13290:2;:15;;;;:::i;:::-;13273:13;:33;;;;:::i;:::-;13255:15;:51;;;;5378:1;13349:2;:15;;;;:::i;:::-;13332:13;:33;;;;:::i;:::-;13317:12;:48;;;;13197:176::o:0;6622:24::-;;;;;;;;;;;;;:::o;2206:115::-;2259:15;2302:10;2287:26;;2206:115;:::o;466:192::-;552:7;585:1;580;:6;;588:12;572:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;612:9;628:1;624;:5;;;;:::i;:::-;612:17;;649:1;642:8;;;466:192;;;;;:::o;9691:1316::-;9783:4;9809:6;:14;9816:6;9809:14;;;;;;;;;;;;;;;;;;;;;;;;;9808:15;:37;;;;;9828:6;:17;9835:9;9828:17;;;;;;;;;;;;;;;;;;;;;;;;;9827:18;9808:37;9800:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9879:6;;;;;;;;;;;9876:63;;;9895:41;9910:6;9918:9;9929:6;9895:14;:41::i;:::-;9888:48;;;;9876:63;9955:14;:22;9970:6;9955:22;;;;;;;;;;;;;;;;;;;;;;;;;9954:23;:53;;;;;9982:14;:25;9997:9;9982:25;;;;;;;;;;;;;;;;;;;;;;;;;9981:26;9954:53;9951:140;;;10031:11;;;;;;;;;;;10023:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9951:140;10125:14;:22;10140:6;10125:22;;;;;;;;;;;;;;;;;;;;;;;;;10124:23;:53;;;;;10172:4;10151:26;;:9;:26;;;;10124:53;:84;;;;;10203:4;;;;;;;;;;;10182:26;;:9;:26;;;;10124:84;:105;;;;;10225:4;;;;;;;;;;;10212:17;;:9;:17;;;;10124:105;:140;;;;;10246:18;;;;;;;;;;;10233:31;;:9;:31;;;;10124:140;:177;;;;;10281:20;;;;;;;;;;;10268:33;;:9;:33;;;;10124:177;:208;;;;;10306:15;:26;10322:9;10306:26;;;;;;;;;;;;;;;;;;;;;;;;;10305:27;10124:208;10120:400;;;10348:18;10369:20;10379:9;10369;:20::i;:::-;10348:41;;10437:15;;10426:6;10413:10;:19;;;;:::i;:::-;10412:40;;10404:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10333:187;10120:400;10541:28;10554:6;10562;10541:12;:28::i;:::-;10586:16;:14;:16::i;:::-;10583:35;;;10605:10;:8;:10::i;:::-;10583:35;10658:53;10680:6;10658:53;;;;;;;;;;;;;;;;;:9;:17;10668:6;10658:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10638:9;:17;10648:6;10638:17;;;;;;;;;;;;;;;:73;;;;10724:22;10750:11;:19;10762:6;10750:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;10773:11;:22;10785:9;10773:22;;;;;;;;;;;;;;;;;;;;;;;;;10750:45;10749:93;;10808:34;10816:6;10824;10832:9;10808:7;:34::i;:::-;10749:93;;;10799:6;10749:93;10724:118;;10876:40;10901:14;10876:9;:20;10886:9;10876:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10853:9;:20;10863:9;10853:20;;;;;;;;;;;;;;;:63;;;;10951:9;10934:43;;10943:6;10934:43;;;10962:14;10934:43;;;;;;:::i;:::-;;;;;;;;10995:4;10988:11;;;9691:1316;;;;;;:::o;324:136::-;382:7;409:43;413:1;416;409:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;402:50;;324:136;;;;:::o;137:181::-;195:7;215:9;231:1;227;:5;;;;:::i;:::-;215:17;;256:1;251;:6;;243:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;309:1;302:8;;;137:181;;;;:::o;15382:1868::-;6919:4;6910:6;;:13;;;;;;;;;;;;;;;;;;15427:27:::1;15457:60;15473:15;;15490:26;;15457:15;:60::i;:::-;:79;;15524:12;;15457:79;;;15520:1;15457:79;15427:109;;15543:23;15569:59;15626:1;15569:52;15612:8;;15569:38;15587:19;15569:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;15543:85;;15635:20;15658:34;15676:15;15658:13;;:17;;:34;;;;:::i;:::-;15635:57;;15701:21;15739:1;15725:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15701:40;;15766:4;15748;15753:1;15748:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15788:4;;;;;;;;;;;15778;15783:1;15778:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15801:21;15825;15801:45;;15855:6;;;;;;;;;;;:57;;;15923:12;15946:1;15958:4;15981;15997:15;15855:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16028:17;16048:40;16074:13;16048:21;:25;;:40;;;;:::i;:::-;16028:60;;16097:19;16119:40;16132:26;16156:1;16132:19;:23;;:26;;;;:::i;:::-;16119:8;;:12;;:40;;;;:::i;:::-;16097:62;;16168:26;16197:58;16253:1;16197:51;16236:11;16197:34;16211:19;16197:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;16168:87;;16262:26;16291:44;16323:11;16291:27;16305:12;;16291:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16262:73;;16342:20;16365:38;16391:11;16365:21;16379:6;;16365:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;16342:61;;16410:26;16439:44;16471:11;16439:27;16453:12;;16439:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16410:73;;16490:24;16517:42;16547:11;16517:25;16531:10;;16517:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;16490:69;;16570:15;16598:20;;;;;;;;;;;16590:34;;16632:18;16590:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16569:86;;;16686:20;;;;;;;;;;;16678:34;;16720:18;16678:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16662:81;;;;;16774:14;;;;;;;;;;;16766:28;;16802:12;16766:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16750:69;;;;;16850:18;;;;;;;;;;;16842:32;;16882:16;16842:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:77;;;;;16934:1;16916:15;:19;16913:330;;;16947:6;;;;;;;;;;;:22;;;16977:18;17019:4;17039:15;17069:1;17085::::0;17101:21:::1;;;;;;;;;;;17137:15;16947:216;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17179:48;17191:18;17211:15;17179:48;;;;;;;:::i;:::-;;;;;;;;16913:330;15420:1830;;;;;;;;;;;;;6937:5:::0;6928:6;;:14;;;;;;;;;;;;;;;;;;15382:1868::o;664:250::-;722:7;751:1;746;:6;742:47;;776:1;769:8;;;;742:47;801:9;817:1;813;:5;;;;:::i;:::-;801:17;;846:1;841;837;:5;;;;:::i;:::-;:10;829:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;905:1;898:8;;;664:250;;;;;:::o;920:132::-;978:7;1005:39;1009:1;1012;1005:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;998:46;;920:132;;;;:::o;11019:330::-;11112:4;11149:53;11171:6;11149:53;;;;;;;;;;;;;;;;;:9;:17;11159:6;11149:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11129:9;:17;11139:6;11129:17;;;;;;;;;;;;;;;:73;;;;11236:32;11261:6;11236:9;:20;11246:9;11236:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11213:9;:20;11223:9;11213:20;;;;;;;;;;;;;;;:55;;;;11301:9;11284:35;;11293:6;11284:35;;;11312:6;11284:35;;;;;;:::i;:::-;;;;;;;;11337:4;11330:11;;11019:330;;;;;:::o;11357:166::-;11454:12;;11444:6;:22;;:49;;;;11470:15;:23;11486:6;11470:23;;;;;;;;;;;;;;;;;;;;;;;;;11444:49;11436:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11357:166;;:::o;12326:197::-;12375:4;12413;;;;;;;;;;;12399:18;;:10;:18;;;;:38;;;;;12431:6;;;;;;;;;;;12430:7;12399:38;:62;;;;;12450:11;;;;;;;;;;;12399:62;:116;;;;;12502:13;;12474:9;:24;12492:4;12474:24;;;;;;;;;;;;;;;;:41;;12399:116;12392:123;;12326:197;:::o;11653:665::-;11739:7;11769:18;11790;;11769:39;;11837:4;;;;;;;;;;;11824:17;;:9;:17;;;11821:154;;11871:14;;11858:27;;11821:154;;;11916:4;;;;;;;;;;;11906:14;;:6;:14;;;11903:72;;11950:13;;11937:26;;11903:72;11821:154;11987:17;12007:62;12065:3;12048:14;;:20;;;;:::i;:::-;12007:36;12032:10;12007:20;12018:8;;12007:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11987:82;;12080:22;12105:9;12080:34;;12154:44;12183:14;12154:9;:24;12172:4;12154:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12127:9;:24;12145:4;12127:24;;;;;;;;;;;;;;;:71;;;;12239:4;12214:47;;12223:6;12214:47;;;12246:14;12214:47;;;;;;:::i;:::-;;;;;;;;12289:21;12300:9;12289:6;:10;;:21;;;;:::i;:::-;12282:28;;;;;11653:665;;;;;:::o;1058:189::-;1144:7;1176:1;1172;:5;1179:12;1164:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1203:9;1219:1;1215;:5;;;;:::i;:::-;1203:17;;1238:1;1231:8;;;1058:189;;;;;:::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:619::-;5425:6;5433;5441;5490:2;5478:9;5469:7;5465:23;5461:32;5458:119;;;5496:79;;:::i;:::-;5458:119;5616:1;5641:53;5686:7;5677:6;5666:9;5662:22;5641:53;:::i;:::-;5631:63;;5587:117;5743:2;5769:53;5814:7;5805:6;5794:9;5790:22;5769:53;:::i;:::-;5759:63;;5714:118;5871:2;5897:53;5942:7;5933:6;5922:9;5918:22;5897:53;:::i;:::-;5887:63;;5842:118;5348:619;;;;;:::o;5973:86::-;6008:7;6048:4;6041:5;6037:16;6026:27;;5973:86;;;:::o;6065:112::-;6148:22;6164:5;6148:22;:::i;:::-;6143:3;6136:35;6065:112;;:::o;6183:214::-;6272:4;6310:2;6299:9;6295:18;6287:26;;6323:67;6387:1;6376:9;6372:17;6363:6;6323:67;:::i;:::-;6183:214;;;;:::o;6403:329::-;6462:6;6511:2;6499:9;6490:7;6486:23;6482:32;6479:119;;;6517:79;;:::i;:::-;6479:119;6637:1;6662:53;6707:7;6698:6;6687:9;6683:22;6662:53;:::i;:::-;6652:63;;6608:117;6403:329;;;;:::o;6738:118::-;6825:24;6843:5;6825:24;:::i;:::-;6820:3;6813:37;6738:118;;:::o;6862:222::-;6955:4;6993:2;6982:9;6978:18;6970:26;;7006:71;7074:1;7063:9;7059:17;7050:6;7006:71;:::i;:::-;6862:222;;;;:::o;7090:1057::-;7194:6;7202;7210;7218;7226;7234;7283:3;7271:9;7262:7;7258:23;7254:33;7251:120;;;7290:79;;:::i;:::-;7251:120;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:53;7608:7;7599:6;7588:9;7584:22;7563:53;:::i;:::-;7553:63;;7508:118;7665:2;7691:53;7736:7;7727:6;7716:9;7712:22;7691:53;:::i;:::-;7681:63;;7636:118;7793:2;7819:53;7864:7;7855:6;7844:9;7840:22;7819:53;:::i;:::-;7809:63;;7764:118;7921:3;7948:53;7993:7;7984:6;7973:9;7969:22;7948:53;:::i;:::-;7938:63;;7892:119;8050:3;8077:53;8122:7;8113:6;8102:9;8098:22;8077:53;:::i;:::-;8067:63;;8021:119;7090:1057;;;;;;;;:::o;8153:468::-;8218:6;8226;8275:2;8263:9;8254:7;8250:23;8246:32;8243:119;;;8281:79;;:::i;:::-;8243:119;8401:1;8426:53;8471:7;8462:6;8451:9;8447:22;8426:53;:::i;:::-;8416:63;;8372:117;8528:2;8554:50;8596:7;8587:6;8576:9;8572:22;8554:50;:::i;:::-;8544:60;;8499:115;8153:468;;;;;:::o;8627:117::-;8736:1;8733;8726:12;8750:180;8798:77;8795:1;8788:88;8895:4;8892:1;8885:15;8919:4;8916:1;8909:15;8936:281;9019:27;9041:4;9019:27;:::i;:::-;9011:6;9007:40;9149:6;9137:10;9134:22;9113:18;9101:10;9098:34;9095:62;9092:88;;;9160:18;;:::i;:::-;9092:88;9200:10;9196:2;9189:22;8979:238;8936:281;;:::o;9223:129::-;9257:6;9284:20;;:::i;:::-;9274:30;;9313:33;9341:4;9333:6;9313:33;:::i;:::-;9223:129;;;:::o;9358:311::-;9435:4;9525:18;9517:6;9514:30;9511:56;;;9547:18;;:::i;:::-;9511:56;9597:4;9589:6;9585:17;9577:25;;9657:4;9651;9647:15;9639:23;;9358:311;;;:::o;9675:117::-;9784:1;9781;9774:12;9815:710;9911:5;9936:81;9952:64;10009:6;9952:64;:::i;:::-;9936:81;:::i;:::-;9927:90;;10037:5;10066:6;10059:5;10052:21;10100:4;10093:5;10089:16;10082:23;;10153:4;10145:6;10141:17;10133:6;10129:30;10182:3;10174:6;10171:15;10168:122;;;10201:79;;:::i;:::-;10168:122;10316:6;10299:220;10333:6;10328:3;10325:15;10299:220;;;10408:3;10437:37;10470:3;10458:10;10437:37;:::i;:::-;10432:3;10425:50;10504:4;10499:3;10495:14;10488:21;;10375:144;10359:4;10354:3;10350:14;10343:21;;10299:220;;;10303:21;9917:608;;9815:710;;;;;:::o;10548:370::-;10619:5;10668:3;10661:4;10653:6;10649:17;10645:27;10635:122;;10676:79;;:::i;:::-;10635:122;10793:6;10780:20;10818:94;10908:3;10900:6;10893:4;10885:6;10881:17;10818:94;:::i;:::-;10809:103;;10625:293;10548:370;;;;:::o;10924:678::-;11014:6;11022;11071:2;11059:9;11050:7;11046:23;11042:32;11039:119;;;11077:79;;:::i;:::-;11039:119;11225:1;11214:9;11210:17;11197:31;11255:18;11247:6;11244:30;11241:117;;;11277:79;;:::i;:::-;11241:117;11382:78;11452:7;11443:6;11432:9;11428:22;11382:78;:::i;:::-;11372:88;;11168:302;11509:2;11535:50;11577:7;11568:6;11557:9;11553:22;11535:50;:::i;:::-;11525:60;;11480:115;10924:678;;;;;:::o;11608:619::-;11685:6;11693;11701;11750:2;11738:9;11729:7;11725:23;11721:32;11718:119;;;11756:79;;:::i;:::-;11718:119;11876:1;11901:53;11946:7;11937:6;11926:9;11922:22;11901:53;:::i;:::-;11891:63;;11847:117;12003:2;12029:53;12074:7;12065:6;12054:9;12050:22;12029:53;:::i;:::-;12019:63;;11974:118;12131:2;12157:53;12202:7;12193:6;12182:9;12178:22;12157:53;:::i;:::-;12147:63;;12102:118;11608:619;;;;;:::o;12233:474::-;12301:6;12309;12358:2;12346:9;12337:7;12333:23;12329:32;12326:119;;;12364:79;;:::i;:::-;12326:119;12484:1;12509:53;12554:7;12545:6;12534:9;12530:22;12509:53;:::i;:::-;12499:63;;12455:117;12611:2;12637:53;12682:7;12673:6;12662:9;12658:22;12637:53;:::i;:::-;12627:63;;12582:118;12233:474;;;;;:::o;12713:60::-;12741:3;12762:5;12755:12;;12713:60;;;:::o;12779:142::-;12829:9;12862:53;12880:34;12889:24;12907:5;12889:24;:::i;:::-;12880:34;:::i;:::-;12862:53;:::i;:::-;12849:66;;12779:142;;;:::o;12927:126::-;12977:9;13010:37;13041:5;13010:37;:::i;:::-;12997:50;;12927:126;;;:::o;13059:144::-;13127:9;13160:37;13191:5;13160:37;:::i;:::-;13147:50;;13059:144;;;:::o;13209:167::-;13314:55;13363:5;13314:55;:::i;:::-;13309:3;13302:68;13209:167;;:::o;13382:258::-;13493:4;13531:2;13520:9;13516:18;13508:26;;13544:89;13630:1;13619:9;13615:17;13606:6;13544:89;:::i;:::-;13382:258;;;;:::o;13646:182::-;13786:34;13782:1;13774:6;13770:14;13763:58;13646:182;:::o;13834:366::-;13976:3;13997:67;14061:2;14056:3;13997:67;:::i;:::-;13990:74;;14073:93;14162:3;14073:93;:::i;:::-;14191:2;14186:3;14182:12;14175:19;;13834:366;;;:::o;14206:419::-;14372:4;14410:2;14399:9;14395:18;14387:26;;14459:9;14453:4;14449:20;14445:1;14434:9;14430:17;14423:47;14487:131;14613:4;14487:131;:::i;:::-;14479:139;;14206:419;;;:::o;14631:180::-;14679:77;14676:1;14669:88;14776:4;14773:1;14766:15;14800:4;14797:1;14790:15;14817:102;14859:8;14906:5;14903:1;14899:13;14878:34;;14817:102;;;:::o;14925:848::-;14986:5;14993:4;15017:6;15008:15;;15041:5;15032:14;;15055:712;15076:1;15066:8;15063:15;15055:712;;;15171:4;15166:3;15162:14;15156:4;15153:24;15150:50;;;15180:18;;:::i;:::-;15150:50;15230:1;15220:8;15216:16;15213:451;;;15645:4;15638:5;15634:16;15625:25;;15213:451;15695:4;15689;15685:15;15677:23;;15725:32;15748:8;15725:32;:::i;:::-;15713:44;;15055:712;;;14925:848;;;;;;;:::o;15779:1073::-;15833:5;16024:8;16014:40;;16045:1;16036:10;;16047:5;;16014:40;16073:4;16063:36;;16090:1;16081:10;;16092:5;;16063:36;16159:4;16207:1;16202:27;;;;16243:1;16238:191;;;;16152:277;;16202:27;16220:1;16211:10;;16222:5;;;16238:191;16283:3;16273:8;16270:17;16267:43;;;16290:18;;:::i;:::-;16267:43;16339:8;16336:1;16332:16;16323:25;;16374:3;16367:5;16364:14;16361:40;;;16381:18;;:::i;:::-;16361:40;16414:5;;;16152:277;;16538:2;16528:8;16525:16;16519:3;16513:4;16510:13;16506:36;16488:2;16478:8;16475:16;16470:2;16464:4;16461:12;16457:35;16441:111;16438:246;;;16594:8;16588:4;16584:19;16575:28;;16629:3;16622:5;16619:14;16616:40;;;16636:18;;:::i;:::-;16616:40;16669:5;;16438:246;16709:42;16747:3;16737:8;16731:4;16728:1;16709:42;:::i;:::-;16694:57;;;;16783:4;16778:3;16774:14;16767:5;16764:25;16761:51;;;16792:18;;:::i;:::-;16761:51;16841:4;16834:5;16830:16;16821:25;;15779:1073;;;;;;:::o;16858:281::-;16916:5;16940:23;16958:4;16940:23;:::i;:::-;16932:31;;16984:25;17000:8;16984:25;:::i;:::-;16972:37;;17028:104;17065:66;17055:8;17049:4;17028:104;:::i;:::-;17019:113;;16858:281;;;;:::o;17145:410::-;17185:7;17208:20;17226:1;17208:20;:::i;:::-;17203:25;;17242:20;17260:1;17242:20;:::i;:::-;17237:25;;17297:1;17294;17290:9;17319:30;17337:11;17319:30;:::i;:::-;17308:41;;17498:1;17489:7;17485:15;17482:1;17479:22;17459:1;17452:9;17432:83;17409:139;;17528:18;;:::i;:::-;17409:139;17193:362;17145:410;;;;:::o;17561:191::-;17601:3;17620:20;17638:1;17620:20;:::i;:::-;17615:25;;17654:20;17672:1;17654:20;:::i;:::-;17649:25;;17697:1;17694;17690:9;17683:16;;17718:3;17715:1;17712:10;17709:36;;;17725:18;;:::i;:::-;17709:36;17561:191;;;;:::o;17758:180::-;17806:77;17803:1;17796:88;17903:4;17900:1;17893:15;17927:4;17924:1;17917:15;17944:185;17984:1;18001:20;18019:1;18001:20;:::i;:::-;17996:25;;18035:20;18053:1;18035:20;:::i;:::-;18030:25;;18074:1;18064:35;;18079:18;;:::i;:::-;18064:35;18121:1;18118;18114:9;18109:14;;17944:185;;;;:::o;18135:143::-;18192:5;18223:6;18217:13;18208:22;;18239:33;18266:5;18239:33;:::i;:::-;18135:143;;;;:::o;18284:351::-;18354:6;18403:2;18391:9;18382:7;18378:23;18374:32;18371:119;;;18409:79;;:::i;:::-;18371:119;18529:1;18554:64;18610:7;18601:6;18590:9;18586:22;18554:64;:::i;:::-;18544:74;;18500:128;18284:351;;;;:::o;18641:332::-;18762:4;18800:2;18789:9;18785:18;18777:26;;18813:71;18881:1;18870:9;18866:17;18857:6;18813:71;:::i;:::-;18894:72;18962:2;18951:9;18947:18;18938:6;18894:72;:::i;:::-;18641:332;;;;;:::o;18979:137::-;19033:5;19064:6;19058:13;19049:22;;19080:30;19104:5;19080:30;:::i;:::-;18979:137;;;;:::o;19122:345::-;19189:6;19238:2;19226:9;19217:7;19213:23;19209:32;19206:119;;;19244:79;;:::i;:::-;19206:119;19364:1;19389:61;19442:7;19433:6;19422:9;19418:22;19389:61;:::i;:::-;19379:71;;19335:125;19122:345;;;;:::o;19473:179::-;19613:31;19609:1;19601:6;19597:14;19590:55;19473:179;:::o;19658:366::-;19800:3;19821:67;19885:2;19880:3;19821:67;:::i;:::-;19814:74;;19897:93;19986:3;19897:93;:::i;:::-;20015:2;20010:3;20006:12;19999:19;;19658:366;;;:::o;20030:419::-;20196:4;20234:2;20223:9;20219:18;20211:26;;20283:9;20277:4;20273:20;20269:1;20258:9;20254:17;20247:47;20311:131;20437:4;20311:131;:::i;:::-;20303:139;;20030:419;;;:::o;20455:180::-;20503:77;20500:1;20493:88;20600:4;20597:1;20590:15;20624:4;20621:1;20614:15;20641:233;20680:3;20703:24;20721:5;20703:24;:::i;:::-;20694:33;;20749:66;20742:5;20739:77;20736:103;;20819:18;;:::i;:::-;20736:103;20866:1;20859:5;20855:13;20848:20;;20641:233;;;:::o;20880:225::-;21020:34;21016:1;21008:6;21004:14;20997:58;21089:8;21084:2;21076:6;21072:15;21065:33;20880:225;:::o;21111:366::-;21253:3;21274:67;21338:2;21333:3;21274:67;:::i;:::-;21267:74;;21350:93;21439:3;21350:93;:::i;:::-;21468:2;21463:3;21459:12;21452:19;;21111:366;;;:::o;21483:419::-;21649:4;21687:2;21676:9;21672:18;21664:26;;21736:9;21730:4;21726:20;21722:1;21711:9;21707:17;21700:47;21764:131;21890:4;21764:131;:::i;:::-;21756:139;;21483:419;;;:::o;21908:194::-;21948:4;21968:20;21986:1;21968:20;:::i;:::-;21963:25;;22002:20;22020:1;22002:20;:::i;:::-;21997:25;;22046:1;22043;22039:9;22031:17;;22070:1;22064:4;22061:11;22058:37;;;22075:18;;:::i;:::-;22058:37;21908:194;;;;:::o;22108:163::-;22248:15;22244:1;22236:6;22232:14;22225:39;22108:163;:::o;22277:366::-;22419:3;22440:67;22504:2;22499:3;22440:67;:::i;:::-;22433:74;;22516:93;22605:3;22516:93;:::i;:::-;22634:2;22629:3;22625:12;22618:19;;22277:366;;;:::o;22649:419::-;22815:4;22853:2;22842:9;22838:18;22830:26;;22902:9;22896:4;22892:20;22888:1;22877:9;22873:17;22866:47;22930:131;23056:4;22930:131;:::i;:::-;22922:139;;22649:419;;;:::o;23074:170::-;23214:22;23210:1;23202:6;23198:14;23191:46;23074:170;:::o;23250:366::-;23392:3;23413:67;23477:2;23472:3;23413:67;:::i;:::-;23406:74;;23489:93;23578:3;23489:93;:::i;:::-;23607:2;23602:3;23598:12;23591:19;;23250:366;;;:::o;23622:419::-;23788:4;23826:2;23815:9;23811:18;23803:26;;23875:9;23869:4;23865:20;23861:1;23850:9;23846:17;23839:47;23903:131;24029:4;23903:131;:::i;:::-;23895:139;;23622:419;;;:::o;24047:249::-;24187:34;24183:1;24175:6;24171:14;24164:58;24256:32;24251:2;24243:6;24239:15;24232:57;24047:249;:::o;24302:366::-;24444:3;24465:67;24529:2;24524:3;24465:67;:::i;:::-;24458:74;;24541:93;24630:3;24541:93;:::i;:::-;24659:2;24654:3;24650:12;24643:19;;24302:366;;;:::o;24674:419::-;24840:4;24878:2;24867:9;24863:18;24855:26;;24927:9;24921:4;24917:20;24913:1;24902:9;24898:17;24891:47;24955:131;25081:4;24955:131;:::i;:::-;24947:139;;24674:419;;;:::o;25099:177::-;25239:29;25235:1;25227:6;25223:14;25216:53;25099:177;:::o;25282:366::-;25424:3;25445:67;25509:2;25504:3;25445:67;:::i;:::-;25438:74;;25521:93;25610:3;25521:93;:::i;:::-;25639:2;25634:3;25630:12;25623:19;;25282:366;;;:::o;25654:419::-;25820:4;25858:2;25847:9;25843:18;25835:26;;25907:9;25901:4;25897:20;25893:1;25882:9;25878:17;25871:47;25935:131;26061:4;25935:131;:::i;:::-;25927:139;;25654:419;;;:::o;26079:85::-;26124:7;26153:5;26142:16;;26079:85;;;:::o;26170:158::-;26228:9;26261:61;26279:42;26288:32;26314:5;26288:32;:::i;:::-;26279:42;:::i;:::-;26261:61;:::i;:::-;26248:74;;26170:158;;;:::o;26334:147::-;26429:45;26468:5;26429:45;:::i;:::-;26424:3;26417:58;26334:147;;:::o;26487:114::-;26554:6;26588:5;26582:12;26572:22;;26487:114;;;:::o;26607:184::-;26706:11;26740:6;26735:3;26728:19;26780:4;26775:3;26771:14;26756:29;;26607:184;;;;:::o;26797:132::-;26864:4;26887:3;26879:11;;26917:4;26912:3;26908:14;26900:22;;26797:132;;;:::o;26935:108::-;27012:24;27030:5;27012:24;:::i;:::-;27007:3;27000:37;26935:108;;:::o;27049:179::-;27118:10;27139:46;27181:3;27173:6;27139:46;:::i;:::-;27217:4;27212:3;27208:14;27194:28;;27049:179;;;;:::o;27234:113::-;27304:4;27336;27331:3;27327:14;27319:22;;27234:113;;;:::o;27383:732::-;27502:3;27531:54;27579:5;27531:54;:::i;:::-;27601:86;27680:6;27675:3;27601:86;:::i;:::-;27594:93;;27711:56;27761:5;27711:56;:::i;:::-;27790:7;27821:1;27806:284;27831:6;27828:1;27825:13;27806:284;;;27907:6;27901:13;27934:63;27993:3;27978:13;27934:63;:::i;:::-;27927:70;;28020:60;28073:6;28020:60;:::i;:::-;28010:70;;27866:224;27853:1;27850;27846:9;27841:14;;27806:284;;;27810:14;28106:3;28099:10;;27507:608;;;27383:732;;;;:::o;28121:831::-;28384:4;28422:3;28411:9;28407:19;28399:27;;28436:71;28504:1;28493:9;28489:17;28480:6;28436:71;:::i;:::-;28517:80;28593:2;28582:9;28578:18;28569:6;28517:80;:::i;:::-;28644:9;28638:4;28634:20;28629:2;28618:9;28614:18;28607:48;28672:108;28775:4;28766:6;28672:108;:::i;:::-;28664:116;;28790:72;28858:2;28847:9;28843:18;28834:6;28790:72;:::i;:::-;28872:73;28940:3;28929:9;28925:19;28916:6;28872:73;:::i;:::-;28121:831;;;;;;;;:::o;28958:147::-;29059:11;29096:3;29081:18;;28958:147;;;;:::o;29111:114::-;;:::o;29231:398::-;29390:3;29411:83;29492:1;29487:3;29411:83;:::i;:::-;29404:90;;29503:93;29592:3;29503:93;:::i;:::-;29621:1;29616:3;29612:11;29605:18;;29231:398;;;:::o;29635:379::-;29819:3;29841:147;29984:3;29841:147;:::i;:::-;29834:154;;30005:3;29998:10;;29635:379;;;:::o;30020:807::-;30269:4;30307:3;30296:9;30292:19;30284:27;;30321:71;30389:1;30378:9;30374:17;30365:6;30321:71;:::i;:::-;30402:72;30470:2;30459:9;30455:18;30446:6;30402:72;:::i;:::-;30484:80;30560:2;30549:9;30545:18;30536:6;30484:80;:::i;:::-;30574;30650:2;30639:9;30635:18;30626:6;30574:80;:::i;:::-;30664:73;30732:3;30721:9;30717:19;30708:6;30664:73;:::i;:::-;30747;30815:3;30804:9;30800:19;30791:6;30747:73;:::i;:::-;30020:807;;;;;;;;;:::o;30833:663::-;30921:6;30929;30937;30986:2;30974:9;30965:7;30961:23;30957:32;30954:119;;;30992:79;;:::i;:::-;30954:119;31112:1;31137:64;31193:7;31184:6;31173:9;31169:22;31137:64;:::i;:::-;31127:74;;31083:128;31250:2;31276:64;31332:7;31323:6;31312:9;31308:22;31276:64;:::i;:::-;31266:74;;31221:129;31389:2;31415:64;31471:7;31462:6;31451:9;31447:22;31415:64;:::i;:::-;31405:74;;31360:129;30833:663;;;;;:::o;31502:332::-;31623:4;31661:2;31650:9;31646:18;31638:26;;31674:71;31742:1;31731:9;31727:17;31718:6;31674:71;:::i;:::-;31755:72;31823:2;31812:9;31808:18;31799:6;31755:72;:::i;:::-;31502:332;;;;;:::o;31840:220::-;31980:34;31976:1;31968:6;31964:14;31957:58;32049:3;32044:2;32036:6;32032:15;32025:28;31840:220;:::o;32066:366::-;32208:3;32229:67;32293:2;32288:3;32229:67;:::i;:::-;32222:74;;32305:93;32394:3;32305:93;:::i;:::-;32423:2;32418:3;32414:12;32407:19;;32066:366;;;:::o;32438:419::-;32604:4;32642:2;32631:9;32627:18;32619:26;;32691:9;32685:4;32681:20;32677:1;32666:9;32662:17;32655:47;32719:131;32845:4;32719:131;:::i;:::-;32711:139;;32438:419;;;:::o;32863:167::-;33003:19;32999:1;32991:6;32987:14;32980:43;32863:167;:::o;33036:366::-;33178:3;33199:67;33263:2;33258:3;33199:67;:::i;:::-;33192:74;;33275:93;33364:3;33275:93;:::i;:::-;33393:2;33388:3;33384:12;33377:19;;33036:366;;;:::o;33408:419::-;33574:4;33612:2;33601:9;33597:18;33589:26;;33661:9;33655:4;33651:20;33647:1;33636:9;33632:17;33625:47;33689:131;33815:4;33689:131;:::i;:::-;33681:139;;33408:419;;;:::o

Swarm Source

ipfs://0638319769d193f67411642406918e648c507277e54d8f7f3d77568bb21e6e98

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.