ETH Price: $2,967.14 (-1.51%)
Gas: 3 Gwei

Token

Proof of Woof (POW)
 

Overview

Max Total Supply

7,900,000 POW

Holders

306

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,207.82983381 POW

Value
$0.00
0x310e0565b3d000ca4bb4c81cb548f132a35a053d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
POW

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-07
*/

//SPDX-License-Identifier: MIT


/*

Telegram: https://t.me/ProofOfWoof


You Can't Keep a Good Dog Down, or a Working dog infact.
History (or progress) moves ahead, no matter the criticism it may attract.
Everything I know I learned from dogs
Every dog has its day, Today is ours!
Money can buy you a fine dog, but only love can make him wag his tail

⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜⬛🟧⬛⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜⬜⬛🟧🟧⬛⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬛🟧🟧⬛⬛⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜🟧🟧🟧🟧🟧🟧⬜⬛⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛🟧🟧🟧⬛⬜🟧⬜⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛🟧🟧🟧⬛⬛🟧⬜⬛⬛⬛⬛⬛⬛
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛🟧⬜⬜⬛⬛🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬛⬛⬛
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛🟧⬛⬛🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬜⬛⬛
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛
⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜
⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜
⬛🟧⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛🟧🟧🟧⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜
⬛🟧🟧⬛⬜⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜
⬛🟧🟧🟧⬛⬛🟧🟧🟧🟧🟧🟧🟧⬛⬛⬛⬛⬛⬛🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜
⬛⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛⬛⬛🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜
⬜⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜
⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬛⬜⬜⬜
⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬛⬜⬜⬜
⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬛⬜⬜⬜
⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧🟧⬜⬜⬜⬜⬛⬜⬜⬜
⬜⬜⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧🟧🟧⬜⬜⬜⬜⬛⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧🟧⬜⬜⬜⬜⬛⬛⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧🟧🟧⬛⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧⬛🟧🟧🟧🟧⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧⬛⬛⬛🟧⬛⬛🟧🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧⬜⬛⬛⬛⬛🟧⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧⬛⬜⬛🟧🟧⬛⬛⬛⬛⬛⬛⬛⬛⬛🟧🟧⬛⬛⬛⬛🟧🟧⬜⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧⬛⬜⬜⬛🟧🟧⬛⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧⬜⬛⬜⬛🟧🟧⬜⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧⬜⬛⬜⬜⬛🟧⬜⬛⬛⬜⬜⬜⬜
⬜⬜⬜⬛🟧🟧🟧⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧⬛⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬜
⬜⬜⬜⬜⬛🟧⬜⬜⬛⬜⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬛⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜

*/


pragma solidity 0.8.17;

