ETH Price: $3,370.01 (-8.37%)

Token

WolfPack Coin (WOLF)
 

Overview

Max Total Supply

100,000,000,000 WOLF

Holders

519

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 WOLF

Value
$0.00
0xfd4e19738df7ba5cd1bfd74eadad35adfb35e970
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:
Wolf

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-23
*/

//SPDX-License-Identifier: MIT

/*
 https://wolfpackcoin.com
 https://t.me/TheWolfpackCoin
 https://twitter.com/thewolfpackcoin
*/

pragma solidity 0.8.24;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

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 holder, 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);
}


contract Wolf is IERC20, Auth {
    string private constant _symbol  = "WOLF";
    string private constant _name    = "WolfPack Coin";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000_000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0x254168335F35216B2BDFb87aA6cF962843496EA1);
    address payable private _developmentWallet = payable(0x54E37f02Cd7F44b413ab56A570cC1b03c3A0826d);
    uint16 private _marketingShares;
    uint16 private _developmentShares;
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 20;
    uint8 private _buyTaxrate  = 10;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 499 / 100000;
    uint256 private _swapTrigger = 20 * (10**15);
    uint256 private _swapLimits = _swapMin * 65 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

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

    bool private _tradingOpen;

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

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        // WETH = _primarySwapRouter.WETH();

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;

        _marketingShares = 67;
        _developmentShares = 33;        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    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 toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

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

    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 addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        WETH = _primarySwapRouter.WETH();
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

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

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        _balances[_primaryLP] -= _swapLimits;
        (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[_primaryLP], "Failed bootstrap");
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
        _tradingOpen = true;
    }

    function shouldSwap(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { result = true; }    
        } else { result = true; }
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 50, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }  

    function marketingWallet() external view returns (address) { 
        return _marketingWallet; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function swapMin() external view returns (uint256) { 
        return _swapMin; }
    function swapMax() external view returns (uint256) { 
        return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            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] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function setTaxShares(uint16 marketing, uint16 development) external onlyOwner {
        require(marketing + development > 0, "Invalid values");
        _marketingShares = marketing;
        _developmentShares = development;
    }

    function _distributeTaxEth(uint256 amount) private {
        uint256 totalShares = _marketingShares + _developmentShares;
        if (totalShares > 0) {
            uint256 marketingAmt = amount * _marketingShares / totalShares;
            uint256 developmentAmt = amount * _developmentShares / totalShares;
            if (marketingAmt > 0) { _marketingWallet.transfer(marketingAmt); }
            if (developmentAmt > 0) { _developmentWallet.transfer(developmentAmt); }
        }
    }
}

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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":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":"addLiquidity","outputs":[],"stateMutability":"payable","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":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setTaxShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","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"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273254168335f35216b2bdfb87aa6cf962843496ea160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507354e37f02cd7f44b413ab56a570cc1b03c3a0826d60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600355601460045f6101000a81548160ff021916908360ff160217905550600a600460016101000a81548160ff021916908360ff1602179055506009600a620000f891906200090f565b64174876e8006200010a91906200095f565b6006556009600a6200011d91906200090f565b64174876e8006200012f91906200095f565b600755620186a0600a6009600a6200014891906200090f565b64174876e8006200015a91906200095f565b6200016691906200095f565b620001729190620009d6565b600855620186a06101f36009600a6200018c91906200090f565b64174876e8006200019e91906200095f565b620001aa91906200095f565b620001b69190620009d6565b60095566470de4df820000600a5560646041600854620001d791906200095f565b620001e391906200095f565b600b55737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601660016101000a81548160ff02191690831515021790555034801562000260575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002f291906200090f565b64174876e8006200030491906200095f565b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620003e1919062000a1e565b60405180910390a36001600f5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506043600260146101000a81548161ffff021916908361ffff1602179055506021600260166101000a81548161ffff021916908361ffff16021790555062000a39565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200080757808604811115620007df57620007de6200077d565b5b6001851615620007ef5780820291505b8081029050620007ff85620007aa565b9450620007bf565b94509492505050565b5f82620008215760019050620008f3565b8162000830575f9050620008f3565b816001811462000849576002811462000854576200088a565b6001915050620008f3565b60ff8411156200086957620008686200077d565b5b8360020a9150848211156200088357620008826200077d565b5b50620008f3565b5060208310610133831016604e8410600b8410161715620008c45782820a905083811115620008be57620008bd6200077d565b5b620008f3565b620008d38484846001620007b6565b92509050818404811115620008ed57620008ec6200077d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200091b82620008fa565b9150620009288362000903565b9250620009577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000810565b905092915050565b5f6200096b82620008fa565b91506200097883620008fa565b92508282026200098881620008fa565b91508282048414831517620009a257620009a16200077d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009e282620008fa565b9150620009ef83620008fa565b92508262000a025762000a01620009a9565b5b828204905092915050565b62000a1881620008fa565b82525050565b5f60208201905062000a335f83018462000a0d565b92915050565b6147578062000a475f395ff3fe6080604052600436106101ba575f3560e01c80638a8c523c116100eb578063c3f70b5211610089578063e8078d9411610063578063e8078d94146105f0578063e98ca065146105fa578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063c3f70b5214610562578063dd62ed3e1461058c578063e537a834146105c8576101c1565b8063a5e992bb116100c5578063a5e992bb146104aa578063a9059cbb146104d4578063aacebbe314610510578063b3de9b5d14610538576101c1565b80638a8c523c146104405780638da5cb5b1461045657806395d89b4114610480576101c1565b8063313ce567116101585780634fcd2446116101325780634fcd24461461039c57806370a08231146103c4578063715018a61461040057806375f0a87414610416576101c1565b8063313ce56714610320578063368f48001461034a5780634706240214610372576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632b14ca56146102b957806330449efd146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e691906133b9565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061346a565b6106b1565b60405161022291906134c2565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c91906134ea565b60405180910390f35b348015610260575f80fd5b5061027b6004803603810190610276919061352d565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e919061357d565b610995565b6040516102b091906134c2565b60405180910390f35b3480156102c4575f80fd5b506102cd610a80565b6040516102da91906135e8565b60405180910390f35b3480156102ee575f80fd5b5061030960048036038101906103049190613601565b610a95565b60405161031792919061362c565b60405180910390f35b34801561032b575f80fd5b50610334610b34565b60405161034191906135e8565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b919061368a565b610b3c565b005b34801561037d575f80fd5b50610386610cf9565b60405161039391906135e8565b60405180910390f35b3480156103a7575f80fd5b506103c260048036038101906103bd91906136f2565b610d0f565b005b3480156103cf575f80fd5b506103ea60048036038101906103e59190613601565b610e27565b6040516103f791906134ea565b60405180910390f35b34801561040b575f80fd5b50610414610e6d565b005b348015610421575f80fd5b5061042a610f72565b604051610437919061373f565b60405180910390f35b34801561044b575f80fd5b50610454610f9a565b005b348015610461575f80fd5b5061046a611080565b604051610477919061373f565b60405180910390f35b34801561048b575f80fd5b506104946110a7565b6040516104a191906133b9565b60405180910390f35b3480156104b5575f80fd5b506104be6110e4565b6040516104cb91906134ea565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f5919061346a565b6110ed565b60405161050791906134c2565b60405180910390f35b34801561051b575f80fd5b5061053660048036038101906105319190613601565b611149565b005b348015610543575f80fd5b5061054c61134d565b60405161055991906134ea565b60405180910390f35b34801561056d575f80fd5b50610576611356565b60405161058391906134ea565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad9190613758565b61135f565b6040516105bf91906134ea565b60405180910390f35b3480156105d3575f80fd5b506105ee60048036038101906105e991906137cf565b6113e1565b005b6105f8611570565b005b348015610605575f80fd5b50610620600480360381019061061b919061368a565b611a59565b005b34801561062d575f80fd5b5061064860048036038101906106439190613881565b611b75565b005b348015610655575f80fd5b5061065e611c7b565b60405161066b91906134ea565b60405180910390f35b60606040518060400160405280600d81526020017f576f6c665061636b20436f696e00000000000000000000000000000000000000815250905090565b5f81600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c91906134ea565b60405180910390a36001905092915050565b5f6009600a6107ad9190613a08565b64174876e8006107bd9190613a52565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613add565b60405180910390fd5b80806108585750815b156108e85760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613b45565b60405180910390fd5b5b81600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611c84565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613bad565b60405180910390fd5b81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a659190613bcb565b92505081905550610a77848484611d56565b90509392505050565b5f60045f9054906101000a900460ff16905090565b5f80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613add565b60405180910390fd5b5f60016103e88461ffff166009600a610be29190613a08565b64174876e800610bf29190613a52565b610bfc9190613a52565b610c069190613c2b565b610c109190613c5b565b9050600654811015610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613cd8565b60405180910390fd5b806006819055505f60016103e88461ffff166009600a610c779190613a08565b64174876e800610c879190613a52565b610c919190613a52565b610c9b9190613c2b565b610ca59190613c5b565b9050600754811015610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613d40565b60405180910390fd5b8060078190555050505050565b5f600460019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390613add565b60405180910390fd5b60328183610daa9190613d5e565b60ff161115610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590613ddc565b60405180910390fd5b81600460016101000a81548160ff021916908360ff1602179055508060045f6101000a81548160ff021916908360ff1602179055505050565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613add565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610f68919061373f565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90613add565b60405180910390fd5b60165f9054906101000a900460ff1615611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90613e44565b60405180910390fd5b61107e612428565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f574f4c4600000000000000000000000000000000000000000000000000000000815250905090565b5f600954905090565b5f6110f733611c84565b611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90613bad565b60405180910390fd5b611141338484611d56565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613add565b60405180910390fd5b60155f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613eac565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600854905090565b5f600654905090565b5f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590613add565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61148a9190613a08565b64174876e80061149a9190613a52565b6114a49190613a52565b6114ae9190613c2b565b6008819055508163ffffffff168363ffffffff166009600a6114d09190613a08565b64174876e8006114e09190613a52565b6114ea9190613a52565b6114f49190613c2b565b60098190555066038d7ea4c680008163ffffffff166115139190613edc565b66ffffffffffffff16600a819055506008546009541015611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613f62565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613add565b60405180910390fd5b6001601660016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90613fca565b60405180910390fd5b60165f9054906101000a900460ff16156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90613e44565b60405180910390fd5b5f34118061170357505f47115b611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990614032565b60405180910390fd5b5f600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061409a565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184f91906140cc565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191c91906140cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016119779291906140f7565b6020604051808303815f875af1158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b791906140cc565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a3d600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612779565b5f601660016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613add565b60405180910390fd5b5f8183611af3919061411e565b61ffff1611611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e9061419d565b60405180910390fd5b81600260146101000a81548161ffff021916908361ffff16021790555080600260166101000a81548161ffff021916908361ffff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf990613add565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611c709190614216565b60405180910390a150565b5f600754905090565b5f805f905060165f9054906101000a900460ff1615611ca65760019050611d4d565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d42575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611d4c57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc90614279565b60405180910390fd5b60165f9054906101000a900460ff16611eb457600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e74575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa906142e1565b60405180910390fd5b5b601660019054906101000a900460ff16158015611f17575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611f285750611f2782612850565b5b15611f3657611f356129b9565b5b60055443106121cc5760035443108015611f96575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561200a573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614349565b60405180910390fd5b5b61025860035461201a9190613c5b565b4310801561206e575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120a657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121cb576001600e5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166121139190613d5e565b92506101000a81548160ff021916908360ff1602179055506002600e5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff1611156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614349565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561223457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561228b57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122db5761229b848484612adb565b6122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906143b1565b60405180910390fd5b5b5f6122e7858585612c63565b90505f81846122f69190613bcb565b905083600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123449190613bcb565b9250508190555081600b5f82825461235c9190613c5b565b9250508190555080600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123af9190613c5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161241391906134ea565b60405180910390a36001925050509392505050565b60646009600a6124389190613a08565b64174876e8006124489190613a52565b60026124549190613a52565b61245e9190613c2b565b60068190555060646009600a6124749190613a08565b64174876e8006124849190613a52565b60026124909190613a52565b61249a9190613c2b565b600781905550600b54600c5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250f9190613bcb565b9250508190555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125de9190614413565b5f604051808303815f865af19150503d805f8114612617576040519150601f19603f3d011682016040523d82523d5f602084013e61261c565b606091505b505060155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8291906101000a81548160ff0219169083151502179055505060155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614473565b60405180910390fd5b436005819055506005546003546127579190613c5b565b600381905550600160165f6101000a81548160ff021916908315150217905550565b61278282612e2c565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612808969594939291906144ca565b60606040518083038185885af1158015612824573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612849919061453d565b5050505050565b5f805f600a5411156129ab575f600c5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161293a919061373f565b602060405180830381865afa158015612955573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612979919061458d565b90505f8282876129899190613a52565b6129939190613c2b565b9050600a5481106129a357600193505b5050506129b0565b600190505b80915050919050565b6001601660016101000a81548160ff0219169083151502179055505f600b54905060085481101580156129f7575060165f9054906101000a900460ff165b15612abe576009548110612a0b5760095490505b5f8190506009600a612a1d9190613a08565b6001612a299190613a52565b811115612aa55781600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a7c9190613c5b565b92505081905550612a8c8161300e565b81600b5f828254612a9d9190613bcb565b925050819055505b5f4790505f811115612abb57612aba816131b5565b5b50505b505f601660016101000a81548160ff021916908315150217905550565b5f806001905060165f9054906101000a900460ff168015612b43575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b96575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5857600654831115612bad575f9050612c57565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612c4d575060075483600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c4b9190613c5b565b115b15612c56575f90505b5b5b809150509392505050565b5f8060165f9054906101000a900460ff161580612cc65750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612d175750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d24575f9050612e21565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612da4576064600460019054906101000a900460ff1660ff1684612d939190613a52565b612d9d9190613c2b565b9050612e20565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e1f57606460045f9054906101000a900460ff1660ff1684612e129190613a52565b612e1c9190613c2b565b90505b5b5b809150509392505050565b80600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561300b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161300291906134ea565b60405180910390a35b50565b61301781612e2c565b5f600267ffffffffffffffff811115613033576130326145b8565b5b6040519080825280602002602001820160405280156130615781602001602082028036833780820191505090505b50905030815f81518110613078576130776145e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106130e8576130e76145e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131849594939291906146c9565b5f604051808303815f87803b15801561319b575f80fd5b505af11580156131ad573d5f803e3d5ffd5b505050505050565b5f600260169054906101000a900461ffff16600260149054906101000a900461ffff166131e2919061411e565b61ffff1690505f81111561332b575f81600260149054906101000a900461ffff1661ffff16846132129190613a52565b61321c9190613c2b565b90505f82600260169054906101000a900461ffff1661ffff16856132409190613a52565b61324a9190613c2b565b90505f8211156132ba5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156132b8573d5f803e3d5ffd5b505b5f8111156133285760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613326573d5f803e3d5ffd5b505b50505b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561336657808201518184015260208101905061334b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61338b8261332f565b6133958185613339565b93506133a5818560208601613349565b6133ae81613371565b840191505092915050565b5f6020820190508181035f8301526133d18184613381565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613406826133dd565b9050919050565b613416816133fc565b8114613420575f80fd5b50565b5f813590506134318161340d565b92915050565b5f819050919050565b61344981613437565b8114613453575f80fd5b50565b5f8135905061346481613440565b92915050565b5f80604083850312156134805761347f6133d9565b5b5f61348d85828601613423565b925050602061349e85828601613456565b9150509250929050565b5f8115159050919050565b6134bc816134a8565b82525050565b5f6020820190506134d55f8301846134b3565b92915050565b6134e481613437565b82525050565b5f6020820190506134fd5f8301846134db565b92915050565b61350c816134a8565b8114613516575f80fd5b50565b5f8135905061352781613503565b92915050565b5f805f60608486031215613544576135436133d9565b5b5f61355186828701613423565b935050602061356286828701613519565b925050604061357386828701613519565b9150509250925092565b5f805f60608486031215613594576135936133d9565b5b5f6135a186828701613423565b93505060206135b286828701613423565b92505060406135c386828701613456565b9150509250925092565b5f60ff82169050919050565b6135e2816135cd565b82525050565b5f6020820190506135fb5f8301846135d9565b92915050565b5f60208284031215613616576136156133d9565b5b5f61362384828501613423565b91505092915050565b5f60408201905061363f5f8301856134b3565b61364c60208301846134b3565b9392505050565b5f61ffff82169050919050565b61366981613653565b8114613673575f80fd5b50565b5f8135905061368481613660565b92915050565b5f80604083850312156136a05761369f6133d9565b5b5f6136ad85828601613676565b92505060206136be85828601613676565b9150509250929050565b6136d1816135cd565b81146136db575f80fd5b50565b5f813590506136ec816136c8565b92915050565b5f8060408385031215613708576137076133d9565b5b5f613715858286016136de565b9250506020613726858286016136de565b9150509250929050565b613739816133fc565b82525050565b5f6020820190506137525f830184613730565b92915050565b5f806040838503121561376e5761376d6133d9565b5b5f61377b85828601613423565b925050602061378c85828601613423565b9150509250929050565b5f63ffffffff82169050919050565b6137ae81613796565b81146137b8575f80fd5b50565b5f813590506137c9816137a5565b92915050565b5f805f805f60a086880312156137e8576137e76133d9565b5b5f6137f5888289016137bb565b9550506020613806888289016137bb565b9450506040613817888289016137bb565b9350506060613828888289016137bb565b9250506080613839888289016137bb565b9150509295509295909350565b5f613850826133dd565b9050919050565b61386081613846565b811461386a575f80fd5b50565b5f8135905061387b81613857565b92915050565b5f60208284031215613896576138956133d9565b5b5f6138a38482850161386d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561392e5780860481111561390a576139096138ac565b5b60018516156139195780820291505b8081029050613927856138d9565b94506138ee565b94509492505050565b5f826139465760019050613a01565b81613953575f9050613a01565b81600181146139695760028114613973576139a2565b6001915050613a01565b60ff841115613985576139846138ac565b5b8360020a91508482111561399c5761399b6138ac565b5b50613a01565b5060208310610133831016604e8410600b84101617156139d75782820a9050838111156139d2576139d16138ac565b5b613a01565b6139e484848460016138e5565b925090508184048111156139fb576139fa6138ac565b5b81810290505b9392505050565b5f613a1282613437565b9150613a1d836135cd565b9250613a4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613937565b905092915050565b5f613a5c82613437565b9150613a6783613437565b9250828202613a7581613437565b91508282048414831517613a8c57613a8b6138ac565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f613ac7601883613339565b9150613ad282613a93565b602082019050919050565b5f6020820190508181035f830152613af481613abb565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613b2f601083613339565b9150613b3a82613afb565b602082019050919050565b5f6020820190508181035f830152613b5c81613b23565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613b97601083613339565b9150613ba282613b63565b602082019050919050565b5f6020820190508181035f830152613bc481613b8b565b9050919050565b5f613bd582613437565b9150613be083613437565b9250828203905081811115613bf857613bf76138ac565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c3582613437565b9150613c4083613437565b925082613c5057613c4f613bfe565b5b828204905092915050565b5f613c6582613437565b9150613c7083613437565b9250828201905080821115613c8857613c876138ac565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613cc2600a83613339565b9150613ccd82613c8e565b602082019050919050565b5f6020820190508181035f830152613cef81613cb6565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613d2a600e83613339565b9150613d3582613cf6565b602082019050919050565b5f6020820190508181035f830152613d5781613d1e565b9050919050565b5f613d68826135cd565b9150613d73836135cd565b9250828201905060ff811115613d8c57613d8b6138ac565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613dc6601283613339565b9150613dd182613d92565b602082019050919050565b5f6020820190508181035f830152613df381613dba565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613e2e600c83613339565b9150613e3982613dfa565b602082019050919050565b5f6020820190508181035f830152613e5b81613e22565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613e96601783613339565b9150613ea182613e62565b602082019050919050565b5f6020820190508181035f830152613ec381613e8a565b9050919050565b5f66ffffffffffffff82169050919050565b5f613ee682613eca565b9150613ef183613eca565b9250828202613eff81613eca565b9150808214613f1157613f106138ac565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613f4c600d83613339565b9150613f5782613f18565b602082019050919050565b5f6020820190508181035f830152613f7981613f40565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613fb4600a83613339565b9150613fbf82613f80565b602082019050919050565b5f6020820190508181035f830152613fe181613fa8565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f61401c600683613339565b915061402782613fe8565b602082019050919050565b5f6020820190508181035f83015261404981614010565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f614084600983613339565b915061408f82614050565b602082019050919050565b5f6020820190508181035f8301526140b181614078565b9050919050565b5f815190506140c68161340d565b92915050565b5f602082840312156140e1576140e06133d9565b5b5f6140ee848285016140b8565b91505092915050565b5f60408201905061410a5f830185613730565b6141176020830184613730565b9392505050565b5f61412882613653565b915061413383613653565b9250828201905061ffff81111561414d5761414c6138ac565b5b92915050565b7f496e76616c69642076616c7565730000000000000000000000000000000000005f82015250565b5f614187600e83613339565b915061419282614153565b602082019050919050565b5f6020820190508181035f8301526141b48161417b565b9050919050565b5f819050919050565b5f6141de6141d96141d4846133dd565b6141bb565b6133dd565b9050919050565b5f6141ef826141c4565b9050919050565b5f614200826141e5565b9050919050565b614210816141f6565b82525050565b5f6020820190506142295f830184614207565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f614263601a83613339565b915061426e8261422f565b602082019050919050565b5f6020820190508181035f83015261429081614257565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f6142cb601483613339565b91506142d682614297565b602082019050919050565b5f6020820190508181035f8301526142f8816142bf565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f614333600983613339565b915061433e826142ff565b602082019050919050565b5f6020820190508181035f83015261436081614327565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f61439b600e83613339565b91506143a682614367565b602082019050919050565b5f6020820190508181035f8301526143c88161438f565b9050919050565b5f81519050919050565b5f81905092915050565b5f6143ed826143cf565b6143f781856143d9565b9350614407818560208601613349565b80840191505092915050565b5f61441e82846143e3565b915081905092915050565b7f4661696c656420626f6f747374726170000000000000000000000000000000005f82015250565b5f61445d601083613339565b915061446882614429565b602082019050919050565b5f6020820190508181035f83015261448a81614451565b9050919050565b5f819050919050565b5f6144b46144af6144aa84614491565b6141bb565b613437565b9050919050565b6144c48161449a565b82525050565b5f60c0820190506144dd5f830189613730565b6144ea60208301886134db565b6144f760408301876144bb565b61450460608301866144bb565b6145116080830185613730565b61451e60a08301846134db565b979650505050505050565b5f8151905061453781613440565b92915050565b5f805f60608486031215614554576145536133d9565b5b5f61456186828701614529565b935050602061457286828701614529565b925050604061458386828701614529565b9150509250925092565b5f602082840312156145a2576145a16133d9565b5b5f6145af84828501614529565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614644816133fc565b82525050565b5f614655838361463b565b60208301905092915050565b5f602082019050919050565b5f61467782614612565b614681818561461c565b935061468c8361462c565b805f5b838110156146bc5781516146a3888261464a565b97506146ae83614661565b92505060018101905061468f565b5085935050505092915050565b5f60a0820190506146dc5f8301886134db565b6146e960208301876144bb565b81810360408301526146fb818661466d565b905061470a6060830185613730565b61471760808301846134db565b969550505050505056fea264697066735822122077b49dd811bda2cfb054f4ec42116491483e56e73fb200521694f74959a86c5064736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c80638a8c523c116100eb578063c3f70b5211610089578063e8078d9411610063578063e8078d94146105f0578063e98ca065146105fa578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063c3f70b5214610562578063dd62ed3e1461058c578063e537a834146105c8576101c1565b8063a5e992bb116100c5578063a5e992bb146104aa578063a9059cbb146104d4578063aacebbe314610510578063b3de9b5d14610538576101c1565b80638a8c523c146104405780638da5cb5b1461045657806395d89b4114610480576101c1565b8063313ce567116101585780634fcd2446116101325780634fcd24461461039c57806370a08231146103c4578063715018a61461040057806375f0a87414610416576101c1565b8063313ce56714610320578063368f48001461034a5780634706240214610372576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632b14ca56146102b957806330449efd146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e691906133b9565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061346a565b6106b1565b60405161022291906134c2565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c91906134ea565b60405180910390f35b348015610260575f80fd5b5061027b6004803603810190610276919061352d565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e919061357d565b610995565b6040516102b091906134c2565b60405180910390f35b3480156102c4575f80fd5b506102cd610a80565b6040516102da91906135e8565b60405180910390f35b3480156102ee575f80fd5b5061030960048036038101906103049190613601565b610a95565b60405161031792919061362c565b60405180910390f35b34801561032b575f80fd5b50610334610b34565b60405161034191906135e8565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b919061368a565b610b3c565b005b34801561037d575f80fd5b50610386610cf9565b60405161039391906135e8565b60405180910390f35b3480156103a7575f80fd5b506103c260048036038101906103bd91906136f2565b610d0f565b005b3480156103cf575f80fd5b506103ea60048036038101906103e59190613601565b610e27565b6040516103f791906134ea565b60405180910390f35b34801561040b575f80fd5b50610414610e6d565b005b348015610421575f80fd5b5061042a610f72565b604051610437919061373f565b60405180910390f35b34801561044b575f80fd5b50610454610f9a565b005b348015610461575f80fd5b5061046a611080565b604051610477919061373f565b60405180910390f35b34801561048b575f80fd5b506104946110a7565b6040516104a191906133b9565b60405180910390f35b3480156104b5575f80fd5b506104be6110e4565b6040516104cb91906134ea565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f5919061346a565b6110ed565b60405161050791906134c2565b60405180910390f35b34801561051b575f80fd5b5061053660048036038101906105319190613601565b611149565b005b348015610543575f80fd5b5061054c61134d565b60405161055991906134ea565b60405180910390f35b34801561056d575f80fd5b50610576611356565b60405161058391906134ea565b60405180910390f35b348015610597575f80fd5b506105b260048036038101906105ad9190613758565b61135f565b6040516105bf91906134ea565b60405180910390f35b3480156105d3575f80fd5b506105ee60048036038101906105e991906137cf565b6113e1565b005b6105f8611570565b005b348015610605575f80fd5b50610620600480360381019061061b919061368a565b611a59565b005b34801561062d575f80fd5b5061064860048036038101906106439190613881565b611b75565b005b348015610655575f80fd5b5061065e611c7b565b60405161066b91906134ea565b60405180910390f35b60606040518060400160405280600d81526020017f576f6c665061636b20436f696e00000000000000000000000000000000000000815250905090565b5f81600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c91906134ea565b60405180910390a36001905092915050565b5f6009600a6107ad9190613a08565b64174876e8006107bd9190613a52565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613add565b60405180910390fd5b80806108585750815b156108e85760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613b45565b60405180910390fd5b5b81600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611c84565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613bad565b60405180910390fd5b81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a659190613bcb565b92505081905550610a77848484611d56565b90509392505050565b5f60045f9054906101000a900460ff16905090565b5f80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613add565b60405180910390fd5b5f60016103e88461ffff166009600a610be29190613a08565b64174876e800610bf29190613a52565b610bfc9190613a52565b610c069190613c2b565b610c109190613c5b565b9050600654811015610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613cd8565b60405180910390fd5b806006819055505f60016103e88461ffff166009600a610c779190613a08565b64174876e800610c879190613a52565b610c919190613a52565b610c9b9190613c2b565b610ca59190613c5b565b9050600754811015610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613d40565b60405180910390fd5b8060078190555050505050565b5f600460019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390613add565b60405180910390fd5b60328183610daa9190613d5e565b60ff161115610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590613ddc565b60405180910390fd5b81600460016101000a81548160ff021916908360ff1602179055508060045f6101000a81548160ff021916908360ff1602179055505050565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613add565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610f68919061373f565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90613add565b60405180910390fd5b60165f9054906101000a900460ff1615611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90613e44565b60405180910390fd5b61107e612428565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f574f4c4600000000000000000000000000000000000000000000000000000000815250905090565b5f600954905090565b5f6110f733611c84565b611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90613bad565b60405180910390fd5b611141338484611d56565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613add565b60405180910390fd5b60155f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613eac565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600854905090565b5f600654905090565b5f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590613add565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61148a9190613a08565b64174876e80061149a9190613a52565b6114a49190613a52565b6114ae9190613c2b565b6008819055508163ffffffff168363ffffffff166009600a6114d09190613a08565b64174876e8006114e09190613a52565b6114ea9190613a52565b6114f49190613c2b565b60098190555066038d7ea4c680008163ffffffff166115139190613edc565b66ffffffffffffff16600a819055506008546009541015611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613f62565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613add565b60405180910390fd5b6001601660016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90613fca565b60405180910390fd5b60165f9054906101000a900460ff16156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90613e44565b60405180910390fd5b5f34118061170357505f47115b611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990614032565b60405180910390fd5b5f600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061409a565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184f91906140cc565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191c91906140cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016119779291906140f7565b6020604051808303815f875af1158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b791906140cc565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a3d600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612779565b5f601660016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613add565b60405180910390fd5b5f8183611af3919061411e565b61ffff1611611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e9061419d565b60405180910390fd5b81600260146101000a81548161ffff021916908361ffff16021790555080600260166101000a81548161ffff021916908361ffff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf990613add565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611c709190614216565b60405180910390a150565b5f600754905090565b5f805f905060165f9054906101000a900460ff1615611ca65760019050611d4d565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d42575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611d4c57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc90614279565b60405180910390fd5b60165f9054906101000a900460ff16611eb457600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e74575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa906142e1565b60405180910390fd5b5b601660019054906101000a900460ff16158015611f17575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611f285750611f2782612850565b5b15611f3657611f356129b9565b5b60055443106121cc5760035443108015611f96575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561200a573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614349565b60405180910390fd5b5b61025860035461201a9190613c5b565b4310801561206e575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120a657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121cb576001600e5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166121139190613d5e565b92506101000a81548160ff021916908360ff1602179055506002600e5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff1611156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614349565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561223457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561228b57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122db5761229b848484612adb565b6122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906143b1565b60405180910390fd5b5b5f6122e7858585612c63565b90505f81846122f69190613bcb565b905083600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123449190613bcb565b9250508190555081600b5f82825461235c9190613c5b565b9250508190555080600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123af9190613c5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161241391906134ea565b60405180910390a36001925050509392505050565b60646009600a6124389190613a08565b64174876e8006124489190613a52565b60026124549190613a52565b61245e9190613c2b565b60068190555060646009600a6124749190613a08565b64174876e8006124849190613a52565b60026124909190613a52565b61249a9190613c2b565b600781905550600b54600c5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250f9190613bcb565b9250508190555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125de9190614413565b5f604051808303815f865af19150503d805f8114612617576040519150601f19603f3d011682016040523d82523d5f602084013e61261c565b606091505b505060155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8291906101000a81548160ff0219169083151502179055505060155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614473565b60405180910390fd5b436005819055506005546003546127579190613c5b565b600381905550600160165f6101000a81548160ff021916908315150217905550565b61278282612e2c565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612808969594939291906144ca565b60606040518083038185885af1158015612824573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612849919061453d565b5050505050565b5f805f600a5411156129ab575f600c5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161293a919061373f565b602060405180830381865afa158015612955573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612979919061458d565b90505f8282876129899190613a52565b6129939190613c2b565b9050600a5481106129a357600193505b5050506129b0565b600190505b80915050919050565b6001601660016101000a81548160ff0219169083151502179055505f600b54905060085481101580156129f7575060165f9054906101000a900460ff165b15612abe576009548110612a0b5760095490505b5f8190506009600a612a1d9190613a08565b6001612a299190613a52565b811115612aa55781600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a7c9190613c5b565b92505081905550612a8c8161300e565b81600b5f828254612a9d9190613bcb565b925050819055505b5f4790505f811115612abb57612aba816131b5565b5b50505b505f601660016101000a81548160ff021916908315150217905550565b5f806001905060165f9054906101000a900460ff168015612b43575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b96575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5857600654831115612bad575f9050612c57565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612c4d575060075483600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c4b9190613c5b565b115b15612c56575f90505b5b5b809150509392505050565b5f8060165f9054906101000a900460ff161580612cc65750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612d175750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d24575f9050612e21565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612da4576064600460019054906101000a900460ff1660ff1684612d939190613a52565b612d9d9190613c2b565b9050612e20565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e1f57606460045f9054906101000a900460ff1660ff1684612e129190613a52565b612e1c9190613c2b565b90505b5b5b809150509392505050565b80600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561300b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161300291906134ea565b60405180910390a35b50565b61301781612e2c565b5f600267ffffffffffffffff811115613033576130326145b8565b5b6040519080825280602002602001820160405280156130615781602001602082028036833780820191505090505b50905030815f81518110613078576130776145e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106130e8576130e76145e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131849594939291906146c9565b5f604051808303815f87803b15801561319b575f80fd5b505af11580156131ad573d5f803e3d5ffd5b505050505050565b5f600260169054906101000a900461ffff16600260149054906101000a900461ffff166131e2919061411e565b61ffff1690505f81111561332b575f81600260149054906101000a900461ffff1661ffff16846132129190613a52565b61321c9190613c2b565b90505f82600260169054906101000a900461ffff1661ffff16856132409190613a52565b61324a9190613c2b565b90505f8211156132ba5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156132b8573d5f803e3d5ffd5b505b5f8111156133285760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613326573d5f803e3d5ffd5b505b50505b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561336657808201518184015260208101905061334b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61338b8261332f565b6133958185613339565b93506133a5818560208601613349565b6133ae81613371565b840191505092915050565b5f6020820190508181035f8301526133d18184613381565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613406826133dd565b9050919050565b613416816133fc565b8114613420575f80fd5b50565b5f813590506134318161340d565b92915050565b5f819050919050565b61344981613437565b8114613453575f80fd5b50565b5f8135905061346481613440565b92915050565b5f80604083850312156134805761347f6133d9565b5b5f61348d85828601613423565b925050602061349e85828601613456565b9150509250929050565b5f8115159050919050565b6134bc816134a8565b82525050565b5f6020820190506134d55f8301846134b3565b92915050565b6134e481613437565b82525050565b5f6020820190506134fd5f8301846134db565b92915050565b61350c816134a8565b8114613516575f80fd5b50565b5f8135905061352781613503565b92915050565b5f805f60608486031215613544576135436133d9565b5b5f61355186828701613423565b935050602061356286828701613519565b925050604061357386828701613519565b9150509250925092565b5f805f60608486031215613594576135936133d9565b5b5f6135a186828701613423565b93505060206135b286828701613423565b92505060406135c386828701613456565b9150509250925092565b5f60ff82169050919050565b6135e2816135cd565b82525050565b5f6020820190506135fb5f8301846135d9565b92915050565b5f60208284031215613616576136156133d9565b5b5f61362384828501613423565b91505092915050565b5f60408201905061363f5f8301856134b3565b61364c60208301846134b3565b9392505050565b5f61ffff82169050919050565b61366981613653565b8114613673575f80fd5b50565b5f8135905061368481613660565b92915050565b5f80604083850312156136a05761369f6133d9565b5b5f6136ad85828601613676565b92505060206136be85828601613676565b9150509250929050565b6136d1816135cd565b81146136db575f80fd5b50565b5f813590506136ec816136c8565b92915050565b5f8060408385031215613708576137076133d9565b5b5f613715858286016136de565b9250506020613726858286016136de565b9150509250929050565b613739816133fc565b82525050565b5f6020820190506137525f830184613730565b92915050565b5f806040838503121561376e5761376d6133d9565b5b5f61377b85828601613423565b925050602061378c85828601613423565b9150509250929050565b5f63ffffffff82169050919050565b6137ae81613796565b81146137b8575f80fd5b50565b5f813590506137c9816137a5565b92915050565b5f805f805f60a086880312156137e8576137e76133d9565b5b5f6137f5888289016137bb565b9550506020613806888289016137bb565b9450506040613817888289016137bb565b9350506060613828888289016137bb565b9250506080613839888289016137bb565b9150509295509295909350565b5f613850826133dd565b9050919050565b61386081613846565b811461386a575f80fd5b50565b5f8135905061387b81613857565b92915050565b5f60208284031215613896576138956133d9565b5b5f6138a38482850161386d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561392e5780860481111561390a576139096138ac565b5b60018516156139195780820291505b8081029050613927856138d9565b94506138ee565b94509492505050565b5f826139465760019050613a01565b81613953575f9050613a01565b81600181146139695760028114613973576139a2565b6001915050613a01565b60ff841115613985576139846138ac565b5b8360020a91508482111561399c5761399b6138ac565b5b50613a01565b5060208310610133831016604e8410600b84101617156139d75782820a9050838111156139d2576139d16138ac565b5b613a01565b6139e484848460016138e5565b925090508184048111156139fb576139fa6138ac565b5b81810290505b9392505050565b5f613a1282613437565b9150613a1d836135cd565b9250613a4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613937565b905092915050565b5f613a5c82613437565b9150613a6783613437565b9250828202613a7581613437565b91508282048414831517613a8c57613a8b6138ac565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f613ac7601883613339565b9150613ad282613a93565b602082019050919050565b5f6020820190508181035f830152613af481613abb565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613b2f601083613339565b9150613b3a82613afb565b602082019050919050565b5f6020820190508181035f830152613b5c81613b23565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613b97601083613339565b9150613ba282613b63565b602082019050919050565b5f6020820190508181035f830152613bc481613b8b565b9050919050565b5f613bd582613437565b9150613be083613437565b9250828203905081811115613bf857613bf76138ac565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c3582613437565b9150613c4083613437565b925082613c5057613c4f613bfe565b5b828204905092915050565b5f613c6582613437565b9150613c7083613437565b9250828201905080821115613c8857613c876138ac565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613cc2600a83613339565b9150613ccd82613c8e565b602082019050919050565b5f6020820190508181035f830152613cef81613cb6565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613d2a600e83613339565b9150613d3582613cf6565b602082019050919050565b5f6020820190508181035f830152613d5781613d1e565b9050919050565b5f613d68826135cd565b9150613d73836135cd565b9250828201905060ff811115613d8c57613d8b6138ac565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613dc6601283613339565b9150613dd182613d92565b602082019050919050565b5f6020820190508181035f830152613df381613dba565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613e2e600c83613339565b9150613e3982613dfa565b602082019050919050565b5f6020820190508181035f830152613e5b81613e22565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613e96601783613339565b9150613ea182613e62565b602082019050919050565b5f6020820190508181035f830152613ec381613e8a565b9050919050565b5f66ffffffffffffff82169050919050565b5f613ee682613eca565b9150613ef183613eca565b9250828202613eff81613eca565b9150808214613f1157613f106138ac565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613f4c600d83613339565b9150613f5782613f18565b602082019050919050565b5f6020820190508181035f830152613f7981613f40565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613fb4600a83613339565b9150613fbf82613f80565b602082019050919050565b5f6020820190508181035f830152613fe181613fa8565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f61401c600683613339565b915061402782613fe8565b602082019050919050565b5f6020820190508181035f83015261404981614010565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f614084600983613339565b915061408f82614050565b602082019050919050565b5f6020820190508181035f8301526140b181614078565b9050919050565b5f815190506140c68161340d565b92915050565b5f602082840312156140e1576140e06133d9565b5b5f6140ee848285016140b8565b91505092915050565b5f60408201905061410a5f830185613730565b6141176020830184613730565b9392505050565b5f61412882613653565b915061413383613653565b9250828201905061ffff81111561414d5761414c6138ac565b5b92915050565b7f496e76616c69642076616c7565730000000000000000000000000000000000005f82015250565b5f614187600e83613339565b915061419282614153565b602082019050919050565b5f6020820190508181035f8301526141b48161417b565b9050919050565b5f819050919050565b5f6141de6141d96141d4846133dd565b6141bb565b6133dd565b9050919050565b5f6141ef826141c4565b9050919050565b5f614200826141e5565b9050919050565b614210816141f6565b82525050565b5f6020820190506142295f830184614207565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f614263601a83613339565b915061426e8261422f565b602082019050919050565b5f6020820190508181035f83015261429081614257565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f6142cb601483613339565b91506142d682614297565b602082019050919050565b5f6020820190508181035f8301526142f8816142bf565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f614333600983613339565b915061433e826142ff565b602082019050919050565b5f6020820190508181035f83015261436081614327565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f61439b600e83613339565b91506143a682614367565b602082019050919050565b5f6020820190508181035f8301526143c88161438f565b9050919050565b5f81519050919050565b5f81905092915050565b5f6143ed826143cf565b6143f781856143d9565b9350614407818560208601613349565b80840191505092915050565b5f61441e82846143e3565b915081905092915050565b7f4661696c656420626f6f747374726170000000000000000000000000000000005f82015250565b5f61445d601083613339565b915061446882614429565b602082019050919050565b5f6020820190508181035f83015261448a81614451565b9050919050565b5f819050919050565b5f6144b46144af6144aa84614491565b6141bb565b613437565b9050919050565b6144c48161449a565b82525050565b5f60c0820190506144dd5f830189613730565b6144ea60208301886134db565b6144f760408301876144bb565b61450460608301866144bb565b6145116080830185613730565b61451e60a08301846134db565b979650505050505050565b5f8151905061453781613440565b92915050565b5f805f60608486031215614554576145536133d9565b5b5f61456186828701614529565b935050602061457286828701614529565b925050604061458386828701614529565b9150509250925092565b5f602082840312156145a2576145a16133d9565b5b5f6145af84828501614529565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614644816133fc565b82525050565b5f614655838361463b565b60208301905092915050565b5f602082019050919050565b5f61467782614612565b614681818561461c565b935061468c8361462c565b805f5b838110156146bc5781516146a3888261464a565b97506146ae83614661565b92505060018101905061468f565b5085935050505092915050565b5f60a0820190506146dc5f8301886134db565b6146e960208301876144bb565b81810360408301526146fb818661466d565b905061470a6060830185613730565b61471760808301846134db565b969550505050505056fea264697066735822122077b49dd811bda2cfb054f4ec42116491483e56e73fb200521694f74959a86c5064736f6c63430008180033

