ETH Price: $3,419.13 (+1.11%)
Gas: 4 Gwei

Token

StealthPad (STEALTH)
 

Overview

Max Total Supply

1,000,000,000 STEALTH

Holders

505

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
46,683.36387827 STEALTH

Value
$0.00
0x9d638469769c495e1a2954728c152e1cc099d48c
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:
StealthPad

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-26
*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() 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);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract StealthPad is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "StealthPad";
    string private _symbol = "STEALTH";
    uint8 private _decimals = 8; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint _buydevelopmentTax = 2;
    uint _buyLpTax = 1;
    uint _buyRewardTax = 1;

    uint _selldevelopmentTax = 2;
    uint _sellLpTax = 1;
    uint _sellRewardTax = 1;

    uint256 public _totalbuyFee = _buydevelopmentTax.add(_buyLpTax).add(_buyRewardTax);
    uint256 public _totalSellFee = _selldevelopmentTax.add(_sellLpTax).add(_sellRewardTax);

    address public developmentWallet = address(0x287d3027E68f39756E44E80AaE98162faBCd45F1);
    address public lpReceiverWallet;
    address public rewardWallet = address(0x1bEcbb71ECf99C968ead02aC02750A1a75de30d3);
    
    uint256 feedenominator = 100;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

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

    uint256 public swapThreshold = 500_000 * 10**_decimals;

    uint256 public launchedAt;
    bool public normalizeTrade;

    bool tradingActive;

    bool public swapEnabled = false;
    bool public swapbylimit = false;
    bool public EnableTxLimit = false;
    bool public checkWalletLimit = false;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier onlyGuard() {
        require(msg.sender == lpReceiverWallet,"Invalid Caller");
        _;
    }

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexRouter = _dexRouter;
        
        lpReceiverWallet = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        isMarketPair[address(dexPair)] = true;

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

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

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0));
        require(recipient != address(0));
        require(amount > 0);
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!tradingActive) {
                require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is not active.");
            }

            if (launchedAt != 0 && !normalizeTrade) {
                dynamicTaxSetter();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_totalbuyFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_totalSellFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function launch() public payable onlyOwner {
        require(launchedAt == 0, "Already launched!");
        launchedAt = block.number;
        tradingActive = true;

        uint tokenForLp = _balances[address(this)];

        _buydevelopmentTax = 1;
        _buyLpTax = 0;
        _buyRewardTax = 0;

        _selldevelopmentTax = 1;
        _sellLpTax = 0;
        _sellRewardTax = 0;

        dexRouter.addLiquidityETH{ value: msg.value }(
            address(this),
            tokenForLp,
            0,
            0,
            owner(),
            block.timestamp
        );

        IDexSwapFactory factory = IDexSwapFactory(dexRouter.factory());

        IDexSwapPair pair = IDexSwapPair(factory.getPair(address(this), dexRouter.WETH()));

        dexPair = address(pair);

        isMarketPair[address(dexPair)] = true;
        isWalletLimitExempt[address(dexPair)] = true;
        _allowances[address(this)][address(dexPair)] = ~uint256(0);

        swapEnabled = true;
        EnableTxLimit = true;
        checkWalletLimit =  true;
    }

    function dynamicTaxSetter() internal {
        if (block.number <= launchedAt + 3) {
            dynamicSetter(99,99);
        }
        if (block.number > launchedAt + 3 && block.number <= launchedAt + 22) {
            dynamicSetter(45,45);
        }
        if (block.number > launchedAt + 22) {
            dynamicSetter(4,4);
            normalizeTrade = true;
        }
            
    }

    function dynamicSetter(uint _buy, uint _Sell) internal {
        _totalbuyFee = _buy;
        _totalSellFee = _Sell;
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 totalShares = _totalbuyFee.add(_totalSellFee);

        uint256 _liquidityShare = _buyLpTax.add(_sellLpTax);
        // uint256 _developmentShare = _buydevelopmentTax.add(_selldevelopmentTax);
        uint256 _rewardShare = _buyRewardTax.add(_sellRewardTax);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHReward = amountReceived.mul(_rewardShare).div(totalETHFee);
        uint256 amountETHDevelopment = amountReceived.sub(amountETHLiquidity).sub(amountETHReward);

       if(amountETHReward > 0)
            payable(rewardWallet).transfer(amountETHReward);

        if(amountETHDevelopment > 0)
            payable(developmentWallet).transfer(amountETHDevelopment);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpReceiverWallet,
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyGuard { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setBuyFee(uint _developmentFee, uint _lpFee, uint _rewardFee) external onlyOwner {    
        _buydevelopmentTax = _developmentFee;
        _buyLpTax = _lpFee;
        _buyRewardTax = _rewardFee;

        _totalbuyFee = _buydevelopmentTax.add(_buyLpTax).add(_buyRewardTax);
    }

    function setSellFee(uint _developmentFee, uint _lpFee, uint _rewardFee) external onlyOwner {
        _selldevelopmentTax = _developmentFee;
        _sellLpTax = _lpFee;
        _sellRewardTax = _rewardFee;
        _totalSellFee = _selldevelopmentTax.add(_sellLpTax).add(_sellRewardTax);
    }

    function removeLimits() external onlyGuard {
        EnableTxLimit = false;
        checkWalletLimit =  false;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }
    
    function setDevelopmentWallet(address _newWallet) external onlyOwner {
        developmentWallet = _newWallet;
    }

    function setLpWallet(address _newWallet) external onlyOwner {
        lpReceiverWallet = _newWallet;
    }

    function setRewardWallet(address _newWallet) external onlyOwner {
        rewardWallet = _newWallet;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[_pair] = _status;
        }
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited)
        external
        onlyGuard
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        swapThreshold = _threshold;
    }

    function setManualRouter(address _router) external onlyOwner {
        dexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        dexPair = _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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalbuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalizeTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600a81526020017f537465616c746850616400000000000000000000000000000000000000000000815250600190805190602001906200005192919062000d9f565b506040518060400160405280600781526020017f535445414c544800000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000d9f565b506008600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506002600455600160055560016006556002600755600160085560016009556200017c6006546200016860055460045462000b3260201b62002c261790919060201c565b62000b3260201b62002c261790919060201c565b600a55620001b8600954620001a460085460075462000b3260201b62002c261790919060201c565b62000b3260201b62002c261790919060201c565b600b5573287d3027e68f39756e44e80aae98162fabcd45f1600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731becbb71ecf99c968ead02ac02750a1a75de30d3600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600f55600360009054906101000a900460ff16600a62000288919062000fe9565b633b9aca006200029991906200103a565b601655620002d36064620002bf600160165462000b9560201b62002c841790919060201c565b62000c1960201b62002cff1790919060201c565b6017556200030d6064620002f9600160165462000b9560201b62002c841790919060201c565b62000c1960201b62002cff1790919060201c565b601855600360009054906101000a900460ff16600a6200032e919062000fe9565b6207a1206200033e91906200103a565b6019556000601b60026101000a81548160ff0219169083151502179055506000601b60036101000a81548160ff0219169083151502179055506000601b60046101000a81548160ff0219169083151502179055506000601b60056101000a81548160ff021916908315150217905550348015620003ba57600080fd5b50620003db620003cf62000c6b60201b60201c565b62000c7360201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601b60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000b239190620010ac565b60405180910390a350620013c4565b600080828462000b439190620010c9565b90508381101562000b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b829062001187565b60405180910390fd5b8091505092915050565b60008083141562000baa576000905062000c13565b6000828462000bba91906200103a565b905082848262000bcb9190620011d8565b1462000c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c059062001286565b60405180910390fd5b809150505b92915050565b600062000c6383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d3760201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829062000d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d7891906200133b565b60405180910390fd5b506000838562000d929190620011d8565b9050809150509392505050565b82805462000dad906200138e565b90600052602060002090601f01602090048101928262000dd1576000855562000e1d565b82601f1062000dec57805160ff191683800117855562000e1d565b8280016001018555821562000e1d579182015b8281111562000e1c57825182559160200191906001019062000dff565b5b50905062000e2c919062000e30565b5090565b5b8082111562000e4b57600081600090555060010162000e31565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000edd5780860481111562000eb55762000eb462000e4f565b5b600185161562000ec55780820291505b808102905062000ed58562000e7e565b945062000e95565b94509492505050565b60008262000ef8576001905062000fcb565b8162000f08576000905062000fcb565b816001811462000f21576002811462000f2c5762000f62565b600191505062000fcb565b60ff84111562000f415762000f4062000e4f565b5b8360020a91508482111562000f5b5762000f5a62000e4f565b5b5062000fcb565b5060208310610133831016604e8410600b841016171562000f9c5782820a90508381111562000f965762000f9562000e4f565b5b62000fcb565b62000fab848484600162000e8b565b9250905081840481111562000fc55762000fc462000e4f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ff68262000fd2565b9150620010038362000fdc565b9250620010327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ee6565b905092915050565b6000620010478262000fd2565b9150620010548362000fd2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001090576200108f62000e4f565b5b828202905092915050565b620010a68162000fd2565b82525050565b6000602082019050620010c360008301846200109b565b92915050565b6000620010d68262000fd2565b9150620010e38362000fd2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200111b576200111a62000e4f565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200116f601b8362001126565b91506200117c8262001137565b602082019050919050565b60006020820190508181036000830152620011a28162001160565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011e58262000fd2565b9150620011f28362000fd2565b925082620012055762001204620011a9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200126e60218362001126565b91506200127b8262001210565b604082019050919050565b60006020820190508181036000830152620012a1816200125f565b9050919050565b600081519050919050565b60005b83811015620012d3578082015181840152602081019050620012b6565b83811115620012e3576000848401525b50505050565b6000601f19601f8301169050919050565b60006200130782620012a8565b62001313818562001126565b935062001325818560208601620012b3565b6200133081620012e9565b840191505092915050565b60006020820190508181036000830152620013578184620012fa565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013a757607f821691505b60208210811415620013be57620013bd6200135f565b5b50919050565b60805160a05161556a620013f8600039600081816113fe015261170e0152600081816116e2015261173a015261556a6000f3fe60806040526004361061037a5760003560e01c8063728d41c9116101d1578063bf56b37111610102578063e6b2603b116100a0578063f2fde38b1161006f578063f2fde38b14610cb6578063f71b9bbf14610cdf578063f872858a14610d08578063fb75b2c714610d3357610381565b8063e6b2603b14610c20578063e9fd339414610c37578063ee828db314610c62578063f242ab4114610c8b57610381565b8063c867d60b116100dc578063c867d60b14610b54578063cea9d26f14610b91578063dd62ed3e14610bba578063df8408fe14610bf757610381565b8063bf56b37114610ad5578063c04a541414610b00578063c16dd4a414610b2b57610381565b80638da5cb5b1161016f578063a457c2d711610149578063a457c2d714610a09578063a9059cbb14610a46578063ae85ade614610a83578063b94b0aef14610aac57610381565b80638da5cb5b1461098857806395d89b41146109b3578063a1c24780146109de57610381565b80637d1db4a5116101ab5780637d1db4a5146108ca578063807c2d9c146108f557806388f8df0a146109205780638b42507f1461094b57610381565b8063728d41c91461086157806372ac24861461088a578063751039fc146108b357610381565b8063313ce567116102ab57806359fac51711610249578063651a898711610223578063651a8987146107b95780636ddd1713146107e257806370a082311461080d578063715018a61461084a57610381565b806359fac5171461073c5780635c85974f146107655780635e42358c1461078e57610381565b8063468c7ee211610285578063468c7ee2146106845780634974d88f146106ad5780635342acb4146106d65780635958621e1461071357610381565b8063313ce567146105df578063395093511461060a5780633ecad2711461064757610381565b806318160ddd1161031857806325519cf2116102f257806325519cf21461053557806327c8f8351461055e5780632b112e49146105895780632fb97b37146105b457610381565b806318160ddd146104a45780631d865c30146104cf57806323b872dd146104f857610381565b80630758d924116103545780630758d924146103e65780630930907b14610411578063095ea7b31461043c578063111a46511461047957610381565b806301339c21146103865780630445b6671461039057806306fdde03146103bb57610381565b3661038157005b600080fd5b61038e610d5e565b005b34801561039c57600080fd5b506103a561133e565b6040516103b2919061446e565b60405180910390f35b3480156103c757600080fd5b506103d0611344565b6040516103dd9190614522565b60405180910390f35b3480156103f257600080fd5b506103fb6113d6565b60405161040891906145c3565b60405180910390f35b34801561041d57600080fd5b506104266113fc565b60405161043391906145ff565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614677565b611420565b60405161047091906146d2565b60405180910390f35b34801561048557600080fd5b5061048e61143e565b60405161049b91906146d2565b60405180910390f35b3480156104b057600080fd5b506104b9611451565b6040516104c6919061446e565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146ed565b61145b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614740565b611522565b60405161052c91906146d2565b60405180910390f35b34801561054157600080fd5b5061055c600480360381019061055791906146ed565b611619565b005b34801561056a57600080fd5b506105736116e0565b60405161058091906145ff565b60405180910390f35b34801561059557600080fd5b5061059e611704565b6040516105ab919061446e565b60405180910390f35b3480156105c057600080fd5b506105c9611782565b6040516105d691906145ff565b60405180910390f35b3480156105eb57600080fd5b506105f46117a8565b60405161060191906147af565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190614677565b6117bf565b60405161063e91906146d2565b60405180910390f35b34801561065357600080fd5b5061066e600480360381019061066991906147ca565b611872565b60405161067b91906146d2565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a691906147ca565b611892565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190614823565b611952565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906147ca565b6119eb565b60405161070a91906146d2565b60405180910390f35b34801561071f57600080fd5b5061073a600480360381019061073591906147ca565b611a0b565b005b34801561074857600080fd5b50610763600480360381019061075e91906147ca565b611acb565b005b34801561077157600080fd5b5061078c60048036038101906107879190614850565b611b8b565b005b34801561079a57600080fd5b506107a3611c11565b6040516107b091906146d2565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db919061487d565b611c24565b005b3480156107ee57600080fd5b506107f7611cfb565b60405161080491906146d2565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f91906147ca565b611d0e565b604051610841919061446e565b60405180910390f35b34801561085657600080fd5b5061085f611d57565b005b34801561086d57600080fd5b5061088860048036038101906108839190614850565b611ddf565b005b34801561089657600080fd5b506108b160048036038101906108ac91906147ca565b611e65565b005b3480156108bf57600080fd5b506108c8611f25565b005b3480156108d657600080fd5b506108df611fed565b6040516108ec919061446e565b60405180910390f35b34801561090157600080fd5b5061090a611ff3565b604051610917919061446e565b60405180910390f35b34801561092c57600080fd5b50610935611ff9565b604051610942919061446e565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906147ca565b611fff565b60405161097f91906146d2565b60405180910390f35b34801561099457600080fd5b5061099d61201f565b6040516109aa91906145ff565b60405180910390f35b3480156109bf57600080fd5b506109c8612048565b6040516109d59190614522565b60405180910390f35b3480156109ea57600080fd5b506109f36120da565b604051610a00919061446e565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190614677565b6120e0565b604051610a3d91906146d2565b60405180910390f35b348015610a5257600080fd5b50610a6d6004803603810190610a689190614677565b6121ad565b604051610a7a91906146d2565b60405180910390f35b348015610a8f57600080fd5b50610aaa6004803603810190610aa5919061487d565b6121cc565b005b348015610ab857600080fd5b50610ad36004803603810190610ace91906148bd565b6122a3565b005b348015610ae157600080fd5b50610aea612373565b604051610af7919061446e565b60405180910390f35b348015610b0c57600080fd5b50610b15612379565b604051610b2291906145ff565b60405180910390f35b348015610b3757600080fd5b50610b526004803603810190610b4d919061487d565b61239f565b005b348015610b6057600080fd5b50610b7b6004803603810190610b7691906147ca565b6124d4565b604051610b8891906146d2565b60405180910390f35b348015610b9d57600080fd5b50610bb86004803603810190610bb39190614740565b6124f4565b005b348015610bc657600080fd5b50610be16004803603810190610bdc9190614910565b6126c6565b604051610bee919061446e565b60405180910390f35b348015610c0357600080fd5b50610c1e6004803603810190610c19919061487d565b61274d565b005b348015610c2c57600080fd5b50610c35612824565b005b348015610c4357600080fd5b50610c4c612963565b604051610c5991906146d2565b60405180910390f35b348015610c6e57600080fd5b50610c896004803603810190610c849190614823565b612976565b005b348015610c9757600080fd5b50610ca0612a0f565b604051610cad91906145ff565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd891906147ca565b612a35565b005b348015610ceb57600080fd5b50610d066004803603810190610d0191906147ca565b612b2d565b005b348015610d1457600080fd5b50610d1d612bed565b604051610d2a91906146d2565b60405180910390f35b348015610d3f57600080fd5b50610d48612c00565b604051610d5591906145ff565b60405180910390f35b610d66612d49565b73ffffffffffffffffffffffffffffffffffffffff16610d8461201f565b73ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd19061499c565b60405180910390fd5b6000601a5414610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690614a08565b60405180910390fd5b43601a819055506001601b60016101000a81548160ff0219169083151502179055506000601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600160048190555060006005819055506000600681905550600160078190555060006008819055506000600981905550601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080610f0161201f565b426040518863ffffffff1660e01b8152600401610f2396959493929190614a63565b60606040518083038185885af1158015610f41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f669190614ad9565b5050506000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190614b41565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ae9190614b41565b6040518363ffffffff1660e01b81526004016110cb929190614b6e565b602060405180830381865afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c9190614b41565b905080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601b60026101000a81548160ff0219169083151502179055506001601b60046101000a81548160ff0219169083151502179055506001601b60056101000a81548160ff021916908315150217905550505050565b60195481565b60606001805461135390614bc6565b80601f016020809104026020016040519081016040528092919081815260200182805461137f90614bc6565b80156113cc5780601f106113a1576101008083540402835291602001916113cc565b820191906000526020600020905b8154815290600101906020018083116113af57829003601f168201915b5050505050905090565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061143461142d612d49565b8484612d51565b6001905092915050565b601b60009054906101000a900460ff1681565b6000601654905090565b611463612d49565b73ffffffffffffffffffffffffffffffffffffffff1661148161201f565b73ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061499c565b60405180910390fd5b826007819055508160088190555080600981905550611517600954611509600854600754612c2690919063ffffffff16565b612c2690919063ffffffff16565b600b81905550505050565b600061152f848484612f1c565b5061160e8461153c612d49565b611609856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006115bf612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b612d51565b600190509392505050565b611621612d49565b73ffffffffffffffffffffffffffffffffffffffff1661163f61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c9061499c565b60405180910390fd5b8260048190555081600581905550806006819055506116d56006546116c7600554600454612c2690919063ffffffff16565b612c2690919063ffffffff16565b600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061177d6117327f0000000000000000000000000000000000000000000000000000000000000000611d0e565b61176f61175e7f0000000000000000000000000000000000000000000000000000000000000000611d0e565b60165461367190919063ffffffff16565b61367190919063ffffffff16565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b60006118686117cc612d49565b8461186385601160006117dd612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b612d51565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b61189a612d49565b73ffffffffffffffffffffffffffffffffffffffff166118b861201f565b73ffffffffffffffffffffffffffffffffffffffff161461190e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119059061499c565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61195a612d49565b73ffffffffffffffffffffffffffffffffffffffff1661197861201f565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061499c565b60405180910390fd5b80601b60056101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b611a13612d49565b73ffffffffffffffffffffffffffffffffffffffff16611a3161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061499c565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad3612d49565b73ffffffffffffffffffffffffffffffffffffffff16611af161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e9061499c565b60405180910390fd5b80601b60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b93612d49565b73ffffffffffffffffffffffffffffffffffffffff16611bb161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe9061499c565b60405180910390fd5b8060178190555050565b601b60049054906101000a900460ff1681565b611c2c612d49565b73ffffffffffffffffffffffffffffffffffffffff16611c4a61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c979061499c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d5f612d49565b73ffffffffffffffffffffffffffffffffffffffff16611d7d61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca9061499c565b60405180910390fd5b611ddd60006136bb565b565b611de7612d49565b73ffffffffffffffffffffffffffffffffffffffff16611e0561201f565b73ffffffffffffffffffffffffffffffffffffffff1614611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061499c565b60405180910390fd5b8060188190555050565b611e6d612d49565b73ffffffffffffffffffffffffffffffffffffffff16611e8b61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed89061499c565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614c44565b60405180910390fd5b6000601b60046101000a81548160ff0219169083151502179055506000601b60056101000a81548160ff021916908315150217905550565b60175481565b60185481565b600a5481565b60156020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461205790614bc6565b80601f016020809104026020016040519081016040528092919081815260200182805461208390614bc6565b80156120d05780601f106120a5576101008083540402835291602001916120d0565b820191906000526020600020905b8154815290600101906020018083116120b357829003601f168201915b5050505050905090565b600b5481565b60006121a36120ed612d49565b8461219e856040518060600160405280602581526020016155106025913960116000612117612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b612d51565b6001905092915050565b60006121c16121ba612d49565b8484612f1c565b506001905092915050565b6121d4612d49565b73ffffffffffffffffffffffffffffffffffffffff166121f261201f565b73ffffffffffffffffffffffffffffffffffffffff1614612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f9061499c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a90614c44565b60405180910390fd5b81601b60026101000a81548160ff02191690831515021790555080601b60036101000a81548160ff02191690831515021790555082601981905550505050565b601a5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123a7612d49565b73ffffffffffffffffffffffffffffffffffffffff166123c561201f565b73ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124129061499c565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156124d05780601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60146020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b90614c44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016125b0929190614c64565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161263a9190614cd4565b6000604051808303816000865af19150503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b50509050806126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614d37565b60405180910390fd5b50505050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612755612d49565b73ffffffffffffffffffffffffffffffffffffffff1661277361201f565b73ffffffffffffffffffffffffffffffffffffffff16146127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c09061499c565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ab90614c44565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128da90614d7d565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b5050905080612960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295790614dde565b60405180910390fd5b50565b601b60039054906101000a900460ff1681565b61297e612d49565b73ffffffffffffffffffffffffffffffffffffffff1661299c61201f565b73ffffffffffffffffffffffffffffffffffffffff16146129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e99061499c565b60405180910390fd5b80601b60046101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a3d612d49565b73ffffffffffffffffffffffffffffffffffffffff16612a5b61201f565b73ffffffffffffffffffffffffffffffffffffffff1614612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa89061499c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890614e70565b60405180910390fd5b612b2a816136bb565b50565b612b35612d49565b73ffffffffffffffffffffffffffffffffffffffff16612b5361201f565b73ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba09061499c565b60405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60059054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284612c359190614ebf565b905083811015612c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7190614f61565b60405180910390fd5b8091505092915050565b600080831415612c975760009050612cf9565b60008284612ca59190614f81565b9050828482612cb4919061500a565b14612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb906150ad565b60405180910390fd5b809150505b92915050565b6000612d4183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061377f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db89061513f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e28906151d1565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0f919061446e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f5757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f9157600080fd5b60008211612f9e57600080fd5b601c60149054906101000a900460ff1615612fc557612fbe8484846137e2565b9050613606565b601b60019054906101000a900460ff166130ba57601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061307a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b09061523d565b60405180910390fd5b5b6000601a54141580156130da5750601b60009054906101000a900460ff16155b156130e8576130e76139b5565b5b60006130f330611d0e565b9050600060195482101590508080156131195750601c60149054906101000a900460ff16155b801561316f5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131875750601b60029054906101000a900460ff165b80156131dd5750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132335750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132425761324182613a51565b5b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132e65750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132fe5750601b60049054906101000a900460ff165b1561334957601754841115613348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333f906152a9565b60405180910390fd5b5b6133d2846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006134218787613d37565b61343557613430878787613ea2565b613437565b845b9050601b60059054906101000a900460ff16801561349f5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613504576018546134c2826134b489611d0e565b612c2690919063ffffffff16565b1115613503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fa90615315565b60405180910390fd5b5b61355681601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135f6919061446e565b60405180910390a3600193505050505b9392505050565b6000838311158290613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c9190614522565b60405180910390fd5b50600083856136649190615335565b9050809150509392505050565b60006136b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061360d565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080831182906137c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137bd9190614522565b60405180910390fd5b50600083856137d5919061500a565b9050809150509392505050565b600061386d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061390282601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139a2919061446e565b60405180910390a3600190509392505050565b6003601a546139c49190614ebf565b43116139d6576139d56063806140c7565b5b6003601a546139e59190614ebf565b43118015613a0157506016601a546139fd9190614ebf565b4311155b15613a1257613a11602d806140c7565b5b6016601a54613a219190614ebf565b431115613a4f57613a336004806140c7565b6001601b60006101000a81548160ff0219169083151502179055505b565b6001601c60146101000a81548160ff021916908315150217905550601b60039054906101000a900460ff1615613a875760195490505b6000613aa0600b54600a54612c2690919063ffffffff16565b90506000613abb600854600554612c2690919063ffffffff16565b90506000613ad6600954600654612c2690919063ffffffff16565b90506000613b126002613b0486613af6878a612c8490919063ffffffff16565b612cff90919063ffffffff16565b612cff90919063ffffffff16565b90506000613b29828761367190919063ffffffff16565b90506000479050613b39826140d9565b6000613b4e824761367190919063ffffffff16565b90506000613b78613b69600289612cff90919063ffffffff16565b8961367190919063ffffffff16565b90506000613bb46002613ba684613b988c88612c8490919063ffffffff16565b612cff90919063ffffffff16565b612cff90919063ffffffff16565b90506000613bdd83613bcf8a87612c8490919063ffffffff16565b612cff90919063ffffffff16565b90506000613c0682613bf8858861367190919063ffffffff16565b61367190919063ffffffff16565b90506000821115613c7b57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613c79573d6000803e3d6000fd5b505b6000811115613cee57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613cec573d6000803e3d6000fd5b505b600083118015613cfe5750600088115b15613d0e57613d0d8884614355565b5b50505050505050505050506000601c60146101000a81548160ff02191690831515021790555050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613dda5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613de85760019050613e9c565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e895750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e975760009050613e9c565b600090505b92915050565b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f2757613f20600f54613f12600a5486612c8490919063ffffffff16565b612cff90919063ffffffff16565b9050613fa6565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fa557613fa2600f54613f94600b5486612c8490919063ffffffff16565b612cff90919063ffffffff16565b90505b5b60008111156140aa5761400181601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a1919061446e565b60405180910390a35b6140bd818461367190919063ffffffff16565b9150509392505050565b81600a8190555080600b819055505050565b6000600267ffffffffffffffff8111156140f6576140f5615369565b5b6040519080825280602002602001820160405280156141245781602001602082028036833780820191505090505b509050308160008151811061413c5761413b615398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142079190614b41565b8160018151811061421b5761421a615398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061428230601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d51565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016142e6959493929190615485565b600060405180830381600087803b15801561430057600080fd5b505af1158015614314573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516143499291906154df565b60405180910390a15050565b61438230601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d51565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161440b96959493929190614a63565b60606040518083038185885af1158015614429573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061444e9190614ad9565b5050505050565b6000819050919050565b61446881614455565b82525050565b6000602082019050614483600083018461445f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144c35780820151818401526020810190506144a8565b838111156144d2576000848401525b50505050565b6000601f19601f8301169050919050565b60006144f482614489565b6144fe8185614494565b935061450e8185602086016144a5565b614517816144d8565b840191505092915050565b6000602082019050818103600083015261453c81846144e9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061458961458461457f84614544565b614564565b614544565b9050919050565b600061459b8261456e565b9050919050565b60006145ad82614590565b9050919050565b6145bd816145a2565b82525050565b60006020820190506145d860008301846145b4565b92915050565b60006145e982614544565b9050919050565b6145f9816145de565b82525050565b600060208201905061461460008301846145f0565b92915050565b600080fd5b614628816145de565b811461463357600080fd5b50565b6000813590506146458161461f565b92915050565b61465481614455565b811461465f57600080fd5b50565b6000813590506146718161464b565b92915050565b6000806040838503121561468e5761468d61461a565b5b600061469c85828601614636565b92505060206146ad85828601614662565b9150509250929050565b60008115159050919050565b6146cc816146b7565b82525050565b60006020820190506146e760008301846146c3565b92915050565b6000806000606084860312156147065761470561461a565b5b600061471486828701614662565b935050602061472586828701614662565b925050604061473686828701614662565b9150509250925092565b6000806000606084860312156147595761475861461a565b5b600061476786828701614636565b935050602061477886828701614636565b925050604061478986828701614662565b9150509250925092565b600060ff82169050919050565b6147a981614793565b82525050565b60006020820190506147c460008301846147a0565b92915050565b6000602082840312156147e0576147df61461a565b5b60006147ee84828501614636565b91505092915050565b614800816146b7565b811461480b57600080fd5b50565b60008135905061481d816147f7565b92915050565b6000602082840312156148395761483861461a565b5b60006148478482850161480e565b91505092915050565b6000602082840312156148665761486561461a565b5b600061487484828501614662565b91505092915050565b600080604083850312156148945761489361461a565b5b60006148a285828601614636565b92505060206148b38582860161480e565b9150509250929050565b6000806000606084860312156148d6576148d561461a565b5b60006148e486828701614662565b93505060206148f58682870161480e565b92505060406149068682870161480e565b9150509250925092565b600080604083850312156149275761492661461a565b5b600061493585828601614636565b925050602061494685828601614636565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614986602083614494565b915061499182614950565b602082019050919050565b600060208201905081810360008301526149b581614979565b9050919050565b7f416c7265616479206c61756e6368656421000000000000000000000000000000600082015250565b60006149f2601183614494565b91506149fd826149bc565b602082019050919050565b60006020820190508181036000830152614a21816149e5565b9050919050565b6000819050919050565b6000614a4d614a48614a4384614a28565b614564565b614455565b9050919050565b614a5d81614a32565b82525050565b600060c082019050614a7860008301896145f0565b614a85602083018861445f565b614a926040830187614a54565b614a9f6060830186614a54565b614aac60808301856145f0565b614ab960a083018461445f565b979650505050505050565b600081519050614ad38161464b565b92915050565b600080600060608486031215614af257614af161461a565b5b6000614b0086828701614ac4565b9350506020614b1186828701614ac4565b9250506040614b2286828701614ac4565b9150509250925092565b600081519050614b3b8161461f565b92915050565b600060208284031215614b5757614b5661461a565b5b6000614b6584828501614b2c565b91505092915050565b6000604082019050614b8360008301856145f0565b614b9060208301846145f0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bde57607f821691505b60208210811415614bf257614bf1614b97565b5b50919050565b7f496e76616c69642043616c6c6572000000000000000000000000000000000000600082015250565b6000614c2e600e83614494565b9150614c3982614bf8565b602082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b6000604082019050614c7960008301856145f0565b614c86602083018461445f565b9392505050565b600081519050919050565b600081905092915050565b6000614cae82614c8d565b614cb88185614c98565b9350614cc88185602086016144a5565b80840191505092915050565b6000614ce08284614ca3565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000614d21601483614494565b9150614d2c82614ceb565b602082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b50565b6000614d67600083614c98565b9150614d7282614d57565b600082019050919050565b6000614d8882614d5a565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614dc8601483614494565b9150614dd382614d92565b602082019050919050565b60006020820190508181036000830152614df781614dbb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e5a602683614494565b9150614e6582614dfe565b604082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eca82614455565b9150614ed583614455565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f0a57614f09614e90565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f4b601b83614494565b9150614f5682614f15565b602082019050919050565b60006020820190508181036000830152614f7a81614f3e565b9050919050565b6000614f8c82614455565b9150614f9783614455565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd057614fcf614e90565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061501582614455565b915061502083614455565b9250826150305761502f614fdb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615097602183614494565b91506150a28261503b565b604082019050919050565b600060208201905081810360008301526150c68161508a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615129602483614494565b9150615134826150cd565b604082019050919050565b600060208201905081810360008301526151588161511c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151bb602283614494565b91506151c68261515f565b604082019050919050565b600060208201905081810360008301526151ea816151ae565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615227601683614494565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f45786365656473206d61785478416d6f756e7400000000000000000000000000600082015250565b6000615293601383614494565b915061529e8261525d565b602082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f457863656564732057616c6c6574000000000000000000000000000000000000600082015250565b60006152ff600e83614494565b915061530a826152c9565b602082019050919050565b6000602082019050818103600083015261532e816152f2565b9050919050565b600061534082614455565b915061534b83614455565b92508282101561535e5761535d614e90565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153fc816145de565b82525050565b600061540e83836153f3565b60208301905092915050565b6000602082019050919050565b6000615432826153c7565b61543c81856153d2565b9350615447836153e3565b8060005b8381101561547857815161545f8882615402565b975061546a8361541a565b92505060018101905061544b565b5085935050505092915050565b600060a08201905061549a600083018861445f565b6154a76020830187614a54565b81810360408301526154b98186615427565b90506154c860608301856145f0565b6154d5608083018461445f565b9695505050505050565b60006040820190506154f4600083018561445f565b81810360208301526155068184615427565b9050939250505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220779cc9a5e3989ba388bac20895b3411cc53b6d3576f34aff95f4a6f572b7089564736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c8063728d41c9116101d1578063bf56b37111610102578063e6b2603b116100a0578063f2fde38b1161006f578063f2fde38b14610cb6578063f71b9bbf14610cdf578063f872858a14610d08578063fb75b2c714610d3357610381565b8063e6b2603b14610c20578063e9fd339414610c37578063ee828db314610c62578063f242ab4114610c8b57610381565b8063c867d60b116100dc578063c867d60b14610b54578063cea9d26f14610b91578063dd62ed3e14610bba578063df8408fe14610bf757610381565b8063bf56b37114610ad5578063c04a541414610b00578063c16dd4a414610b2b57610381565b80638da5cb5b1161016f578063a457c2d711610149578063a457c2d714610a09578063a9059cbb14610a46578063ae85ade614610a83578063b94b0aef14610aac57610381565b80638da5cb5b1461098857806395d89b41146109b3578063a1c24780146109de57610381565b80637d1db4a5116101ab5780637d1db4a5146108ca578063807c2d9c146108f557806388f8df0a146109205780638b42507f1461094b57610381565b8063728d41c91461086157806372ac24861461088a578063751039fc146108b357610381565b8063313ce567116102ab57806359fac51711610249578063651a898711610223578063651a8987146107b95780636ddd1713146107e257806370a082311461080d578063715018a61461084a57610381565b806359fac5171461073c5780635c85974f146107655780635e42358c1461078e57610381565b8063468c7ee211610285578063468c7ee2146106845780634974d88f146106ad5780635342acb4146106d65780635958621e1461071357610381565b8063313ce567146105df578063395093511461060a5780633ecad2711461064757610381565b806318160ddd1161031857806325519cf2116102f257806325519cf21461053557806327c8f8351461055e5780632b112e49146105895780632fb97b37146105b457610381565b806318160ddd146104a45780631d865c30146104cf57806323b872dd146104f857610381565b80630758d924116103545780630758d924146103e65780630930907b14610411578063095ea7b31461043c578063111a46511461047957610381565b806301339c21146103865780630445b6671461039057806306fdde03146103bb57610381565b3661038157005b600080fd5b61038e610d5e565b005b34801561039c57600080fd5b506103a561133e565b6040516103b2919061446e565b60405180910390f35b3480156103c757600080fd5b506103d0611344565b6040516103dd9190614522565b60405180910390f35b3480156103f257600080fd5b506103fb6113d6565b60405161040891906145c3565b60405180910390f35b34801561041d57600080fd5b506104266113fc565b60405161043391906145ff565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614677565b611420565b60405161047091906146d2565b60405180910390f35b34801561048557600080fd5b5061048e61143e565b60405161049b91906146d2565b60405180910390f35b3480156104b057600080fd5b506104b9611451565b6040516104c6919061446e565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146ed565b61145b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614740565b611522565b60405161052c91906146d2565b60405180910390f35b34801561054157600080fd5b5061055c600480360381019061055791906146ed565b611619565b005b34801561056a57600080fd5b506105736116e0565b60405161058091906145ff565b60405180910390f35b34801561059557600080fd5b5061059e611704565b6040516105ab919061446e565b60405180910390f35b3480156105c057600080fd5b506105c9611782565b6040516105d691906145ff565b60405180910390f35b3480156105eb57600080fd5b506105f46117a8565b60405161060191906147af565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190614677565b6117bf565b60405161063e91906146d2565b60405180910390f35b34801561065357600080fd5b5061066e600480360381019061066991906147ca565b611872565b60405161067b91906146d2565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a691906147ca565b611892565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190614823565b611952565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906147ca565b6119eb565b60405161070a91906146d2565b60405180910390f35b34801561071f57600080fd5b5061073a600480360381019061073591906147ca565b611a0b565b005b34801561074857600080fd5b50610763600480360381019061075e91906147ca565b611acb565b005b34801561077157600080fd5b5061078c60048036038101906107879190614850565b611b8b565b005b34801561079a57600080fd5b506107a3611c11565b6040516107b091906146d2565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db919061487d565b611c24565b005b3480156107ee57600080fd5b506107f7611cfb565b60405161080491906146d2565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f91906147ca565b611d0e565b604051610841919061446e565b60405180910390f35b34801561085657600080fd5b5061085f611d57565b005b34801561086d57600080fd5b5061088860048036038101906108839190614850565b611ddf565b005b34801561089657600080fd5b506108b160048036038101906108ac91906147ca565b611e65565b005b3480156108bf57600080fd5b506108c8611f25565b005b3480156108d657600080fd5b506108df611fed565b6040516108ec919061446e565b60405180910390f35b34801561090157600080fd5b5061090a611ff3565b604051610917919061446e565b60405180910390f35b34801561092c57600080fd5b50610935611ff9565b604051610942919061446e565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906147ca565b611fff565b60405161097f91906146d2565b60405180910390f35b34801561099457600080fd5b5061099d61201f565b6040516109aa91906145ff565b60405180910390f35b3480156109bf57600080fd5b506109c8612048565b6040516109d59190614522565b60405180910390f35b3480156109ea57600080fd5b506109f36120da565b604051610a00919061446e565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190614677565b6120e0565b604051610a3d91906146d2565b60405180910390f35b348015610a5257600080fd5b50610a6d6004803603810190610a689190614677565b6121ad565b604051610a7a91906146d2565b60405180910390f35b348015610a8f57600080fd5b50610aaa6004803603810190610aa5919061487d565b6121cc565b005b348015610ab857600080fd5b50610ad36004803603810190610ace91906148bd565b6122a3565b005b348015610ae157600080fd5b50610aea612373565b604051610af7919061446e565b60405180910390f35b348015610b0c57600080fd5b50610b15612379565b604051610b2291906145ff565b60405180910390f35b348015610b3757600080fd5b50610b526004803603810190610b4d919061487d565b61239f565b005b348015610b6057600080fd5b50610b7b6004803603810190610b7691906147ca565b6124d4565b604051610b8891906146d2565b60405180910390f35b348015610b9d57600080fd5b50610bb86004803603810190610bb39190614740565b6124f4565b005b348015610bc657600080fd5b50610be16004803603810190610bdc9190614910565b6126c6565b604051610bee919061446e565b60405180910390f35b348015610c0357600080fd5b50610c1e6004803603810190610c19919061487d565b61274d565b005b348015610c2c57600080fd5b50610c35612824565b005b348015610c4357600080fd5b50610c4c612963565b604051610c5991906146d2565b60405180910390f35b348015610c6e57600080fd5b50610c896004803603810190610c849190614823565b612976565b005b348015610c9757600080fd5b50610ca0612a0f565b604051610cad91906145ff565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd891906147ca565b612a35565b005b348015610ceb57600080fd5b50610d066004803603810190610d0191906147ca565b612b2d565b005b348015610d1457600080fd5b50610d1d612bed565b604051610d2a91906146d2565b60405180910390f35b348015610d3f57600080fd5b50610d48612c00565b604051610d5591906145ff565b60405180910390f35b610d66612d49565b73ffffffffffffffffffffffffffffffffffffffff16610d8461201f565b73ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd19061499c565b60405180910390fd5b6000601a5414610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690614a08565b60405180910390fd5b43601a819055506001601b60016101000a81548160ff0219169083151502179055506000601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600160048190555060006005819055506000600681905550600160078190555060006008819055506000600981905550601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080610f0161201f565b426040518863ffffffff1660e01b8152600401610f2396959493929190614a63565b60606040518083038185885af1158015610f41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f669190614ad9565b5050506000601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190614b41565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ae9190614b41565b6040518363ffffffff1660e01b81526004016110cb929190614b6e565b602060405180830381865afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c9190614b41565b905080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601b60026101000a81548160ff0219169083151502179055506001601b60046101000a81548160ff0219169083151502179055506001601b60056101000a81548160ff021916908315150217905550505050565b60195481565b60606001805461135390614bc6565b80601f016020809104026020016040519081016040528092919081815260200182805461137f90614bc6565b80156113cc5780601f106113a1576101008083540402835291602001916113cc565b820191906000526020600020905b8154815290600101906020018083116113af57829003601f168201915b5050505050905090565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061143461142d612d49565b8484612d51565b6001905092915050565b601b60009054906101000a900460ff1681565b6000601654905090565b611463612d49565b73ffffffffffffffffffffffffffffffffffffffff1661148161201f565b73ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061499c565b60405180910390fd5b826007819055508160088190555080600981905550611517600954611509600854600754612c2690919063ffffffff16565b612c2690919063ffffffff16565b600b81905550505050565b600061152f848484612f1c565b5061160e8461153c612d49565b611609856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006115bf612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b612d51565b600190509392505050565b611621612d49565b73ffffffffffffffffffffffffffffffffffffffff1661163f61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c9061499c565b60405180910390fd5b8260048190555081600581905550806006819055506116d56006546116c7600554600454612c2690919063ffffffff16565b612c2690919063ffffffff16565b600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061177d6117327f0000000000000000000000000000000000000000000000000000000000000000611d0e565b61176f61175e7f000000000000000000000000000000000000000000000000000000000000dead611d0e565b60165461367190919063ffffffff16565b61367190919063ffffffff16565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b60006118686117cc612d49565b8461186385601160006117dd612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b612d51565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b61189a612d49565b73ffffffffffffffffffffffffffffffffffffffff166118b861201f565b73ffffffffffffffffffffffffffffffffffffffff161461190e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119059061499c565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61195a612d49565b73ffffffffffffffffffffffffffffffffffffffff1661197861201f565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061499c565b60405180910390fd5b80601b60056101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b611a13612d49565b73ffffffffffffffffffffffffffffffffffffffff16611a3161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061499c565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad3612d49565b73ffffffffffffffffffffffffffffffffffffffff16611af161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e9061499c565b60405180910390fd5b80601b60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b93612d49565b73ffffffffffffffffffffffffffffffffffffffff16611bb161201f565b73ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe9061499c565b60405180910390fd5b8060178190555050565b601b60049054906101000a900460ff1681565b611c2c612d49565b73ffffffffffffffffffffffffffffffffffffffff16611c4a61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c979061499c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d5f612d49565b73ffffffffffffffffffffffffffffffffffffffff16611d7d61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca9061499c565b60405180910390fd5b611ddd60006136bb565b565b611de7612d49565b73ffffffffffffffffffffffffffffffffffffffff16611e0561201f565b73ffffffffffffffffffffffffffffffffffffffff1614611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061499c565b60405180910390fd5b8060188190555050565b611e6d612d49565b73ffffffffffffffffffffffffffffffffffffffff16611e8b61201f565b73ffffffffffffffffffffffffffffffffffffffff1614611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed89061499c565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614c44565b60405180910390fd5b6000601b60046101000a81548160ff0219169083151502179055506000601b60056101000a81548160ff021916908315150217905550565b60175481565b60185481565b600a5481565b60156020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461205790614bc6565b80601f016020809104026020016040519081016040528092919081815260200182805461208390614bc6565b80156120d05780601f106120a5576101008083540402835291602001916120d0565b820191906000526020600020905b8154815290600101906020018083116120b357829003601f168201915b5050505050905090565b600b5481565b60006121a36120ed612d49565b8461219e856040518060600160405280602581526020016155106025913960116000612117612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b612d51565b6001905092915050565b60006121c16121ba612d49565b8484612f1c565b506001905092915050565b6121d4612d49565b73ffffffffffffffffffffffffffffffffffffffff166121f261201f565b73ffffffffffffffffffffffffffffffffffffffff1614612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f9061499c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a90614c44565b60405180910390fd5b81601b60026101000a81548160ff02191690831515021790555080601b60036101000a81548160ff02191690831515021790555082601981905550505050565b601a5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123a7612d49565b73ffffffffffffffffffffffffffffffffffffffff166123c561201f565b73ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124129061499c565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156124d05780601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60146020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b90614c44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016125b0929190614c64565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161263a9190614cd4565b6000604051808303816000865af19150503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b50509050806126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614d37565b60405180910390fd5b50505050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612755612d49565b73ffffffffffffffffffffffffffffffffffffffff1661277361201f565b73ffffffffffffffffffffffffffffffffffffffff16146127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c09061499c565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ab90614c44565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128da90614d7d565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b5050905080612960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295790614dde565b60405180910390fd5b50565b601b60039054906101000a900460ff1681565b61297e612d49565b73ffffffffffffffffffffffffffffffffffffffff1661299c61201f565b73ffffffffffffffffffffffffffffffffffffffff16146129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e99061499c565b60405180910390fd5b80601b60046101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a3d612d49565b73ffffffffffffffffffffffffffffffffffffffff16612a5b61201f565b73ffffffffffffffffffffffffffffffffffffffff1614612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa89061499c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890614e70565b60405180910390fd5b612b2a816136bb565b50565b612b35612d49565b73ffffffffffffffffffffffffffffffffffffffff16612b5361201f565b73ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba09061499c565b60405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60059054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284612c359190614ebf565b905083811015612c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7190614f61565b60405180910390fd5b8091505092915050565b600080831415612c975760009050612cf9565b60008284612ca59190614f81565b9050828482612cb4919061500a565b14612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb906150ad565b60405180910390fd5b809150505b92915050565b6000612d4183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061377f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db89061513f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e28906151d1565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0f919061446e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f5757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f9157600080fd5b60008211612f9e57600080fd5b601c60149054906101000a900460ff1615612fc557612fbe8484846137e2565b9050613606565b601b60019054906101000a900460ff166130ba57601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061307a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b09061523d565b60405180910390fd5b5b6000601a54141580156130da5750601b60009054906101000a900460ff16155b156130e8576130e76139b5565b5b60006130f330611d0e565b9050600060195482101590508080156131195750601c60149054906101000a900460ff16155b801561316f5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131875750601b60029054906101000a900460ff165b80156131dd5750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132335750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132425761324182613a51565b5b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132e65750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132fe5750601b60049054906101000a900460ff165b1561334957601754841115613348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333f906152a9565b60405180910390fd5b5b6133d2846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006134218787613d37565b61343557613430878787613ea2565b613437565b845b9050601b60059054906101000a900460ff16801561349f5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613504576018546134c2826134b489611d0e565b612c2690919063ffffffff16565b1115613503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fa90615315565b60405180910390fd5b5b61355681601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135f6919061446e565b60405180910390a3600193505050505b9392505050565b6000838311158290613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c9190614522565b60405180910390fd5b50600083856136649190615335565b9050809150509392505050565b60006136b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061360d565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080831182906137c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137bd9190614522565b60405180910390fd5b50600083856137d5919061500a565b9050809150509392505050565b600061386d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360d9092919063ffffffff16565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061390282601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139a2919061446e565b60405180910390a3600190509392505050565b6003601a546139c49190614ebf565b43116139d6576139d56063806140c7565b5b6003601a546139e59190614ebf565b43118015613a0157506016601a546139fd9190614ebf565b4311155b15613a1257613a11602d806140c7565b5b6016601a54613a219190614ebf565b431115613a4f57613a336004806140c7565b6001601b60006101000a81548160ff0219169083151502179055505b565b6001601c60146101000a81548160ff021916908315150217905550601b60039054906101000a900460ff1615613a875760195490505b6000613aa0600b54600a54612c2690919063ffffffff16565b90506000613abb600854600554612c2690919063ffffffff16565b90506000613ad6600954600654612c2690919063ffffffff16565b90506000613b126002613b0486613af6878a612c8490919063ffffffff16565b612cff90919063ffffffff16565b612cff90919063ffffffff16565b90506000613b29828761367190919063ffffffff16565b90506000479050613b39826140d9565b6000613b4e824761367190919063ffffffff16565b90506000613b78613b69600289612cff90919063ffffffff16565b8961367190919063ffffffff16565b90506000613bb46002613ba684613b988c88612c8490919063ffffffff16565b612cff90919063ffffffff16565b612cff90919063ffffffff16565b90506000613bdd83613bcf8a87612c8490919063ffffffff16565b612cff90919063ffffffff16565b90506000613c0682613bf8858861367190919063ffffffff16565b61367190919063ffffffff16565b90506000821115613c7b57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613c79573d6000803e3d6000fd5b505b6000811115613cee57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613cec573d6000803e3d6000fd5b505b600083118015613cfe5750600088115b15613d0e57613d0d8884614355565b5b50505050505050505050506000601c60146101000a81548160ff02191690831515021790555050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613dda5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613de85760019050613e9c565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e895750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e975760009050613e9c565b600090505b92915050565b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f2757613f20600f54613f12600a5486612c8490919063ffffffff16565b612cff90919063ffffffff16565b9050613fa6565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fa557613fa2600f54613f94600b5486612c8490919063ffffffff16565b612cff90919063ffffffff16565b90505b5b60008111156140aa5761400181601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2690919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a1919061446e565b60405180910390a35b6140bd818461367190919063ffffffff16565b9150509392505050565b81600a8190555080600b819055505050565b6000600267ffffffffffffffff8111156140f6576140f5615369565b5b6040519080825280602002602001820160405280156141245781602001602082028036833780820191505090505b509050308160008151811061413c5761413b615398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142079190614b41565b8160018151811061421b5761421a615398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061428230601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d51565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016142e6959493929190615485565b600060405180830381600087803b15801561430057600080fd5b505af1158015614314573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516143499291906154df565b60405180910390a15050565b61438230601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d51565b601b60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161440b96959493929190614a63565b60606040518083038185885af1158015614429573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061444e9190614ad9565b5050505050565b6000819050919050565b61446881614455565b82525050565b6000602082019050614483600083018461445f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144c35780820151818401526020810190506144a8565b838111156144d2576000848401525b50505050565b6000601f19601f8301169050919050565b60006144f482614489565b6144fe8185614494565b935061450e8185602086016144a5565b614517816144d8565b840191505092915050565b6000602082019050818103600083015261453c81846144e9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061458961458461457f84614544565b614564565b614544565b9050919050565b600061459b8261456e565b9050919050565b60006145ad82614590565b9050919050565b6145bd816145a2565b82525050565b60006020820190506145d860008301846145b4565b92915050565b60006145e982614544565b9050919050565b6145f9816145de565b82525050565b600060208201905061461460008301846145f0565b92915050565b600080fd5b614628816145de565b811461463357600080fd5b50565b6000813590506146458161461f565b92915050565b61465481614455565b811461465f57600080fd5b50565b6000813590506146718161464b565b92915050565b6000806040838503121561468e5761468d61461a565b5b600061469c85828601614636565b92505060206146ad85828601614662565b9150509250929050565b60008115159050919050565b6146cc816146b7565b82525050565b60006020820190506146e760008301846146c3565b92915050565b6000806000606084860312156147065761470561461a565b5b600061471486828701614662565b935050602061472586828701614662565b925050604061473686828701614662565b9150509250925092565b6000806000606084860312156147595761475861461a565b5b600061476786828701614636565b935050602061477886828701614636565b925050604061478986828701614662565b9150509250925092565b600060ff82169050919050565b6147a981614793565b82525050565b60006020820190506147c460008301846147a0565b92915050565b6000602082840312156147e0576147df61461a565b5b60006147ee84828501614636565b91505092915050565b614800816146b7565b811461480b57600080fd5b50565b60008135905061481d816147f7565b92915050565b6000602082840312156148395761483861461a565b5b60006148478482850161480e565b91505092915050565b6000602082840312156148665761486561461a565b5b600061487484828501614662565b91505092915050565b600080604083850312156148945761489361461a565b5b60006148a285828601614636565b92505060206148b38582860161480e565b9150509250929050565b6000806000606084860312156148d6576148d561461a565b5b60006148e486828701614662565b93505060206148f58682870161480e565b92505060406149068682870161480e565b9150509250925092565b600080604083850312156149275761492661461a565b5b600061493585828601614636565b925050602061494685828601614636565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614986602083614494565b915061499182614950565b602082019050919050565b600060208201905081810360008301526149b581614979565b9050919050565b7f416c7265616479206c61756e6368656421000000000000000000000000000000600082015250565b60006149f2601183614494565b91506149fd826149bc565b602082019050919050565b60006020820190508181036000830152614a21816149e5565b9050919050565b6000819050919050565b6000614a4d614a48614a4384614a28565b614564565b614455565b9050919050565b614a5d81614a32565b82525050565b600060c082019050614a7860008301896145f0565b614a85602083018861445f565b614a926040830187614a54565b614a9f6060830186614a54565b614aac60808301856145f0565b614ab960a083018461445f565b979650505050505050565b600081519050614ad38161464b565b92915050565b600080600060608486031215614af257614af161461a565b5b6000614b0086828701614ac4565b9350506020614b1186828701614ac4565b9250506040614b2286828701614ac4565b9150509250925092565b600081519050614b3b8161461f565b92915050565b600060208284031215614b5757614b5661461a565b5b6000614b6584828501614b2c565b91505092915050565b6000604082019050614b8360008301856145f0565b614b9060208301846145f0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bde57607f821691505b60208210811415614bf257614bf1614b97565b5b50919050565b7f496e76616c69642043616c6c6572000000000000000000000000000000000000600082015250565b6000614c2e600e83614494565b9150614c3982614bf8565b602082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b6000604082019050614c7960008301856145f0565b614c86602083018461445f565b9392505050565b600081519050919050565b600081905092915050565b6000614cae82614c8d565b614cb88185614c98565b9350614cc88185602086016144a5565b80840191505092915050565b6000614ce08284614ca3565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000614d21601483614494565b9150614d2c82614ceb565b602082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b50565b6000614d67600083614c98565b9150614d7282614d57565b600082019050919050565b6000614d8882614d5a565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614dc8601483614494565b9150614dd382614d92565b602082019050919050565b60006020820190508181036000830152614df781614dbb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e5a602683614494565b9150614e6582614dfe565b604082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eca82614455565b9150614ed583614455565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f0a57614f09614e90565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f4b601b83614494565b9150614f5682614f15565b602082019050919050565b60006020820190508181036000830152614f7a81614f3e565b9050919050565b6000614f8c82614455565b9150614f9783614455565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd057614fcf614e90565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061501582614455565b915061502083614455565b9250826150305761502f614fdb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615097602183614494565b91506150a28261503b565b604082019050919050565b600060208201905081810360008301526150c68161508a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615129602483614494565b9150615134826150cd565b604082019050919050565b600060208201905081810360008301526151588161511c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151bb602283614494565b91506151c68261515f565b604082019050919050565b600060208201905081810360008301526151ea816151ae565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615227601683614494565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f45786365656473206d61785478416d6f756e7400000000000000000000000000600082015250565b6000615293601383614494565b915061529e8261525d565b602082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f457863656564732057616c6c6574000000000000000000000000000000000000600082015250565b60006152ff600e83614494565b915061530a826152c9565b602082019050919050565b6000602082019050818103600083015261532e816152f2565b9050919050565b600061534082614455565b915061534b83614455565b92508282101561535e5761535d614e90565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153fc816145de565b82525050565b600061540e83836153f3565b60208301905092915050565b6000602082019050919050565b6000615432826153c7565b61543c81856153d2565b9350615447836153e3565b8060005b8381101561547857815161545f8882615402565b975061546a8361541a565b92505060018101905061544b565b5085935050505092915050565b600060a08201905061549a600083018861445f565b6154a76020830187614a54565b81810360408301526154b98186615427565b90506154c860608301856145f0565b6154d5608083018461445f565b9695505050505050565b60006040820190506154f4600083018561445f565b81810360208301526155068184615427565b9050939250505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220779cc9a5e3989ba388bac20895b3411cc53b6d3576f34aff95f4a6f572b7089564736f6c634300080a0033

Deployed Bytecode Sourcemap

7169:16511:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16338:1089;;;:::i;:::-;;8759:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10607:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9077:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7469:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11945:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8854:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10884:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21380:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12719;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21077:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7381:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11278:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8019:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10793:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11442:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8368:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22778:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21918:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8311:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22894:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23459:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22539:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8992:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22161:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8916:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10992:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1837:94;;;;;;;;;;;;;:::i;:::-;;22425:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22652:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21685:119;;;;;;;;;;;;;:::i;:::-;;8605:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8681:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1528:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10698;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7831:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11668:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12544:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22297:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23222:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8822:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7926:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23010:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8420:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20797:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11123:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22031:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20611:178;;;;;;;;;;;;;:::i;:::-;;8954:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21812:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9115:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1939:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23582:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9032:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8057:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16338:1089;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16414:1:::1;16400:10;;:15;16392:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:12;16448:10;:25;;;;16500:4;16484:13;;:20;;;;;;;;;;;;;;;;;;16517:15;16535:9;:24;16553:4;16535:24;;;;;;;;;;;;;;;;16517:42;;16593:1;16572:18;:22;;;;16617:1;16605:9;:13;;;;16645:1;16629:13;:17;;;;16681:1;16659:19;:23;;;;16706:1;16693:10;:14;;;;16735:1;16718:14;:18;;;;16749:9;;;;;;;;;;;:25;;;16783:9;16817:4;16837:10;16862:1;16878::::0;16894:7:::1;:5;:7::i;:::-;16916:15;16749:193;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16955:23;16997:9;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16955:62;;17030:17;17063:7;:15;;;17087:4;17094:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17063:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17030:82;;17143:4;17125:7;;:23;;;;;;;;;;;;;;;;;;17194:4;17161:12;:30;17182:7;;;;;;;;;;;17161:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17249:4;17209:19;:37;17237:7;;;;;;;;;;;17209:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17320:1;17311:11;17264;:26;17284:4;17264:26;;;;;;;;;;;;;;;:44;17299:7;;;;;;;;;;;17264:44;;;;;;;;;;;;;;;:58;;;;17349:4;17335:11;;:18;;;;;;;;;;;;;;;;;;17380:4;17364:13;;:20;;;;;;;;;;;;;;;;;;17415:4;17395:16;;:24;;;;;;;;;;;;;;;;;;16381:1046;;;16338:1089::o:0;8759:54::-;;;;:::o;10607:83::-;10644:13;10677:5;10670:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10607:83;:::o;9077:31::-;;;;;;;;;;;;;:::o;7469:81::-;;;:::o;11945:161::-;12020:4;12037:39;12046:12;:10;:12::i;:::-;12060:7;12069:6;12037:8;:39::i;:::-;12094:4;12087:11;;11945:161;;;;:::o;8854:26::-;;;;;;;;;;;;;:::o;10884:100::-;10937:7;10964:12;;10957:19;;10884:100;:::o;21380:297::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21504:15:::1;21482:19;:37;;;;21543:6;21530:10;:19;;;;21577:10;21560:14;:27;;;;21614:55;21654:14;;21614:35;21638:10;;21614:19;;:23;;:35;;;;:::i;:::-;:39;;:55;;;;:::i;:::-;21598:13;:71;;;;21380:297:::0;;;:::o;12719:::-;12817:4;12834:36;12844:6;12852:9;12863:6;12834:9;:36::i;:::-;;12881:105;12890:6;12898:12;:10;:12::i;:::-;12912:73;12950:6;12912:73;;;;;;;;;;;;;;;;;:11;:19;12924:6;12912:19;;;;;;;;;;;;;;;:33;12932:12;:10;:12::i;:::-;12912:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;12881:8;:105::i;:::-;13004:4;12997:11;;12719:297;;;;;:::o;21077:295::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21203:15:::1;21182:18;:36;;;;21241:6;21229:9;:18;;;;21274:10;21258:13;:26;;;;21312:52;21350:13;;21312:33;21335:9;;21312:18;;:22;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;21297:12;:67;;;;21077:295:::0;;;:::o;7381:81::-;;;:::o;11278:156::-;11331:7;11358:68;11403:22;11413:11;11403:9;:22::i;:::-;11358:40;11375:22;11385:11;11375:9;:22::i;:::-;11358:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;11351:75;;11278:156;:::o;8019:31::-;;;;;;;;;;;;;:::o;10793:83::-;10834:5;10859:9;;;;;;;;;;;10852:16;;10793:83;:::o;11442:218::-;11530:4;11547:83;11556:12;:10;:12::i;:::-;11570:7;11579:50;11618:10;11579:11;:25;11591:12;:10;:12::i;:::-;11579:25;;;;;;;;;;;;;;;:34;11605:7;11579:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11547:8;:83::i;:::-;11648:4;11641:11;;11442:218;;;;:::o;8368:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;22778:108::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22868:10:::1;22849:16;;:29;;;;;;;;;;;;;;;;;;22778:108:::0;:::o;21918:105::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22008:7:::1;21989:16;;:26;;;;;;;;;;;;;;;;;;21918:105:::0;:::o;8311:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;22894:108::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22984:10:::1;22969:12;;:25;;;;;;;;;;;;;;;;;;22894:108:::0;:::o;23459:115::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23558:7:::1;23531:9;;:35;;;;;;;;;;;;;;;;;;23459:115:::0;:::o;22539:101::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22624:8:::1;22609:12;:23;;;;22539:101:::0;:::o;8992:33::-;;;;;;;;;;;;;:::o;22161:128::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22274:7:::1;22246:19;:25;22266:4;22246:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22161:128:::0;;:::o;8916:31::-;;;;;;;;;;;;;:::o;10992:123::-;11058:7;11084:9;:18;11094:7;11084:18;;;;;;;;;;;;;;;;11077:25;;10992:123;;;:::o;1837:94::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1902:21:::1;1920:1;1902:9;:21::i;:::-;1837:94::o:0;22425:106::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22515:8:::1;22502:10;:21;;;;22425:106:::0;:::o;22652:118::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22752:10:::1;22732:17;;:30;;;;;;;;;;;;;;;;;;22652:118:::0;:::o;21685:119::-;9220:16;;;;;;;;;;;9206:30;;:10;:30;;;9198:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21755:5:::1;21739:13;;:21;;;;;;;;;;;;;;;;;;21791:5;21771:16;;:25;;;;;;;;;;;;;;;;;;21685:119::o:0;8605:59::-;;;;:::o;8681:56::-;;;;:::o;7742:82::-;;;;:::o;8479:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1528:87::-;1574:7;1601:6;;;;;;;;;;;1594:13;;1528:87;:::o;10698:::-;10737:13;10770:7;10763:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10698:87;:::o;7831:86::-;;;;:::o;11668:269::-;11761:4;11778:129;11787:12;:10;:12::i;:::-;11801:7;11810:96;11849:15;11810:96;;;;;;;;;;;;;;;;;:11;:25;11822:12;:10;:12::i;:::-;11810:25;;;;;;;;;;;;;;;:34;11836:7;11810:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11778:8;:129::i;:::-;11925:4;11918:11;;11668:269;;;;:::o;12544:167::-;12622:4;12639:42;12649:12;:10;:12::i;:::-;12663:9;12674:6;12639:9;:42::i;:::-;;12699:4;12692:11;;12544:167;;;;:::o;22297:120::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22402:7:::1;22378:15;:21;22394:4;22378:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22297:120:::0;;:::o;23222:229::-;9220:16;;;;;;;;;;;9206:30;;:10;:30;;;9198:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23365:8:::1;23351:11;;:22;;;;;;;;;;;;;;;;;;23398:8;23384:11;;:22;;;;;;;;;;;;;;;;;;23433:10;23417:13;:26;;;;23222:229:::0;;;:::o;8822:25::-;;;;:::o;7926:86::-;;;;;;;;;;;;;:::o;23010:204::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23114:7:::1;23092:12;:19;23105:5;23092:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;23135:7;23132:75;;;23188:7;23159:19;:26;23179:5;23159:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;23132:75;23010:204:::0;;:::o;8420:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;20797:272::-;9220:16;;;;;;;;;;;9206:30;;:10;:30;;;9198:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20897:12:::1;20923:6;20915:20;;20990:9;21001:7;20936:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20915:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20896:114;;;21029:7;21021:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:184;20797:272:::0;;;:::o;11123:143::-;11204:7;11231:11;:18;11243:5;11231:18;;;;;;;;;;;;;;;:27;11250:7;11231:27;;;;;;;;;;;;;;;;11224:34;;11123:143;;;;:::o;22031:122::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22138:7:::1;22112:17;:23;22130:4;22112:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22031:122:::0;;:::o;20611:178::-;9220:16;;;;;;;;;;;9206:30;;:10;:30;;;9198:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20666:7:::1;20686:10;20678:24;;20710:21;20678:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20665:71;;;20755:2;20747:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;20653:136;20611:178::o:0;8954:31::-;;;;;;;;;;;;;:::o;21812:98::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21895:7:::1;21879:13;;:23;;;;;;;;;;;;;;;;;;21812:98:::0;:::o;9115:22::-;;;;;;;;;;;;;:::o;1939:229::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2062:1:::1;2042:22;;:8;:22;;;;2020:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:19;2151:8;2141:9;:19::i;:::-;1939:229:::0;:::o;23582:91::-;1760:12;:10;:12::i;:::-;1749:23;;:7;:5;:7::i;:::-;:23;;;1741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23660:5:::1;23650:7;;:15;;;;;;;;;;;;;;;;;;23582:91:::0;:::o;9032:36::-;;;;;;;;;;;;;:::o;8057:81::-;;;;;;;;;;;;;:::o;2382:181::-;2440:7;2460:9;2476:1;2472;:5;;;;:::i;:::-;2460:17;;2501:1;2496;:6;;2488:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2554:1;2547:8;;;2382:181;;;;:::o;2915:250::-;2973:7;3002:1;2997;:6;2993:47;;;3027:1;3020:8;;;;2993:47;3052:9;3068:1;3064;:5;;;;:::i;:::-;3052:17;;3097:1;3092;3088;:5;;;;:::i;:::-;:10;3080:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3156:1;3149:8;;;2915:250;;;;;:::o;3173:132::-;3231:7;3258:39;3262:1;3265;3258:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3251:46;;3173:132;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;12114:337::-;12224:1;12207:19;;:5;:19;;;;12199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12305:1;12286:21;;:7;:21;;;;12278:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12389:6;12359:11;:18;12371:5;12359:18;;;;;;;;;;;;;;;:27;12378:7;12359:27;;;;;;;;;;;;;;;:36;;;;12427:7;12411:32;;12420:5;12411:32;;;12436:6;12411:32;;;;;;:::i;:::-;;;;;;;;12114:337;;;:::o;13024:1877::-;13111:4;13156:1;13138:20;;:6;:20;;;;13130:29;;;;;;13199:1;13178:23;;:9;:23;;;;13170:32;;;;;;13230:1;13221:6;:10;13213:19;;;;;;13253:6;;;;;;;;;;;13249:1643;;;13283:41;13298:6;13306:9;13317:6;13283:14;:41::i;:::-;13276:48;;;;13249:1643;13373:13;;;;;;;;;;;13368:146;;13415:17;:25;13433:6;13415:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;13444:17;:28;13462:9;13444:28;;;;;;;;;;;;;;;;;;;;;;;;;13415:57;13407:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13368:146;13548:1;13534:10;;:15;;:34;;;;;13554:14;;;;;;;;;;;13553:15;13534:34;13530:93;;;13589:18;:16;:18::i;:::-;13530:93;13639:28;13670:24;13688:4;13670:9;:24::i;:::-;13639:55;;13709:28;13764:13;;13740:20;:37;;13709:68;;13816:23;:52;;;;;13862:6;;;;;;;;;;;13861:7;13816:52;:95;;;;;13891:12;:20;13904:6;13891:20;;;;;;;;;;;;;;;;;;;;;;;;;13890:21;13816:95;:128;;;;;13933:11;;;;;;;;;;;13816:128;:175;;;;;13966:17;:25;13984:6;13966:25;;;;;;;;;;;;;;;;;;;;;;;;;13965:26;13816:175;:225;;;;;14013:17;:28;14031:9;14013:28;;;;;;;;;;;;;;;;;;;;;;;;;14012:29;13816:225;13794:332;;;14080:30;14089:20;14080:8;:30::i;:::-;13794:332;14146:15;:23;14162:6;14146:23;;;;;;;;;;;;;;;;;;;;;;;;;14145:24;:55;;;;;14174:15;:26;14190:9;14174:26;;;;;;;;;;;;;;;;;;;;;;;;;14173:27;14145:55;:72;;;;;14204:13;;;;;;;;;;;14145:72;14142:166;;;14256:12;;14246:6;:22;;14238:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14142:166;14357:53;14379:6;14357:53;;;;;;;;;;;;;;;;;:9;:17;14367:6;14357:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14337:9;:17;14347:6;14337:17;;;;;;;;;;;;;;;:73;;;;14427:19;14449:34;14466:6;14473:9;14449:16;:34::i;:::-;:80;;14495:34;14503:6;14511:9;14522:6;14495:7;:34::i;:::-;14449:80;;;14486:6;14449:80;14427:102;;14549:16;;;;;;;;;;;:51;;;;;14570:19;:30;14590:9;14570:30;;;;;;;;;;;;;;;;;;;;;;;;;14569:31;14549:51;14546:168;;;14670:10;;14629:37;14654:11;14629:20;14639:9;14629;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;14621:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14546:168;14753:37;14778:11;14753:9;:20;14763:9;14753:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;14730:9;:20;14740:9;14730:20;;;;;;;;;;;;;;;:60;;;;14829:9;14812:40;;14821:6;14812:40;;;14840:11;14812:40;;;;;;:::i;:::-;;;;;;;;14874:4;14867:11;;;;;13024:1877;;;;;;:::o;2715:192::-;2801:7;2834:1;2829;:6;;2837:12;2821:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2861:9;2877:1;2873;:5;;;;:::i;:::-;2861:17;;2898:1;2891:8;;;2715:192;;;;;:::o;2571:136::-;2629:7;2656:43;2660:1;2663;2656:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2649:50;;2571:136;;;;:::o;2176:173::-;2232:16;2251:6;;;;;;;;;;;2232:25;;2277:8;2268:6;;:17;;;;;;;;;;;;;;;;;;2332:8;2301:40;;2322:8;2301:40;;;;;;;;;;;;2221:128;2176:173;:::o;3313:278::-;3399:7;3431:1;3427;:5;3434:12;3419:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3458:9;3474:1;3470;:5;;;;:::i;:::-;3458:17;;3582:1;3575:8;;;3313:278;;;;;:::o;14909:330::-;15002:4;15039:53;15061:6;15039:53;;;;;;;;;;;;;;;;;:9;:17;15049:6;15039:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15019:9;:17;15029:6;15019:17;;;;;;;;;;;;;;;:73;;;;15126:32;15151:6;15126:9;:20;15136:9;15126:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15103:9;:20;15113:9;15103:20;;;;;;;;;;;;;;;:55;;;;15191:9;15174:35;;15183:6;15174:35;;;15202:6;15174:35;;;;;;:::i;:::-;;;;;;;;15227:4;15220:11;;14909:330;;;;;:::o;17435:406::-;17516:1;17503:10;;:14;;;;:::i;:::-;17487:12;:30;17483:83;;17534:20;17548:2;17551;17534:13;:20::i;:::-;17483:83;17608:1;17595:10;;:14;;;;:::i;:::-;17580:12;:29;:64;;;;;17642:2;17629:10;;:15;;;;:::i;:::-;17613:12;:31;;17580:64;17576:117;;;17661:20;17675:2;17678;17661:13;:20::i;:::-;17576:117;17735:2;17722:10;;:15;;;;:::i;:::-;17707:12;:30;17703:117;;;17754:18;17768:1;17770;17754:13;:18::i;:::-;17804:4;17787:14;;:21;;;;;;;;;;;;;;;;;;17703:117;17435:406::o;17984:1445::-;9322:4;9313:6;;:13;;;;;;;;;;;;;;;;;;18058:11:::1;;;;;;;;;;;18055:47;;;18089:13;;18071:31;;18055:47;18115:19;18137:31;18154:13;;18137:12;;:16;;:31;;;;:::i;:::-;18115:53;;18181:23;18207:25;18221:10;;18207:9;;:13;;:25;;;;:::i;:::-;18181:51;;18328:20;18351:33;18369:14;;18351:13;;:17;;:33;;;;:::i;:::-;18328:56;;18397:19;18419:60;18477:1;18419:53;18460:11;18419:36;18439:15;18419;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;18397:82;;18490:21;18514:32;18534:11;18514:15;:19;;:32;;;;:::i;:::-;18490:56;;18559:22;18584:21;18559:46;;18616:31;18633:13;18616:16;:31::i;:::-;18658:22;18683:41;18709:14;18683:21;:25;;:41;;;;:::i;:::-;18658:66;;18737:19;18759:39;18775:22;18795:1;18775:15;:19;;:22;;;;:::i;:::-;18759:11;:15;;:39;;;;:::i;:::-;18737:61;;18819:26;18848:59;18905:1;18848:52;18888:11;18848:35;18867:15;18848:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;18819:88;;18918:23;18944:49;18981:11;18944:32;18963:12;18944:14;:18;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;18918:75;;19004:28;19035:59;19078:15;19035:38;19054:18;19035:14;:18;;:38;;;;:::i;:::-;:42;;:59;;;;:::i;:::-;19004:90;;19127:1;19109:15;:19;19106:84;;;19151:12;;;;;;;;;;;19143:30;;:47;19174:15;19143:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19106:84;19229:1;19206:20;:24;19203:99;;;19253:17;;;;;;;;;;;19245:35;;:57;19281:20;19245:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19203:99;19339:1;19318:18;:22;:41;;;;;19358:1;19344:11;:15;19318:41;19315:104;;;19374:45;19387:11;19400:18;19374:12;:45::i;:::-;19315:104;18042:1387;;;;;;;;;;;9358:5:::0;9349:6;;:14;;;;;;;;;;;;;;;;;;17984:1445;:::o;15251:369::-;15335:4;15355:17;:25;15373:6;15355:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15384:17;:28;15402:9;15384:28;;;;;;;;;;;;;;;;;;;;;;;;;15355:57;15352:261;;;15436:4;15429:11;;;;15352:261;15471:12;:20;15484:6;15471:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;15495:12;:23;15508:9;15495:23;;;;;;;;;;;;;;;;;;;;;;;;;15471:47;15467:146;;;15542:5;15535:12;;;;15467:146;15596:5;15589:12;;15251:369;;;;;:::o;15628:702::-;15714:7;15744:14;15801:12;:20;15814:6;15801:20;;;;;;;;;;;;;;;;;;;;;;;;;15798:258;;;15855:44;15884:14;;15855:24;15866:12;;15855:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;15843:56;;15798:258;;;15938:12;:23;15951:9;15938:23;;;;;;;;;;;;;;;;;;;;;;;;;15935:121;;;15995:45;16025:14;;15995:25;16006:13;;15995:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;15983:57;;15935:121;15798:258;16087:1;16075:9;:13;16072:185;;;16136:39;16165:9;16136;:24;16154:4;16136:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16109:9;:24;16127:4;16109:24;;;;;;;;;;;;;;;:66;;;;16224:4;16199:42;;16208:6;16199:42;;;16231:9;16199:42;;;;;;:::i;:::-;;;;;;;;16072:185;16280:21;16291:9;16280:6;:10;;:21;;;;:::i;:::-;16273:28;;;15628:702;;;;;:::o;17849:125::-;17930:4;17915:12;:19;;;;17961:5;17945:13;:21;;;;17849:125;;:::o;19955:648::-;20081:21;20119:1;20105:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20081:40;;20150:4;20132;20137:1;20132:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20176:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20166:4;20171:1;20166:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20205:56;20222:4;20237:9;;;;;;;;;;;20249:11;20205:8;:56::i;:::-;20300:9;;;;;;;;;;;:60;;;20375:11;20401:1;20445:4;20472;20508:15;20300:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20560:35;20577:11;20590:4;20560:35;;;;;;;:::i;:::-;;;;;;;;20010:593;19955:648;:::o;19437:510::-;19585:56;19602:4;19617:9;;;;;;;;;;;19629:11;19585:8;:56::i;:::-;19684:9;;;;;;;;;;;:25;;;19717:9;19750:4;19770:11;19796:1;19839;19882:16;;;;;;;;;;;19913:15;19684:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19437:510;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:126::-;1869:7;1909:42;1902:5;1898:54;1887:65;;1832:126;;;:::o;1964:60::-;1992:3;2013:5;2006:12;;1964:60;;;:::o;2030:142::-;2080:9;2113:53;2131:34;2140:24;2158:5;2140:24;:::i;:::-;2131:34;:::i;:::-;2113:53;:::i;:::-;2100:66;;2030:142;;;:::o;2178:126::-;2228:9;2261:37;2292:5;2261:37;:::i;:::-;2248:50;;2178:126;;;:::o;2310:148::-;2382:9;2415:37;2446:5;2415:37;:::i;:::-;2402:50;;2310:148;;;:::o;2464:175::-;2573:59;2626:5;2573:59;:::i;:::-;2568:3;2561:72;2464:175;;:::o;2645:266::-;2760:4;2798:2;2787:9;2783:18;2775:26;;2811:93;2901:1;2890:9;2886:17;2877:6;2811:93;:::i;:::-;2645:266;;;;:::o;2917:96::-;2954:7;2983:24;3001:5;2983:24;:::i;:::-;2972:35;;2917:96;;;:::o;3019:118::-;3106:24;3124:5;3106:24;:::i;:::-;3101:3;3094:37;3019:118;;:::o;3143:222::-;3236:4;3274:2;3263:9;3259:18;3251:26;;3287:71;3355:1;3344:9;3340:17;3331:6;3287:71;:::i;:::-;3143:222;;;;:::o;3452:117::-;3561:1;3558;3551:12;3698:122;3771:24;3789:5;3771:24;:::i;:::-;3764:5;3761:35;3751:63;;3810:1;3807;3800:12;3751:63;3698:122;:::o;3826:139::-;3872:5;3910:6;3897:20;3888:29;;3926:33;3953:5;3926:33;:::i;:::-;3826:139;;;;:::o;3971:122::-;4044:24;4062:5;4044:24;:::i;:::-;4037:5;4034:35;4024:63;;4083:1;4080;4073:12;4024:63;3971:122;:::o;4099:139::-;4145:5;4183:6;4170:20;4161:29;;4199:33;4226:5;4199:33;:::i;:::-;4099:139;;;;:::o;4244:474::-;4312:6;4320;4369:2;4357:9;4348:7;4344:23;4340:32;4337:119;;;4375:79;;:::i;:::-;4337:119;4495:1;4520:53;4565:7;4556:6;4545:9;4541:22;4520:53;:::i;:::-;4510:63;;4466:117;4622:2;4648:53;4693:7;4684:6;4673:9;4669:22;4648:53;:::i;:::-;4638:63;;4593:118;4244:474;;;;;:::o;4724:90::-;4758:7;4801:5;4794:13;4787:21;4776:32;;4724:90;;;:::o;4820:109::-;4901:21;4916:5;4901:21;:::i;:::-;4896:3;4889:34;4820:109;;:::o;4935:210::-;5022:4;5060:2;5049:9;5045:18;5037:26;;5073:65;5135:1;5124:9;5120:17;5111:6;5073:65;:::i;:::-;4935:210;;;;:::o;5151:619::-;5228:6;5236;5244;5293:2;5281:9;5272:7;5268:23;5264:32;5261:119;;;5299:79;;:::i;:::-;5261:119;5419:1;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;:::i;:::-;5434:63;;5390:117;5546:2;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5517:118;5674:2;5700:53;5745:7;5736:6;5725:9;5721:22;5700:53;:::i;:::-;5690:63;;5645:118;5151:619;;;;;:::o;5776:::-;5853:6;5861;5869;5918:2;5906:9;5897:7;5893:23;5889:32;5886:119;;;5924:79;;:::i;:::-;5886:119;6044:1;6069:53;6114:7;6105:6;6094:9;6090:22;6069:53;:::i;:::-;6059:63;;6015:117;6171:2;6197:53;6242:7;6233:6;6222:9;6218:22;6197:53;:::i;:::-;6187:63;;6142:118;6299:2;6325:53;6370:7;6361:6;6350:9;6346:22;6325:53;:::i;:::-;6315:63;;6270:118;5776:619;;;;;:::o;6401:86::-;6436:7;6476:4;6469:5;6465:16;6454:27;;6401:86;;;:::o;6493:112::-;6576:22;6592:5;6576:22;:::i;:::-;6571:3;6564:35;6493:112;;:::o;6611:214::-;6700:4;6738:2;6727:9;6723:18;6715:26;;6751:67;6815:1;6804:9;6800:17;6791:6;6751:67;:::i;:::-;6611:214;;;;:::o;6831:329::-;6890:6;6939:2;6927:9;6918:7;6914:23;6910:32;6907:119;;;6945:79;;:::i;:::-;6907:119;7065:1;7090:53;7135:7;7126:6;7115:9;7111:22;7090:53;:::i;:::-;7080:63;;7036:117;6831:329;;;;:::o;7166:116::-;7236:21;7251:5;7236:21;:::i;:::-;7229:5;7226:32;7216:60;;7272:1;7269;7262:12;7216:60;7166:116;:::o;7288:133::-;7331:5;7369:6;7356:20;7347:29;;7385:30;7409:5;7385:30;:::i;:::-;7288:133;;;;:::o;7427:323::-;7483:6;7532:2;7520:9;7511:7;7507:23;7503:32;7500:119;;;7538:79;;:::i;:::-;7500:119;7658:1;7683:50;7725:7;7716:6;7705:9;7701:22;7683:50;:::i;:::-;7673:60;;7629:114;7427:323;;;;:::o;7756:329::-;7815:6;7864:2;7852:9;7843:7;7839:23;7835:32;7832:119;;;7870:79;;:::i;:::-;7832:119;7990:1;8015:53;8060:7;8051:6;8040:9;8036:22;8015:53;:::i;:::-;8005:63;;7961:117;7756:329;;;;:::o;8091:468::-;8156:6;8164;8213:2;8201:9;8192:7;8188:23;8184:32;8181:119;;;8219:79;;:::i;:::-;8181:119;8339:1;8364:53;8409:7;8400:6;8389:9;8385:22;8364:53;:::i;:::-;8354:63;;8310:117;8466:2;8492:50;8534:7;8525:6;8514:9;8510:22;8492:50;:::i;:::-;8482:60;;8437:115;8091:468;;;;;:::o;8565:607::-;8636:6;8644;8652;8701:2;8689:9;8680:7;8676:23;8672:32;8669:119;;;8707:79;;:::i;:::-;8669:119;8827:1;8852:53;8897:7;8888:6;8877:9;8873:22;8852:53;:::i;:::-;8842:63;;8798:117;8954:2;8980:50;9022:7;9013:6;9002:9;8998:22;8980:50;:::i;:::-;8970:60;;8925:115;9079:2;9105:50;9147:7;9138:6;9127:9;9123:22;9105:50;:::i;:::-;9095:60;;9050:115;8565:607;;;;;:::o;9178:474::-;9246:6;9254;9303:2;9291:9;9282:7;9278:23;9274:32;9271:119;;;9309:79;;:::i;:::-;9271:119;9429:1;9454:53;9499:7;9490:6;9479:9;9475:22;9454:53;:::i;:::-;9444:63;;9400:117;9556:2;9582:53;9627:7;9618:6;9607:9;9603:22;9582:53;:::i;:::-;9572:63;;9527:118;9178:474;;;;;:::o;9658:182::-;9798:34;9794:1;9786:6;9782:14;9775:58;9658:182;:::o;9846:366::-;9988:3;10009:67;10073:2;10068:3;10009:67;:::i;:::-;10002:74;;10085:93;10174:3;10085:93;:::i;:::-;10203:2;10198:3;10194:12;10187:19;;9846:366;;;:::o;10218:419::-;10384:4;10422:2;10411:9;10407:18;10399:26;;10471:9;10465:4;10461:20;10457:1;10446:9;10442:17;10435:47;10499:131;10625:4;10499:131;:::i;:::-;10491:139;;10218:419;;;:::o;10643:167::-;10783:19;10779:1;10771:6;10767:14;10760:43;10643:167;:::o;10816:366::-;10958:3;10979:67;11043:2;11038:3;10979:67;:::i;:::-;10972:74;;11055:93;11144:3;11055:93;:::i;:::-;11173:2;11168:3;11164:12;11157:19;;10816:366;;;:::o;11188:419::-;11354:4;11392:2;11381:9;11377:18;11369:26;;11441:9;11435:4;11431:20;11427:1;11416:9;11412:17;11405:47;11469:131;11595:4;11469:131;:::i;:::-;11461:139;;11188:419;;;:::o;11613:85::-;11658:7;11687:5;11676:16;;11613:85;;;:::o;11704:158::-;11762:9;11795:61;11813:42;11822:32;11848:5;11822:32;:::i;:::-;11813:42;:::i;:::-;11795:61;:::i;:::-;11782:74;;11704:158;;;:::o;11868:147::-;11963:45;12002:5;11963:45;:::i;:::-;11958:3;11951:58;11868:147;;:::o;12021:807::-;12270:4;12308:3;12297:9;12293:19;12285:27;;12322:71;12390:1;12379:9;12375:17;12366:6;12322:71;:::i;:::-;12403:72;12471:2;12460:9;12456:18;12447:6;12403:72;:::i;:::-;12485:80;12561:2;12550:9;12546:18;12537:6;12485:80;:::i;:::-;12575;12651:2;12640:9;12636:18;12627:6;12575:80;:::i;:::-;12665:73;12733:3;12722:9;12718:19;12709:6;12665:73;:::i;:::-;12748;12816:3;12805:9;12801:19;12792:6;12748:73;:::i;:::-;12021:807;;;;;;;;;:::o;12834:143::-;12891:5;12922:6;12916:13;12907:22;;12938:33;12965:5;12938:33;:::i;:::-;12834:143;;;;:::o;12983:663::-;13071:6;13079;13087;13136:2;13124:9;13115:7;13111:23;13107:32;13104:119;;;13142:79;;:::i;:::-;13104:119;13262:1;13287:64;13343:7;13334:6;13323:9;13319:22;13287:64;:::i;:::-;13277:74;;13233:128;13400:2;13426:64;13482:7;13473:6;13462:9;13458:22;13426:64;:::i;:::-;13416:74;;13371:129;13539:2;13565:64;13621:7;13612:6;13601:9;13597:22;13565:64;:::i;:::-;13555:74;;13510:129;12983:663;;;;;:::o;13652:143::-;13709:5;13740:6;13734:13;13725:22;;13756:33;13783:5;13756:33;:::i;:::-;13652:143;;;;:::o;13801:351::-;13871:6;13920:2;13908:9;13899:7;13895:23;13891:32;13888:119;;;13926:79;;:::i;:::-;13888:119;14046:1;14071:64;14127:7;14118:6;14107:9;14103:22;14071:64;:::i;:::-;14061:74;;14017:128;13801:351;;;;:::o;14158:332::-;14279:4;14317:2;14306:9;14302:18;14294:26;;14330:71;14398:1;14387:9;14383:17;14374:6;14330:71;:::i;:::-;14411:72;14479:2;14468:9;14464:18;14455:6;14411:72;:::i;:::-;14158:332;;;;;:::o;14496:180::-;14544:77;14541:1;14534:88;14641:4;14638:1;14631:15;14665:4;14662:1;14655:15;14682:320;14726:6;14763:1;14757:4;14753:12;14743:22;;14810:1;14804:4;14800:12;14831:18;14821:81;;14887:4;14879:6;14875:17;14865:27;;14821:81;14949:2;14941:6;14938:14;14918:18;14915:38;14912:84;;;14968:18;;:::i;:::-;14912:84;14733:269;14682:320;;;:::o;15008:164::-;15148:16;15144:1;15136:6;15132:14;15125:40;15008:164;:::o;15178:366::-;15320:3;15341:67;15405:2;15400:3;15341:67;:::i;:::-;15334:74;;15417:93;15506:3;15417:93;:::i;:::-;15535:2;15530:3;15526:12;15519:19;;15178:366;;;:::o;15550:419::-;15716:4;15754:2;15743:9;15739:18;15731:26;;15803:9;15797:4;15793:20;15789:1;15778:9;15774:17;15767:47;15831:131;15957:4;15831:131;:::i;:::-;15823:139;;15550:419;;;:::o;15975:332::-;16096:4;16134:2;16123:9;16119:18;16111:26;;16147:71;16215:1;16204:9;16200:17;16191:6;16147:71;:::i;:::-;16228:72;16296:2;16285:9;16281:18;16272:6;16228:72;:::i;:::-;15975:332;;;;;:::o;16313:98::-;16364:6;16398:5;16392:12;16382:22;;16313:98;;;:::o;16417:147::-;16518:11;16555:3;16540:18;;16417:147;;;;:::o;16570:373::-;16674:3;16702:38;16734:5;16702:38;:::i;:::-;16756:88;16837:6;16832:3;16756:88;:::i;:::-;16749:95;;16853:52;16898:6;16893:3;16886:4;16879:5;16875:16;16853:52;:::i;:::-;16930:6;16925:3;16921:16;16914:23;;16678:265;16570:373;;;;:::o;16949:271::-;17079:3;17101:93;17190:3;17181:6;17101:93;:::i;:::-;17094:100;;17211:3;17204:10;;16949:271;;;;:::o;17226:170::-;17366:22;17362:1;17354:6;17350:14;17343:46;17226:170;:::o;17402:366::-;17544:3;17565:67;17629:2;17624:3;17565:67;:::i;:::-;17558:74;;17641:93;17730:3;17641:93;:::i;:::-;17759:2;17754:3;17750:12;17743:19;;17402:366;;;:::o;17774:419::-;17940:4;17978:2;17967:9;17963:18;17955:26;;18027:9;18021:4;18017:20;18013:1;18002:9;17998:17;17991:47;18055:131;18181:4;18055:131;:::i;:::-;18047:139;;17774:419;;;:::o;18199:114::-;;:::o;18319:398::-;18478:3;18499:83;18580:1;18575:3;18499:83;:::i;:::-;18492:90;;18591:93;18680:3;18591:93;:::i;:::-;18709:1;18704:3;18700:11;18693:18;;18319:398;;;:::o;18723:379::-;18907:3;18929:147;19072:3;18929:147;:::i;:::-;18922:154;;19093:3;19086:10;;18723:379;;;:::o;19108:170::-;19248:22;19244:1;19236:6;19232:14;19225:46;19108:170;:::o;19284:366::-;19426:3;19447:67;19511:2;19506:3;19447:67;:::i;:::-;19440:74;;19523:93;19612:3;19523:93;:::i;:::-;19641:2;19636:3;19632:12;19625:19;;19284:366;;;:::o;19656:419::-;19822:4;19860:2;19849:9;19845:18;19837:26;;19909:9;19903:4;19899:20;19895:1;19884:9;19880:17;19873:47;19937:131;20063:4;19937:131;:::i;:::-;19929:139;;19656:419;;;:::o;20081:225::-;20221:34;20217:1;20209:6;20205:14;20198:58;20290:8;20285:2;20277:6;20273:15;20266:33;20081:225;:::o;20312:366::-;20454:3;20475:67;20539:2;20534:3;20475:67;:::i;:::-;20468:74;;20551:93;20640:3;20551:93;:::i;:::-;20669:2;20664:3;20660:12;20653:19;;20312:366;;;:::o;20684:419::-;20850:4;20888:2;20877:9;20873:18;20865:26;;20937:9;20931:4;20927:20;20923:1;20912:9;20908:17;20901:47;20965:131;21091:4;20965:131;:::i;:::-;20957:139;;20684:419;;;:::o;21109:180::-;21157:77;21154:1;21147:88;21254:4;21251:1;21244:15;21278:4;21275:1;21268:15;21295:305;21335:3;21354:20;21372:1;21354:20;:::i;:::-;21349:25;;21388:20;21406:1;21388:20;:::i;:::-;21383:25;;21542:1;21474:66;21470:74;21467:1;21464:81;21461:107;;;21548:18;;:::i;:::-;21461:107;21592:1;21589;21585:9;21578:16;;21295:305;;;;:::o;21606:177::-;21746:29;21742:1;21734:6;21730:14;21723:53;21606:177;:::o;21789:366::-;21931:3;21952:67;22016:2;22011:3;21952:67;:::i;:::-;21945:74;;22028:93;22117:3;22028:93;:::i;:::-;22146:2;22141:3;22137:12;22130:19;;21789:366;;;:::o;22161:419::-;22327:4;22365:2;22354:9;22350:18;22342:26;;22414:9;22408:4;22404:20;22400:1;22389:9;22385:17;22378:47;22442:131;22568:4;22442:131;:::i;:::-;22434:139;;22161:419;;;:::o;22586:348::-;22626:7;22649:20;22667:1;22649:20;:::i;:::-;22644:25;;22683:20;22701:1;22683:20;:::i;:::-;22678:25;;22871:1;22803:66;22799:74;22796:1;22793:81;22788:1;22781:9;22774:17;22770:105;22767:131;;;22878:18;;:::i;:::-;22767:131;22926:1;22923;22919:9;22908:20;;22586:348;;;;:::o;22940:180::-;22988:77;22985:1;22978:88;23085:4;23082:1;23075:15;23109:4;23106:1;23099:15;23126:185;23166:1;23183:20;23201:1;23183:20;:::i;:::-;23178:25;;23217:20;23235:1;23217:20;:::i;:::-;23212:25;;23256:1;23246:35;;23261:18;;:::i;:::-;23246:35;23303:1;23300;23296:9;23291:14;;23126:185;;;;:::o;23317:220::-;23457:34;23453:1;23445:6;23441:14;23434:58;23526:3;23521:2;23513:6;23509:15;23502:28;23317:220;:::o;23543:366::-;23685:3;23706:67;23770:2;23765:3;23706:67;:::i;:::-;23699:74;;23782:93;23871:3;23782:93;:::i;:::-;23900:2;23895:3;23891:12;23884:19;;23543:366;;;:::o;23915:419::-;24081:4;24119:2;24108:9;24104:18;24096:26;;24168:9;24162:4;24158:20;24154:1;24143:9;24139:17;24132:47;24196:131;24322:4;24196:131;:::i;:::-;24188:139;;23915:419;;;:::o;24340:223::-;24480:34;24476:1;24468:6;24464:14;24457:58;24549:6;24544:2;24536:6;24532:15;24525:31;24340:223;:::o;24569:366::-;24711:3;24732:67;24796:2;24791:3;24732:67;:::i;:::-;24725:74;;24808:93;24897:3;24808:93;:::i;:::-;24926:2;24921:3;24917:12;24910:19;;24569:366;;;:::o;24941:419::-;25107:4;25145:2;25134:9;25130:18;25122:26;;25194:9;25188:4;25184:20;25180:1;25169:9;25165:17;25158:47;25222:131;25348:4;25222:131;:::i;:::-;25214:139;;24941:419;;;:::o;25366:221::-;25506:34;25502:1;25494:6;25490:14;25483:58;25575:4;25570:2;25562:6;25558:15;25551:29;25366:221;:::o;25593:366::-;25735:3;25756:67;25820:2;25815:3;25756:67;:::i;:::-;25749:74;;25832:93;25921:3;25832:93;:::i;:::-;25950:2;25945:3;25941:12;25934:19;;25593:366;;;:::o;25965:419::-;26131:4;26169:2;26158:9;26154:18;26146:26;;26218:9;26212:4;26208:20;26204:1;26193:9;26189:17;26182:47;26246:131;26372:4;26246:131;:::i;:::-;26238:139;;25965:419;;;:::o;26390:172::-;26530:24;26526:1;26518:6;26514:14;26507:48;26390:172;:::o;26568:366::-;26710:3;26731:67;26795:2;26790:3;26731:67;:::i;:::-;26724:74;;26807:93;26896:3;26807:93;:::i;:::-;26925:2;26920:3;26916:12;26909:19;;26568:366;;;:::o;26940:419::-;27106:4;27144:2;27133:9;27129:18;27121:26;;27193:9;27187:4;27183:20;27179:1;27168:9;27164:17;27157:47;27221:131;27347:4;27221:131;:::i;:::-;27213:139;;26940:419;;;:::o;27365:169::-;27505:21;27501:1;27493:6;27489:14;27482:45;27365:169;:::o;27540:366::-;27682:3;27703:67;27767:2;27762:3;27703:67;:::i;:::-;27696:74;;27779:93;27868:3;27779:93;:::i;:::-;27897:2;27892:3;27888:12;27881:19;;27540:366;;;:::o;27912:419::-;28078:4;28116:2;28105:9;28101:18;28093:26;;28165:9;28159:4;28155:20;28151:1;28140:9;28136:17;28129:47;28193:131;28319:4;28193:131;:::i;:::-;28185:139;;27912:419;;;:::o;28337:164::-;28477:16;28473:1;28465:6;28461:14;28454:40;28337:164;:::o;28507:366::-;28649:3;28670:67;28734:2;28729:3;28670:67;:::i;:::-;28663:74;;28746:93;28835:3;28746:93;:::i;:::-;28864:2;28859:3;28855:12;28848:19;;28507:366;;;:::o;28879:419::-;29045:4;29083:2;29072:9;29068:18;29060:26;;29132:9;29126:4;29122:20;29118:1;29107:9;29103:17;29096:47;29160:131;29286:4;29160:131;:::i;:::-;29152:139;;28879:419;;;:::o;29304:191::-;29344:4;29364:20;29382:1;29364:20;:::i;:::-;29359:25;;29398:20;29416:1;29398:20;:::i;:::-;29393:25;;29437:1;29434;29431:8;29428:34;;;29442:18;;:::i;:::-;29428:34;29487:1;29484;29480:9;29472:17;;29304:191;;;;:::o;29501:180::-;29549:77;29546:1;29539:88;29646:4;29643:1;29636:15;29670:4;29667:1;29660:15;29687:180;29735:77;29732:1;29725:88;29832:4;29829:1;29822:15;29856:4;29853:1;29846:15;29873:114;29940:6;29974:5;29968:12;29958:22;;29873:114;;;:::o;29993:184::-;30092:11;30126:6;30121:3;30114:19;30166:4;30161:3;30157:14;30142:29;;29993:184;;;;:::o;30183:132::-;30250:4;30273:3;30265:11;;30303:4;30298:3;30294:14;30286:22;;30183:132;;;:::o;30321:108::-;30398:24;30416:5;30398:24;:::i;:::-;30393:3;30386:37;30321:108;;:::o;30435:179::-;30504:10;30525:46;30567:3;30559:6;30525:46;:::i;:::-;30603:4;30598:3;30594:14;30580:28;;30435:179;;;;:::o;30620:113::-;30690:4;30722;30717:3;30713:14;30705:22;;30620:113;;;:::o;30769:732::-;30888:3;30917:54;30965:5;30917:54;:::i;:::-;30987:86;31066:6;31061:3;30987:86;:::i;:::-;30980:93;;31097:56;31147:5;31097:56;:::i;:::-;31176:7;31207:1;31192:284;31217:6;31214:1;31211:13;31192:284;;;31293:6;31287:13;31320:63;31379:3;31364:13;31320:63;:::i;:::-;31313:70;;31406:60;31459:6;31406:60;:::i;:::-;31396:70;;31252:224;31239:1;31236;31232:9;31227:14;;31192:284;;;31196:14;31492:3;31485:10;;30893:608;;;30769:732;;;;:::o;31507:831::-;31770:4;31808:3;31797:9;31793:19;31785:27;;31822:71;31890:1;31879:9;31875:17;31866:6;31822:71;:::i;:::-;31903:80;31979:2;31968:9;31964:18;31955:6;31903:80;:::i;:::-;32030:9;32024:4;32020:20;32015:2;32004:9;32000:18;31993:48;32058:108;32161:4;32152:6;32058:108;:::i;:::-;32050:116;;32176:72;32244:2;32233:9;32229:18;32220:6;32176:72;:::i;:::-;32258:73;32326:3;32315:9;32311:19;32302:6;32258:73;:::i;:::-;31507:831;;;;;;;;:::o;32344:483::-;32515:4;32553:2;32542:9;32538:18;32530:26;;32566:71;32634:1;32623:9;32619:17;32610:6;32566:71;:::i;:::-;32684:9;32678:4;32674:20;32669:2;32658:9;32654:18;32647:48;32712:108;32815:4;32806:6;32712:108;:::i;:::-;32704:116;;32344:483;;;;;:::o

Swarm Source

ipfs://779cc9a5e3989ba388bac20895b3411cc53b6d3576f34aff95f4a6f572b70895
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.