interface IERC20 {
    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 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 Auth {
    address internal _owner;
    constructor(address creatorOwner) { _owner = creatorOwner; }
    modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; }
    function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); }
    event OwnershipTransferred(address _owner);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract POW is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 7_900_000 * (10**_decimals);
    string private constant _name         = "Proof of Woof";
    string private constant _symbol       = "POW";

    uint8 private _buyTaxRate  = 1;
    uint8 private _sellTaxRate = 1;

    uint16 private _taxSharesMarketing   = 8;
    uint16 private _taxSharesDevelopment = 1;
    uint16 private _taxSharesBurn        = 1;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP;

    address payable private _walletMarketing = payable(0x3D630A0cC6f44610a392837213dec4FcCF89c1Da); 
    address payable private _walletDevelopment = payable(0xB5104070B007d2a33AA67f35C89948Cf5e66C936); 

    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 80 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address constant private _burnWallet = address(0);
    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        _balances[address(this)] =  7_900_000 * (10 ** _decimals);
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = _totalSupply - _balances[address(this)];
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noFees[_walletDevelopment] = true;
        _noFees[_burnWallet] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
        _noLimits[_walletDevelopment] = true;
        _noLimits[_burnWallet] = true;  
    }

    receive() external payable {}
    
    function totalSupply() external pure 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 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 transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function openTrading() external onlyOwner {
        require(!_tradingOpen, "trading already open");
        _openTrading();
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addInitialLiquidity() external onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(address(this).balance>0, "No ETH in contract");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _isLP[_primaryLP] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 1 / 100; 
        _maxWalletAmount = _totalSupply * 1 / 100;
        _tradingOpen = true;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
        else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
        else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
        return taxAmount;
    }


    function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) {
        return ( _noFees[wallet], _noLimits[wallet] );
    }
    function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }
    function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { 
        require(lpContractAddress != _primaryLP, "Cannot change the primary LP");
        _isLP[lpContractAddress] = isLiquidityPool; 
        if (isLiquidityPool) { 
            _noFees[lpContractAddress] = false; 
            _noLimits[lpContractAddress] = false; 
        }
    }
    function isLP(address wallet) external view returns (bool) {
        return _isLP[wallet];
    }

    function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) {
        return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn);
    }
    function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner {
        require(newBuyTax + newSellTax <= 99, "Roundtrip too high");
        _buyTaxRate = newBuyTax;
        _sellTaxRate = newSellTax;
    }  
    function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
        uint16 totalShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment;
        require( totalShares > 0, "All cannot be 0");
        _taxSharesLP = sharesAutoLP;
        _taxSharesMarketing = sharesMarketing;
        _taxSharesDevelopment = sharesDevelopment;
        _totalTaxShares = totalShares;
    }

    function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) {
        return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner);
    }
    function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner {
        require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet");
        _walletMarketing = payable(newMarketing);
        _walletDevelopment = payable(newDevelopment);
        _lpOwner = newLpOwner;
        _noFees[newMarketing] = true;
        _noFees[newDevelopment] = true;
        _noLimits[newMarketing] = true;
        _noLimits[newDevelopment] = true;
    }

    function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) {
        return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax);
    }
    function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx limit too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet limit too low");
        _maxWalletAmount = newWalletAmt;
    }
    function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "MinMax error");
        require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
        require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high");
    }

    function _burnTokens(address fromWallet, uint256 amount) private {
        if ( amount > 0 ) {
            _balances[fromWallet] -= amount;
            _balances[_burnWallet] += amount;
            emit Transfer(fromWallet, _burnWallet, amount);
        }
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares;
            _burnTokens(address(this), _tokensToBurn);
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _swapTaxTokensForEth(_tokensToSwap);
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment;
        if (_taxShareTotal > 0) {
            uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
            uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal;
            if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
            if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); }
        }
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100;
        if (tokensToSwap > 10 ** _decimals) {
            _swapTaxTokensForEth(tokensToSwap);
        }
        if (sendEth) { 
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No tokens");
            _distributeTaxEth(address(this).balance); 
        }
    }

    function burnTokens(uint256 amount) external {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "Token balance too low");
        _burnTokens(msg.sender, amount);
        emit TokensBurned(msg.sender, amount);
    }


}

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":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newDevelopment","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506008600060166101000a81548161ffff021916908361ffff1602179055506001600060186101000a81548161ffff021916908361ffff16021790555060016000601a6101000a81548161ffff021916908361ffff160217905550600080601c6101000a81548161ffff021916908361ffff1602179055506000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16600060189054906101000a900461ffff16600060169054906101000a900461ffff1662000103919062000bc1565b6200010f919062000bc1565b6200011b919062000bc1565b6000601e6101000a81548161ffff021916908361ffff160217905550733d630a0cc6f44610a392837213dec4fccf89c1da600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b5104070b007d2a33aa67f35c89948cf5e66c936600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001f1919062000d69565b62788b6062000201919062000dba565b6003556009600a62000214919062000d69565b62788b6062000224919062000dba565b600455620186a0600a6009600a6200023d919062000d69565b62788b606200024d919062000dba565b62000259919062000dba565b62000265919062000e34565b600555620186a060506009600a6200027e919062000d69565b62788b606200028e919062000dba565b6200029a919062000dba565b620002a6919062000e34565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60016101000a81548160ff0219169083151502179055503480156200032657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620003ba919062000d69565b62788b60620003ca919062000dba565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004ac919062000e7d565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a62000504919062000d69565b62788b6062000514919062000dba565b62000520919062000e9a565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000664919062000e7d565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ed5565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bce8262000b84565b915062000bdb8362000b84565b9250828201905061ffff81111562000bf85762000bf762000b92565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c5d5780860481111562000c355762000c3462000b92565b5b600185161562000c455780820291505b808102905062000c558562000bfe565b945062000c15565b94509492505050565b60008262000c78576001905062000d4b565b8162000c88576000905062000d4b565b816001811462000ca1576002811462000cac5762000ce2565b600191505062000d4b565b60ff84111562000cc15762000cc062000b92565b5b8360020a91508482111562000cdb5762000cda62000b92565b5b5062000d4b565b5060208310610133831016604e8410600b841016171562000d1c5782820a90508381111562000d165762000d1562000b92565b5b62000d4b565b62000d2b848484600162000c0b565b9250905081840481111562000d455762000d4462000b92565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d768262000d52565b915062000d838362000d5c565b925062000db27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c66565b905092915050565b600062000dc78262000d52565b915062000dd48362000d52565b925082820262000de48162000d52565b9150828204841483151762000dfe5762000dfd62000b92565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e418262000d52565b915062000e4e8362000d52565b92508262000e615762000e6062000e05565b5b828204905092915050565b62000e778162000d52565b82525050565b600060208201905062000e94600083018462000e6c565b92915050565b600062000ea78262000d52565b915062000eb48362000d52565b925082820390508181111562000ecf5762000ece62000b92565b5b92915050565b61505a8062000ee56000396000f3fe6080604052600436106101855760003560e01c80637df0f767116100d1578063b14218031161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063b14218031461051d578063c9567bf914610546578063dd62ed3e1461055d5761018c565b80637df0f767146103e2578063931b68ea1461041f57806395d89b411461045d5780639fda058114610488578063a39fac12146104b1578063a9059cbb146104e05761018c565b806322a62e1e1161013e578063313ce56711610118578063313ce567146103235780636d1b229d1461034e5780636f013db91461037757806370a08231146103a55761018c565b806322a62e1e1461028d57806323b872dd146102bd5780632fb528ba146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca9190613935565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906139f0565b610b3a565b6040516102079190613a4b565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b6040516102329190613a75565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613abc565b610c4f565b005b34801561027057600080fd5b5061028b60048036038101906102869190613b0f565b610e2c565b005b34801561029957600080fd5b506102a261105c565b6040516102b496959493929190613b88565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613be9565b6110dd565b6040516102f19190613a4b565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190613c68565b6112e7565b005b34801561032f57600080fd5b50610338611496565b6040516103459190613ca8565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190613cc3565b61149f565b005b34801561038357600080fd5b5061038c61154b565b60405161039c9493929190613cf0565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190613d35565b61156b565b6040516103d99190613a75565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613d35565b6115b4565b6040516104169190613a4b565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190613d35565b61160a565b604051610454929190613d62565b60405180910390f35b34801561046957600080fd5b506104726116b0565b60405161047f9190613935565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613d8b565b6116ed565b005b3480156104bd57600080fd5b506104c6611adc565b6040516104d7959493929190613ded565b60405180910390f35b3480156104ec57600080fd5b50610507600480360381019061050291906139f0565b611ba3565b6040516105149190613a4b565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613e6c565b611c00565b005b34801561055257600080fd5b5061055b611dbc565b005b34801561056957600080fd5b50610584600480360381019061057f9190613eac565b611ea4565b6040516105919190613a75565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613f28565b611f2b565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613fcd565b612166565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613ffa565b61226e565b005b34801561062157600080fd5b5061063c60048036038101906106379190614061565b6123e4565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390614113565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f9061417f565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b2906141eb565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490614257565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce919061428c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061428c565b6040518363ffffffff1660e01b81526004016109989291906142b9565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db919061428c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006124fe565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600d81526020017f50726f6f66206f6620576f6f6600000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a9190613a75565b60405180910390a36001905092915050565b60006009600a610c3c9190614444565b62788b60610c4a919061448f565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614113565b60405180910390fd5b8080610ce65750815b15610d7957600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f9061451d565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190614113565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190614589565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611058576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e8846125ec565b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e906145f5565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d35781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112529190614615565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112de8484846126c7565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90614113565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff1611156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614695565b60405180910390fd5b600060648360ff166113e83061156b565b6113f2919061448f565b6113fc91906146e4565b90506009600a61140c9190614444565b81111561141d5761141c81612bf6565b5b81156114765760004790506000811161146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290614761565b60405180910390fd5b61147447612e15565b505b506000600f60016101000a81548160ff0219169083151502179055505050565b60006009905090565b60006114aa3361156b565b9050808211156114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e6906147cd565b60405180910390fd5b6114f93383612fa4565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161153f9190613a75565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290614113565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561181f5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118755750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90614839565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611bae336125ec565b611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be4906145f5565b60405180910390fd5b611bf83384846126c7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590614113565b60405180910390fd5b600060016103e88461ffff166009600a611ca89190614444565b62788b60611cb6919061448f565b611cc0919061448f565b611cca91906146e4565b611cd49190614859565b9050600354811015611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d12906148d9565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611d3c9190614444565b62788b60611d4a919061448f565b611d54919061448f565b611d5e91906146e4565b611d689190614859565b9050600454811015611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690614945565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190614113565b60405180910390fd5b600f60009054906101000a900460ff1615611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e91906149b1565b60405180910390fd5b611ea26130c4565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090614113565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611fd59190614444565b62788b60611fe3919061448f565b611fed919061448f565b611ff791906146e4565b6005819055508063ffffffff168263ffffffff166009600a6120199190614444565b62788b60612027919061448f565b612031919061448f565b61203b91906146e4565b6006819055506005546006541015612088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207f90614a1d565b60405180910390fd5b620186a06009600a61209a9190614444565b62788b606120a8919061448f565b6120b291906146e4565b600654116120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614a89565b60405180910390fd5b60646009600a6121059190614444565b62788b60612113919061448f565b61211d91906146e4565b60065410612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614af5565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614113565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122639190614b74565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614113565b60405180910390fd5b60008183858761230c9190614b8f565b6123169190614b8f565b6123209190614b8f565b905060008161ffff1611612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090614c11565b60405180910390fd5b836000601c6101000a81548161ffff021916908361ffff16021790555082600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601e6101000a81548161ffff021916908361ffff1602179055505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614113565b60405180910390fd5b606381836124809190614c31565b60ff1611156124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb90614cb2565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561253057600090505b61253984613155565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016125a096959493929190614d0d565b60606040518083038185885af11580156125be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125e39190614d83565b50505050505050565b60008060009050600f60009054906101000a900460ff161561261157600190506126be565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126b35750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126bd57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e90614e22565b60405180910390fd5b600f60009054906101000a900460ff1661282d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127ed5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61282c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612823906145f5565b60405180910390fd5b5b600f60019054906101000a900460ff161580156128935750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128a1576128a061333f565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561290957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612961575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156129b157612971848484613535565b6129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614e8e565b60405180910390fd5b5b60006129be8585856136cc565b9050600081846129ce9190614615565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1b9190614615565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612af65781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab29190614859565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b419190614859565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612be19190613a75565b60405180910390a36001925050509392505050565b612bff81613155565b6000600267ffffffffffffffff811115612c1c57612c1b614eae565b5b604051908082528060200260200182016040528015612c4a5781602001602082028036833780820191505090505b5090503081600081518110612c6257612c61614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2d919061428c565b81600181518110612d4157612d40614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddf959493929190614fca565b600060405180830381600087803b158015612df957600080fd5b505af1158015612e0d573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612e429190614b8f565b905060008161ffff161115612fa05760008161ffff16600060169054906101000a900461ffff1661ffff1684612e78919061448f565b612e8291906146e4565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612eab919061448f565b612eb591906146e4565b90506000821115612f2a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f28573d6000803e3d6000fd5b505b6000811115612f9d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f9b573d6000803e3d6000fd5b505b50505b5050565b60008111156130c05780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ffc9190614615565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130529190614859565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b79190613a75565b60405180910390a35b5050565b606460016009600a6130d69190614444565b62788b606130e4919061448f565b6130ee919061448f565b6130f891906146e4565b600381905550606460016009600a6131109190614444565b62788b6061311e919061448f565b613128919061448f565b61313291906146e4565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561333c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133339190613a75565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006133653061156b565b905060055481101580156133855750600f60009054906101000a900460ff165b156135175760065481106133995760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846133d2919061448f565b6133dc91906146e4565b6133e691906146e4565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461341e919061448f565b61342891906146e4565b90506134343082612fa4565b60008183856134439190614615565b61344d9190614615565b90506009600a61345d9190614444565b8111156134fa57600047905061347282612bf6565b600081476134809190614615565b9050600080601c9054906101000a900461ffff1661ffff1611156134f757600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836134d4919061448f565b6134de91906146e4565b90506134e986613155565b6134f5868260006124fe565b505b50505b600047905060008111156135125761351181612e15565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156135a25750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f85750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c15760035483111561361057600090506136c0565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b5575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136b39190614859565b115b156136bf57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff1615806137345750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806137885750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613796576000905061389a565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613819576064600060149054906101000a900460ff1660ff1684613808919061448f565b61381291906146e4565b9050613899565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613898576064600060159054906101000a900460ff1660ff168461388b919061448f565b61389591906146e4565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138df5780820151818401526020810190506138c4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613907826138a5565b61391181856138b0565b93506139218185602086016138c1565b61392a816138eb565b840191505092915050565b6000602082019050818103600083015261394f81846138fc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139878261395c565b9050919050565b6139978161397c565b81146139a257600080fd5b50565b6000813590506139b48161398e565b92915050565b6000819050919050565b6139cd816139ba565b81146139d857600080fd5b50565b6000813590506139ea816139c4565b92915050565b60008060408385031215613a0757613a06613957565b5b6000613a15858286016139a5565b9250506020613a26858286016139db565b9150509250929050565b60008115159050919050565b613a4581613a30565b82525050565b6000602082019050613a606000830184613a3c565b92915050565b613a6f816139ba565b82525050565b6000602082019050613a8a6000830184613a66565b92915050565b613a9981613a30565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b600080600060608486031215613ad557613ad4613957565b5b6000613ae3868287016139a5565b9350506020613af486828701613aa7565b9250506040613b0586828701613aa7565b9150509250925092565b60008060408385031215613b2657613b25613957565b5b6000613b34858286016139a5565b9250506020613b4585828601613aa7565b9150509250929050565b600060ff82169050919050565b613b6581613b4f565b82525050565b600061ffff82169050919050565b613b8281613b6b565b82525050565b600060c082019050613b9d6000830189613b5c565b613baa6020830188613b5c565b613bb76040830187613b79565b613bc46060830186613b79565b613bd16080830185613b79565b613bde60a0830184613b79565b979650505050505050565b600080600060608486031215613c0257613c01613957565b5b6000613c10868287016139a5565b9350506020613c21868287016139a5565b9250506040613c32868287016139db565b9150509250925092565b613c4581613b4f565b8114613c5057600080fd5b50565b600081359050613c6281613c3c565b92915050565b60008060408385031215613c7f57613c7e613957565b5b6000613c8d85828601613c53565b9250506020613c9e85828601613aa7565b9150509250929050565b6000602082019050613cbd6000830184613b5c565b92915050565b600060208284031215613cd957613cd8613957565b5b6000613ce7848285016139db565b91505092915050565b6000608082019050613d056000830187613a66565b613d126020830186613a66565b613d1f6040830185613a66565b613d2c6060830184613a66565b95945050505050565b600060208284031215613d4b57613d4a613957565b5b6000613d59848285016139a5565b91505092915050565b6000604082019050613d776000830185613a3c565b613d846020830184613a3c565b9392505050565b600080600060608486031215613da457613da3613957565b5b6000613db2868287016139a5565b9350506020613dc3868287016139a5565b9250506040613dd4868287016139a5565b9150509250925092565b613de78161397c565b82525050565b600060a082019050613e026000830188613dde565b613e0f6020830187613dde565b613e1c6040830186613dde565b613e296060830185613dde565b613e366080830184613dde565b9695505050505050565b613e4981613b6b565b8114613e5457600080fd5b50565b600081359050613e6681613e40565b92915050565b60008060408385031215613e8357613e82613957565b5b6000613e9185828601613e57565b9250506020613ea285828601613e57565b9150509250929050565b60008060408385031215613ec357613ec2613957565b5b6000613ed1858286016139a5565b9250506020613ee2858286016139a5565b9150509250929050565b600063ffffffff82169050919050565b613f0581613eec565b8114613f1057600080fd5b50565b600081359050613f2281613efc565b92915050565b60008060008060808587031215613f4257613f41613957565b5b6000613f5087828801613f13565b9450506020613f6187828801613f13565b9350506040613f7287828801613f13565b9250506060613f8387828801613f13565b91505092959194509250565b6000613f9a8261395c565b9050919050565b613faa81613f8f565b8114613fb557600080fd5b50565b600081359050613fc781613fa1565b92915050565b600060208284031215613fe357613fe2613957565b5b6000613ff184828501613fb8565b91505092915050565b6000806000806080858703121561401457614013613957565b5b600061402287828801613e57565b945050602061403387828801613e57565b935050604061404487828801613e57565b925050606061405587828801613e57565b91505092959194509250565b6000806040838503121561407857614077613957565b5b600061408685828601613c53565b925050602061409785828601613c53565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006140fd602b836138b0565b9150614108826140a1565b604082019050919050565b6000602082019050818103600083015261412c816140f0565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006141696009836138b0565b915061417482614133565b602082019050919050565b600060208201905081810360008301526141988161415c565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006141d56012836138b0565b91506141e08261419f565b602082019050919050565b60006020820190508181036000830152614204816141c8565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006142416015836138b0565b915061424c8261420b565b602082019050919050565b6000602082019050818103600083015261427081614234565b9050919050565b6000815190506142868161398e565b92915050565b6000602082840312156142a2576142a1613957565b5b60006142b084828501614277565b91505092915050565b60006040820190506142ce6000830185613dde565b6142db6020830184613dde565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561436857808604811115614344576143436142e2565b5b60018516156143535780820291505b808102905061436185614311565b9450614328565b94509492505050565b600082614381576001905061443d565b8161438f576000905061443d565b81600181146143a557600281146143af576143de565b600191505061443d565b60ff8411156143c1576143c06142e2565b5b8360020a9150848211156143d8576143d76142e2565b5b5061443d565b5060208310610133831016604e8410600b84101617156144135782820a90508381111561440e5761440d6142e2565b5b61443d565b614420848484600161431e565b92509050818404811115614437576144366142e2565b5b81810290505b9392505050565b600061444f826139ba565b915061445a83613b4f565b92506144877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614371565b905092915050565b600061449a826139ba565b91506144a5836139ba565b92508282026144b3816139ba565b915082820484148315176144ca576144c96142e2565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006145076010836138b0565b9150614512826144d1565b602082019050919050565b60006020820190508181036000830152614536816144fa565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614573601c836138b0565b915061457e8261453d565b602082019050919050565b600060208201905081810360008301526145a281614566565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145df6010836138b0565b91506145ea826145a9565b602082019050919050565b6000602082019050818103600083015261460e816145d2565b9050919050565b6000614620826139ba565b915061462b836139ba565b9250828203905081811115614643576146426142e2565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b600061467f601a836138b0565b915061468a82614649565b602082019050919050565b600060208201905081810360008301526146ae81614672565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146ef826139ba565b91506146fa836139ba565b92508261470a576147096146b5565b5b828204905092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061474b6009836138b0565b915061475682614715565b602082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006147b76015836138b0565b91506147c282614781565b602082019050919050565b600060208201905081810360008301526147e6816147aa565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006148236017836138b0565b915061482e826147ed565b602082019050919050565b6000602082019050818103600083015261485281614816565b9050919050565b6000614864826139ba565b915061486f836139ba565b9250828201905080821115614887576148866142e2565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006148c36010836138b0565b91506148ce8261488d565b602082019050919050565b600060208201905081810360008301526148f2816148b6565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061492f6014836138b0565b915061493a826148f9565b602082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061499b6014836138b0565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000614a07600c836138b0565b9150614a12826149d1565b602082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614a736017836138b0565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614adf6018836138b0565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000614b3a614b35614b308461395c565b614b15565b61395c565b9050919050565b6000614b4c82614b1f565b9050919050565b6000614b5e82614b41565b9050919050565b614b6e81614b53565b82525050565b6000602082019050614b896000830184614b65565b92915050565b6000614b9a82613b6b565b9150614ba583613b6b565b9250828201905061ffff811115614bbf57614bbe6142e2565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614bfb600f836138b0565b9150614c0682614bc5565b602082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b6000614c3c82613b4f565b9150614c4783613b4f565b9250828201905060ff811115614c6057614c5f6142e2565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614c9c6012836138b0565b9150614ca782614c66565b602082019050919050565b60006020820190508181036000830152614ccb81614c8f565b9050919050565b6000819050919050565b6000614cf7614cf2614ced84614cd2565b614b15565b6139ba565b9050919050565b614d0781614cdc565b82525050565b600060c082019050614d226000830189613dde565b614d2f6020830188613a66565b614d3c6040830187614cfe565b614d496060830186614cfe565b614d566080830185613dde565b614d6360a0830184613a66565b979650505050505050565b600081519050614d7d816139c4565b92915050565b600080600060608486031215614d9c57614d9b613957565b5b6000614daa86828701614d6e565b9350506020614dbb86828701614d6e565b9250506040614dcc86828701614d6e565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614e0c601d836138b0565b9150614e1782614dd6565b602082019050919050565b60006020820190508181036000830152614e3b81614dff565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614e786011836138b0565b9150614e8382614e42565b602082019050919050565b60006020820190508181036000830152614ea781614e6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f418161397c565b82525050565b6000614f538383614f38565b60208301905092915050565b6000602082019050919050565b6000614f7782614f0c565b614f818185614f17565b9350614f8c83614f28565b8060005b83811015614fbd578151614fa48882614f47565b9750614faf83614f5f565b925050600181019050614f90565b5085935050505092915050565b600060a082019050614fdf6000830188613a66565b614fec6020830187614cfe565b8181036040830152614ffe8186614f6c565b905061500d6060830185613dde565b61501a6080830184613a66565b969550505050505056fea26469706673582212205ef970774fe5912cc6c4a8b40f2291b7737d40c3ca1e02b3635d3d7d0072ec8164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637df0f767116100d1578063b14218031161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063b14218031461051d578063c9567bf914610546578063dd62ed3e1461055d5761018c565b80637df0f767146103e2578063931b68ea1461041f57806395d89b411461045d5780639fda058114610488578063a39fac12146104b1578063a9059cbb146104e05761018c565b806322a62e1e1161013e578063313ce56711610118578063313ce567146103235780636d1b229d1461034e5780636f013db91461037757806370a08231146103a55761018c565b806322a62e1e1461028d57806323b872dd146102bd5780632fb528ba146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca9190613935565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906139f0565b610b3a565b6040516102079190613a4b565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b6040516102329190613a75565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613abc565b610c4f565b005b34801561027057600080fd5b5061028b60048036038101906102869190613b0f565b610e2c565b005b34801561029957600080fd5b506102a261105c565b6040516102b496959493929190613b88565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613be9565b6110dd565b6040516102f19190613a4b565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190613c68565b6112e7565b005b34801561032f57600080fd5b50610338611496565b6040516103459190613ca8565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190613cc3565b61149f565b005b34801561038357600080fd5b5061038c61154b565b60405161039c9493929190613cf0565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190613d35565b61156b565b6040516103d99190613a75565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613d35565b6115b4565b6040516104169190613a4b565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190613d35565b61160a565b604051610454929190613d62565b60405180910390f35b34801561046957600080fd5b506104726116b0565b60405161047f9190613935565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613d8b565b6116ed565b005b3480156104bd57600080fd5b506104c6611adc565b6040516104d7959493929190613ded565b60405180910390f35b3480156104ec57600080fd5b50610507600480360381019061050291906139f0565b611ba3565b6040516105149190613a4b565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613e6c565b611c00565b005b34801561055257600080fd5b5061055b611dbc565b005b34801561056957600080fd5b50610584600480360381019061057f9190613eac565b611ea4565b6040516105919190613a75565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613f28565b611f2b565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613fcd565b612166565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613ffa565b61226e565b005b34801561062157600080fd5b5061063c60048036038101906106379190614061565b6123e4565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390614113565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f9061417f565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b2906141eb565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490614257565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce919061428c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061428c565b6040518363ffffffff1660e01b81526004016109989291906142b9565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db919061428c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006124fe565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600d81526020017f50726f6f66206f6620576f6f6600000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a9190613a75565b60405180910390a36001905092915050565b60006009600a610c3c9190614444565b62788b60610c4a919061448f565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614113565b60405180910390fd5b8080610ce65750815b15610d7957600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f9061451d565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190614113565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190614589565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611058576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e8846125ec565b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e906145f5565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d35781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112529190614615565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112de8484846126c7565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90614113565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff1611156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614695565b60405180910390fd5b600060648360ff166113e83061156b565b6113f2919061448f565b6113fc91906146e4565b90506009600a61140c9190614444565b81111561141d5761141c81612bf6565b5b81156114765760004790506000811161146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290614761565b60405180910390fd5b61147447612e15565b505b506000600f60016101000a81548160ff0219169083151502179055505050565b60006009905090565b60006114aa3361156b565b9050808211156114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e6906147cd565b60405180910390fd5b6114f93383612fa4565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161153f9190613a75565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290614113565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561181f5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118755750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90614839565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611bae336125ec565b611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be4906145f5565b60405180910390fd5b611bf83384846126c7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590614113565b60405180910390fd5b600060016103e88461ffff166009600a611ca89190614444565b62788b60611cb6919061448f565b611cc0919061448f565b611cca91906146e4565b611cd49190614859565b9050600354811015611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d12906148d9565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611d3c9190614444565b62788b60611d4a919061448f565b611d54919061448f565b611d5e91906146e4565b611d689190614859565b9050600454811015611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690614945565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190614113565b60405180910390fd5b600f60009054906101000a900460ff1615611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e91906149b1565b60405180910390fd5b611ea26130c4565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090614113565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611fd59190614444565b62788b60611fe3919061448f565b611fed919061448f565b611ff791906146e4565b6005819055508063ffffffff168263ffffffff166009600a6120199190614444565b62788b60612027919061448f565b612031919061448f565b61203b91906146e4565b6006819055506005546006541015612088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207f90614a1d565b60405180910390fd5b620186a06009600a61209a9190614444565b62788b606120a8919061448f565b6120b291906146e4565b600654116120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614a89565b60405180910390fd5b60646009600a6121059190614444565b62788b60612113919061448f565b61211d91906146e4565b60065410612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614af5565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614113565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122639190614b74565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614113565b60405180910390fd5b60008183858761230c9190614b8f565b6123169190614b8f565b6123209190614b8f565b905060008161ffff1611612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090614c11565b60405180910390fd5b836000601c6101000a81548161ffff021916908361ffff16021790555082600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601e6101000a81548161ffff021916908361ffff1602179055505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614113565b60405180910390fd5b606381836124809190614c31565b60ff1611156124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb90614cb2565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561253057600090505b61253984613155565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016125a096959493929190614d0d565b60606040518083038185885af11580156125be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125e39190614d83565b50505050505050565b60008060009050600f60009054906101000a900460ff161561261157600190506126be565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126b35750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126bd57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e90614e22565b60405180910390fd5b600f60009054906101000a900460ff1661282d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127ed5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61282c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612823906145f5565b60405180910390fd5b5b600f60019054906101000a900460ff161580156128935750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128a1576128a061333f565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561290957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612961575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156129b157612971848484613535565b6129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614e8e565b60405180910390fd5b5b60006129be8585856136cc565b9050600081846129ce9190614615565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1b9190614615565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612af65781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab29190614859565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b419190614859565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612be19190613a75565b60405180910390a36001925050509392505050565b612bff81613155565b6000600267ffffffffffffffff811115612c1c57612c1b614eae565b5b604051908082528060200260200182016040528015612c4a5781602001602082028036833780820191505090505b5090503081600081518110612c6257612c61614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2d919061428c565b81600181518110612d4157612d40614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddf959493929190614fca565b600060405180830381600087803b158015612df957600080fd5b505af1158015612e0d573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612e429190614b8f565b905060008161ffff161115612fa05760008161ffff16600060169054906101000a900461ffff1661ffff1684612e78919061448f565b612e8291906146e4565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612eab919061448f565b612eb591906146e4565b90506000821115612f2a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f28573d6000803e3d6000fd5b505b6000811115612f9d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f9b573d6000803e3d6000fd5b505b50505b5050565b60008111156130c05780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ffc9190614615565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130529190614859565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b79190613a75565b60405180910390a35b5050565b606460016009600a6130d69190614444565b62788b606130e4919061448f565b6130ee919061448f565b6130f891906146e4565b600381905550606460016009600a6131109190614444565b62788b6061311e919061448f565b613128919061448f565b61313291906146e4565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561333c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133339190613a75565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006133653061156b565b905060055481101580156133855750600f60009054906101000a900460ff165b156135175760065481106133995760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846133d2919061448f565b6133dc91906146e4565b6133e691906146e4565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461341e919061448f565b61342891906146e4565b90506134343082612fa4565b60008183856134439190614615565b61344d9190614615565b90506009600a61345d9190614444565b8111156134fa57600047905061347282612bf6565b600081476134809190614615565b9050600080601c9054906101000a900461ffff1661ffff1611156134f757600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836134d4919061448f565b6134de91906146e4565b90506134e986613155565b6134f5868260006124fe565b505b50505b600047905060008111156135125761351181612e15565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156135a25750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f85750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c15760035483111561361057600090506136c0565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b5575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136b39190614859565b115b156136bf57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff1615806137345750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806137885750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613796576000905061389a565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613819576064600060149054906101000a900460ff1660ff1684613808919061448f565b61381291906146e4565b9050613899565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613898576064600060159054906101000a900460ff1660ff168461388b919061448f565b61389591906146e4565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138df5780820151818401526020810190506138c4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613907826138a5565b61391181856138b0565b93506139218185602086016138c1565b61392a816138eb565b840191505092915050565b6000602082019050818103600083015261394f81846138fc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139878261395c565b9050919050565b6139978161397c565b81146139a257600080fd5b50565b6000813590506139b48161398e565b92915050565b6000819050919050565b6139cd816139ba565b81146139d857600080fd5b50565b6000813590506139ea816139c4565b92915050565b60008060408385031215613a0757613a06613957565b5b6000613a15858286016139a5565b9250506020613a26858286016139db565b9150509250929050565b60008115159050919050565b613a4581613a30565b82525050565b6000602082019050613a606000830184613a3c565b92915050565b613a6f816139ba565b82525050565b6000602082019050613a8a6000830184613a66565b92915050565b613a9981613a30565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b600080600060608486031215613ad557613ad4613957565b5b6000613ae3868287016139a5565b9350506020613af486828701613aa7565b9250506040613b0586828701613aa7565b9150509250925092565b60008060408385031215613b2657613b25613957565b5b6000613b34858286016139a5565b9250506020613b4585828601613aa7565b9150509250929050565b600060ff82169050919050565b613b6581613b4f565b82525050565b600061ffff82169050919050565b613b8281613b6b565b82525050565b600060c082019050613b9d6000830189613b5c565b613baa6020830188613b5c565b613bb76040830187613b79565b613bc46060830186613b79565b613bd16080830185613b79565b613bde60a0830184613b79565b979650505050505050565b600080600060608486031215613c0257613c01613957565b5b6000613c10868287016139a5565b9350506020613c21868287016139a5565b9250506040613c32868287016139db565b9150509250925092565b613c4581613b4f565b8114613c5057600080fd5b50565b600081359050613c6281613c3c565b92915050565b60008060408385031215613c7f57613c7e613957565b5b6000613c8d85828601613c53565b9250506020613c9e85828601613aa7565b9150509250929050565b6000602082019050613cbd6000830184613b5c565b92915050565b600060208284031215613cd957613cd8613957565b5b6000613ce7848285016139db565b91505092915050565b6000608082019050613d056000830187613a66565b613d126020830186613a66565b613d1f6040830185613a66565b613d2c6060830184613a66565b95945050505050565b600060208284031215613d4b57613d4a613957565b5b6000613d59848285016139a5565b91505092915050565b6000604082019050613d776000830185613a3c565b613d846020830184613a3c565b9392505050565b600080600060608486031215613da457613da3613957565b5b6000613db2868287016139a5565b9350506020613dc3868287016139a5565b9250506040613dd4868287016139a5565b9150509250925092565b613de78161397c565b82525050565b600060a082019050613e026000830188613dde565b613e0f6020830187613dde565b613e1c6040830186613dde565b613e296060830185613dde565b613e366080830184613dde565b9695505050505050565b613e4981613b6b565b8114613e5457600080fd5b50565b600081359050613e6681613e40565b92915050565b60008060408385031215613e8357613e82613957565b5b6000613e9185828601613e57565b9250506020613ea285828601613e57565b9150509250929050565b60008060408385031215613ec357613ec2613957565b5b6000613ed1858286016139a5565b9250506020613ee2858286016139a5565b9150509250929050565b600063ffffffff82169050919050565b613f0581613eec565b8114613f1057600080fd5b50565b600081359050613f2281613efc565b92915050565b60008060008060808587031215613f4257613f41613957565b5b6000613f5087828801613f13565b9450506020613f6187828801613f13565b9350506040613f7287828801613f13565b9250506060613f8387828801613f13565b91505092959194509250565b6000613f9a8261395c565b9050919050565b613faa81613f8f565b8114613fb557600080fd5b50565b600081359050613fc781613fa1565b92915050565b600060208284031215613fe357613fe2613957565b5b6000613ff184828501613fb8565b91505092915050565b6000806000806080858703121561401457614013613957565b5b600061402287828801613e57565b945050602061403387828801613e57565b935050604061404487828801613e57565b925050606061405587828801613e57565b91505092959194509250565b6000806040838503121561407857614077613957565b5b600061408685828601613c53565b925050602061409785828601613c53565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006140fd602b836138b0565b9150614108826140a1565b604082019050919050565b6000602082019050818103600083015261412c816140f0565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006141696009836138b0565b915061417482614133565b602082019050919050565b600060208201905081810360008301526141988161415c565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006141d56012836138b0565b91506141e08261419f565b602082019050919050565b60006020820190508181036000830152614204816141c8565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006142416015836138b0565b915061424c8261420b565b602082019050919050565b6000602082019050818103600083015261427081614234565b9050919050565b6000815190506142868161398e565b92915050565b6000602082840312156142a2576142a1613957565b5b60006142b084828501614277565b91505092915050565b60006040820190506142ce6000830185613dde565b6142db6020830184613dde565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561436857808604811115614344576143436142e2565b5b60018516156143535780820291505b808102905061436185614311565b9450614328565b94509492505050565b600082614381576001905061443d565b8161438f576000905061443d565b81600181146143a557600281146143af576143de565b600191505061443d565b60ff8411156143c1576143c06142e2565b5b8360020a9150848211156143d8576143d76142e2565b5b5061443d565b5060208310610133831016604e8410600b84101617156144135782820a90508381111561440e5761440d6142e2565b5b61443d565b614420848484600161431e565b92509050818404811115614437576144366142e2565b5b81810290505b9392505050565b600061444f826139ba565b915061445a83613b4f565b92506144877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614371565b905092915050565b600061449a826139ba565b91506144a5836139ba565b92508282026144b3816139ba565b915082820484148315176144ca576144c96142e2565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006145076010836138b0565b9150614512826144d1565b602082019050919050565b60006020820190508181036000830152614536816144fa565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614573601c836138b0565b915061457e8261453d565b602082019050919050565b600060208201905081810360008301526145a281614566565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145df6010836138b0565b91506145ea826145a9565b602082019050919050565b6000602082019050818103600083015261460e816145d2565b9050919050565b6000614620826139ba565b915061462b836139ba565b9250828203905081811115614643576146426142e2565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b600061467f601a836138b0565b915061468a82614649565b602082019050919050565b600060208201905081810360008301526146ae81614672565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146ef826139ba565b91506146fa836139ba565b92508261470a576147096146b5565b5b828204905092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061474b6009836138b0565b915061475682614715565b602082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006147b76015836138b0565b91506147c282614781565b602082019050919050565b600060208201905081810360008301526147e6816147aa565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006148236017836138b0565b915061482e826147ed565b602082019050919050565b6000602082019050818103600083015261485281614816565b9050919050565b6000614864826139ba565b915061486f836139ba565b9250828201905080821115614887576148866142e2565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006148c36010836138b0565b91506148ce8261488d565b602082019050919050565b600060208201905081810360008301526148f2816148b6565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061492f6014836138b0565b915061493a826148f9565b602082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061499b6014836138b0565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000614a07600c836138b0565b9150614a12826149d1565b602082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614a736017836138b0565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614adf6018836138b0565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000614b3a614b35614b308461395c565b614b15565b61395c565b9050919050565b6000614b4c82614b1f565b9050919050565b6000614b5e82614b41565b9050919050565b614b6e81614b53565b82525050565b6000602082019050614b896000830184614b65565b92915050565b6000614b9a82613b6b565b9150614ba583613b6b565b9250828201905061ffff811115614bbf57614bbe6142e2565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614bfb600f836138b0565b9150614c0682614bc5565b602082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b6000614c3c82613b4f565b9150614c4783613b4f565b9250828201905060ff811115614c6057614c5f6142e2565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614c9c6012836138b0565b9150614ca782614c66565b602082019050919050565b60006020820190508181036000830152614ccb81614c8f565b9050919050565b6000819050919050565b6000614cf7614cf2614ced84614cd2565b614b15565b6139ba565b9050919050565b614d0781614cdc565b82525050565b600060c082019050614d226000830189613dde565b614d2f6020830188613a66565b614d3c6040830187614cfe565b614d496060830186614cfe565b614d566080830185613dde565b614d6360a0830184613a66565b979650505050505050565b600081519050614d7d816139c4565b92915050565b600080600060608486031215614d9c57614d9b613957565b5b6000614daa86828701614d6e565b9350506020614dbb86828701614d6e565b9250506040614dcc86828701614d6e565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614e0c601d836138b0565b9150614e1782614dd6565b602082019050919050565b60006020820190508181036000830152614e3b81614dff565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614e786011836138b0565b9150614e8382614e42565b602082019050919050565b60006020820190508181036000830152614ea781614e6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f418161397c565b82525050565b6000614f538383614f38565b60208301905092915050565b6000602082019050919050565b6000614f7782614f0c565b614f818185614f17565b9350614f8c83614f28565b8060005b83811015614fbd578151614fa48882614f47565b9750614faf83614f5f565b925050600181019050614f90565b5085935050505092915050565b600060a082019050614fdf6000830188613a66565b614fec6020830187614cfe565b8181036040830152614ffe8186614f6c565b905061500d6060830185613dde565b61501a6080830184613a66565b969550505050505056fea26469706673582212205ef970774fe5912cc6c4a8b40f2291b7737d40c3ca1e02b3635d3d7d0072ec8164736f6c63430008110033