Deployed Bytecode Sourcemap

1690:12975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4892:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4350:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10666:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5337:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10990:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10520:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4264:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12043:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10914:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11070:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4620:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;694:130;;;;;;;;;;;;;:::i;:::-;;11287:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6775:126;;;;;;;;;;;;;:::i;:::-;;466:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4530:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11954:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5111:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11392:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11867:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11770:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4741:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12487:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5968:536;;;:::i;:::-;;13924:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;537:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11676:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:80;4492:13;4516:5;;;;;;;;;;;;;;;;;4509:12;;4444:80;:::o;4892:211::-;4967:4;5019:6;4984:11;:23;4996:10;4984:23;;;;;;;;;;;;;;;:32;5008:7;4984:32;;;;;;;;;;;;;;;:41;;;;5062:7;5041:37;;5050:10;5041:37;;;5071:6;5041:37;;;;;;:::i;:::-;;;;;;;;5096:4;5089:11;;4892:211;;;;:::o;4350:88::-;4405:7;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;4416:19;;4350:88;:::o;10666:240::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10764:8:::1;:18;;;;10776:6;10764:18;10760:69;;;10795:5;:10;10801:3;10795:10;;;;;;;;;;;;;;;;;;;;;;;;;10794:11;10786:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10760:69;10855:6;10839;:13;10847:3;10839:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;10890:8;10872;:15;10882:3;10872:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10666:240:::0;;;:::o;5337:298::-;5440:4;5465:29;5483:10;5465:17;:29::i;:::-;5457:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5565:6;5526:11;:23;5538:10;5526:23;;;;;;;;;;;;;;;:35;5550:10;5526:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;5589:43;5603:10;5615:8;5625:6;5589:13;:43::i;:::-;5582:50;;5337:298;;;;;:::o;10990:72::-;11031:5;11047:12;;;;;;;;;;;11040:19;;10990:72;:::o;10520:138::-;10579:9;10590:11;10622:6;:14;10629:6;10622:14;;;;;;;;;;;;;;;;;;;;;;;;;10638:8;:16;10647:6;10638:16;;;;;;;;;;;;;;;;;;;;;;;;;10614:41;;;;10520:138;;;:::o;4264:80::-;4316:5;1867:1;4325:16;;4264:80;:::o;12043:436::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12142:16:::1;12202:1;12195:4;12176:16;12161:31;;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;12161:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;12142:61;;12234:9;;12222:8;:21;;12214:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12281:8;12269:9;:20;;;;12300;12364:1;12357:4;12338:16;12323:31;;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;12323:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;12300:65;;12400:13;;12384:12;:29;;12376:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12459:12;12443:13;:28;;;;12131:348;;12043:436:::0;;:::o;10914:70::-;10954:5;10970:11;;;;;;;;;;;10963:18;;10914:70;:::o;11070:207::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11178:2:::1;11166:8;11156:7;:18;;;;:::i;:::-;:24;;;;11148:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11228:7;11214:11;;:21;;;;;;;;;;;;;;;;;;11261:8;11246:12;;:23;;;;;;;;;;;;;;;;;;11070:207:::0;;:::o;4620:115::-;4686:7;4714:9;:18;4724:7;4714:18;;;;;;;;;;;;;;;;4707:25;;4620:115;;;:::o;694:130::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;771:1:::1;754:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;789:32;818:1;789:32;;;;;;:::i;:::-;;;;;;;;694:130::o:0;11287:97::-;11337:7;11365:16;;;;;;;;;;;11358:23;;11287:97;:::o;6775:126::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6839:12:::1;;;;;;;;;;;6838:13;6830:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6879:14;:12;:14::i;:::-;6775:126::o:0;466:65::-;504:7;522:6;;;;;;;;;;;515:13;;466:65;:::o;4530:84::-;4580:13;4604:7;;;;;;;;;;;;;;;;;4597:14;;4530:84;:::o;11954:81::-;11996:7;12024:8;;12017:15;;11954:81;:::o;5111:218::-;5190:4;5215:29;5233:10;5215:17;:29::i;:::-;5207:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5283:43;5297:10;5309:8;5319:6;5283:13;:43::i;:::-;5276:50;;5111:218;;;;:::o;11392:276::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11484:5:::1;:19;11490:12;11484:19;;;;;;;;;;;;;;;;;;;;;;;;;11483:20;11475:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11569:12;11542:16;;:40;;;;;;;;;;;;;;;;;;11616:4;11593:6;:20;11600:12;11593:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11656:4;11631:8;:22;11640:12;11631:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11392:276:::0;:::o;11867:81::-;11909:7;11937:8;;11930:15;;11867:81;:::o;11770:89::-;11819:7;11847:9;;11840:16;;11770:89;:::o;4741:143::-;4825:7;4853:11;:19;4865:6;4853:19;;;;;;;;;;;;;;;:28;4873:7;4853:28;;;;;;;;;;;;;;;;4846:35;;4741:143;;;;:::o;12487:325::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12649:6:::1;12625:30;;12640:6;12625:21;;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;12625:21;;;;:::i;:::-;:30;;;;:::i;:::-;12614:8;:41;;;;12701:6;12677:30;;12692:6;12677:21;;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;12677:21;;;;:::i;:::-;:30;;;;:::i;:::-;12666:8;:41;;;;12743:6;12733:7;:16;;;;;;:::i;:::-;12718:31;;:12;:31;;;;12778:8;;12768;;:18;;12760:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12487:325:::0;;;;;:::o;5968:536::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3526:4:::1;3516:7;;:14;;;;;;;;;;;;;;;;;;6072:1:::2;6050:24;;:10;;;;;;;;;;;:24;;;6042:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6109:12;;;;;;;;;;;6108:13;6100:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6169:1;6157:9;:13;:40;;;;6196:1;6174:21;:23;6157:40;6149:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;6252:1;6227:9;:24;6245:4;6227:24;;;;;;;;;;;;;;;;:26;6219:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6285:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6278:4;;:32;;;;;;;;;;;;;;;;;;6352:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6334:58;;;6401:4;6408;;;;;;;;;;;6334:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6321:10;;:92;;;;;;;;;;;;;;;;;;6424:62;6438:9;:24;6456:4;6438:24;;;;;;;;;;;;;;;;6464:21;6424:13;:62::i;:::-;3555:5:::1;3545:7;;:15;;;;;;;;;;;;;;;;;;5968:536::o:0;13924:234::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14048:1:::1;14034:11;14022:9;:23;;;;:::i;:::-;:27;;;14014:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14098:9;14079:16;;:28;;;;;;;;;;;;;;;;;;14139:11;14118:18;;:32;;;;;;;;;;;;;;;;;;13924:234:::0;;:::o;537:151::-;331:6;;;;;;;;;;317:20;;:10;:20;;;309:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;630:8:::1;621:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;655:30;676:8;655:30;;;;;;:::i;:::-;;;;;;;;537:151:::0;:::o;11676:88::-;11720:7;11748:13;;11741:20;;11676:88;:::o;9717:289::-;9786:4;9802:16;9821:5;9802:24;;9842:12;;;;;;;;;;;9837:130;;;9873:4;9859:18;;9837:130;;;9900:6;:18;9907:10;9900:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;9922:8;:20;9931:10;9922:20;;;;;;;;;;;;;;;;;;;;;;;;;9900:42;9896:71;;;9960:4;9946:18;;9896:71;9837:130;9987:11;9980:18;;;9717:289;;;:::o;7808:1334::-;7899:4;7942:1;7924:20;;:6;:20;;;7916:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7991:12;;;;;;;;;;;7986:91;;8015:6;:14;8022:6;8015:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;8033:8;:16;8042:6;8033:16;;;;;;;;;;;;;;;;;;;;;;;;;8015:34;8007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:91;8093:7;;;;;;;;;;;8092:8;:27;;;;;8104:5;:15;8110:8;8104:15;;;;;;;;;;;;;;;;;;;;;;;;;8092:27;:49;;;;;8123:18;8134:6;8123:10;:18::i;:::-;8092:49;8087:82;;;8146:20;:18;:20::i;:::-;8087:82;8202:10;;8186:12;:26;8181:444;;8249:12;;8234;:27;:44;;;;;8265:5;:13;8271:6;8265:13;;;;;;;;;;;;;;;;;;;;;;;;;8234:44;8230:130;;;8320:9;8308:21;;:8;:21;;;8300:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8230:130;8408:3;8393:12;;:18;;;;:::i;:::-;8378:12;:33;:52;;;;;8415:5;:15;8421:8;8415:15;;;;;;;;;;;;;;;;;;;;;;;;;8378:52;:79;;;;;8452:4;8434:23;;:6;:23;;;;8378:79;8374:240;;;8517:1;8479:10;:24;8490:12;8479:24;;;;;;;;;;;:34;8504:8;8479:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8583:1;8545:10;:24;8556:12;8545:24;;;;;;;;;;;:34;8570:8;8545:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;8537:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8374:240;8181:444;8660:4;8642:23;;:6;:23;;;;:52;;;;;8689:4;8669:25;;:8;:25;;;;8642:52;:72;;;;;8708:6;;;;;;;;;;8698:16;;:6;:16;;;;8642:72;8637:174;;;8741:38;8754:6;8762:8;8772:6;8741:12;:38::i;:::-;8733:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8637:174;8823:18;8844:39;8858:6;8866:8;8876:6;8844:13;:39::i;:::-;8823:60;;8894:23;8929:10;8920:6;:19;;;;:::i;:::-;8894:45;;8971:6;8950:9;:17;8960:6;8950:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;9003:10;8988:11;;:25;;;;;;;:::i;:::-;;;;;;;;9047:15;9024:9;:19;9034:8;9024:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;9095:8;9078:34;;9087:6;9078:34;;;9105:6;9078:34;;;;;;:::i;:::-;;;;;;;;9130:4;9123:11;;;;7808:1334;;;;;:::o;6909:446::-;6988:3;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;6969:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;6953:9;:38;;;;7038:3;1867:1;1934:2;:13;;;;:::i;:::-;1915:15;:33;;;;:::i;:::-;7019:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7003:13;:38;;;;7077:11;;7052:9;:21;7062:10;;;;;;;;;;;7052:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;7122:10;;;;;;;;;;;:15;;7138:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7122:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7099:74;7100:5;:17;7106:10;;;;;;;;;;;7100:17;;;;;;;;;;;;;;;;7099:74;;;;;;;;;;;;;;;;;;;;;;7192:5;:17;7198:10;;;;;;;;;;;7192:17;;;;;;;;;;;;;;;;;;;;;;;;;7184:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7254:12;7241:10;:25;;;;7307:10;;7292:12;;:25;;;;:::i;:::-;7277:12;:40;;;;7343:4;7328:12;;:19;;;;;;;;;;;;;;;;;;6909:446::o;6512:255::-;6600:28;6615:12;6600:14;:28::i;:::-;6639:18;;;;;;;;;;;:34;;;6681:13;6706:4;6713:12;6727:1;6730;6733:7;;;;;;;;;;;6742:15;6639:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6512:255;;:::o;7363:435::-;7423:4;7440:11;7481:1;7466:12;;:16;7462:305;;;7500:13;7516:9;:21;7526:10;;;;;;;;;;;7516:21;;;;;;;;;;;;;;;;7500:37;;7552:14;7576:4;;;;;;;;;;;7569:22;;;7592:10;;;;;;;;;;;7569:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7552:51;;7619:16;7660:5;7650:6;7639:8;:17;;;;:::i;:::-;7638:27;;;;:::i;:::-;7619:46;;7696:12;;7684:8;:24;7680:48;;7721:4;7712:13;;7680:48;7484:259;;;7462:305;;;7760:4;7751:13;;7462:305;7784:6;7777:13;;;7363:435;;;:::o;12822:738::-;3526:4;3516:7;;:14;;;;;;;;;;;;;;;;;;12883:26:::1;12912:11;;12883:40;;12961:8;;12939:18;:30;;:46;;;;;12973:12;;;;;;;;;;;12939:46;12934:619;;;13030:8;;13008:18;:30;13003:72;;13064:8;;13043:29;;13003:72;13103:22;13128:18;13103:43;;1867:1;13187:2;:13;;;;:::i;:::-;13183:1;:17;;;;:::i;:::-;13166:14;:34;13162:229;;;13250:18;13222:9;:24;13240:4;13222:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;13287:36;13308:14;13287:20;:36::i;:::-;13357:18;13342:11;;:33;;;;;;;:::i;:::-;;;;;;;;13162:229;13405:27;13435:21;13405:51;;13496:1;13474:19;:23;13471:71;;;13501:38;13519:19;13501:17;:38::i;:::-;13471:71;12988:565;;12934:619;12872:688;3555:5:::0;3545:7;;:15;;;;;;;;;;;;;;;;;;12822:738::o;9150:559::-;9257:4;9274:21;9298:4;9274:28;;9318:12;;;;;;;;;;;:37;;;;;9335:8;:20;9344:10;9335:20;;;;;;;;;;;;;;;;;;;;;;;;;9334:21;9318:37;:60;;;;;9360:8;:18;9369:8;9360:18;;;;;;;;;;;;;;;;;;;;;;;;;9359:19;9318:60;9313:355;;;9418:9;;9401:14;:26;9396:261;;;9469:5;9450:24;;9396:261;;;9534:5;:15;9540:8;9534:15;;;;;;;;;;;;;;;;;;;;;;;;;9533:16;:74;;;;;9593:13;;9576:14;9554:9;:19;9564:8;9554:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;9533:74;9510:147;;;9649:5;9630:24;;9510:147;9396:261;9313:355;9685:16;9678:23;;;9150:559;;;;;:::o;10014:498::-;10115:7;10135:17;10179:12;;;;;;;;;;;10178:13;:35;;;;10195:6;:18;10202:10;10195:18;;;;;;;;;;;;;;;;;;;;;;;;;10178:35;:56;;;;10217:6;:17;10224:9;10217:17;;;;;;;;;;;;;;;;;;;;;;;;;10178:56;10173:303;;;10265:1;10253:13;;10173:303;;;10290:5;:17;10296:10;10290:17;;;;;;;;;;;;;;;;;;;;;;;;;10285:191;;;10361:3;10347:11;;;;;;;;;;;10338:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10326:38;;10285:191;;;10389:5;:16;10395:9;10389:16;;;;;;;;;;;;;;;;;;;;;;;;;10384:92;;;10460:3;10445:12;;;;;;;;;;;10436:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10424:39;;10384:92;10285:191;10173:303;10495:9;10488:16;;;10014:498;;;;;:::o;5643:317::-;5763:12;5714:11;:26;5734:4;5714:26;;;;;;;;;;;;;;;:46;3116:42;5714:46;;;;;;;;;;;;;;;;:61;5709:244;;;5842:17;5793:11;:26;5813:4;5793:26;;;;;;;;;;;;;;;:46;3116:42;5793:46;;;;;;;;;;;;;;;:66;;;;3116:42;5879:62;;5896:4;5879:62;;;5923:17;5879:62;;;;;;:::i;:::-;;;;;;;;5709:244;5643:317;:::o;13568:348::-;13638:27;13653:11;13638:14;:27::i;:::-;13676:21;13714:1;13700:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13676:40;;13746:4;13727;13732:1;13727:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13773:4;;;;;;;;;;;13763;13768:1;13763:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;13789:18;;;;;;;;;;;:69;;;13859:11;13871:1;13873:4;13886;13892:15;13789:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13627:289;13568:348;:::o;14166:496::-;14228:19;14269:18;;;;;;;;;;;14250:16;;;;;;;;;;;:37;;;;:::i;:::-;14228:59;;;;14316:1;14302:11;:15;14298:357;;;14334:20;14385:11;14366:16;;;;;;;;;;;14357:25;;:6;:25;;;;:::i;:::-;:39;;;;:::i;:::-;14334:62;;14411:22;14466:11;14445:18;;;;;;;;;;;14436:27;;:6;:27;;;;:::i;:::-;:41;;;;:::i;:::-;14411:66;;14511:1;14496:12;:16;14492:66;;;14516:16;;;;;;;;;;;:25;;:39;14542:12;14516:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14492:66;14593:1;14576:14;:18;14572:72;;;14598:18;;;;;;;;;;;:27;;:43;14626:14;14598:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:72;14319:336;;14298:357;14217:445;14166:496;:::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:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:86::-;5332:7;5372:4;5365:5;5361:16;5350:27;;5297:86;;;:::o;5389:112::-;5472:22;5488:5;5472:22;:::i;:::-;5467:3;5460:35;5389:112;;:::o;5507:214::-;5596:4;5634:2;5623:9;5619:18;5611:26;;5647:67;5711:1;5700:9;5696:17;5687:6;5647:67;:::i;:::-;5507:214;;;;:::o;5727:329::-;5786:6;5835:2;5823:9;5814:7;5810:23;5806:32;5803:119;;;5841:79;;:::i;:::-;5803:119;5961:1;5986:53;6031:7;6022:6;6011:9;6007:22;5986:53;:::i;:::-;5976:63;;5932:117;5727:329;;;;:::o;6062:308::-;6171:4;6209:2;6198:9;6194:18;6186:26;;6222:65;6284:1;6273:9;6269:17;6260:6;6222:65;:::i;:::-;6297:66;6359:2;6348:9;6344:18;6335:6;6297:66;:::i;:::-;6062:308;;;;;:::o;6376:89::-;6412:7;6452:6;6445:5;6441:18;6430:29;;6376:89;;;:::o;6471:120::-;6543:23;6560:5;6543:23;:::i;:::-;6536:5;6533:34;6523:62;;6581:1;6578;6571:12;6523:62;6471:120;:::o;6597:137::-;6642:5;6680:6;6667:20;6658:29;;6696:32;6722:5;6696:32;:::i;:::-;6597:137;;;;:::o;6740:470::-;6806:6;6814;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:52;7058:7;7049:6;7038:9;7034:22;7014:52;:::i;:::-;7004:62;;6960:116;7115:2;7141:52;7185:7;7176:6;7165:9;7161:22;7141:52;:::i;:::-;7131:62;;7086:117;6740:470;;;;;:::o;7216:118::-;7287:22;7303:5;7287:22;:::i;:::-;7280:5;7277:33;7267:61;;7324:1;7321;7314:12;7267:61;7216:118;:::o;7340:135::-;7384:5;7422:6;7409:20;7400:29;;7438:31;7463:5;7438:31;:::i;:::-;7340:135;;;;:::o;7481:466::-;7545:6;7553;7602:2;7590:9;7581:7;7577:23;7573:32;7570:119;;;7608:79;;:::i;:::-;7570:119;7728:1;7753:51;7796:7;7787:6;7776:9;7772:22;7753:51;:::i;:::-;7743:61;;7699:115;7853:2;7879:51;7922:7;7913:6;7902:9;7898:22;7879:51;:::i;:::-;7869:61;;7824:116;7481:466;;;;;:::o;7953:118::-;8040:24;8058:5;8040:24;:::i;:::-;8035:3;8028:37;7953:118;;:::o;8077:222::-;8170:4;8208:2;8197:9;8193:18;8185:26;;8221:71;8289:1;8278:9;8274:17;8265:6;8221:71;:::i;:::-;8077:222;;;;:::o;8305:474::-;8373:6;8381;8430:2;8418:9;8409:7;8405:23;8401:32;8398:119;;;8436:79;;:::i;:::-;8398:119;8556:1;8581:53;8626:7;8617:6;8606:9;8602:22;8581:53;:::i;:::-;8571:63;;8527:117;8683:2;8709:53;8754:7;8745:6;8734:9;8730:22;8709:53;:::i;:::-;8699:63;;8654:118;8305:474;;;;;:::o;8785:93::-;8821:7;8861:10;8854:5;8850:22;8839:33;;8785:93;;;:::o;8884:120::-;8956:23;8973:5;8956:23;:::i;:::-;8949:5;8946:34;8936:62;;8994:1;8991;8984:12;8936:62;8884:120;:::o;9010:137::-;9055:5;9093:6;9080:20;9071:29;;9109:32;9135:5;9109:32;:::i;:::-;9010:137;;;;:::o;9153:901::-;9243:6;9251;9259;9267;9275;9324:3;9312:9;9303:7;9299:23;9295:33;9292:120;;;9331:79;;:::i;:::-;9292:120;9451:1;9476:52;9520:7;9511:6;9500:9;9496:22;9476:52;:::i;:::-;9466:62;;9422:116;9577:2;9603:52;9647:7;9638:6;9627:9;9623:22;9603:52;:::i;:::-;9593:62;;9548:117;9704:2;9730:52;9774:7;9765:6;9754:9;9750:22;9730:52;:::i;:::-;9720:62;;9675:117;9831:2;9857:52;9901:7;9892:6;9881:9;9877:22;9857:52;:::i;:::-;9847:62;;9802:117;9958:3;9985:52;10029:7;10020:6;10009:9;10005:22;9985:52;:::i;:::-;9975:62;;9929:118;9153:901;;;;;;;;:::o;10060:104::-;10105:7;10134:24;10152:5;10134:24;:::i;:::-;10123:35;;10060:104;;;:::o;10170:138::-;10251:32;10277:5;10251:32;:::i;:::-;10244:5;10241:43;10231:71;;10298:1;10295;10288:12;10231:71;10170:138;:::o;10314:155::-;10368:5;10406:6;10393:20;10384:29;;10422:41;10457:5;10422:41;:::i;:::-;10314:155;;;;:::o;10475:345::-;10542:6;10591:2;10579:9;10570:7;10566:23;10562:32;10559:119;;;10597:79;;:::i;:::-;10559:119;10717:1;10742:61;10795:7;10786:6;10775:9;10771:22;10742:61;:::i;:::-;10732:71;;10688:125;10475:345;;;;:::o;10826:180::-;10874:77;10871:1;10864:88;10971:4;10968:1;10961:15;10995:4;10992:1;10985:15;11012:102;11054:8;11101:5;11098:1;11094:13;11073:34;;11012:102;;;:::o;11120:848::-;11181:5;11188:4;11212:6;11203:15;;11236:5;11227:14;;11250:712;11271:1;11261:8;11258:15;11250:712;;;11366:4;11361:3;11357:14;11351:4;11348:24;11345:50;;;11375:18;;:::i;:::-;11345:50;11425:1;11415:8;11411:16;11408:451;;;11840:4;11833:5;11829:16;11820:25;;11408:451;11890:4;11884;11880:15;11872:23;;11920:32;11943:8;11920:32;:::i;:::-;11908:44;;11250:712;;;11120:848;;;;;;;:::o;11974:1073::-;12028:5;12219:8;12209:40;;12240:1;12231:10;;12242:5;;12209:40;12268:4;12258:36;;12285:1;12276:10;;12287:5;;12258:36;12354:4;12402:1;12397:27;;;;12438:1;12433:191;;;;12347:277;;12397:27;12415:1;12406:10;;12417:5;;;12433:191;12478:3;12468:8;12465:17;12462:43;;;12485:18;;:::i;:::-;12462:43;12534:8;12531:1;12527:16;12518:25;;12569:3;12562:5;12559:14;12556:40;;;12576:18;;:::i;:::-;12556:40;12609:5;;;12347:277;;12733:2;12723:8;12720:16;12714:3;12708:4;12705:13;12701:36;12683:2;12673:8;12670:16;12665:2;12659:4;12656:12;12652:35;12636:111;12633:246;;;12789:8;12783:4;12779:19;12770:28;;12824:3;12817:5;12814:14;12811:40;;;12831:18;;:::i;:::-;12811:40;12864:5;;12633:246;12904:42;12942:3;12932:8;12926:4;12923:1;12904:42;:::i;:::-;12889:57;;;;12978:4;12973:3;12969:14;12962:5;12959:25;12956:51;;;12987:18;;:::i;:::-;12956:51;13036:4;13029:5;13025:16;13016:25;;11974:1073;;;;;;:::o;13053:281::-;13111:5;13135:23;13153:4;13135:23;:::i;:::-;13127:31;;13179:25;13195:8;13179:25;:::i;:::-;13167:37;;13223:104;13260:66;13250:8;13244:4;13223:104;:::i;:::-;13214:113;;13053:281;;;;:::o;13340:410::-;13380:7;13403:20;13421:1;13403:20;:::i;:::-;13398:25;;13437:20;13455:1;13437:20;:::i;:::-;13432:25;;13492:1;13489;13485:9;13514:30;13532:11;13514:30;:::i;:::-;13503:41;;13693:1;13684:7;13680:15;13677:1;13674:22;13654:1;13647:9;13627:83;13604:139;;13723:18;;:::i;:::-;13604:139;13388:362;13340:410;;;;:::o;13756:174::-;13896:26;13892:1;13884:6;13880:14;13873:50;13756:174;:::o;13936:366::-;14078:3;14099:67;14163:2;14158:3;14099:67;:::i;:::-;14092:74;;14175:93;14264:3;14175:93;:::i;:::-;14293:2;14288:3;14284:12;14277:19;;13936:366;;;:::o;14308:419::-;14474:4;14512:2;14501:9;14497:18;14489:26;;14561:9;14555:4;14551:20;14547:1;14536:9;14532:17;14525:47;14589:131;14715:4;14589:131;:::i;:::-;14581:139;;14308:419;;;:::o;14733:166::-;14873:18;14869:1;14861:6;14857:14;14850:42;14733:166;:::o;14905:366::-;15047:3;15068:67;15132:2;15127:3;15068:67;:::i;:::-;15061:74;;15144:93;15233:3;15144:93;:::i;:::-;15262:2;15257:3;15253:12;15246:19;;14905:366;;;:::o;15277:419::-;15443:4;15481:2;15470:9;15466:18;15458:26;;15530:9;15524:4;15520:20;15516:1;15505:9;15501:17;15494:47;15558:131;15684:4;15558:131;:::i;:::-;15550:139;;15277:419;;;:::o;15702:166::-;15842:18;15838:1;15830:6;15826:14;15819:42;15702:166;:::o;15874:366::-;16016:3;16037:67;16101:2;16096:3;16037:67;:::i;:::-;16030:74;;16113:93;16202:3;16113:93;:::i;:::-;16231:2;16226:3;16222:12;16215:19;;15874:366;;;:::o;16246:419::-;16412:4;16450:2;16439:9;16435:18;16427:26;;16499:9;16493:4;16489:20;16485:1;16474:9;16470:17;16463:47;16527:131;16653:4;16527:131;:::i;:::-;16519:139;;16246:419;;;:::o;16671:194::-;16711:4;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16765:20;16783:1;16765:20;:::i;:::-;16760:25;;16809:1;16806;16802:9;16794:17;;16833:1;16827:4;16824:11;16821:37;;;16838:18;;:::i;:::-;16821:37;16671:194;;;;:::o;16871:180::-;16919:77;16916:1;16909:88;17016:4;17013:1;17006:15;17040:4;17037:1;17030:15;17057:185;17097:1;17114:20;17132:1;17114:20;:::i;:::-;17109:25;;17148:20;17166:1;17148:20;:::i;:::-;17143:25;;17187:1;17177:35;;17192:18;;:::i;:::-;17177:35;17234:1;17231;17227:9;17222:14;;17057:185;;;;:::o;17248:191::-;17288:3;17307:20;17325:1;17307:20;:::i;:::-;17302:25;;17341:20;17359:1;17341:20;:::i;:::-;17336:25;;17384:1;17381;17377:9;17370:16;;17405:3;17402:1;17399:10;17396:36;;;17412:18;;:::i;:::-;17396:36;17248:191;;;;:::o;17445:160::-;17585:12;17581:1;17573:6;17569:14;17562:36;17445:160;:::o;17611:366::-;17753:3;17774:67;17838:2;17833:3;17774:67;:::i;:::-;17767:74;;17850:93;17939:3;17850:93;:::i;:::-;17968:2;17963:3;17959:12;17952:19;;17611:366;;;:::o;17983:419::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18236:9;18230:4;18226:20;18222:1;18211:9;18207:17;18200:47;18264:131;18390:4;18264:131;:::i;:::-;18256:139;;17983:419;;;:::o;18408:164::-;18548:16;18544:1;18536:6;18532:14;18525:40;18408:164;:::o;18578:366::-;18720:3;18741:67;18805:2;18800:3;18741:67;:::i;:::-;18734:74;;18817:93;18906:3;18817:93;:::i;:::-;18935:2;18930:3;18926:12;18919:19;;18578:366;;;:::o;18950:419::-;19116:4;19154:2;19143:9;19139:18;19131:26;;19203:9;19197:4;19193:20;19189:1;19178:9;19174:17;19167:47;19231:131;19357:4;19231:131;:::i;:::-;19223:139;;18950:419;;;:::o;19375:188::-;19413:3;19432:18;19448:1;19432:18;:::i;:::-;19427:23;;19464:18;19480:1;19464:18;:::i;:::-;19459:23;;19505:1;19502;19498:9;19491:16;;19528:4;19523:3;19520:13;19517:39;;;19536:18;;:::i;:::-;19517:39;19375:188;;;;:::o;19569:168::-;19709:20;19705:1;19697:6;19693:14;19686:44;19569:168;:::o;19743:366::-;19885:3;19906:67;19970:2;19965:3;19906:67;:::i;:::-;19899:74;;19982:93;20071:3;19982:93;:::i;:::-;20100:2;20095:3;20091:12;20084:19;;19743:366;;;:::o;20115:419::-;20281:4;20319:2;20308:9;20304:18;20296:26;;20368:9;20362:4;20358:20;20354:1;20343:9;20339:17;20332:47;20396:131;20522:4;20396:131;:::i;:::-;20388:139;;20115:419;;;:::o;20540:162::-;20680:14;20676:1;20668:6;20664:14;20657:38;20540:162;:::o;20708:366::-;20850:3;20871:67;20935:2;20930:3;20871:67;:::i;:::-;20864:74;;20947:93;21036:3;20947:93;:::i;:::-;21065:2;21060:3;21056:12;21049:19;;20708:366;;;:::o;21080:419::-;21246:4;21284:2;21273:9;21269:18;21261:26;;21333:9;21327:4;21323:20;21319:1;21308:9;21304:17;21297:47;21361:131;21487:4;21361:131;:::i;:::-;21353:139;;21080:419;;;:::o;21505:173::-;21645:25;21641:1;21633:6;21629:14;21622:49;21505:173;:::o;21684:366::-;21826:3;21847:67;21911:2;21906:3;21847:67;:::i;:::-;21840:74;;21923:93;22012:3;21923:93;:::i;:::-;22041:2;22036:3;22032:12;22025:19;;21684:366;;;:::o;22056:419::-;22222:4;22260:2;22249:9;22245:18;22237:26;;22309:9;22303:4;22299:20;22295:1;22284:9;22280:17;22273:47;22337:131;22463:4;22337:131;:::i;:::-;22329:139;;22056:419;;;:::o;22481:99::-;22517:7;22557:16;22550:5;22546:28;22535:39;;22481:99;;;:::o;22586:275::-;22625:7;22648:19;22665:1;22648:19;:::i;:::-;22643:24;;22681:19;22698:1;22681:19;:::i;:::-;22676:24;;22735:1;22732;22728:9;22757:29;22774:11;22757:29;:::i;:::-;22746:40;;22818:11;22809:7;22806:24;22796:58;;22834:18;;:::i;:::-;22796:58;22633:228;22586:275;;;;:::o;22867:163::-;23007:15;23003:1;22995:6;22991:14;22984:39;22867:163;:::o;23036:366::-;23178:3;23199:67;23263:2;23258:3;23199:67;:::i;:::-;23192:74;;23275:93;23364:3;23275:93;:::i;:::-;23393:2;23388:3;23384:12;23377:19;;23036:366;;;:::o;23408:419::-;23574:4;23612:2;23601:9;23597:18;23589:26;;23661:9;23655:4;23651:20;23647:1;23636:9;23632:17;23625:47;23689:131;23815:4;23689:131;:::i;:::-;23681:139;;23408:419;;;:::o;23833:160::-;23973:12;23969:1;23961:6;23957:14;23950:36;23833:160;:::o;23999:366::-;24141:3;24162:67;24226:2;24221:3;24162:67;:::i;:::-;24155:74;;24238:93;24327:3;24238:93;:::i;:::-;24356:2;24351:3;24347:12;24340:19;;23999:366;;;:::o;24371:419::-;24537:4;24575:2;24564:9;24560:18;24552:26;;24624:9;24618:4;24614:20;24610:1;24599:9;24595:17;24588:47;24652:131;24778:4;24652:131;:::i;:::-;24644:139;;24371:419;;;:::o;24796:156::-;24936:8;24932:1;24924:6;24920:14;24913:32;24796:156;:::o;24958:365::-;25100:3;25121:66;25185:1;25180:3;25121:66;:::i;:::-;25114:73;;25196:93;25285:3;25196:93;:::i;:::-;25314:2;25309:3;25305:12;25298:19;;24958:365;;;:::o;25329:419::-;25495:4;25533:2;25522:9;25518:18;25510:26;;25582:9;25576:4;25572:20;25568:1;25557:9;25553:17;25546:47;25610:131;25736:4;25610:131;:::i;:::-;25602:139;;25329:419;;;:::o;25754:159::-;25894:11;25890:1;25882:6;25878:14;25871:35;25754:159;:::o;25919:365::-;26061:3;26082:66;26146:1;26141:3;26082:66;:::i;:::-;26075:73;;26157:93;26246:3;26157:93;:::i;:::-;26275:2;26270:3;26266:12;26259:19;;25919:365;;;:::o;26290:419::-;26456:4;26494:2;26483:9;26479:18;26471:26;;26543:9;26537:4;26533:20;26529:1;26518:9;26514:17;26507:47;26571:131;26697:4;26571:131;:::i;:::-;26563:139;;26290:419;;;:::o;26715:143::-;26772:5;26803:6;26797:13;26788:22;;26819:33;26846:5;26819:33;:::i;:::-;26715:143;;;;:::o;26864:351::-;26934:6;26983:2;26971:9;26962:7;26958:23;26954:32;26951:119;;;26989:79;;:::i;:::-;26951:119;27109:1;27134:64;27190:7;27181:6;27170:9;27166:22;27134:64;:::i;:::-;27124:74;;27080:128;26864:351;;;;:::o;27221:332::-;27342:4;27380:2;27369:9;27365:18;27357:26;;27393:71;27461:1;27450:9;27446:17;27437:6;27393:71;:::i;:::-;27474:72;27542:2;27531:9;27527:18;27518:6;27474:72;:::i;:::-;27221:332;;;;;:::o;27559:193::-;27598:3;27617:19;27634:1;27617:19;:::i;:::-;27612:24;;27650:19;27667:1;27650:19;:::i;:::-;27645:24;;27692:1;27689;27685:9;27678:16;;27715:6;27710:3;27707:15;27704:41;;;27725:18;;:::i;:::-;27704:41;27559:193;;;;:::o;27758:164::-;27898:16;27894:1;27886:6;27882:14;27875:40;27758:164;:::o;27928:366::-;28070:3;28091:67;28155:2;28150:3;28091:67;:::i;:::-;28084:74;;28167:93;28256:3;28167:93;:::i;:::-;28285:2;28280:3;28276:12;28269:19;;27928:366;;;:::o;28300:419::-;28466:4;28504:2;28493:9;28489:18;28481:26;;28553:9;28547:4;28543:20;28539:1;28528:9;28524:17;28517:47;28581:131;28707:4;28581:131;:::i;:::-;28573:139;;28300:419;;;:::o;28725:60::-;28753:3;28774:5;28767:12;;28725:60;;;:::o;28791:142::-;28841:9;28874:53;28892:34;28901:24;28919:5;28901:24;:::i;:::-;28892:34;:::i;:::-;28874:53;:::i;:::-;28861:66;;28791:142;;;:::o;28939:126::-;28989:9;29022:37;29053:5;29022:37;:::i;:::-;29009:50;;28939:126;;;:::o;29071:134::-;29129:9;29162:37;29193:5;29162:37;:::i;:::-;29149:50;;29071:134;;;:::o;29211:147::-;29306:45;29345:5;29306:45;:::i;:::-;29301:3;29294:58;29211:147;;:::o;29364:238::-;29465:4;29503:2;29492:9;29488:18;29480:26;;29516:79;29592:1;29581:9;29577:17;29568:6;29516:79;:::i;:::-;29364:238;;;;:::o;29608:176::-;29748:28;29744:1;29736:6;29732:14;29725:52;29608:176;:::o;29790:366::-;29932:3;29953:67;30017:2;30012:3;29953:67;:::i;:::-;29946:74;;30029:93;30118:3;30029:93;:::i;:::-;30147:2;30142:3;30138:12;30131:19;;29790:366;;;:::o;30162:419::-;30328:4;30366:2;30355:9;30351:18;30343:26;;30415:9;30409:4;30405:20;30401:1;30390:9;30386:17;30379:47;30443:131;30569:4;30443:131;:::i;:::-;30435:139;;30162:419;;;:::o;30587:170::-;30727:22;30723:1;30715:6;30711:14;30704:46;30587:170;:::o;30763:366::-;30905:3;30926:67;30990:2;30985:3;30926:67;:::i;:::-;30919:74;;31002:93;31091:3;31002:93;:::i;:::-;31120:2;31115:3;31111:12;31104:19;;30763:366;;;:::o;31135:419::-;31301:4;31339:2;31328:9;31324:18;31316:26;;31388:9;31382:4;31378:20;31374:1;31363:9;31359:17;31352:47;31416:131;31542:4;31416:131;:::i;:::-;31408:139;;31135:419;;;:::o;31560:159::-;31700:11;31696:1;31688:6;31684:14;31677:35;31560:159;:::o;31725:365::-;31867:3;31888:66;31952:1;31947:3;31888:66;:::i;:::-;31881:73;;31963:93;32052:3;31963:93;:::i;:::-;32081:2;32076:3;32072:12;32065:19;;31725:365;;;:::o;32096:419::-;32262:4;32300:2;32289:9;32285:18;32277:26;;32349:9;32343:4;32339:20;32335:1;32324:9;32320:17;32313:47;32377:131;32503:4;32377:131;:::i;:::-;32369:139;;32096:419;;;:::o;32521:164::-;32661:16;32657:1;32649:6;32645:14;32638:40;32521:164;:::o;32691:366::-;32833:3;32854:67;32918:2;32913:3;32854:67;:::i;:::-;32847:74;;32930:93;33019:3;32930:93;:::i;:::-;33048:2;33043:3;33039:12;33032:19;;32691:366;;;:::o;33063:419::-;33229:4;33267:2;33256:9;33252:18;33244:26;;33316:9;33310:4;33306:20;33302:1;33291:9;33287:17;33280:47;33344:131;33470:4;33344:131;:::i;:::-;33336:139;;33063:419;;;:::o;33488:98::-;33539:6;33573:5;33567:12;33557:22;;33488:98;;;:::o;33592:147::-;33693:11;33730:3;33715:18;;33592:147;;;;:::o;33745:386::-;33849:3;33877:38;33909:5;33877:38;:::i;:::-;33931:88;34012:6;34007:3;33931:88;:::i;:::-;33924:95;;34028:65;34086:6;34081:3;34074:4;34067:5;34063:16;34028:65;:::i;:::-;34118:6;34113:3;34109:16;34102:23;;33853:278;33745:386;;;;:::o;34137:271::-;34267:3;34289:93;34378:3;34369:6;34289:93;:::i;:::-;34282:100;;34399:3;34392:10;;34137:271;;;;:::o;34414:166::-;34554:18;34550:1;34542:6;34538:14;34531:42;34414:166;:::o;34586:366::-;34728:3;34749:67;34813:2;34808:3;34749:67;:::i;:::-;34742:74;;34825:93;34914:3;34825:93;:::i;:::-;34943:2;34938:3;34934:12;34927:19;;34586:366;;;:::o;34958:419::-;35124:4;35162:2;35151:9;35147:18;35139:26;;35211:9;35205:4;35201:20;35197:1;35186:9;35182:17;35175:47;35239:131;35365:4;35239:131;:::i;:::-;35231:139;;34958:419;;;:::o;35383:85::-;35428:7;35457:5;35446:16;;35383:85;;;:::o;35474:158::-;35532:9;35565:61;35583:42;35592:32;35618:5;35592:32;:::i;:::-;35583:42;:::i;:::-;35565:61;:::i;:::-;35552:74;;35474:158;;;:::o;35638:147::-;35733:45;35772:5;35733:45;:::i;:::-;35728:3;35721:58;35638:147;;:::o;35791:807::-;36040:4;36078:3;36067:9;36063:19;36055:27;;36092:71;36160:1;36149:9;36145:17;36136:6;36092:71;:::i;:::-;36173:72;36241:2;36230:9;36226:18;36217:6;36173:72;:::i;:::-;36255:80;36331:2;36320:9;36316:18;36307:6;36255:80;:::i;:::-;36345;36421:2;36410:9;36406:18;36397:6;36345:80;:::i;:::-;36435:73;36503:3;36492:9;36488:19;36479:6;36435:73;:::i;:::-;36518;36586:3;36575:9;36571:19;36562:6;36518:73;:::i;:::-;35791:807;;;;;;;;;:::o;36604:143::-;36661:5;36692:6;36686:13;36677:22;;36708:33;36735:5;36708:33;:::i;:::-;36604:143;;;;:::o;36753:663::-;36841:6;36849;36857;36906:2;36894:9;36885:7;36881:23;36877:32;36874:119;;;36912:79;;:::i;:::-;36874:119;37032:1;37057:64;37113:7;37104:6;37093:9;37089:22;37057:64;:::i;:::-;37047:74;;37003:128;37170:2;37196:64;37252:7;37243:6;37232:9;37228:22;37196:64;:::i;:::-;37186:74;;37141:129;37309:2;37335:64;37391:7;37382:6;37371:9;37367:22;37335:64;:::i;:::-;37325:74;;37280:129;36753:663;;;;;:::o;37422:351::-;37492:6;37541:2;37529:9;37520:7;37516:23;37512:32;37509:119;;;37547:79;;:::i;:::-;37509:119;37667:1;37692:64;37748:7;37739:6;37728:9;37724:22;37692:64;:::i;:::-;37682:74;;37638:128;37422:351;;;;:::o;37779:180::-;37827:77;37824:1;37817:88;37924:4;37921:1;37914:15;37948:4;37945:1;37938:15;37965:180;38013:77;38010:1;38003:88;38110:4;38107:1;38100:15;38134:4;38131:1;38124:15;38151:114;38218:6;38252:5;38246:12;38236:22;;38151:114;;;:::o;38271:184::-;38370:11;38404:6;38399:3;38392:19;38444:4;38439:3;38435:14;38420:29;;38271:184;;;;:::o;38461:132::-;38528:4;38551:3;38543:11;;38581:4;38576:3;38572:14;38564:22;;38461:132;;;:::o;38599:108::-;38676:24;38694:5;38676:24;:::i;:::-;38671:3;38664:37;38599:108;;:::o;38713:179::-;38782:10;38803:46;38845:3;38837:6;38803:46;:::i;:::-;38881:4;38876:3;38872:14;38858:28;;38713:179;;;;:::o;38898:113::-;38968:4;39000;38995:3;38991:14;38983:22;;38898:113;;;:::o;39047:732::-;39166:3;39195:54;39243:5;39195:54;:::i;:::-;39265:86;39344:6;39339:3;39265:86;:::i;:::-;39258:93;;39375:56;39425:5;39375:56;:::i;:::-;39454:7;39485:1;39470:284;39495:6;39492:1;39489:13;39470:284;;;39571:6;39565:13;39598:63;39657:3;39642:13;39598:63;:::i;:::-;39591:70;;39684:60;39737:6;39684:60;:::i;:::-;39674:70;;39530:224;39517:1;39514;39510:9;39505:14;;39470:284;;;39474:14;39770:3;39763:10;;39171:608;;;39047:732;;;;:::o;39785:831::-;40048:4;40086:3;40075:9;40071:19;40063:27;;40100:71;40168:1;40157:9;40153:17;40144:6;40100:71;:::i;:::-;40181:80;40257:2;40246:9;40242:18;40233:6;40181:80;:::i;:::-;40308:9;40302:4;40298:20;40293:2;40282:9;40278:18;40271:48;40336:108;40439:4;40430:6;40336:108;:::i;:::-;40328:116;;40454:72;40522:2;40511:9;40507:18;40498:6;40454:72;:::i;:::-;40536:73;40604:3;40593:9;40589:19;40580:6;40536:73;:::i;:::-;39785:831;;;;;;;;:::o

Swarm Source

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