Deployed Bytecode Sourcemap

6397:15390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11239:502;;;;;;;;;;;;;:::i;:::-;;9567:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9905:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9297:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14673:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14933:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15425:294;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;10362:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20929:570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9391:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21507:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17228:208;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9653:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15319:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14513:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9477:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16687:533;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16447:234;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;10129:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17442:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10774:132;;;;;;;;;;;;;:::i;:::-;;9764:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17917:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5569:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15956:483;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15725:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11239:502;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:4:::1;8188:10;;:17;;;;;;;;;;;;;;;;;;11342:1:::2;11320:24;;:10;;;;;;;;;;;:24;;;11312:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:1;11377:21;:23;11369:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11467:1;11442:9;:24;11460:4;11442:24;;;;;;;;;;;;;;;;:26;11434:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11536:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11518:58;;;11585:4;11592:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11518:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11505:10;;:113;;;;;;;;;;;;;;;;;;11629:69;11643:9;:24;11661:4;11643:24;;;;;;;;;;;;;;;;11669:21;11692:5;11629:13;:69::i;:::-;11729:4;11709:5;:17;11715:10;;;;;;;;;;;11709:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;8223:5:::1;8210:10;;:18;;;;;;;;;;;;;;;;;;11239:502::o:0;9567:80::-;9615:13;9639:5;;;;;;;;;;;;;;;;;9632:12;;9567:80;:::o;9905:216::-;9980:4;10032:6;9997:11;:23;10009:10;9997:23;;;;;;;;;;;;;;;:32;10021:7;9997:32;;;;;;;;;;;;;;;:41;;;;10075:7;10054:37;;10063:10;10054:37;;;10084:6;10054:37;;;;;;:::i;:::-;;;;;;;;10109:4;10102:11;;9905:216;;;;:::o;9297:88::-;9352:7;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;9363:19;;9297:88;:::o;14673:254::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14774:8:::1;:18;;;;14786:6;14774:18;14770:72;;;14805:5;:13;14811:6;14805:13;;;;;;;;;;;;;;;;;;;;;;;;;14804:14;14796:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;14770:72;14872:6;14852:7;:17;14861:6;14852:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14911:8;14889:9;:19;14900:6;14889:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14673:254:::0;;;:::o;14933:380::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15062:10:::1;;;;;;;;;;;15041:31;;:17;:31;;::::0;15033:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15143:15;15116:5;:24;15122:17;15116:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15174:15;15170:136;;;15236:5;15207:7;:26;15215:17;15207:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15288:5;15257:9;:28;15267:17;15257:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15170:136;14933:380:::0;;:::o;15425:294::-;15470:12;15484:13;15499:22;15523:24;15549:15;15566:22;15611:11;;;;;;;;;;;15624:12;;;;;;;;;;;15638:19;;;;;;;;;;;15659:21;;;;;;;;;;;15682:12;;;;;;;;;;;15696:14;;;;;;;;;;;15602:109;;;;;;;;;;;;15425:294;;;;;;:::o;10362:404::-;10462:4;10487:25;10505:6;10487:17;:25::i;:::-;10479:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10582:17;10547:11;:19;10559:6;10547:19;;;;;;;;;;;;;;;:31;10567:10;10547:31;;;;;;;;;;;;;;;;:52;10544:157;;10683:6;10649:11;:19;10661:6;10649:19;;;;;;;;;;;;;;;:31;10669:10;10649:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;10615:11;:19;10627:6;10615:19;;;;;;;;;;;;;;;:31;10635:10;10615:31;;;;;;;;;;;;;;;:74;;;;10544:157;10718:40;10732:6;10740:9;10751:6;10718:13;:40::i;:::-;10711:47;;10362:404;;;;;:::o;20929:570::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:4:::1;8188:10;;:17;;;;;;;;;;;;;;;;;;21067:3:::2;21047:16;:23;;;;21039:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21112:20;21181:3;21162:16;21135:43;;:24;21153:4;21135:9;:24::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;21112:72;;6473:1;21214:2;:15;;;;:::i;:::-;21199:12;:30;21195:97;;;21246:34;21267:12;21246:20;:34::i;:::-;21195:97;21306:7;21302:190;;;21331:18;21352:21;21331:42;;21409:1;21396:10;:14;21388:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21439:40;21457:21;21439:17;:40::i;:::-;21315:177;21302:190;21028:471;8223:5:::1;8210:10;;:18;;;;;;;;;;;;;;;;;;20929:570:::0;;:::o;9391:80::-;9443:5;6473:1;9452:16;;9391:80;:::o;21507:273::-;21563:24;21590:21;21600:10;21590:9;:21::i;:::-;21563:48;;21640:16;21630:6;:26;;21622:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21693:31;21705:10;21717:6;21693:11;:31::i;:::-;21753:10;21740:32;;;21765:6;21740:32;;;;;;:::i;:::-;;;;;;;;21552:228;21507:273;:::o;17228:208::-;17276:13;17291:17;17310:18;17330;17371:12;;17385:16;;17403:11;;17416;;17362:66;;;;;;;;17228:208;;;;:::o;9653:105::-;9719:7;9737:9;:18;9747:7;9737:18;;;;;;;;;;;;;;;;9730:25;;9653:105;;;:::o;15319:98::-;15372:4;15396:5;:13;15402:6;15396:13;;;;;;;;;;;;;;;;;;;;;;;;;15389:20;;15319:98;;;:::o;14513:154::-;14575:11;14588:13;14623:7;:15;14631:6;14623:15;;;;;;;;;;;;;;;;;;;;;;;;;14640:9;:17;14650:6;14640:17;;;;;;;;;;;;;;;;;;;;;;;;;14614:45;;;;14513:154;;;:::o;9477:84::-;9527:13;9551:7;;;;;;;;;;;;;;;;;9544:14;;9477:84;:::o;16687:533::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16815:5:::1;:19;16821:12;16815:19;;;;;;;;;;;;;;;;;;;;;;;;;16814:20;:46;;;;;16839:5;:21;16845:14;16839:21;;;;;;;;;;;;;;;;;;;;;;;;;16838:22;16814:46;:68;;;;;16865:5;:17;16871:10;16865:17;;;;;;;;;;;;;;;;;;;;;;;;;16864:18;16814:68;16806:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;16948:12;16921:16;;:40;;;;;;;;;;;;;;;;;;17001:14;16972:18;;:44;;;;;;;;;;;;;;;;;;17038:10;17027:8;;:21;;;;;;;;;;;;;;;;;;17083:4;17059:7;:21;17067:12;17059:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17124:4;17098:7;:23;17106:14;17098:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17165:4;17139:9;:23;17149:12;17139:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17208:4;17180:9;:25;17190:14;17180:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16687:533:::0;;;:::o;16447:234::-;16494:13;16509:17;16528;16547:19;16568:15;16606:6;;;;;;;;;;;16614:10;;;;;;;;;;;16626:16;;;;;;;;;;;16644:18;;;;;;;;;;;16664:8;;;;;;;;;;;16597:76;;;;;;;;;;16447:234;;;;;:::o;10129:225::-;10209:4;10234:29;10252:10;10234:17;:29::i;:::-;10226:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10302:44;10316:10;10328:9;10339:6;10302:13;:44::i;:::-;10295:51;;10129:225;;;;:::o;17442:469::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17548:16:::1;17607:1;17600:4;17582:15;17567:30;;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;17567:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;17548:60;;17639:12;;17627:8;:24;;17619:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;17698:8;17683:12;:23;;;;17717:20;17784:1;17777:4;17755:19;17740:34;;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;17740:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;17717:68;;17820:16;;17804:12;:32;;17796:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17891:12;17872:16;:31;;;;17537:374;;17442:469:::0;;:::o;10774:132::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10836:12:::1;;;;;;;;;;;10835:13;10827:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10884:14;:12;:14::i;:::-;10774:132::o:0;9764:133::-;9848:7;9866:11;:19;9878:6;9866:19;;;;;;;;;;;;;;;:28;9886:7;9866:28;;;;;;;;;;;;;;;;9859:35;;9764:133;;;;:::o;17917:465::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18085:10:::1;18059:36;;18074:8;18059:23;;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;18059:23;;;;:::i;:::-;:36;;;;:::i;:::-;18045:11;:50;;;;18146:10;18120:36;;18135:8;18120:23;;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;18120:23;;;;:::i;:::-;:36;;;;:::i;:::-;18106:11;:50;;;;18188:11;;18175;;:24;;18167:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18262:6;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;18247:21;;;;:::i;:::-;18235:11;;:33;18227:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18342:3;6473:1;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;18327:18;;;;:::i;:::-;18315:11;;:30;18307:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17917:465:::0;;;;:::o;5569:131::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5652:8:::1;5643:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5667:30;5688:8;5667:30;;;;;;:::i;:::-;;;;;;;;5569:131:::0;:::o;15956:483::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16109:18:::1;16181:17;16163:15;16148:12;16130:15;:30;;;;:::i;:::-;:48;;;;:::i;:::-;:68;;;;:::i;:::-;16109:89;;16232:1;16218:11;:15;;;16209:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;16279:12;16264;;:27;;;;;;;;;;;;;;;;;;16324:15;16302:19;;:37;;;;;;;;;;;;;;;;;;16374:17;16350:21;;:41;;;;;;;;;;;;;;;;;;16420:11;16402:15;;:29;;;;;;;;;;;;;;;;;;16098:341;15956:483:::0;;;;:::o;15725:223::-;5503:6;;;;;;;;;;5489:20;;:10;:20;;;5481:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15845:2:::1;15831:10;15819:9;:22;;;;:::i;:::-;:28;;;;15811:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;15895:9;15881:11;;:23;;;;;;;;;;;;;;;;;;15930:10;15915:12;;:25;;;;;;;;;;;;;;;;;;15725:223:::0;;:::o;11749:385::-;11852:24;11879:8;;;;;;;;;;;11852:35;;11903:8;11898:50;;;11943:1;11916:29;;11898:50;11958:28;11973:12;11958:14;:28::i;:::-;11997:18;;;;;;;;;;;:34;;;12039:13;12064:4;12071:12;12085:1;12088;12091:16;12109:15;11997:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11841:293;11749:385;;;:::o;13795:279::-;13860:4;13876:16;13895:5;13876:24;;13916:12;;;;;;;;;;;13911:124;;;13947:4;13933:18;;13911:124;;;13974:7;:15;13982:6;13974:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;13993:9;:17;14003:6;13993:17;;;;;;;;;;;;;;;;;;;;;;;;;13974:36;13970:65;;;14028:4;14014:18;;13970:65;13911:124;14055:11;14048:18;;;13795:279;;;:::o;12326:958::-;12418:4;12461:1;12443:20;;:6;:20;;;12435:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12513:12;;;;;;;;;;;12508:89;;12537:7;:15;12545:6;12537:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;12556:9;:17;12566:6;12556:17;;;;;;;;;;;;;;;;;;;;;;;;;12537:36;12529:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12508:89;12613:10;;;;;;;;;;;12612:11;:31;;;;;12627:5;:16;12633:9;12627:16;;;;;;;;;;;;;;;;;;;;;;;;;12612:31;12607:64;;;12648:20;:18;:20::i;:::-;12607:64;12714:4;12696:23;;:6;:23;;;;:53;;;;;12744:4;12723:26;;:9;:26;;;;12696:53;:73;;;;;12763:6;;;;;;;;;;12753:16;;:6;:16;;;;12696:73;12691:155;;;12782:39;12795:6;12803:9;12814:6;12782:12;:39::i;:::-;12774:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12691:155;12856:18;12877:40;12891:6;12899:9;12910:6;12877:13;:40::i;:::-;12856:61;;12928:23;12963:10;12954:6;:19;;;;:::i;:::-;12928:45;;13024:6;13004:9;:17;13014:6;13004:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12984:9;:17;12994:6;12984:17;;;;;;;;;;;;;;;:46;;;;13059:1;13046:10;:14;13041:91;;;13119:10;13092:9;:24;13110:4;13092:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;13065:9;:24;13083:4;13065:24;;;;;;;;;;;;;;;:64;;;;13041:91;13188:15;13165:9;:20;13175:9;13165:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13142:9;:20;13152:9;13142:20;;;;;;;;;;;;;;;:61;;;;13236:9;13219:35;;13228:6;13219:35;;;13247:6;13219:35;;;;;;:::i;:::-;;;;;;;;13272:4;13265:11;;;;12326:958;;;;;:::o;20006:366::-;20076:27;20091:11;20076:14;:27::i;:::-;20114:21;20152:1;20138:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20114:40;;20183:4;20165;20170:1;20165:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20209:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20199:4;20204:1;20199:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;20245:18;;;;;;;;;;;:69;;;20315:11;20327:1;20329:4;20342;20348:15;20245:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20065:307;20006:366;:::o;20380:541::-;20442:21;20488;;;;;;;;;;;20466:19;;;;;;;;;;;:43;;;;:::i;:::-;20442:67;;20541:1;20524:14;:18;;;20520:394;;;20559:23;20616:14;20585:45;;20594:19;;;;;;;;;;;20585:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;20559:71;;20645:25;20706:14;20673:47;;20682:21;;;;;;;;;;;20673:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;20645:75;;20758:1;20740:15;:19;20735:74;;;20764:16;;;;;;;;;;;:25;;:42;20790:15;20764:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20735:74;20848:1;20828:17;:21;20823:80;;;20854:18;;;;;;;;;;;:27;;:46;20882:17;20854:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20823:80;20544:370;;20520:394;20431:490;20380:541;:::o;18390:267::-;18480:1;18471:6;:10;18466:184;;;18524:6;18499:9;:21;18509:10;18499:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18571:6;18545:9;:22;7773:1;18545:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;7773:1;18597:41;;18606:10;18597:41;;;18631:6;18597:41;;;;;;:::i;:::-;;;;;;;;18466:184;18390:267;;:::o;12142:176::-;12224:3;12220:1;6473;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;12205:16;;;;:::i;:::-;:22;;;;:::i;:::-;12186:12;:41;;;;12277:3;12273:1;6473;6534:2;:13;;;;:::i;:::-;6521:9;:27;;;;:::i;:::-;12258:16;;;;:::i;:::-;:22;;;;:::i;:::-;12239:16;:41;;;;12306:4;12291:12;;:19;;;;;;;;;;;;;;;;;;12142:176::o;10914:317::-;11034:12;10985:11;:26;11005:4;10985:26;;;;;;;;;;;;;;;:46;7869:42;10985:46;;;;;;;;;;;;;;;;:61;10980:244;;;11113:17;11064:11;:26;11084:4;11064:26;;;;;;;;;;;;;;;:46;7869:42;11064:46;;;;;;;;;;;;;;;:66;;;;7869:42;11150:62;;11167:4;11150:62;;;11194:17;11150:62;;;;;;:::i;:::-;;;;;;;;10980:244;10914:317;:::o;18665:1333::-;8201:4;8188:10;;:17;;;;;;;;;;;;;;;;;;18726:27:::1;18756:24;18774:4;18756:9;:24::i;:::-;18726:54;;18821:11;;18798:19;:34;;:50;;;;;18836:12;;;;;;;;;;;18798:50;18793:1198;;;18894:11;;18871:19;:34;18866:80;;18932:11;;18910:33;;18866:80;18962:20;19040:1;19022:15;;;;;;;;;;;18985:52;;19007:12;;;;;;;;;;;18985:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;18962:79;;19056:21;19119:15:::0;::::1;;;;;;;;;;19080:54;;19102:14;;;;;;;;;;;19080:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;19056:78;;19149:41;19169:4;19176:13;19149:11;:41::i;:::-;19219:21;19280:13;19265:12;19243:19;:34;;;;:::i;:::-;:50;;;;:::i;:::-;19219:74;;6473:1;19328:2;:13;;;;:::i;:::-;19312;:29;19308:521;;;19363:19;19385:21;19363:43;;19425:35;19446:13;19425:20;:35::i;:::-;19479:19;19525:11;19501:21;:35;;;;:::i;:::-;19479:57;;19575:1;19560:12:::0;::::1;;;;;;;;;;:16;;;19555:259;;;19602:21;19655:15:::0;::::1;;;;;;;;;;19626:44;;19640:12;;;;;;;;;;;19626:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;19602:68;;19694:28;19709:12;19694:14;:28::i;:::-;19745:49;19759:12;19773:13;19788:5;19745:13;:49::i;:::-;19579:235;19555:259;19344:485;;19308:521;19843:27;19873:21;19843:51;;19934:1;19912:19;:23;19909:71;;;19939:38;19957:19;19939:17;:38::i;:::-;19909:71;18851:1140;;;;18793:1198;18715:1283;8223:5:::0;8210:10;;:18;;;;;;;;;;;;;;;;;;18665:1333::o;13292:495::-;13396:4;13413:21;13437:4;13413:28;;13457:12;;;;;;;;;;;:34;;;;;13474:9;:17;13484:6;13474:17;;;;;;;;;;;;;;;;;;;;;;;;;13473:18;13457:34;:59;;;;;13496:9;:20;13506:9;13496:20;;;;;;;;;;;;;;;;;;;;;;;;;13495:21;13457:59;13452:294;;;13556:12;;13539:14;:29;13534:201;;;13592:5;13573:24;;13534:201;;;13625:5;:16;13631:9;13625:16;;;;;;;;;;;;;;;;;;;;;;;;;13624:17;:79;;;;;13686:16;;13669:14;13646:9;:20;13656:9;13646:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;13624:79;13619:116;;;13727:5;13708:24;;13619:116;13534:201;13452:294;13763:16;13756:23;;;13292:495;;;;;:::o;14082:421::-;14179:7;14199:17;14233:12;;;;;;;;;;;14232:13;:32;;;;14249:7;:15;14257:6;14249:15;;;;;;;;;;;;;;;;;;;;;;;;;14232:32;:54;;;;14268:7;:18;14276:9;14268:18;;;;;;;;;;;;;;;;;;;;;;;;;14232:54;14227:242;;;14303:1;14291:13;;14227:242;;;14327:5;:13;14333:6;14327:13;;;;;;;;;;;;;;;;;;;;;;;;;14322:147;;;14380:3;14366:11;;;;;;;;;;;14357:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;14345:38;;14322:147;;;14406:5;:16;14412:9;14406:16;;;;;;;;;;;;;;;;;;;;;;;;;14401:68;;;14463:3;14448:12;;;;;;;;;;;14439:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;14427:39;;14401:68;14322:147;14227:242;14486:9;14479:16;;;14082:421;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:468::-;4737:6;4745;4794:2;4782:9;4773:7;4769:23;4765:32;4762:119;;;4800:79;;:::i;:::-;4762:119;4920:1;4945:53;4990:7;4981:6;4970:9;4966:22;4945:53;:::i;:::-;4935:63;;4891:117;5047:2;5073:50;5115:7;5106:6;5095:9;5091:22;5073:50;:::i;:::-;5063:60;;5018:115;4672:468;;;;;:::o;5146:86::-;5181:7;5221:4;5214:5;5210:16;5199:27;;5146:86;;;:::o;5238:112::-;5321:22;5337:5;5321:22;:::i;:::-;5316:3;5309:35;5238:112;;:::o;5356:89::-;5392:7;5432:6;5425:5;5421:18;5410:29;;5356:89;;;:::o;5451:115::-;5536:23;5553:5;5536:23;:::i;:::-;5531:3;5524:36;5451:115;;:::o;5572:743::-;5789:4;5827:3;5816:9;5812:19;5804:27;;5841:67;5905:1;5894:9;5890:17;5881:6;5841:67;:::i;:::-;5918:68;5982:2;5971:9;5967:18;5958:6;5918:68;:::i;:::-;5996:70;6062:2;6051:9;6047:18;6038:6;5996:70;:::i;:::-;6076;6142:2;6131:9;6127:18;6118:6;6076:70;:::i;:::-;6156:71;6222:3;6211:9;6207:19;6198:6;6156:71;:::i;:::-;6237;6303:3;6292:9;6288:19;6279:6;6237:71;:::i;:::-;5572:743;;;;;;;;;:::o;6321:619::-;6398:6;6406;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6844:2;6870:53;6915:7;6906:6;6895:9;6891:22;6870:53;:::i;:::-;6860:63;;6815:118;6321:619;;;;;:::o;6946:118::-;7017:22;7033:5;7017:22;:::i;:::-;7010:5;7007:33;6997:61;;7054:1;7051;7044:12;6997:61;6946:118;:::o;7070:135::-;7114:5;7152:6;7139:20;7130:29;;7168:31;7193:5;7168:31;:::i;:::-;7070:135;;;;:::o;7211:464::-;7274:6;7282;7331:2;7319:9;7310:7;7306:23;7302:32;7299:119;;;7337:79;;:::i;:::-;7299:119;7457:1;7482:51;7525:7;7516:6;7505:9;7501:22;7482:51;:::i;:::-;7472:61;;7428:115;7582:2;7608:50;7650:7;7641:6;7630:9;7626:22;7608:50;:::i;:::-;7598:60;;7553:115;7211:464;;;;;:::o;7681:214::-;7770:4;7808:2;7797:9;7793:18;7785:26;;7821:67;7885:1;7874:9;7870:17;7861:6;7821:67;:::i;:::-;7681:214;;;;:::o;7901:329::-;7960:6;8009:2;7997:9;7988:7;7984:23;7980:32;7977:119;;;8015:79;;:::i;:::-;7977:119;8135:1;8160:53;8205:7;8196:6;8185:9;8181:22;8160:53;:::i;:::-;8150:63;;8106:117;7901:329;;;;:::o;8236:553::-;8413:4;8451:3;8440:9;8436:19;8428:27;;8465:71;8533:1;8522:9;8518:17;8509:6;8465:71;:::i;:::-;8546:72;8614:2;8603:9;8599:18;8590:6;8546:72;:::i;:::-;8628;8696:2;8685:9;8681:18;8672:6;8628:72;:::i;:::-;8710;8778:2;8767:9;8763:18;8754:6;8710:72;:::i;:::-;8236:553;;;;;;;:::o;8795:329::-;8854:6;8903:2;8891:9;8882:7;8878:23;8874:32;8871:119;;;8909:79;;:::i;:::-;8871:119;9029:1;9054:53;9099:7;9090:6;9079:9;9075:22;9054:53;:::i;:::-;9044:63;;9000:117;8795:329;;;;:::o;9130:308::-;9239:4;9277:2;9266:9;9262:18;9254:26;;9290:65;9352:1;9341:9;9337:17;9328:6;9290:65;:::i;:::-;9365:66;9427:2;9416:9;9412:18;9403:6;9365:66;:::i;:::-;9130:308;;;;;:::o;9444:619::-;9521:6;9529;9537;9586:2;9574:9;9565:7;9561:23;9557:32;9554:119;;;9592:79;;:::i;:::-;9554:119;9712:1;9737:53;9782:7;9773:6;9762:9;9758:22;9737:53;:::i;:::-;9727:63;;9683:117;9839:2;9865:53;9910:7;9901:6;9890:9;9886:22;9865:53;:::i;:::-;9855:63;;9810:118;9967:2;9993:53;10038:7;10029:6;10018:9;10014:22;9993:53;:::i;:::-;9983:63;;9938:118;9444:619;;;;;:::o;10069:118::-;10156:24;10174:5;10156:24;:::i;:::-;10151:3;10144:37;10069:118;;:::o;10193:664::-;10398:4;10436:3;10425:9;10421:19;10413:27;;10450:71;10518:1;10507:9;10503:17;10494:6;10450:71;:::i;:::-;10531:72;10599:2;10588:9;10584:18;10575:6;10531:72;:::i;:::-;10613;10681:2;10670:9;10666:18;10657:6;10613:72;:::i;:::-;10695;10763:2;10752:9;10748:18;10739:6;10695:72;:::i;:::-;10777:73;10845:3;10834:9;10830:19;10821:6;10777:73;:::i;:::-;10193:664;;;;;;;;:::o;10863:120::-;10935:23;10952:5;10935:23;:::i;:::-;10928:5;10925:34;10915:62;;10973:1;10970;10963:12;10915:62;10863:120;:::o;10989:137::-;11034:5;11072:6;11059:20;11050:29;;11088:32;11114:5;11088:32;:::i;:::-;10989:137;;;;:::o;11132:470::-;11198:6;11206;11255:2;11243:9;11234:7;11230:23;11226:32;11223:119;;;11261:79;;:::i;:::-;11223:119;11381:1;11406:52;11450:7;11441:6;11430:9;11426:22;11406:52;:::i;:::-;11396:62;;11352:116;11507:2;11533:52;11577:7;11568:6;11557:9;11553:22;11533:52;:::i;:::-;11523:62;;11478:117;11132:470;;;;;:::o;11608:474::-;11676:6;11684;11733:2;11721:9;11712:7;11708:23;11704:32;11701:119;;;11739:79;;:::i;:::-;11701:119;11859:1;11884:53;11929:7;11920:6;11909:9;11905:22;11884:53;:::i;:::-;11874:63;;11830:117;11986:2;12012:53;12057:7;12048:6;12037:9;12033:22;12012:53;:::i;:::-;12002:63;;11957:118;11608:474;;;;;:::o;12088:93::-;12124:7;12164:10;12157:5;12153:22;12142:33;;12088:93;;;:::o;12187:120::-;12259:23;12276:5;12259:23;:::i;:::-;12252:5;12249:34;12239:62;;12297:1;12294;12287:12;12239:62;12187:120;:::o;12313:137::-;12358:5;12396:6;12383:20;12374:29;;12412:32;12438:5;12412:32;:::i;:::-;12313:137;;;;:::o;12456:757::-;12538:6;12546;12554;12562;12611:3;12599:9;12590:7;12586:23;12582:33;12579:120;;;12618:79;;:::i;:::-;12579:120;12738:1;12763:52;12807:7;12798:6;12787:9;12783:22;12763:52;:::i;:::-;12753:62;;12709:116;12864:2;12890:52;12934:7;12925:6;12914:9;12910:22;12890:52;:::i;:::-;12880:62;;12835:117;12991:2;13017:52;13061:7;13052:6;13041:9;13037:22;13017:52;:::i;:::-;13007:62;;12962:117;13118:2;13144:52;13188:7;13179:6;13168:9;13164:22;13144:52;:::i;:::-;13134:62;;13089:117;12456:757;;;;;;;:::o;13219:104::-;13264:7;13293:24;13311:5;13293:24;:::i;:::-;13282:35;;13219:104;;;:::o;13329:138::-;13410:32;13436:5;13410:32;:::i;:::-;13403:5;13400:43;13390:71;;13457:1;13454;13447:12;13390:71;13329:138;:::o;13473:155::-;13527:5;13565:6;13552:20;13543:29;;13581:41;13616:5;13581:41;:::i;:::-;13473:155;;;;:::o;13634:345::-;13701:6;13750:2;13738:9;13729:7;13725:23;13721:32;13718:119;;;13756:79;;:::i;:::-;13718:119;13876:1;13901:61;13954:7;13945:6;13934:9;13930:22;13901:61;:::i;:::-;13891:71;;13847:125;13634:345;;;;:::o;13985:757::-;14067:6;14075;14083;14091;14140:3;14128:9;14119:7;14115:23;14111:33;14108:120;;;14147:79;;:::i;:::-;14108:120;14267:1;14292:52;14336:7;14327:6;14316:9;14312:22;14292:52;:::i;:::-;14282:62;;14238:116;14393:2;14419:52;14463:7;14454:6;14443:9;14439:22;14419:52;:::i;:::-;14409:62;;14364:117;14520:2;14546:52;14590:7;14581:6;14570:9;14566:22;14546:52;:::i;:::-;14536:62;;14491:117;14647:2;14673:52;14717:7;14708:6;14697:9;14693:22;14673:52;:::i;:::-;14663:62;;14618:117;13985:757;;;;;;;:::o;14748:466::-;14812:6;14820;14869:2;14857:9;14848:7;14844:23;14840:32;14837:119;;;14875:79;;:::i;:::-;14837:119;14995:1;15020:51;15063:7;15054:6;15043:9;15039:22;15020:51;:::i;:::-;15010:61;;14966:115;15120:2;15146:51;15189:7;15180:6;15169:9;15165:22;15146:51;:::i;:::-;15136:61;;15091:116;14748:466;;;;;:::o;15220:230::-;15360:34;15356:1;15348:6;15344:14;15337:58;15429:13;15424:2;15416:6;15412:15;15405:38;15220:230;:::o;15456:366::-;15598:3;15619:67;15683:2;15678:3;15619:67;:::i;:::-;15612:74;;15695:93;15784:3;15695:93;:::i;:::-;15813:2;15808:3;15804:12;15797:19;;15456:366;;;:::o;15828:419::-;15994:4;16032:2;16021:9;16017:18;16009:26;;16081:9;16075:4;16071:20;16067:1;16056:9;16052:17;16045:47;16109:131;16235:4;16109:131;:::i;:::-;16101:139;;15828:419;;;:::o;16253:159::-;16393:11;16389:1;16381:6;16377:14;16370:35;16253:159;:::o;16418:365::-;16560:3;16581:66;16645:1;16640:3;16581:66;:::i;:::-;16574:73;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16418:365;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:168::-;17354:20;17350:1;17342:6;17338:14;17331:44;17214:168;:::o;17388:366::-;17530:3;17551:67;17615:2;17610:3;17551:67;:::i;:::-;17544:74;;17627:93;17716:3;17627:93;:::i;:::-;17745:2;17740:3;17736:12;17729:19;;17388:366;;;:::o;17760:419::-;17926:4;17964:2;17953:9;17949:18;17941:26;;18013:9;18007:4;18003:20;17999:1;17988:9;17984:17;17977:47;18041:131;18167:4;18041:131;:::i;:::-;18033:139;;17760:419;;;:::o;18185:171::-;18325:23;18321:1;18313:6;18309:14;18302:47;18185:171;:::o;18362:366::-;18504:3;18525:67;18589:2;18584:3;18525:67;:::i;:::-;18518:74;;18601:93;18690:3;18601:93;:::i;:::-;18719:2;18714:3;18710:12;18703:19;;18362:366;;;:::o;18734:419::-;18900:4;18938:2;18927:9;18923:18;18915:26;;18987:9;18981:4;18977:20;18973:1;18962:9;18958:17;18951:47;19015:131;19141:4;19015:131;:::i;:::-;19007:139;;18734:419;;;:::o;19159:143::-;19216:5;19247:6;19241:13;19232:22;;19263:33;19290:5;19263:33;:::i;:::-;19159:143;;;;:::o;19308:351::-;19378:6;19427:2;19415:9;19406:7;19402:23;19398:32;19395:119;;;19433:79;;:::i;:::-;19395:119;19553:1;19578:64;19634:7;19625:6;19614:9;19610:22;19578:64;:::i;:::-;19568:74;;19524:128;19308:351;;;;:::o;19665:332::-;19786:4;19824:2;19813:9;19809:18;19801:26;;19837:71;19905:1;19894:9;19890:17;19881:6;19837:71;:::i;:::-;19918:72;19986:2;19975:9;19971:18;19962:6;19918:72;:::i;:::-;19665:332;;;;;:::o;20003:180::-;20051:77;20048:1;20041:88;20148:4;20145:1;20138:15;20172:4;20169:1;20162:15;20189:102;20231:8;20278:5;20275:1;20271:13;20250:34;;20189:102;;;:::o;20297:848::-;20358:5;20365:4;20389:6;20380:15;;20413:5;20404:14;;20427:712;20448:1;20438:8;20435:15;20427:712;;;20543:4;20538:3;20534:14;20528:4;20525:24;20522:50;;;20552:18;;:::i;:::-;20522:50;20602:1;20592:8;20588:16;20585:451;;;21017:4;21010:5;21006:16;20997:25;;20585:451;21067:4;21061;21057:15;21049:23;;21097:32;21120:8;21097:32;:::i;:::-;21085:44;;20427:712;;;20297:848;;;;;;;:::o;21151:1073::-;21205:5;21396:8;21386:40;;21417:1;21408:10;;21419:5;;21386:40;21445:4;21435:36;;21462:1;21453:10;;21464:5;;21435:36;21531:4;21579:1;21574:27;;;;21615:1;21610:191;;;;21524:277;;21574:27;21592:1;21583:10;;21594:5;;;21610:191;21655:3;21645:8;21642:17;21639:43;;;21662:18;;:::i;:::-;21639:43;21711:8;21708:1;21704:16;21695:25;;21746:3;21739:5;21736:14;21733:40;;;21753:18;;:::i;:::-;21733:40;21786:5;;;21524:277;;21910:2;21900:8;21897:16;21891:3;21885:4;21882:13;21878:36;21860:2;21850:8;21847:16;21842:2;21836:4;21833:12;21829:35;21813:111;21810:246;;;21966:8;21960:4;21956:19;21947:28;;22001:3;21994:5;21991:14;21988:40;;;22008:18;;:::i;:::-;21988:40;22041:5;;21810:246;22081:42;22119:3;22109:8;22103:4;22100:1;22081:42;:::i;:::-;22066:57;;;;22155:4;22150:3;22146:14;22139:5;22136:25;22133:51;;;22164:18;;:::i;:::-;22133:51;22213:4;22206:5;22202:16;22193:25;;21151:1073;;;;;;:::o;22230:281::-;22288:5;22312:23;22330:4;22312:23;:::i;:::-;22304:31;;22356:25;22372:8;22356:25;:::i;:::-;22344:37;;22400:104;22437:66;22427:8;22421:4;22400:104;:::i;:::-;22391:113;;22230:281;;;;:::o;22517:410::-;22557:7;22580:20;22598:1;22580:20;:::i;:::-;22575:25;;22614:20;22632:1;22614:20;:::i;:::-;22609:25;;22669:1;22666;22662:9;22691:30;22709:11;22691:30;:::i;:::-;22680:41;;22870:1;22861:7;22857:15;22854:1;22851:22;22831:1;22824:9;22804:83;22781:139;;22900:18;;:::i;:::-;22781:139;22565:362;22517:410;;;;:::o;22933:166::-;23073:18;23069:1;23061:6;23057:14;23050:42;22933:166;:::o;23105:366::-;23247:3;23268:67;23332:2;23327:3;23268:67;:::i;:::-;23261:74;;23344:93;23433:3;23344:93;:::i;:::-;23462:2;23457:3;23453:12;23446:19;;23105:366;;;:::o;23477:419::-;23643:4;23681:2;23670:9;23666:18;23658:26;;23730:9;23724:4;23720:20;23716:1;23705:9;23701:17;23694:47;23758:131;23884:4;23758:131;:::i;:::-;23750:139;;23477:419;;;:::o;23902:178::-;24042:30;24038:1;24030:6;24026:14;24019:54;23902:178;:::o;24086:366::-;24228:3;24249:67;24313:2;24308:3;24249:67;:::i;:::-;24242:74;;24325:93;24414:3;24325:93;:::i;:::-;24443:2;24438:3;24434:12;24427:19;;24086:366;;;:::o;24458:419::-;24624:4;24662:2;24651:9;24647:18;24639:26;;24711:9;24705:4;24701:20;24697:1;24686:9;24682:17;24675:47;24739:131;24865:4;24739:131;:::i;:::-;24731:139;;24458:419;;;:::o;24883:166::-;25023:18;25019:1;25011:6;25007:14;25000:42;24883:166;:::o;25055:366::-;25197:3;25218:67;25282:2;25277:3;25218:67;:::i;:::-;25211:74;;25294:93;25383:3;25294:93;:::i;:::-;25412:2;25407:3;25403:12;25396:19;;25055:366;;;:::o;25427:419::-;25593:4;25631:2;25620:9;25616:18;25608:26;;25680:9;25674:4;25670:20;25666:1;25655:9;25651:17;25644:47;25708:131;25834:4;25708:131;:::i;:::-;25700:139;;25427:419;;;:::o;25852:194::-;25892:4;25912:20;25930:1;25912:20;:::i;:::-;25907:25;;25946:20;25964:1;25946:20;:::i;:::-;25941:25;;25990:1;25987;25983:9;25975:17;;26014:1;26008:4;26005:11;26002:37;;;26019:18;;:::i;:::-;26002:37;25852:194;;;;:::o;26052:176::-;26192:28;26188:1;26180:6;26176:14;26169:52;26052:176;:::o;26234:366::-;26376:3;26397:67;26461:2;26456:3;26397:67;:::i;:::-;26390:74;;26473:93;26562:3;26473:93;:::i;:::-;26591:2;26586:3;26582:12;26575:19;;26234:366;;;:::o;26606:419::-;26772:4;26810:2;26799:9;26795:18;26787:26;;26859:9;26853:4;26849:20;26845:1;26834:9;26830:17;26823:47;26887:131;27013:4;26887:131;:::i;:::-;26879:139;;26606:419;;;:::o;27031:180::-;27079:77;27076:1;27069:88;27176:4;27173:1;27166:15;27200:4;27197:1;27190:15;27217:185;27257:1;27274:20;27292:1;27274:20;:::i;:::-;27269:25;;27308:20;27326:1;27308:20;:::i;:::-;27303:25;;27347:1;27337:35;;27352:18;;:::i;:::-;27337:35;27394:1;27391;27387:9;27382:14;;27217:185;;;;:::o;27408:159::-;27548:11;27544:1;27536:6;27532:14;27525:35;27408:159;:::o;27573:365::-;27715:3;27736:66;27800:1;27795:3;27736:66;:::i;:::-;27729:73;;27811:93;27900:3;27811:93;:::i;:::-;27929:2;27924:3;27920:12;27913:19;;27573:365;;;:::o;27944:419::-;28110:4;28148:2;28137:9;28133:18;28125:26;;28197:9;28191:4;28187:20;28183:1;28172:9;28168:17;28161:47;28225:131;28351:4;28225:131;:::i;:::-;28217:139;;27944:419;;;:::o;28369:171::-;28509:23;28505:1;28497:6;28493:14;28486:47;28369:171;:::o;28546:366::-;28688:3;28709:67;28773:2;28768:3;28709:67;:::i;:::-;28702:74;;28785:93;28874:3;28785:93;:::i;:::-;28903:2;28898:3;28894:12;28887:19;;28546:366;;;:::o;28918:419::-;29084:4;29122:2;29111:9;29107:18;29099:26;;29171:9;29165:4;29161:20;29157:1;29146:9;29142:17;29135:47;29199:131;29325:4;29199:131;:::i;:::-;29191:139;;28918:419;;;:::o;29343:173::-;29483:25;29479:1;29471:6;29467:14;29460:49;29343:173;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:191::-;30359:3;30378:20;30396:1;30378:20;:::i;:::-;30373:25;;30412:20;30430:1;30412:20;:::i;:::-;30407:25;;30455:1;30452;30448:9;30441:16;;30476:3;30473:1;30470:10;30467:36;;;30483:18;;:::i;:::-;30467:36;30319:191;;;;:::o;30516:166::-;30656:18;30652:1;30644:6;30640:14;30633:42;30516:166;:::o;30688:366::-;30830:3;30851:67;30915:2;30910:3;30851:67;:::i;:::-;30844:74;;30927:93;31016:3;30927:93;:::i;:::-;31045:2;31040:3;31036:12;31029:19;;30688:366;;;:::o;31060:419::-;31226:4;31264:2;31253:9;31249:18;31241:26;;31313:9;31307:4;31303:20;31299:1;31288:9;31284:17;31277:47;31341:131;31467:4;31341:131;:::i;:::-;31333:139;;31060:419;;;:::o;31485:170::-;31625:22;31621:1;31613:6;31609:14;31602:46;31485:170;:::o;31661:366::-;31803:3;31824:67;31888:2;31883:3;31824:67;:::i;:::-;31817:74;;31900:93;31989:3;31900:93;:::i;:::-;32018:2;32013:3;32009:12;32002:19;;31661:366;;;:::o;32033:419::-;32199:4;32237:2;32226:9;32222:18;32214:26;;32286:9;32280:4;32276:20;32272:1;32261:9;32257:17;32250:47;32314:131;32440:4;32314:131;:::i;:::-;32306:139;;32033:419;;;:::o;32458:170::-;32598:22;32594:1;32586:6;32582:14;32575:46;32458:170;:::o;32634:366::-;32776:3;32797:67;32861:2;32856:3;32797:67;:::i;:::-;32790:74;;32873:93;32962:3;32873:93;:::i;:::-;32991:2;32986:3;32982:12;32975:19;;32634:366;;;:::o;33006:419::-;33172:4;33210:2;33199:9;33195:18;33187:26;;33259:9;33253:4;33249:20;33245:1;33234:9;33230:17;33223:47;33287:131;33413:4;33287:131;:::i;:::-;33279:139;;33006:419;;;:::o;33431:162::-;33571:14;33567:1;33559:6;33555:14;33548:38;33431:162;:::o;33599:366::-;33741:3;33762:67;33826:2;33821:3;33762:67;:::i;:::-;33755:74;;33838:93;33927:3;33838:93;:::i;:::-;33956:2;33951:3;33947:12;33940:19;;33599:366;;;:::o;33971:419::-;34137:4;34175:2;34164:9;34160:18;34152:26;;34224:9;34218:4;34214:20;34210:1;34199:9;34195:17;34188:47;34252:131;34378:4;34252:131;:::i;:::-;34244:139;;33971:419;;;:::o;34396:173::-;34536:25;34532:1;34524:6;34520:14;34513:49;34396:173;:::o;34575:366::-;34717:3;34738:67;34802:2;34797:3;34738:67;:::i;:::-;34731:74;;34814:93;34903:3;34814:93;:::i;:::-;34932:2;34927:3;34923:12;34916:19;;34575:366;;;:::o;34947:419::-;35113:4;35151:2;35140:9;35136:18;35128:26;;35200:9;35194:4;35190:20;35186:1;35175:9;35171:17;35164:47;35228:131;35354:4;35228:131;:::i;:::-;35220:139;;34947:419;;;:::o;35372:174::-;35512:26;35508:1;35500:6;35496:14;35489:50;35372:174;:::o;35552:366::-;35694:3;35715:67;35779:2;35774:3;35715:67;:::i;:::-;35708:74;;35791:93;35880:3;35791:93;:::i;:::-;35909:2;35904:3;35900:12;35893:19;;35552:366;;;:::o;35924:419::-;36090:4;36128:2;36117:9;36113:18;36105:26;;36177:9;36171:4;36167:20;36163:1;36152:9;36148:17;36141:47;36205:131;36331:4;36205:131;:::i;:::-;36197:139;;35924:419;;;:::o;36349:60::-;36377:3;36398:5;36391:12;;36349:60;;;:::o;36415:142::-;36465:9;36498:53;36516:34;36525:24;36543:5;36525:24;:::i;:::-;36516:34;:::i;:::-;36498:53;:::i;:::-;36485:66;;36415:142;;;:::o;36563:126::-;36613:9;36646:37;36677:5;36646:37;:::i;:::-;36633:50;;36563:126;;;:::o;36695:134::-;36753:9;36786:37;36817:5;36786:37;:::i;:::-;36773:50;;36695:134;;;:::o;36835:147::-;36930:45;36969:5;36930:45;:::i;:::-;36925:3;36918:58;36835:147;;:::o;36988:238::-;37089:4;37127:2;37116:9;37112:18;37104:26;;37140:79;37216:1;37205:9;37201:17;37192:6;37140:79;:::i;:::-;36988:238;;;;:::o;37232:193::-;37271:3;37290:19;37307:1;37290:19;:::i;:::-;37285:24;;37323:19;37340:1;37323:19;:::i;:::-;37318:24;;37365:1;37362;37358:9;37351:16;;37388:6;37383:3;37380:15;37377:41;;;37398:18;;:::i;:::-;37377:41;37232:193;;;;:::o;37431:165::-;37571:17;37567:1;37559:6;37555:14;37548:41;37431:165;:::o;37602:366::-;37744:3;37765:67;37829:2;37824:3;37765:67;:::i;:::-;37758:74;;37841:93;37930:3;37841:93;:::i;:::-;37959:2;37954:3;37950:12;37943:19;;37602:366;;;:::o;37974:419::-;38140:4;38178:2;38167:9;38163:18;38155:26;;38227:9;38221:4;38217:20;38213:1;38202:9;38198:17;38191:47;38255:131;38381:4;38255:131;:::i;:::-;38247:139;;37974:419;;;:::o;38399:188::-;38437:3;38456:18;38472:1;38456:18;:::i;:::-;38451:23;;38488:18;38504:1;38488:18;:::i;:::-;38483:23;;38529:1;38526;38522:9;38515:16;;38552:4;38547:3;38544:13;38541:39;;;38560:18;;:::i;:::-;38541:39;38399:188;;;;:::o;38593:168::-;38733:20;38729:1;38721:6;38717:14;38710:44;38593:168;:::o;38767:366::-;38909:3;38930:67;38994:2;38989:3;38930:67;:::i;:::-;38923:74;;39006:93;39095:3;39006:93;:::i;:::-;39124:2;39119:3;39115:12;39108:19;;38767:366;;;:::o;39139:419::-;39305:4;39343:2;39332:9;39328:18;39320:26;;39392:9;39386:4;39382:20;39378:1;39367:9;39363:17;39356:47;39420:131;39546:4;39420:131;:::i;:::-;39412:139;;39139:419;;;:::o;39564:85::-;39609:7;39638:5;39627:16;;39564:85;;;:::o;39655:158::-;39713:9;39746:61;39764:42;39773:32;39799:5;39773:32;:::i;:::-;39764:42;:::i;:::-;39746:61;:::i;:::-;39733:74;;39655:158;;;:::o;39819:147::-;39914:45;39953:5;39914:45;:::i;:::-;39909:3;39902:58;39819:147;;:::o;39972:807::-;40221:4;40259:3;40248:9;40244:19;40236:27;;40273:71;40341:1;40330:9;40326:17;40317:6;40273:71;:::i;:::-;40354:72;40422:2;40411:9;40407:18;40398:6;40354:72;:::i;:::-;40436:80;40512:2;40501:9;40497:18;40488:6;40436:80;:::i;:::-;40526;40602:2;40591:9;40587:18;40578:6;40526:80;:::i;:::-;40616:73;40684:3;40673:9;40669:19;40660:6;40616:73;:::i;:::-;40699;40767:3;40756:9;40752:19;40743:6;40699:73;:::i;:::-;39972:807;;;;;;;;;:::o;40785:143::-;40842:5;40873:6;40867:13;40858:22;;40889:33;40916:5;40889:33;:::i;:::-;40785:143;;;;:::o;40934:663::-;41022:6;41030;41038;41087:2;41075:9;41066:7;41062:23;41058:32;41055:119;;;41093:79;;:::i;:::-;41055:119;41213:1;41238:64;41294:7;41285:6;41274:9;41270:22;41238:64;:::i;:::-;41228:74;;41184:128;41351:2;41377:64;41433:7;41424:6;41413:9;41409:22;41377:64;:::i;:::-;41367:74;;41322:129;41490:2;41516:64;41572:7;41563:6;41552:9;41548:22;41516:64;:::i;:::-;41506:74;;41461:129;40934:663;;;;;:::o;41603:179::-;41743:31;41739:1;41731:6;41727:14;41720:55;41603:179;:::o;41788:366::-;41930:3;41951:67;42015:2;42010:3;41951:67;:::i;:::-;41944:74;;42027:93;42116:3;42027:93;:::i;:::-;42145:2;42140:3;42136:12;42129:19;;41788:366;;;:::o;42160:419::-;42326:4;42364:2;42353:9;42349:18;42341:26;;42413:9;42407:4;42403:20;42399:1;42388:9;42384:17;42377:47;42441:131;42567:4;42441:131;:::i;:::-;42433:139;;42160:419;;;:::o;42585:167::-;42725:19;42721:1;42713:6;42709:14;42702:43;42585:167;:::o;42758:366::-;42900:3;42921:67;42985:2;42980:3;42921:67;:::i;:::-;42914:74;;42997:93;43086:3;42997:93;:::i;:::-;43115:2;43110:3;43106:12;43099:19;;42758:366;;;:::o;43130:419::-;43296:4;43334:2;43323:9;43319:18;43311:26;;43383:9;43377:4;43373:20;43369:1;43358:9;43354:17;43347:47;43411:131;43537:4;43411:131;:::i;:::-;43403:139;;43130:419;;;:::o;43555:180::-;43603:77;43600:1;43593:88;43700:4;43697:1;43690:15;43724:4;43721:1;43714:15;43741:180;43789:77;43786:1;43779:88;43886:4;43883:1;43876:15;43910:4;43907:1;43900:15;43927:114;43994:6;44028:5;44022:12;44012:22;;43927:114;;;:::o;44047:184::-;44146:11;44180:6;44175:3;44168:19;44220:4;44215:3;44211:14;44196:29;;44047:184;;;;:::o;44237:132::-;44304:4;44327:3;44319:11;;44357:4;44352:3;44348:14;44340:22;;44237:132;;;:::o;44375:108::-;44452:24;44470:5;44452:24;:::i;:::-;44447:3;44440:37;44375:108;;:::o;44489:179::-;44558:10;44579:46;44621:3;44613:6;44579:46;:::i;:::-;44657:4;44652:3;44648:14;44634:28;;44489:179;;;;:::o;44674:113::-;44744:4;44776;44771:3;44767:14;44759:22;;44674:113;;;:::o;44823:732::-;44942:3;44971:54;45019:5;44971:54;:::i;:::-;45041:86;45120:6;45115:3;45041:86;:::i;:::-;45034:93;;45151:56;45201:5;45151:56;:::i;:::-;45230:7;45261:1;45246:284;45271:6;45268:1;45265:13;45246:284;;;45347:6;45341:13;45374:63;45433:3;45418:13;45374:63;:::i;:::-;45367:70;;45460:60;45513:6;45460:60;:::i;:::-;45450:70;;45306:224;45293:1;45290;45286:9;45281:14;;45246:284;;;45250:14;45546:3;45539:10;;44947:608;;;44823:732;;;;:::o;45561:831::-;45824:4;45862:3;45851:9;45847:19;45839:27;;45876:71;45944:1;45933:9;45929:17;45920:6;45876:71;:::i;:::-;45957:80;46033:2;46022:9;46018:18;46009:6;45957:80;:::i;:::-;46084:9;46078:4;46074:20;46069:2;46058:9;46054:18;46047:48;46112:108;46215:4;46206:6;46112:108;:::i;:::-;46104:116;;46230:72;46298:2;46287:9;46283:18;46274:6;46230:72;:::i;:::-;46312:73;46380:3;46369:9;46365:19;46356:6;46312:73;:::i;:::-;45561:831;;;;;;;;:::o

Swarm Source

ipfs://5ef970774fe5912cc6c4a8b40f2291b7737d40c3ca1e02b3635d3d7d0072ec81
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.