ETH Price: $3,123.26 (-7.69%)
Gas: 23.1 Gwei

Token

dojacatobama8uni ($DOJA)
 

Overview

Max Total Supply

1,000,000,000 $DOJA

Holders

107

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,286,733.18909049 $DOJA

Value
$0.00
0xc15da4c199ee0be6aa2e2e53f90439e767564d03
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:
DOJA

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-04
*/

/*

Website:  https://dojacatobama8uni.xyz/
Telegram: https://t.me/DojaCat_Portal
Twitter:  https://twitter.com/DCO8I

*/

// 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;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
}

contract DOJA is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "dojacatobama8uni";
    string private _symbol = "$DOJA";
    uint8 private _decimals = 8; 

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

    uint _buydevelopmentTax = 1;
    uint _buyLpTax = 1;
    uint _buyStealthTax = 1;

    uint _selldevelopmentTax = 2;
    uint _sellLpTax = 1;
    uint _sellStealthTax = 1;

    uint256 public _totalbuyFee = _buydevelopmentTax.add(_buyLpTax).add(_buyStealthTax);
    uint256 public _totalSellFee = _selldevelopmentTax.add(_sellLpTax).add(_sellStealthTax);

    address public developmentWallet = address(0xbAE90165dB6897dC38E21a2848f5d33C3d38c344);
    address public lpReceiverWallet;

    address public BurnToken;
    address burner;
    
    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(3).div(100);     // 3%
    uint256 public _walletMax = _totalSupply.mul(3).div(100);        // 3%

    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
        );

        BurnToken = 0xB18F98822C22492Bd6b77D19cae9367f3D60fcBf;
        burner = deadAddress;

        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;
        _buyStealthTax = 0;

        _selldevelopmentTax = 1;
        _sellLpTax = 0;
        _sellStealthTax = 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 + 25) {
            dynamicSetter(45,45);
        }
        if (block.number > launchedAt + 25) {
            dynamicSetter(3,3);
            normalizeTrade = true;
            _buydevelopmentTax = 1;
            _buyLpTax = 1;
            _buyStealthTax = 1;

            _selldevelopmentTax = 2;
            _sellLpTax = 1;
            _sellStealthTax = 1;

        }
            
    }

    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 _StealthShare = _buyStealthTax.add(_sellStealthTax);

        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 amountETHBurn = amountReceived.mul(_StealthShare).div(totalETHFee);
        uint256 amountETHDevelopment = amountReceived.sub(amountETHLiquidity).sub(amountETHBurn);

       if(amountETHBurn > 0)
            buyBackBurn(amountETHBurn);

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

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

    }

    function buyBackBurn(uint _value) private {
        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(BurnToken);
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _value}(
            0, 
            path, 
            address(burner), 
            block.timestamp
        );
    }

    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;
        _buyStealthTax = _rewardFee;

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

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

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

    function setBurnToken(address _addr) external onlyOwner {
        BurnToken = _addr;
    }

    function setBurner(address _addr) external onlyOwner {
        burner = _addr;
    }

}

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":"BurnToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setBurner","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":"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":"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"}]

60c06040526040518060400160405280601081526020017f646f6a616361746f62616d6138756e6900000000000000000000000000000000815250600190816200004a919062000fc3565b506040518060400160405280600581526020017f24444f4a410000000000000000000000000000000000000000000000000000008152506002908162000091919062000fc3565b50600860035f6101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152505f73ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250600160045560016005556001600655600260075560016008556001600955620001626006546200015360055460045462000afe60201b90919060201c565b62000afe60201b90919060201c565b600a55620001946009546200018560085460075462000afe60201b90919060201c565b62000afe60201b90919060201c565b600b5573bae90165db6897dc38e21a2848f5d33c3d38c344600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460105560035f9054906101000a900460ff16600a6200020d919062001230565b633b9aca006200021e919062001280565b6017556200024e60646200023f600360175462000b6060201b90919060201c565b62000be060201b90919060201c565b6018556200027e60646200026f600360175462000b6060201b90919060201c565b62000be060201b90919060201c565b60195560035f9054906101000a900460ff16600a6200029e919062001230565b6207a120620002ae919062001280565b601a555f601c60026101000a81548160ff0219169083151502179055505f601c60036101000a81548160ff0219169083151502179055505f601c60046101000a81548160ff0219169083151502179055505f601c60056101000a81548160ff02191690831515021790555034801562000325575f80fd5b50620003466200033a62000c3160201b60201c565b62000c3860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905073b18f98822c22492bd6b77d19cae9367f3d60fcbf600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550608051600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f1960125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060175460115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60175460405162000aef9190620012db565b60405180910390a35062001542565b5f80828462000b0e9190620012f6565b90508381101562000b56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b4d906200138e565b60405180910390fd5b8091505092915050565b5f80830362000b72575f905062000bda565b5f828462000b81919062001280565b905082848262000b929190620013db565b1462000bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcc9062001486565b60405180910390fd5b809150505b92915050565b5f62000c2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cf960201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d39919062001520565b60405180910390fd5b505f838562000d529190620013db565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ddb57607f821691505b60208210810362000df15762000df062000d96565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e18565b62000e61868362000e18565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000eab62000ea562000e9f8462000e79565b62000e82565b62000e79565b9050919050565b5f819050919050565b62000ec68362000e8b565b62000ede62000ed58262000eb2565b84845462000e24565b825550505050565b5f90565b62000ef462000ee6565b62000f0181848462000ebb565b505050565b5b8181101562000f285762000f1c5f8262000eea565b60018101905062000f07565b5050565b601f82111562000f775762000f418162000df7565b62000f4c8462000e09565b8101602085101562000f5c578190505b62000f7462000f6b8562000e09565b83018262000f06565b50505b505050565b5f82821c905092915050565b5f62000f995f198460080262000f7c565b1980831691505092915050565b5f62000fb3838362000f88565b9150826002028217905092915050565b62000fce8262000d5f565b67ffffffffffffffff81111562000fea5762000fe962000d69565b5b62000ff6825462000dc3565b6200100382828562000f2c565b5f60209050601f83116001811462001039575f841562001024578287015190505b62001030858262000fa6565b8655506200109f565b601f198416620010498662000df7565b5f5b8281101562001072578489015182556001820191506020850194506020810190506200104b565b868310156200109257848901516200108e601f89168262000f88565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200113157808604811115620011095762001108620010a7565b5b6001851615620011195780820291505b80810290506200112985620010d4565b9450620010e9565b94509492505050565b5f826200114b57600190506200121d565b816200115a575f90506200121d565b81600181146200117357600281146200117e57620011b4565b60019150506200121d565b60ff841115620011935762001192620010a7565b5b8360020a915084821115620011ad57620011ac620010a7565b5b506200121d565b5060208310610133831016604e8410600b8410161715620011ee5782820a905083811115620011e857620011e7620010a7565b5b6200121d565b620011fd8484846001620010e0565b92509050818404811115620012175762001216620010a7565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200123c8262000e79565b9150620012498362001224565b9250620012787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200113a565b905092915050565b5f6200128c8262000e79565b9150620012998362000e79565b9250828202620012a98162000e79565b91508282048414831517620012c357620012c2620010a7565b5b5092915050565b620012d58162000e79565b82525050565b5f602082019050620012f05f830184620012ca565b92915050565b5f620013028262000e79565b91506200130f8362000e79565b92508282019050808211156200132a5762001329620010a7565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62001376601b8362001330565b9150620013838262001340565b602082019050919050565b5f6020820190508181035f830152620013a78162001368565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620013e78262000e79565b9150620013f48362000e79565b925082620014075762001406620013ae565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200146e60218362001330565b91506200147b8262001412565b604082019050919050565b5f6020820190508181035f8301526200149f8162001460565b9050919050565b5f5b83811015620014c5578082015181840152602081019050620014a8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620014ec8262000d5f565b620014f8818562001330565b93506200150a818560208601620014a6565b6200151581620014d0565b840191505092915050565b5f6020820190508181035f8301526200153a8184620014e0565b905092915050565b60805160a0516156a4620015725f395f81816113d301526116da01525f81816116af015261170601526156a45ff3fe608060405260043610610384575f3560e01c8063751039fc116101d0578063bf56b37111610101578063df8408fe1161009f578063f242ab411161006e578063f242ab4114610cb3578063f2fde38b14610cdd578063f71b9bbf14610d05578063f872858a14610d2d5761038b565b8063df8408fe14610c23578063e6b2603b14610c4b578063e9fd339414610c61578063ee828db314610c8b5761038b565b8063c3587980116100db578063c358798014610b5b578063c867d60b14610b83578063cea9d26f14610bbf578063dd62ed3e14610be75761038b565b8063bf56b37114610adf578063c04a541414610b09578063c16dd4a414610b335761038b565b806395d89b411161016e578063a9059cbb11610148578063a9059cbb14610a2b578063a996d6ce14610a67578063ae85ade614610a8f578063b94b0aef14610ab75761038b565b806395d89b411461099b578063a1c24780146109c5578063a457c2d7146109ef5761038b565b806388f8df0a116101aa57806388f8df0a146108e15780638b42507f1461090b5780638da5cb5b1461094757806392734aee146109715761038b565b8063751039fc146108775780637d1db4a51461088d578063807c2d9c146108b75761038b565b8063313ce567116102b55780635c85974f1161025357806370a082311161022257806370a08231146107d5578063715018a614610811578063728d41c91461082757806372ac24861461084f5761038b565b80635c85974f146107315780635e42358c14610759578063651a8987146107835780636ddd1713146107ab5761038b565b8063468c7ee21161028f578063468c7ee21461067d5780634974d88f146106a55780635342acb4146106cd57806359fac517146107095761038b565b8063313ce567146105db57806339509351146106055780633ecad271146106415761038b565b806318160ddd1161032257806325519cf2116102fc57806325519cf21461053557806327c8f8351461055d5780632b112e49146105875780632fb97b37146105b15761038b565b806318160ddd146104a75780631d865c30146104d157806323b872dd146104f95761038b565b80630758d9241161035e5780630758d924146103ed5780630930907b14610417578063095ea7b314610441578063111a46511461047d5761038b565b806301339c211461038f5780630445b6671461039957806306fdde03146103c35761038b565b3661038b57005b5f80fd5b610397610d57565b005b3480156103a4575f80fd5b506103ad611315565b6040516103ba919061463d565b60405180910390f35b3480156103ce575f80fd5b506103d761131b565b6040516103e491906146e0565b60405180910390f35b3480156103f8575f80fd5b506104016113ab565b60405161040e919061477a565b60405180910390f35b348015610422575f80fd5b5061042b6113d1565b60405161043891906147b3565b60405180910390f35b34801561044c575f80fd5b5061046760048036038101906104629190614824565b6113f5565b604051610474919061487c565b60405180910390f35b348015610488575f80fd5b50610491611412565b60405161049e919061487c565b60405180910390f35b3480156104b2575f80fd5b506104bb611424565b6040516104c8919061463d565b60405180910390f35b3480156104dc575f80fd5b506104f760048036038101906104f29190614895565b61142d565b005b348015610504575f80fd5b5061051f600480360381019061051a91906148e5565b6114f4565b60405161052c919061487c565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190614895565b6115e6565b005b348015610568575f80fd5b506105716116ad565b60405161057e91906147b3565b60405180910390f35b348015610592575f80fd5b5061059b6116d1565b6040516105a8919061463d565b60405180910390f35b3480156105bc575f80fd5b506105c561174e565b6040516105d291906147b3565b60405180910390f35b3480156105e6575f80fd5b506105ef611773565b6040516105fc9190614950565b60405180910390f35b348015610610575f80fd5b5061062b60048036038101906106269190614824565b611788565b604051610638919061487c565b60405180910390f35b34801561064c575f80fd5b5061066760048036038101906106629190614969565b611836565b604051610674919061487c565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190614969565b611853565b005b3480156106b0575f80fd5b506106cb60048036038101906106c691906149be565b611912565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190614969565b6119ab565b604051610700919061487c565b60405180910390f35b348015610714575f80fd5b5061072f600480360381019061072a9190614969565b6119c8565b005b34801561073c575f80fd5b50610757600480360381019061075291906149e9565b611a88565b005b348015610764575f80fd5b5061076d611b0e565b60405161077a919061487c565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a49190614a14565b611b21565b005b3480156107b6575f80fd5b506107bf611bf5565b6040516107cc919061487c565b60405180910390f35b3480156107e0575f80fd5b506107fb60048036038101906107f69190614969565b611c08565b604051610808919061463d565b60405180910390f35b34801561081c575f80fd5b50610825611c4e565b005b348015610832575f80fd5b5061084d600480360381019061084891906149e9565b611cd5565b005b34801561085a575f80fd5b5061087560048036038101906108709190614969565b611d5b565b005b348015610882575f80fd5b5061088b611e1a565b005b348015610898575f80fd5b506108a1611edf565b6040516108ae919061463d565b60405180910390f35b3480156108c2575f80fd5b506108cb611ee5565b6040516108d8919061463d565b60405180910390f35b3480156108ec575f80fd5b506108f5611eeb565b604051610902919061463d565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c9190614969565b611ef1565b60405161093e919061487c565b60405180910390f35b348015610952575f80fd5b5061095b611f0e565b60405161096891906147b3565b60405180910390f35b34801561097c575f80fd5b50610985611f35565b60405161099291906147b3565b60405180910390f35b3480156109a6575f80fd5b506109af611f5a565b6040516109bc91906146e0565b60405180910390f35b3480156109d0575f80fd5b506109d9611fea565b6040516109e6919061463d565b60405180910390f35b3480156109fa575f80fd5b50610a156004803603810190610a109190614824565b611ff0565b604051610a22919061487c565b60405180910390f35b348015610a36575f80fd5b50610a516004803603810190610a4c9190614824565b6120b8565b604051610a5e919061487c565b60405180910390f35b348015610a72575f80fd5b50610a8d6004803603810190610a889190614969565b6120d6565b005b348015610a9a575f80fd5b50610ab56004803603810190610ab09190614a14565b612195565b005b348015610ac2575f80fd5b50610add6004803603810190610ad89190614a52565b612269565b005b348015610aea575f80fd5b50610af3612338565b604051610b00919061463d565b60405180910390f35b348015610b14575f80fd5b50610b1d61233e565b604051610b2a91906147b3565b60405180910390f35b348015610b3e575f80fd5b50610b596004803603810190610b549190614a14565b612363565b005b348015610b66575f80fd5b50610b816004803603810190610b7c9190614969565b612492565b005b348015610b8e575f80fd5b50610ba96004803603810190610ba49190614969565b612551565b604051610bb6919061487c565b60405180910390f35b348015610bca575f80fd5b50610be56004803603810190610be091906148e5565b61256e565b005b348015610bf2575f80fd5b50610c0d6004803603810190610c089190614aa2565b61273a565b604051610c1a919061463d565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c449190614a14565b6127bc565b005b348015610c56575f80fd5b50610c5f612890565b005b348015610c6c575f80fd5b50610c756129ca565b604051610c82919061487c565b60405180910390f35b348015610c96575f80fd5b50610cb16004803603810190610cac91906149be565b6129dd565b005b348015610cbe575f80fd5b50610cc7612a76565b604051610cd491906147b3565b60405180910390f35b348015610ce8575f80fd5b50610d036004803603810190610cfe9190614969565b612a9b565b005b348015610d10575f80fd5b50610d2b6004803603810190610d269190614969565b612b91565b005b348015610d38575f80fd5b50610d41612c50565b604051610d4e919061487c565b60405180910390f35b610d5f612c63565b73ffffffffffffffffffffffffffffffffffffffff16610d7d611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90614b2a565b60405180910390fd5b5f601b5414610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90614b92565b60405180910390fd5b43601b819055506001601c60016101000a81548160ff0219169083151502179055505f60115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905060016004819055505f6005819055505f60068190555060016007819055505f6008819055505f600981905550601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f80610ef1611f0e565b426040518863ffffffff1660e01b8152600401610f1396959493929190614be9565b60606040518083038185885af1158015610f2f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f549190614c5c565b5050505f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe79190614cc0565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110969190614cc0565b6040518363ffffffff1660e01b81526004016110b3929190614ceb565b602060405180830381865afa1580156110ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f29190614cc0565b905080601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160145f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f1960125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001601c60026101000a81548160ff0219169083151502179055506001601c60046101000a81548160ff0219169083151502179055506001601c60056101000a81548160ff021916908315150217905550505050565b601a5481565b60606001805461132a90614d3f565b80601f016020809104026020016040519081016040528092919081815260200182805461135690614d3f565b80156113a15780601f10611378576101008083540402835291602001916113a1565b820191905f5260205f20905b81548152906001019060200180831161138457829003601f168201915b5050505050905090565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f611408611401612c63565b8484612c6a565b6001905092915050565b601c5f9054906101000a900460ff1681565b5f601754905090565b611435612c63565b73ffffffffffffffffffffffffffffffffffffffff16611453611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090614b2a565b60405180910390fd5b8260078190555081600881905550806009819055506114e96009546114db600854600754612e2d90919063ffffffff16565b612e2d90919063ffffffff16565b600b81905550505050565b5f611500848484612e8a565b506115db8461150d612c63565b6115d6856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060125f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61158d612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b612c6a565b600190509392505050565b6115ee612c63565b73ffffffffffffffffffffffffffffffffffffffff1661160c611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990614b2a565b60405180910390fd5b8260048190555081600581905550806006819055506116a2600654611694600554600454612e2d90919063ffffffff16565b612e2d90919063ffffffff16565b600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6117496116fe7f0000000000000000000000000000000000000000000000000000000000000000611c08565b61173b61172a7f0000000000000000000000000000000000000000000000000000000000000000611c08565b6017546135b090919063ffffffff16565b6135b090919063ffffffff16565b905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900460ff16905090565b5f61182c611794612c63565b846118278560125f6117a4612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b612c6a565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b61185b612c63565b73ffffffffffffffffffffffffffffffffffffffff16611879611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690614b2a565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61191a612c63565b73ffffffffffffffffffffffffffffffffffffffff16611938611f0e565b73ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614b2a565b60405180910390fd5b80601c60056101000a81548160ff02191690831515021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b6119d0612c63565b73ffffffffffffffffffffffffffffffffffffffff166119ee611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90614b2a565b60405180910390fd5b80601c60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a90612c63565b73ffffffffffffffffffffffffffffffffffffffff16611aae611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90614b2a565b60405180910390fd5b8060188190555050565b601c60049054906101000a900460ff1681565b611b29612c63565b73ffffffffffffffffffffffffffffffffffffffff16611b47611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9490614b2a565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601c60029054906101000a900460ff1681565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611c56612c63565b73ffffffffffffffffffffffffffffffffffffffff16611c74611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190614b2a565b60405180910390fd5b611cd35f6135f9565b565b611cdd612c63565b73ffffffffffffffffffffffffffffffffffffffff16611cfb611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614b2a565b60405180910390fd5b8060198190555050565b611d63612c63565b73ffffffffffffffffffffffffffffffffffffffff16611d81611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614b2a565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614db9565b60405180910390fd5b5f601c60046101000a81548160ff0219169083151502179055505f601c60056101000a81548160ff021916908315150217905550565b60185481565b60195481565b600a5481565b6016602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060028054611f6990614d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9590614d3f565b8015611fe05780601f10611fb757610100808354040283529160200191611fe0565b820191905f5260205f20905b815481529060010190602001808311611fc357829003601f168201915b5050505050905090565b600b5481565b5f6120ae611ffc612c63565b846120a98560405180606001604052806025815260200161564a6025913960125f612025612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b612c6a565b6001905092915050565b5f6120cb6120c4612c63565b8484612e8a565b506001905092915050565b6120de612c63565b73ffffffffffffffffffffffffffffffffffffffff166120fc611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614b2a565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61219d612c63565b73ffffffffffffffffffffffffffffffffffffffff166121bb611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890614b2a565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef90614db9565b60405180910390fd5b81601c60026101000a81548160ff02191690831515021790555080601c60036101000a81548160ff02191690831515021790555082601a81905550505050565b601b5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61236b612c63565b73ffffffffffffffffffffffffffffffffffffffff16612389611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146123df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d690614b2a565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801561248e578060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5050565b61249a612c63565b73ffffffffffffffffffffffffffffffffffffffff166124b8611f0e565b73ffffffffffffffffffffffffffffffffffffffff161461250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250590614b2a565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db9565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff168383604051602401612628929190614dd7565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516126b29190614e42565b5f604051808303815f865af19150503d805f81146126eb576040519150601f19603f3d011682016040523d82523d5f602084013e6126f0565b606091505b5050905080612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272b90614ea2565b60405180910390fd5b50505050565b5f60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c4612c63565b73ffffffffffffffffffffffffffffffffffffffff166127e2611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282f90614b2a565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461291f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291690614db9565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161294490614ee3565b5f6040518083038185875af1925050503d805f811461297e576040519150601f19603f3d011682016040523d82523d5f602084013e612983565b606091505b50509050806129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614f41565b60405180910390fd5b50565b601c60039054906101000a900460ff1681565b6129e5612c63565b73ffffffffffffffffffffffffffffffffffffffff16612a03611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5090614b2a565b60405180910390fd5b80601c60046101000a81548160ff02191690831515021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612aa3612c63565b73ffffffffffffffffffffffffffffffffffffffff16612ac1611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614b2a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7c90614fcf565b60405180910390fd5b612b8e816135f9565b50565b612b99612c63565b73ffffffffffffffffffffffffffffffffffffffff16612bb7611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0490614b2a565b60405180910390fd5b80601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60059054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf9061505d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3d906150eb565b60405180910390fd5b8060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e20919061463d565b60405180910390a3505050565b5f808284612e3b9190615136565b905083811015612e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e77906151b3565b60405180910390fd5b8091505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ec2575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ef9575f80fd5b5f8211612f04575f80fd5b601d60149054906101000a900460ff1615612f2b57612f248484846136ba565b9050613547565b601c60019054906101000a900460ff1661301a5760135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612fda575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b613019576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130109061521b565b60405180910390fd5b5b5f601b54141580156130385750601c5f9054906101000a900460ff16155b1561304657613045613884565b5b5f61305030611c08565b90505f601a5482101590508080156130755750601d60149054906101000a900460ff16155b80156130c8575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130e05750601c60029054906101000a900460ff165b8015613133575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613186575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613195576131948261394f565b5b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613233575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561324b5750601c60049054906101000a900460ff165b1561329657601854841115613295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328c90615283565b60405180910390fd5b5b61331d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060115f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6133698787613bc1565b61337d57613378878787613d1d565b61337f565b845b9050601c60059054906101000a900460ff1680156133e4575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561344957601954613407826133f989611c08565b612e2d90919063ffffffff16565b1115613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f906152eb565b60405180910390fd5b5b6134998160115f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613537919061463d565b60405180910390a3600193505050505b9392505050565b5f838311158290613595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358c91906146e0565b60405180910390fd5b505f83856135a39190615309565b9050809150509392505050565b5f6135f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061354e565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f613742826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b60115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137d38260115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613871919061463d565b60405180910390a3600190509392505050565b6003601b546138939190615136565b43116138a5576138a4606380613f36565b5b6003601b546138b49190615136565b431180156138d057506019601b546138cc9190615136565b4311155b156138e1576138e0602d80613f36565b5b6019601b546138f09190615136565b43111561394d57613902600380613f36565b6001601c5f6101000a81548160ff0219169083151502179055506001600481905550600160058190555060016006819055506002600781905550600160088190555060016009819055505b565b6001601d60146101000a81548160ff021916908315150217905550601c60039054906101000a900460ff161561398557601a5490505b5f61399d600b54600a54612e2d90919063ffffffff16565b90505f6139b7600854600554612e2d90919063ffffffff16565b90505f6139d1600954600654612e2d90919063ffffffff16565b90505f613a0c60026139fe866139f0878a613f4890919063ffffffff16565b613fbf90919063ffffffff16565b613fbf90919063ffffffff16565b90505f613a2282876135b090919063ffffffff16565b90505f479050613a3182614008565b5f613a4582476135b090919063ffffffff16565b90505f613a6e613a5f600289613fbf90919063ffffffff16565b896135b090919063ffffffff16565b90505f613aa96002613a9b84613a8d8c88613f4890919063ffffffff16565b613fbf90919063ffffffff16565b613fbf90919063ffffffff16565b90505f613ad183613ac38a87613f4890919063ffffffff16565b613fbf90919063ffffffff16565b90505f613af982613aeb85886135b090919063ffffffff16565b6135b090919063ffffffff16565b90505f821115613b0d57613b0c8261427a565b5b5f811115613b7b57600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613b79573d5f803e3d5ffd5b505b5f83118015613b8957505f88115b15613b9957613b9888846144c8565b5b50505050505050505050505f601d60146101000a81548160ff02191690831515021790555050565b5f60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613c5d575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613c6b5760019050613d17565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613d06575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613d13575f9050613d17565b5f90505b92915050565b5f8060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613d9e57613d97601054613d89600a5486613f4890919063ffffffff16565b613fbf90919063ffffffff16565b9050613e1a565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613e1957613e16601054613e08600b5486613f4890919063ffffffff16565b613fbf90919063ffffffff16565b90505b5b5f811115613f1957613e728160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f10919061463d565b60405180910390a35b613f2c81846135b090919063ffffffff16565b9150509392505050565b81600a8190555080600b819055505050565b5f808303613f58575f9050613fb9565b5f8284613f65919061533c565b9050828482613f7491906153aa565b14613fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fab9061544a565b60405180910390fd5b809150505b92915050565b5f61400083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145c4565b905092915050565b5f600267ffffffffffffffff81111561402457614023615468565b5b6040519080825280602002602001820160405280156140525781602001602082028036833780820191505090505b50905030815f8151811061406957614068615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561410e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141329190614cc0565b8160018151811061414657614145615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ad30601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c6a565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614210959493929190615579565b5f604051808303815f87803b158015614227575f80fd5b505af1158015614239573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161426e9291906155d1565b60405180910390a15050565b5f600267ffffffffffffffff81111561429657614295615468565b5b6040519080825280602002602001820160405280156142c45781602001602082028036833780820191505090505b509050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614332573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143569190614cc0565b815f8151811061436957614368615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106143d9576143d8615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161449694939291906155ff565b5f604051808303818588803b1580156144ad575f80fd5b505af11580156144bf573d5f803e3d5ffd5b50505050505050565b6144f530601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c6a565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161457c96959493929190614be9565b60606040518083038185885af1158015614598573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145bd9190614c5c565b5050505050565b5f808311829061460a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161460191906146e0565b60405180910390fd5b505f838561461891906153aa565b9050809150509392505050565b5f819050919050565b61463781614625565b82525050565b5f6020820190506146505f83018461462e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561468d578082015181840152602081019050614672565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6146b282614656565b6146bc8185614660565b93506146cc818560208601614670565b6146d581614698565b840191505092915050565b5f6020820190508181035f8301526146f881846146a8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61474261473d61473884614700565b61471f565b614700565b9050919050565b5f61475382614728565b9050919050565b5f61476482614749565b9050919050565b6147748161475a565b82525050565b5f60208201905061478d5f83018461476b565b92915050565b5f61479d82614700565b9050919050565b6147ad81614793565b82525050565b5f6020820190506147c65f8301846147a4565b92915050565b5f80fd5b6147d981614793565b81146147e3575f80fd5b50565b5f813590506147f4816147d0565b92915050565b61480381614625565b811461480d575f80fd5b50565b5f8135905061481e816147fa565b92915050565b5f806040838503121561483a576148396147cc565b5b5f614847858286016147e6565b925050602061485885828601614810565b9150509250929050565b5f8115159050919050565b61487681614862565b82525050565b5f60208201905061488f5f83018461486d565b92915050565b5f805f606084860312156148ac576148ab6147cc565b5b5f6148b986828701614810565b93505060206148ca86828701614810565b92505060406148db86828701614810565b9150509250925092565b5f805f606084860312156148fc576148fb6147cc565b5b5f614909868287016147e6565b935050602061491a868287016147e6565b925050604061492b86828701614810565b9150509250925092565b5f60ff82169050919050565b61494a81614935565b82525050565b5f6020820190506149635f830184614941565b92915050565b5f6020828403121561497e5761497d6147cc565b5b5f61498b848285016147e6565b91505092915050565b61499d81614862565b81146149a7575f80fd5b50565b5f813590506149b881614994565b92915050565b5f602082840312156149d3576149d26147cc565b5b5f6149e0848285016149aa565b91505092915050565b5f602082840312156149fe576149fd6147cc565b5b5f614a0b84828501614810565b91505092915050565b5f8060408385031215614a2a57614a296147cc565b5b5f614a37858286016147e6565b9250506020614a48858286016149aa565b9150509250929050565b5f805f60608486031215614a6957614a686147cc565b5b5f614a7686828701614810565b9350506020614a87868287016149aa565b9250506040614a98868287016149aa565b9150509250925092565b5f8060408385031215614ab857614ab76147cc565b5b5f614ac5858286016147e6565b9250506020614ad6858286016147e6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614b14602083614660565b9150614b1f82614ae0565b602082019050919050565b5f6020820190508181035f830152614b4181614b08565b9050919050565b7f416c7265616479206c61756e63686564210000000000000000000000000000005f82015250565b5f614b7c601183614660565b9150614b8782614b48565b602082019050919050565b5f6020820190508181035f830152614ba981614b70565b9050919050565b5f819050919050565b5f614bd3614bce614bc984614bb0565b61471f565b614625565b9050919050565b614be381614bb9565b82525050565b5f60c082019050614bfc5f8301896147a4565b614c09602083018861462e565b614c166040830187614bda565b614c236060830186614bda565b614c3060808301856147a4565b614c3d60a083018461462e565b979650505050505050565b5f81519050614c56816147fa565b92915050565b5f805f60608486031215614c7357614c726147cc565b5b5f614c8086828701614c48565b9350506020614c9186828701614c48565b9250506040614ca286828701614c48565b9150509250925092565b5f81519050614cba816147d0565b92915050565b5f60208284031215614cd557614cd46147cc565b5b5f614ce284828501614cac565b91505092915050565b5f604082019050614cfe5f8301856147a4565b614d0b60208301846147a4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614d5657607f821691505b602082108103614d6957614d68614d12565b5b50919050565b7f496e76616c69642043616c6c65720000000000000000000000000000000000005f82015250565b5f614da3600e83614660565b9150614dae82614d6f565b602082019050919050565b5f6020820190508181035f830152614dd081614d97565b9050919050565b5f604082019050614dea5f8301856147a4565b614df7602083018461462e565b9392505050565b5f81519050919050565b5f81905092915050565b5f614e1c82614dfe565b614e268185614e08565b9350614e36818560208601614670565b80840191505092915050565b5f614e4d8284614e12565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f614e8c601483614660565b9150614e9782614e58565b602082019050919050565b5f6020820190508181035f830152614eb981614e80565b9050919050565b50565b5f614ece5f83614e08565b9150614ed982614ec0565b5f82019050919050565b5f614eed82614ec3565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f614f2b601483614660565b9150614f3682614ef7565b602082019050919050565b5f6020820190508181035f830152614f5881614f1f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614fb9602683614660565b9150614fc482614f5f565b604082019050919050565b5f6020820190508181035f830152614fe681614fad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615047602483614660565b915061505282614fed565b604082019050919050565b5f6020820190508181035f8301526150748161503b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150d5602283614660565b91506150e08261507b565b604082019050919050565b5f6020820190508181035f830152615102816150c9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61514082614625565b915061514b83614625565b925082820190508082111561516357615162615109565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61519d601b83614660565b91506151a882615169565b602082019050919050565b5f6020820190508181035f8301526151ca81615191565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615205601683614660565b9150615210826151d1565b602082019050919050565b5f6020820190508181035f830152615232816151f9565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f61526d601383614660565b915061527882615239565b602082019050919050565b5f6020820190508181035f83015261529a81615261565b9050919050565b7f457863656564732057616c6c65740000000000000000000000000000000000005f82015250565b5f6152d5600e83614660565b91506152e0826152a1565b602082019050919050565b5f6020820190508181035f830152615302816152c9565b9050919050565b5f61531382614625565b915061531e83614625565b925082820390508181111561533657615335615109565b5b92915050565b5f61534682614625565b915061535183614625565b925082820261535f81614625565b9150828204841483151761537657615375615109565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6153b482614625565b91506153bf83614625565b9250826153cf576153ce61537d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615434602183614660565b915061543f826153da565b604082019050919050565b5f6020820190508181035f83015261546181615428565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6154f481614793565b82525050565b5f61550583836154eb565b60208301905092915050565b5f602082019050919050565b5f615527826154c2565b61553181856154cc565b935061553c836154dc565b805f5b8381101561556c57815161555388826154fa565b975061555e83615511565b92505060018101905061553f565b5085935050505092915050565b5f60a08201905061558c5f83018861462e565b6155996020830187614bda565b81810360408301526155ab818661551d565b90506155ba60608301856147a4565b6155c7608083018461462e565b9695505050505050565b5f6040820190506155e45f83018561462e565b81810360208301526155f6818461551d565b90509392505050565b5f6080820190506156125f830187614bda565b8181036020830152615624818661551d565b905061563360408301856147a4565b615640606083018461462e565b9594505050505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b4d884ebd471d23300dfa8e341611e67b38c491745318f668e415b002c186ad064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610384575f3560e01c8063751039fc116101d0578063bf56b37111610101578063df8408fe1161009f578063f242ab411161006e578063f242ab4114610cb3578063f2fde38b14610cdd578063f71b9bbf14610d05578063f872858a14610d2d5761038b565b8063df8408fe14610c23578063e6b2603b14610c4b578063e9fd339414610c61578063ee828db314610c8b5761038b565b8063c3587980116100db578063c358798014610b5b578063c867d60b14610b83578063cea9d26f14610bbf578063dd62ed3e14610be75761038b565b8063bf56b37114610adf578063c04a541414610b09578063c16dd4a414610b335761038b565b806395d89b411161016e578063a9059cbb11610148578063a9059cbb14610a2b578063a996d6ce14610a67578063ae85ade614610a8f578063b94b0aef14610ab75761038b565b806395d89b411461099b578063a1c24780146109c5578063a457c2d7146109ef5761038b565b806388f8df0a116101aa57806388f8df0a146108e15780638b42507f1461090b5780638da5cb5b1461094757806392734aee146109715761038b565b8063751039fc146108775780637d1db4a51461088d578063807c2d9c146108b75761038b565b8063313ce567116102b55780635c85974f1161025357806370a082311161022257806370a08231146107d5578063715018a614610811578063728d41c91461082757806372ac24861461084f5761038b565b80635c85974f146107315780635e42358c14610759578063651a8987146107835780636ddd1713146107ab5761038b565b8063468c7ee21161028f578063468c7ee21461067d5780634974d88f146106a55780635342acb4146106cd57806359fac517146107095761038b565b8063313ce567146105db57806339509351146106055780633ecad271146106415761038b565b806318160ddd1161032257806325519cf2116102fc57806325519cf21461053557806327c8f8351461055d5780632b112e49146105875780632fb97b37146105b15761038b565b806318160ddd146104a75780631d865c30146104d157806323b872dd146104f95761038b565b80630758d9241161035e5780630758d924146103ed5780630930907b14610417578063095ea7b314610441578063111a46511461047d5761038b565b806301339c211461038f5780630445b6671461039957806306fdde03146103c35761038b565b3661038b57005b5f80fd5b610397610d57565b005b3480156103a4575f80fd5b506103ad611315565b6040516103ba919061463d565b60405180910390f35b3480156103ce575f80fd5b506103d761131b565b6040516103e491906146e0565b60405180910390f35b3480156103f8575f80fd5b506104016113ab565b60405161040e919061477a565b60405180910390f35b348015610422575f80fd5b5061042b6113d1565b60405161043891906147b3565b60405180910390f35b34801561044c575f80fd5b5061046760048036038101906104629190614824565b6113f5565b604051610474919061487c565b60405180910390f35b348015610488575f80fd5b50610491611412565b60405161049e919061487c565b60405180910390f35b3480156104b2575f80fd5b506104bb611424565b6040516104c8919061463d565b60405180910390f35b3480156104dc575f80fd5b506104f760048036038101906104f29190614895565b61142d565b005b348015610504575f80fd5b5061051f600480360381019061051a91906148e5565b6114f4565b60405161052c919061487c565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190614895565b6115e6565b005b348015610568575f80fd5b506105716116ad565b60405161057e91906147b3565b60405180910390f35b348015610592575f80fd5b5061059b6116d1565b6040516105a8919061463d565b60405180910390f35b3480156105bc575f80fd5b506105c561174e565b6040516105d291906147b3565b60405180910390f35b3480156105e6575f80fd5b506105ef611773565b6040516105fc9190614950565b60405180910390f35b348015610610575f80fd5b5061062b60048036038101906106269190614824565b611788565b604051610638919061487c565b60405180910390f35b34801561064c575f80fd5b5061066760048036038101906106629190614969565b611836565b604051610674919061487c565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190614969565b611853565b005b3480156106b0575f80fd5b506106cb60048036038101906106c691906149be565b611912565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190614969565b6119ab565b604051610700919061487c565b60405180910390f35b348015610714575f80fd5b5061072f600480360381019061072a9190614969565b6119c8565b005b34801561073c575f80fd5b50610757600480360381019061075291906149e9565b611a88565b005b348015610764575f80fd5b5061076d611b0e565b60405161077a919061487c565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a49190614a14565b611b21565b005b3480156107b6575f80fd5b506107bf611bf5565b6040516107cc919061487c565b60405180910390f35b3480156107e0575f80fd5b506107fb60048036038101906107f69190614969565b611c08565b604051610808919061463d565b60405180910390f35b34801561081c575f80fd5b50610825611c4e565b005b348015610832575f80fd5b5061084d600480360381019061084891906149e9565b611cd5565b005b34801561085a575f80fd5b5061087560048036038101906108709190614969565b611d5b565b005b348015610882575f80fd5b5061088b611e1a565b005b348015610898575f80fd5b506108a1611edf565b6040516108ae919061463d565b60405180910390f35b3480156108c2575f80fd5b506108cb611ee5565b6040516108d8919061463d565b60405180910390f35b3480156108ec575f80fd5b506108f5611eeb565b604051610902919061463d565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c9190614969565b611ef1565b60405161093e919061487c565b60405180910390f35b348015610952575f80fd5b5061095b611f0e565b60405161096891906147b3565b60405180910390f35b34801561097c575f80fd5b50610985611f35565b60405161099291906147b3565b60405180910390f35b3480156109a6575f80fd5b506109af611f5a565b6040516109bc91906146e0565b60405180910390f35b3480156109d0575f80fd5b506109d9611fea565b6040516109e6919061463d565b60405180910390f35b3480156109fa575f80fd5b50610a156004803603810190610a109190614824565b611ff0565b604051610a22919061487c565b60405180910390f35b348015610a36575f80fd5b50610a516004803603810190610a4c9190614824565b6120b8565b604051610a5e919061487c565b60405180910390f35b348015610a72575f80fd5b50610a8d6004803603810190610a889190614969565b6120d6565b005b348015610a9a575f80fd5b50610ab56004803603810190610ab09190614a14565b612195565b005b348015610ac2575f80fd5b50610add6004803603810190610ad89190614a52565b612269565b005b348015610aea575f80fd5b50610af3612338565b604051610b00919061463d565b60405180910390f35b348015610b14575f80fd5b50610b1d61233e565b604051610b2a91906147b3565b60405180910390f35b348015610b3e575f80fd5b50610b596004803603810190610b549190614a14565b612363565b005b348015610b66575f80fd5b50610b816004803603810190610b7c9190614969565b612492565b005b348015610b8e575f80fd5b50610ba96004803603810190610ba49190614969565b612551565b604051610bb6919061487c565b60405180910390f35b348015610bca575f80fd5b50610be56004803603810190610be091906148e5565b61256e565b005b348015610bf2575f80fd5b50610c0d6004803603810190610c089190614aa2565b61273a565b604051610c1a919061463d565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c449190614a14565b6127bc565b005b348015610c56575f80fd5b50610c5f612890565b005b348015610c6c575f80fd5b50610c756129ca565b604051610c82919061487c565b60405180910390f35b348015610c96575f80fd5b50610cb16004803603810190610cac91906149be565b6129dd565b005b348015610cbe575f80fd5b50610cc7612a76565b604051610cd491906147b3565b60405180910390f35b348015610ce8575f80fd5b50610d036004803603810190610cfe9190614969565b612a9b565b005b348015610d10575f80fd5b50610d2b6004803603810190610d269190614969565b612b91565b005b348015610d38575f80fd5b50610d41612c50565b604051610d4e919061487c565b60405180910390f35b610d5f612c63565b73ffffffffffffffffffffffffffffffffffffffff16610d7d611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90614b2a565b60405180910390fd5b5f601b5414610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90614b92565b60405180910390fd5b43601b819055506001601c60016101000a81548160ff0219169083151502179055505f60115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905060016004819055505f6005819055505f60068190555060016007819055505f6008819055505f600981905550601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f80610ef1611f0e565b426040518863ffffffff1660e01b8152600401610f1396959493929190614be9565b60606040518083038185885af1158015610f2f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f549190614c5c565b5050505f601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe79190614cc0565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110969190614cc0565b6040518363ffffffff1660e01b81526004016110b3929190614ceb565b602060405180830381865afa1580156110ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f29190614cc0565b905080601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160145f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f1960125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001601c60026101000a81548160ff0219169083151502179055506001601c60046101000a81548160ff0219169083151502179055506001601c60056101000a81548160ff021916908315150217905550505050565b601a5481565b60606001805461132a90614d3f565b80601f016020809104026020016040519081016040528092919081815260200182805461135690614d3f565b80156113a15780601f10611378576101008083540402835291602001916113a1565b820191905f5260205f20905b81548152906001019060200180831161138457829003601f168201915b5050505050905090565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f611408611401612c63565b8484612c6a565b6001905092915050565b601c5f9054906101000a900460ff1681565b5f601754905090565b611435612c63565b73ffffffffffffffffffffffffffffffffffffffff16611453611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090614b2a565b60405180910390fd5b8260078190555081600881905550806009819055506114e96009546114db600854600754612e2d90919063ffffffff16565b612e2d90919063ffffffff16565b600b81905550505050565b5f611500848484612e8a565b506115db8461150d612c63565b6115d6856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060125f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61158d612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b612c6a565b600190509392505050565b6115ee612c63565b73ffffffffffffffffffffffffffffffffffffffff1661160c611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990614b2a565b60405180910390fd5b8260048190555081600581905550806006819055506116a2600654611694600554600454612e2d90919063ffffffff16565b612e2d90919063ffffffff16565b600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b5f6117496116fe7f0000000000000000000000000000000000000000000000000000000000000000611c08565b61173b61172a7f000000000000000000000000000000000000000000000000000000000000dead611c08565b6017546135b090919063ffffffff16565b6135b090919063ffffffff16565b905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900460ff16905090565b5f61182c611794612c63565b846118278560125f6117a4612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b612c6a565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b61185b612c63565b73ffffffffffffffffffffffffffffffffffffffff16611879611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690614b2a565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61191a612c63565b73ffffffffffffffffffffffffffffffffffffffff16611938611f0e565b73ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614b2a565b60405180910390fd5b80601c60056101000a81548160ff02191690831515021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b6119d0612c63565b73ffffffffffffffffffffffffffffffffffffffff166119ee611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90614b2a565b60405180910390fd5b80601c60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a90612c63565b73ffffffffffffffffffffffffffffffffffffffff16611aae611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90614b2a565b60405180910390fd5b8060188190555050565b601c60049054906101000a900460ff1681565b611b29612c63565b73ffffffffffffffffffffffffffffffffffffffff16611b47611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9490614b2a565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601c60029054906101000a900460ff1681565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611c56612c63565b73ffffffffffffffffffffffffffffffffffffffff16611c74611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190614b2a565b60405180910390fd5b611cd35f6135f9565b565b611cdd612c63565b73ffffffffffffffffffffffffffffffffffffffff16611cfb611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614b2a565b60405180910390fd5b8060198190555050565b611d63612c63565b73ffffffffffffffffffffffffffffffffffffffff16611d81611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614b2a565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614db9565b60405180910390fd5b5f601c60046101000a81548160ff0219169083151502179055505f601c60056101000a81548160ff021916908315150217905550565b60185481565b60195481565b600a5481565b6016602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060028054611f6990614d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9590614d3f565b8015611fe05780601f10611fb757610100808354040283529160200191611fe0565b820191905f5260205f20905b815481529060010190602001808311611fc357829003601f168201915b5050505050905090565b600b5481565b5f6120ae611ffc612c63565b846120a98560405180606001604052806025815260200161564a6025913960125f612025612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b612c6a565b6001905092915050565b5f6120cb6120c4612c63565b8484612e8a565b506001905092915050565b6120de612c63565b73ffffffffffffffffffffffffffffffffffffffff166120fc611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614b2a565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61219d612c63565b73ffffffffffffffffffffffffffffffffffffffff166121bb611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890614b2a565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef90614db9565b60405180910390fd5b81601c60026101000a81548160ff02191690831515021790555080601c60036101000a81548160ff02191690831515021790555082601a81905550505050565b601b5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61236b612c63565b73ffffffffffffffffffffffffffffffffffffffff16612389611f0e565b73ffffffffffffffffffffffffffffffffffffffff16146123df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d690614b2a565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801561248e578060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5050565b61249a612c63565b73ffffffffffffffffffffffffffffffffffffffff166124b8611f0e565b73ffffffffffffffffffffffffffffffffffffffff161461250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250590614b2a565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db9565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff168383604051602401612628929190614dd7565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516126b29190614e42565b5f604051808303815f865af19150503d805f81146126eb576040519150601f19603f3d011682016040523d82523d5f602084013e6126f0565b606091505b5050905080612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272b90614ea2565b60405180910390fd5b50505050565b5f60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c4612c63565b73ffffffffffffffffffffffffffffffffffffffff166127e2611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282f90614b2a565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461291f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291690614db9565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161294490614ee3565b5f6040518083038185875af1925050503d805f811461297e576040519150601f19603f3d011682016040523d82523d5f602084013e612983565b606091505b50509050806129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614f41565b60405180910390fd5b50565b601c60039054906101000a900460ff1681565b6129e5612c63565b73ffffffffffffffffffffffffffffffffffffffff16612a03611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5090614b2a565b60405180910390fd5b80601c60046101000a81548160ff02191690831515021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612aa3612c63565b73ffffffffffffffffffffffffffffffffffffffff16612ac1611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614b2a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7c90614fcf565b60405180910390fd5b612b8e816135f9565b50565b612b99612c63565b73ffffffffffffffffffffffffffffffffffffffff16612bb7611f0e565b73ffffffffffffffffffffffffffffffffffffffff1614612c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0490614b2a565b60405180910390fd5b80601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60059054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf9061505d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3d906150eb565b60405180910390fd5b8060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e20919061463d565b60405180910390a3505050565b5f808284612e3b9190615136565b905083811015612e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e77906151b3565b60405180910390fd5b8091505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ec2575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ef9575f80fd5b5f8211612f04575f80fd5b601d60149054906101000a900460ff1615612f2b57612f248484846136ba565b9050613547565b601c60019054906101000a900460ff1661301a5760135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612fda575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b613019576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130109061521b565b60405180910390fd5b5b5f601b54141580156130385750601c5f9054906101000a900460ff16155b1561304657613045613884565b5b5f61305030611c08565b90505f601a5482101590508080156130755750601d60149054906101000a900460ff16155b80156130c8575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130e05750601c60029054906101000a900460ff165b8015613133575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613186575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613195576131948261394f565b5b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613233575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561324b5750601c60049054906101000a900460ff165b1561329657601854841115613295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328c90615283565b60405180910390fd5b5b61331d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060115f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6133698787613bc1565b61337d57613378878787613d1d565b61337f565b845b9050601c60059054906101000a900460ff1680156133e4575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561344957601954613407826133f989611c08565b612e2d90919063ffffffff16565b1115613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f906152eb565b60405180910390fd5b5b6134998160115f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613537919061463d565b60405180910390a3600193505050505b9392505050565b5f838311158290613595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358c91906146e0565b60405180910390fd5b505f83856135a39190615309565b9050809150509392505050565b5f6135f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061354e565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f613742826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354e9092919063ffffffff16565b60115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137d38260115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613871919061463d565b60405180910390a3600190509392505050565b6003601b546138939190615136565b43116138a5576138a4606380613f36565b5b6003601b546138b49190615136565b431180156138d057506019601b546138cc9190615136565b4311155b156138e1576138e0602d80613f36565b5b6019601b546138f09190615136565b43111561394d57613902600380613f36565b6001601c5f6101000a81548160ff0219169083151502179055506001600481905550600160058190555060016006819055506002600781905550600160088190555060016009819055505b565b6001601d60146101000a81548160ff021916908315150217905550601c60039054906101000a900460ff161561398557601a5490505b5f61399d600b54600a54612e2d90919063ffffffff16565b90505f6139b7600854600554612e2d90919063ffffffff16565b90505f6139d1600954600654612e2d90919063ffffffff16565b90505f613a0c60026139fe866139f0878a613f4890919063ffffffff16565b613fbf90919063ffffffff16565b613fbf90919063ffffffff16565b90505f613a2282876135b090919063ffffffff16565b90505f479050613a3182614008565b5f613a4582476135b090919063ffffffff16565b90505f613a6e613a5f600289613fbf90919063ffffffff16565b896135b090919063ffffffff16565b90505f613aa96002613a9b84613a8d8c88613f4890919063ffffffff16565b613fbf90919063ffffffff16565b613fbf90919063ffffffff16565b90505f613ad183613ac38a87613f4890919063ffffffff16565b613fbf90919063ffffffff16565b90505f613af982613aeb85886135b090919063ffffffff16565b6135b090919063ffffffff16565b90505f821115613b0d57613b0c8261427a565b5b5f811115613b7b57600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613b79573d5f803e3d5ffd5b505b5f83118015613b8957505f88115b15613b9957613b9888846144c8565b5b50505050505050505050505f601d60146101000a81548160ff02191690831515021790555050565b5f60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613c5d575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613c6b5760019050613d17565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613d06575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613d13575f9050613d17565b5f90505b92915050565b5f8060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613d9e57613d97601054613d89600a5486613f4890919063ffffffff16565b613fbf90919063ffffffff16565b9050613e1a565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613e1957613e16601054613e08600b5486613f4890919063ffffffff16565b613fbf90919063ffffffff16565b90505b5b5f811115613f1957613e728160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2d90919063ffffffff16565b60115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f10919061463d565b60405180910390a35b613f2c81846135b090919063ffffffff16565b9150509392505050565b81600a8190555080600b819055505050565b5f808303613f58575f9050613fb9565b5f8284613f65919061533c565b9050828482613f7491906153aa565b14613fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fab9061544a565b60405180910390fd5b809150505b92915050565b5f61400083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145c4565b905092915050565b5f600267ffffffffffffffff81111561402457614023615468565b5b6040519080825280602002602001820160405280156140525781602001602082028036833780820191505090505b50905030815f8151811061406957614068615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561410e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141329190614cc0565b8160018151811061414657614145615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ad30601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c6a565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614210959493929190615579565b5f604051808303815f87803b158015614227575f80fd5b505af1158015614239573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161426e9291906155d1565b60405180910390a15050565b5f600267ffffffffffffffff81111561429657614295615468565b5b6040519080825280602002602001820160405280156142c45781602001602082028036833780820191505090505b509050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614332573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143569190614cc0565b815f8151811061436957614368615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106143d9576143d8615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161449694939291906155ff565b5f604051808303818588803b1580156144ad575f80fd5b505af11580156144bf573d5f803e3d5ffd5b50505050505050565b6144f530601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c6a565b601c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161457c96959493929190614be9565b60606040518083038185885af1158015614598573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145bd9190614c5c565b5050505050565b5f808311829061460a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161460191906146e0565b60405180910390fd5b505f838561461891906153aa565b9050809150509392505050565b5f819050919050565b61463781614625565b82525050565b5f6020820190506146505f83018461462e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561468d578082015181840152602081019050614672565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6146b282614656565b6146bc8185614660565b93506146cc818560208601614670565b6146d581614698565b840191505092915050565b5f6020820190508181035f8301526146f881846146a8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61474261473d61473884614700565b61471f565b614700565b9050919050565b5f61475382614728565b9050919050565b5f61476482614749565b9050919050565b6147748161475a565b82525050565b5f60208201905061478d5f83018461476b565b92915050565b5f61479d82614700565b9050919050565b6147ad81614793565b82525050565b5f6020820190506147c65f8301846147a4565b92915050565b5f80fd5b6147d981614793565b81146147e3575f80fd5b50565b5f813590506147f4816147d0565b92915050565b61480381614625565b811461480d575f80fd5b50565b5f8135905061481e816147fa565b92915050565b5f806040838503121561483a576148396147cc565b5b5f614847858286016147e6565b925050602061485885828601614810565b9150509250929050565b5f8115159050919050565b61487681614862565b82525050565b5f60208201905061488f5f83018461486d565b92915050565b5f805f606084860312156148ac576148ab6147cc565b5b5f6148b986828701614810565b93505060206148ca86828701614810565b92505060406148db86828701614810565b9150509250925092565b5f805f606084860312156148fc576148fb6147cc565b5b5f614909868287016147e6565b935050602061491a868287016147e6565b925050604061492b86828701614810565b9150509250925092565b5f60ff82169050919050565b61494a81614935565b82525050565b5f6020820190506149635f830184614941565b92915050565b5f6020828403121561497e5761497d6147cc565b5b5f61498b848285016147e6565b91505092915050565b61499d81614862565b81146149a7575f80fd5b50565b5f813590506149b881614994565b92915050565b5f602082840312156149d3576149d26147cc565b5b5f6149e0848285016149aa565b91505092915050565b5f602082840312156149fe576149fd6147cc565b5b5f614a0b84828501614810565b91505092915050565b5f8060408385031215614a2a57614a296147cc565b5b5f614a37858286016147e6565b9250506020614a48858286016149aa565b9150509250929050565b5f805f60608486031215614a6957614a686147cc565b5b5f614a7686828701614810565b9350506020614a87868287016149aa565b9250506040614a98868287016149aa565b9150509250925092565b5f8060408385031215614ab857614ab76147cc565b5b5f614ac5858286016147e6565b9250506020614ad6858286016147e6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614b14602083614660565b9150614b1f82614ae0565b602082019050919050565b5f6020820190508181035f830152614b4181614b08565b9050919050565b7f416c7265616479206c61756e63686564210000000000000000000000000000005f82015250565b5f614b7c601183614660565b9150614b8782614b48565b602082019050919050565b5f6020820190508181035f830152614ba981614b70565b9050919050565b5f819050919050565b5f614bd3614bce614bc984614bb0565b61471f565b614625565b9050919050565b614be381614bb9565b82525050565b5f60c082019050614bfc5f8301896147a4565b614c09602083018861462e565b614c166040830187614bda565b614c236060830186614bda565b614c3060808301856147a4565b614c3d60a083018461462e565b979650505050505050565b5f81519050614c56816147fa565b92915050565b5f805f60608486031215614c7357614c726147cc565b5b5f614c8086828701614c48565b9350506020614c9186828701614c48565b9250506040614ca286828701614c48565b9150509250925092565b5f81519050614cba816147d0565b92915050565b5f60208284031215614cd557614cd46147cc565b5b5f614ce284828501614cac565b91505092915050565b5f604082019050614cfe5f8301856147a4565b614d0b60208301846147a4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614d5657607f821691505b602082108103614d6957614d68614d12565b5b50919050565b7f496e76616c69642043616c6c65720000000000000000000000000000000000005f82015250565b5f614da3600e83614660565b9150614dae82614d6f565b602082019050919050565b5f6020820190508181035f830152614dd081614d97565b9050919050565b5f604082019050614dea5f8301856147a4565b614df7602083018461462e565b9392505050565b5f81519050919050565b5f81905092915050565b5f614e1c82614dfe565b614e268185614e08565b9350614e36818560208601614670565b80840191505092915050565b5f614e4d8284614e12565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f614e8c601483614660565b9150614e9782614e58565b602082019050919050565b5f6020820190508181035f830152614eb981614e80565b9050919050565b50565b5f614ece5f83614e08565b9150614ed982614ec0565b5f82019050919050565b5f614eed82614ec3565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f614f2b601483614660565b9150614f3682614ef7565b602082019050919050565b5f6020820190508181035f830152614f5881614f1f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614fb9602683614660565b9150614fc482614f5f565b604082019050919050565b5f6020820190508181035f830152614fe681614fad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615047602483614660565b915061505282614fed565b604082019050919050565b5f6020820190508181035f8301526150748161503b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150d5602283614660565b91506150e08261507b565b604082019050919050565b5f6020820190508181035f830152615102816150c9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61514082614625565b915061514b83614625565b925082820190508082111561516357615162615109565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61519d601b83614660565b91506151a882615169565b602082019050919050565b5f6020820190508181035f8301526151ca81615191565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615205601683614660565b9150615210826151d1565b602082019050919050565b5f6020820190508181035f830152615232816151f9565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f61526d601383614660565b915061527882615239565b602082019050919050565b5f6020820190508181035f83015261529a81615261565b9050919050565b7f457863656564732057616c6c65740000000000000000000000000000000000005f82015250565b5f6152d5600e83614660565b91506152e0826152a1565b602082019050919050565b5f6020820190508181035f830152615302816152c9565b9050919050565b5f61531382614625565b915061531e83614625565b925082820390508181111561533657615335615109565b5b92915050565b5f61534682614625565b915061535183614625565b925082820261535f81614625565b9150828204841483151761537657615375615109565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6153b482614625565b91506153bf83614625565b9250826153cf576153ce61537d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615434602183614660565b915061543f826153da565b604082019050919050565b5f6020820190508181035f83015261546181615428565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6154f481614793565b82525050565b5f61550583836154eb565b60208301905092915050565b5f602082019050919050565b5f615527826154c2565b61553181856154cc565b935061553c836154dc565b805f5b8381101561556c57815161555388826154fa565b975061555e83615511565b92505060018101905061553f565b5085935050505092915050565b5f60a08201905061558c5f83018861462e565b6155996020830187614bda565b81810360408301526155ab818661551d565b90506155ba60608301856147a4565b6155c7608083018461462e565b9695505050505050565b5f6040820190506155e45f83018561462e565b81810360208301526155f6818461551d565b90509392505050565b5f6080820190506156125f830187614bda565b8181036020830152615624818661551d565b905061563360408301856147a4565b615640606083018461462e565b9594505050505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b4d884ebd471d23300dfa8e341611e67b38c491745318f668e415b002c186ad064736f6c63430008150033

Deployed Bytecode Sourcemap

7505:17217:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16740:1091;;;:::i;:::-;;9063:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11009:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9381:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7803:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12347:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9158:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11286:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22344:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13121:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22039;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7715:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11680:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8357:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11195:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11844:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8672:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23744:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22884:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8615:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24309:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23505:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9296:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23127:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9220:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11394:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1972:94;;;;;;;;;;;;;:::i;:::-;;23391:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23618:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22651:119;;;;;;;;;;;;;:::i;:::-;;8909:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8985:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8078:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8783:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1663:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8397:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11100:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12070:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12946:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24631:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23263:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24072:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9126:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8264:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23860:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24531:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8724:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21759:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11525:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22997:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21573:178;;;;;;;;;;;;;:::i;:::-;;9258:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22778:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9419:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24432:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9336:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16740:1091;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16816:1:::1;16802:10;;:15;16794:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;16863:12;16850:10;:25;;;;16902:4;16886:13;;:20;;;;;;;;;;;;;;;;;;16919:15;16937:9;:24;16955:4;16937:24;;;;;;;;;;;;;;;;16919:42;;16995:1;16974:18;:22;;;;17019:1;17007:9;:13;;;;17048:1;17031:14;:18;;;;17084:1;17062:19;:23;;;;17109:1;17096:10;:14;;;;17139:1;17121:15;:19;;;;17153:9;;;;;;;;;;;:25;;;17187:9;17221:4;17241:10;17266:1;17282::::0;17298:7:::1;:5;:7::i;:::-;17320:15;17153:193;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17359:23;17401:9;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17359:62;;17434:17;17467:7;:15;;;17491:4;17498:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17467:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17434:82;;17547:4;17529:7;;:23;;;;;;;;;;;;;;;;;;17598:4;17565:12;:30;17586:7;;;;;;;;;;;17565:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17653:4;17613:19;:37;17641:7;;;;;;;;;;;17613:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17724:1;17715:11;17668;:26;17688:4;17668:26;;;;;;;;;;;;;;;:44;17703:7;;;;;;;;;;;17668:44;;;;;;;;;;;;;;;:58;;;;17753:4;17739:11;;:18;;;;;;;;;;;;;;;;;;17784:4;17768:13;;:20;;;;;;;;;;;;;;;;;;17819:4;17799:16;;:24;;;;;;;;;;;;;;;;;;16783:1048;;;16740:1091::o:0;9063:54::-;;;;:::o;11009:83::-;11046:13;11079:5;11072:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11009:83;:::o;9381:31::-;;;;;;;;;;;;;:::o;7803:81::-;;;:::o;12347:161::-;12422:4;12439:39;12448:12;:10;:12::i;:::-;12462:7;12471:6;12439:8;:39::i;:::-;12496:4;12489:11;;12347:161;;;;:::o;9158:26::-;;;;;;;;;;;;;:::o;11286:100::-;11339:7;11366:12;;11359:19;;11286:100;:::o;22344:299::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22468:15:::1;22446:19;:37;;;;22507:6;22494:10;:19;;;;22542:10;22524:15;:28;;;;22579:56;22619:15;;22579:35;22603:10;;22579:19;;:23;;:35;;;;:::i;:::-;:39;;:56;;;;:::i;:::-;22563:13;:72;;;;22344:299:::0;;;:::o;13121:297::-;13219:4;13236:36;13246:6;13254:9;13265:6;13236:9;:36::i;:::-;;13283:105;13292:6;13300:12;:10;:12::i;:::-;13314:73;13352:6;13314:73;;;;;;;;;;;;;;;;;:11;:19;13326:6;13314:19;;;;;;;;;;;;;;;:33;13334:12;:10;:12::i;:::-;13314:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;13283:8;:105::i;:::-;13406:4;13399:11;;13121:297;;;;;:::o;22039:::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22165:15:::1;22144:18;:36;;;;22203:6;22191:9;:18;;;;22237:10;22220:14;:27;;;;22275:53;22313:14;;22275:33;22298:9;;22275:18;;:22;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;22260:12;:68;;;;22039:297:::0;;;:::o;7715:81::-;;;:::o;11680:156::-;11733:7;11760:68;11805:22;11815:11;11805:9;:22::i;:::-;11760:40;11777:22;11787:11;11777:9;:22::i;:::-;11760:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;11753:75;;11680:156;:::o;8357:31::-;;;;;;;;;;;;;:::o;11195:83::-;11236:5;11261:9;;;;;;;;;;;11254:16;;11195:83;:::o;11844:218::-;11932:4;11949:83;11958:12;:10;:12::i;:::-;11972:7;11981:50;12020:10;11981:11;:25;11993:12;:10;:12::i;:::-;11981:25;;;;;;;;;;;;;;;:34;12007:7;11981:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11949:8;:83::i;:::-;12050:4;12043:11;;11844:218;;;;:::o;8672:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;23744:108::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23834:10:::1;23815:16;;:29;;;;;;;;;;;;;;;;;;23744:108:::0;:::o;22884:105::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22974:7:::1;22955:16;;:26;;;;;;;;;;;;;;;;;;22884:105:::0;:::o;8615:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;24309:115::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24408:7:::1;24381:9;;:35;;;;;;;;;;;;;;;;;;24309:115:::0;:::o;23505:101::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23590:8:::1;23575:12;:23;;;;23505:101:::0;:::o;9296:33::-;;;;;;;;;;;;;:::o;23127:128::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23240:7:::1;23212:19;:25;23232:4;23212:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23127:128:::0;;:::o;9220:31::-;;;;;;;;;;;;;:::o;11394:123::-;11460:7;11486:9;:18;11496:7;11486:18;;;;;;;;;;;;;;;;11479:25;;11394:123;;;:::o;1972:94::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2037:21:::1;2055:1;2037:9;:21::i;:::-;1972:94::o:0;23391:106::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23481:8:::1;23468:10;:21;;;;23391:106:::0;:::o;23618:118::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23718:10:::1;23698:17;;:30;;;;;;;;;;;;;;;;;;23618:118:::0;:::o;22651:119::-;9524:16;;;;;;;;;;;9510:30;;:10;:30;;;9502:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22721:5:::1;22705:13;;:21;;;;;;;;;;;;;;;;;;22757:5;22737:16;;:25;;;;;;;;;;;;;;;;;;22651:119::o:0;8909:59::-;;;;:::o;8985:56::-;;;;:::o;8078:83::-;;;;:::o;8783:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1663:87::-;1709:7;1736:6;;;;;;;;;;;1729:13;;1663:87;:::o;8397:24::-;;;;;;;;;;;;;:::o;11100:87::-;11139:13;11172:7;11165:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:87;:::o;8168:::-;;;;:::o;12070:269::-;12163:4;12180:129;12189:12;:10;:12::i;:::-;12203:7;12212:96;12251:15;12212:96;;;;;;;;;;;;;;;;;:11;:25;12224:12;:10;:12::i;:::-;12212:25;;;;;;;;;;;;;;;:34;12238:7;12212:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12180:8;:129::i;:::-;12327:4;12320:11;;12070:269;;;;:::o;12946:167::-;13024:4;13041:42;13051:12;:10;:12::i;:::-;13065:9;13076:6;13041:9;:42::i;:::-;;13101:4;13094:11;;12946:167;;;;:::o;24631:86::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24704:5:::1;24695:6;;:14;;;;;;;;;;;;;;;;;;24631:86:::0;:::o;23263:120::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23368:7:::1;23344:15;:21;23360:4;23344:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23263:120:::0;;:::o;24072:229::-;9524:16;;;;;;;;;;;9510:30;;:10;:30;;;9502:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;24215:8:::1;24201:11;;:22;;;;;;;;;;;;;;;;;;24248:8;24234:11;;:22;;;;;;;;;;;;;;;;;;24283:10;24267:13;:26;;;;24072:229:::0;;;:::o;9126:25::-;;;;:::o;8264:86::-;;;;;;;;;;;;;:::o;23860:204::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23964:7:::1;23942:12;:19;23955:5;23942:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;23985:7;23982:75;;;24038:7;24009:19;:26;24029:5;24009:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;23982:75;23860:204:::0;;:::o;24531:92::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24610:5:::1;24598:9;;:17;;;;;;;;;;;;;;;;;;24531:92:::0;:::o;8724:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21759:272::-;9524:16;;;;;;;;;;;9510:30;;:10;:30;;;9502:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21859:12:::1;21885:6;21877:20;;21952:9;21963:7;21898:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21877:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21858:114;;;21991:7;21983:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;21847:184;21759:272:::0;;;:::o;11525:143::-;11606:7;11633:11;:18;11645:5;11633:18;;;;;;;;;;;;;;;:27;11652:7;11633:27;;;;;;;;;;;;;;;;11626:34;;11525:143;;;;:::o;22997:122::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23104:7:::1;23078:17;:23;23096:4;23078:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22997:122:::0;;:::o;21573:178::-;9524:16;;;;;;;;;;;9510:30;;:10;:30;;;9502:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21628:7:::1;21648:10;21640:24;;21672:21;21640:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21627:71;;;21717:2;21709:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21615:136;21573:178::o:0;9258:31::-;;;;;;;;;;;;;:::o;22778:98::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22861:7:::1;22845:13;;:23;;;;;;;;;;;;;;;;;;22778:98:::0;:::o;9419:22::-;;;;;;;;;;;;;:::o;2074:229::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2197:1:::1;2177:22;;:8;:22;;::::0;2155:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2276:19;2286:8;2276:9;:19::i;:::-;2074:229:::0;:::o;24432:91::-;1895:12;:10;:12::i;:::-;1884:23;;:7;:5;:7::i;:::-;:23;;;1876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24510:5:::1;24500:7;;:15;;;;;;;;;;;;;;;;;;24432:91:::0;:::o;9336:36::-;;;;;;;;;;;;;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;12516:337::-;12626:1;12609:19;;:5;:19;;;12601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12707:1;12688:21;;:7;:21;;;12680:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12791:6;12761:11;:18;12773:5;12761:18;;;;;;;;;;;;;;;:27;12780:7;12761:27;;;;;;;;;;;;;;;:36;;;;12829:7;12813:32;;12822:5;12813:32;;;12838:6;12813:32;;;;;;:::i;:::-;;;;;;;;12516:337;;;:::o;2517:181::-;2575:7;2595:9;2611:1;2607;:5;;;;:::i;:::-;2595:17;;2636:1;2631;:6;;2623:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2689:1;2682:8;;;2517:181;;;;:::o;13426:1877::-;13513:4;13558:1;13540:20;;:6;:20;;;13532:29;;;;;;13601:1;13580:23;;:9;:23;;;13572:32;;;;;;13632:1;13623:6;:10;13615:19;;;;;;13655:6;;;;;;;;;;;13651:1643;;;13685:41;13700:6;13708:9;13719:6;13685:14;:41::i;:::-;13678:48;;;;13651:1643;13775:13;;;;;;;;;;;13770:146;;13817:17;:25;13835:6;13817:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;13846:17;:28;13864:9;13846:28;;;;;;;;;;;;;;;;;;;;;;;;;13817:57;13809:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13770:146;13950:1;13936:10;;:15;;:34;;;;;13956:14;;;;;;;;;;;13955:15;13936:34;13932:93;;;13991:18;:16;:18::i;:::-;13932:93;14041:28;14072:24;14090:4;14072:9;:24::i;:::-;14041:55;;14111:28;14166:13;;14142:20;:37;;14111:68;;14218:23;:52;;;;;14264:6;;;;;;;;;;;14263:7;14218:52;:95;;;;;14293:12;:20;14306:6;14293:20;;;;;;;;;;;;;;;;;;;;;;;;;14292:21;14218:95;:128;;;;;14335:11;;;;;;;;;;;14218:128;:175;;;;;14368:17;:25;14386:6;14368:25;;;;;;;;;;;;;;;;;;;;;;;;;14367:26;14218:175;:225;;;;;14415:17;:28;14433:9;14415:28;;;;;;;;;;;;;;;;;;;;;;;;;14414:29;14218:225;14196:332;;;14482:30;14491:20;14482:8;:30::i;:::-;14196:332;14548:15;:23;14564:6;14548:23;;;;;;;;;;;;;;;;;;;;;;;;;14547:24;:55;;;;;14576:15;:26;14592:9;14576:26;;;;;;;;;;;;;;;;;;;;;;;;;14575:27;14547:55;:72;;;;;14606:13;;;;;;;;;;;14547:72;14544:166;;;14658:12;;14648:6;:22;;14640:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14544:166;14759:53;14781:6;14759:53;;;;;;;;;;;;;;;;;:9;:17;14769:6;14759:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14739:9;:17;14749:6;14739:17;;;;;;;;;;;;;;;:73;;;;14829:19;14851:34;14868:6;14875:9;14851:16;:34::i;:::-;:80;;14897:34;14905:6;14913:9;14924:6;14897:7;:34::i;:::-;14851:80;;;14888:6;14851:80;14829:102;;14951:16;;;;;;;;;;;:51;;;;;14972:19;:30;14992:9;14972:30;;;;;;;;;;;;;;;;;;;;;;;;;14971:31;14951:51;14948:168;;;15072:10;;15031:37;15056:11;15031:20;15041:9;15031;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;15023:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14948:168;15155:37;15180:11;15155:9;:20;15165:9;15155:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15132:9;:20;15142:9;15132:20;;;;;;;;;;;;;;;:60;;;;15231:9;15214:40;;15223:6;15214:40;;;15242:11;15214:40;;;;;;:::i;:::-;;;;;;;;15276:4;15269:11;;;;;13426:1877;;;;;;:::o;2850:192::-;2936:7;2969:1;2964;:6;;2972:12;2956:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2996:9;3012:1;3008;:5;;;;:::i;:::-;2996:17;;3033:1;3026:8;;;2850:192;;;;;:::o;2706:136::-;2764:7;2791:43;2795:1;2798;2791:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2784:50;;2706:136;;;;:::o;2311:173::-;2367:16;2386:6;;;;;;;;;;;2367:25;;2412:8;2403:6;;:17;;;;;;;;;;;;;;;;;;2467:8;2436:40;;2457:8;2436:40;;;;;;;;;;;;2356:128;2311:173;:::o;15311:330::-;15404:4;15441:53;15463:6;15441:53;;;;;;;;;;;;;;;;;:9;:17;15451:6;15441:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15421:9;:17;15431:6;15421:17;;;;;;;;;;;;;;;:73;;;;15528:32;15553:6;15528:9;:20;15538:9;15528:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15505:9;:20;15515:9;15505:20;;;;;;;;;;;;;;;:55;;;;15593:9;15576:35;;15585:6;15576:35;;;15604:6;15576:35;;;;;;:::i;:::-;;;;;;;;15629:4;15622:11;;15311:330;;;;;:::o;17839:609::-;17920:1;17907:10;;:14;;;;:::i;:::-;17891:12;:30;17887:83;;17938:20;17952:2;17955;17938:13;:20::i;:::-;17887:83;18012:1;17999:10;;:14;;;;:::i;:::-;17984:12;:29;:64;;;;;18046:2;18033:10;;:15;;;;:::i;:::-;18017:12;:31;;17984:64;17980:117;;;18065:20;18079:2;18082;18065:13;:20::i;:::-;17980:117;18139:2;18126:10;;:15;;;;:::i;:::-;18111:12;:30;18107:320;;;18158:18;18172:1;18174;18158:13;:18::i;:::-;18208:4;18191:14;;:21;;;;;;;;;;;;;;;;;;18248:1;18227:18;:22;;;;18276:1;18264:9;:13;;;;18309:1;18292:14;:18;;;;18349:1;18327:19;:23;;;;18378:1;18365:10;:14;;;;18412:1;18394:15;:19;;;;18107:320;17839:609::o;18589:1422::-;9626:4;9617:6;;:13;;;;;;;;;;;;;;;;;;18663:11:::1;;;;;;;;;;;18660:47;;;18694:13;;18676:31;;18660:47;18720:19;18742:31;18759:13;;18742:12;;:16;;:31;;;;:::i;:::-;18720:53;;18786:23;18812:25;18826:10;;18812:9;;:13;;:25;;;;:::i;:::-;18786:51;;18933:21;18957:35;18976:15;;18957:14;;:18;;:35;;;;:::i;:::-;18933:59;;19005:19;19027:60;19085:1;19027:53;19068:11;19027:36;19047:15;19027;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;19005:82;;19098:21;19122:32;19142:11;19122:15;:19;;:32;;;;:::i;:::-;19098:56;;19167:22;19192:21;19167:46;;19224:31;19241:13;19224:16;:31::i;:::-;19266:22;19291:41;19317:14;19291:21;:25;;:41;;;;:::i;:::-;19266:66;;19345:19;19367:39;19383:22;19403:1;19383:15;:19;;:22;;;;:::i;:::-;19367:11;:15;;:39;;;;:::i;:::-;19345:61;;19427:26;19456:59;19513:1;19456:52;19496:11;19456:35;19475:15;19456:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;19427:88;;19526:21;19550:50;19588:11;19550:33;19569:13;19550:14;:18;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;19526:74;;19611:28;19642:57;19685:13;19642:38;19661:18;19642:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;19611:88;;19730:1;19714:13;:17;19711:61;;;19746:26;19758:13;19746:11;:26::i;:::-;19711:61;19811:1;19788:20;:24;19785:99;;;19835:17;;;;;;;;;;;19827:35;;:57;19863:20;19827:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19785:99;19921:1;19900:18;:22;:41;;;;;19940:1;19926:11;:15;19900:41;19897:104;;;19956:45;19969:11;19982:18;19956:12;:45::i;:::-;19897:104;18647:1364;;;;;;;;;;;9662:5:::0;9653:6;;:14;;;;;;;;;;;;;;;;;;18589:1422;:::o;15653:369::-;15737:4;15757:17;:25;15775:6;15757:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15786:17;:28;15804:9;15786:28;;;;;;;;;;;;;;;;;;;;;;;;;15757:57;15754:261;;;15838:4;15831:11;;;;15754:261;15873:12;:20;15886:6;15873:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;15897:12;:23;15910:9;15897:23;;;;;;;;;;;;;;;;;;;;;;;;;15873:47;15869:146;;;15944:5;15937:12;;;;15869:146;15998:5;15991:12;;15653:369;;;;;:::o;16030:702::-;16116:7;16146:14;16203:12;:20;16216:6;16203:20;;;;;;;;;;;;;;;;;;;;;;;;;16200:258;;;16257:44;16286:14;;16257:24;16268:12;;16257:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;16245:56;;16200:258;;;16340:12;:23;16353:9;16340:23;;;;;;;;;;;;;;;;;;;;;;;;;16337:121;;;16397:45;16427:14;;16397:25;16408:13;;16397:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;16385:57;;16337:121;16200:258;16489:1;16477:9;:13;16474:185;;;16538:39;16567:9;16538;:24;16556:4;16538:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16511:9;:24;16529:4;16511:24;;;;;;;;;;;;;;;:66;;;;16626:4;16601:42;;16610:6;16601:42;;;16633:9;16601:42;;;;;;:::i;:::-;;;;;;;;16474:185;16682:21;16693:9;16682:6;:10;;:21;;;;:::i;:::-;16675:28;;;16030:702;;;;;:::o;18456:125::-;18537:4;18522:12;:19;;;;18568:5;18552:13;:21;;;;18456:125;;:::o;3050:250::-;3108:7;3137:1;3132;:6;3128:47;;3162:1;3155:8;;;;3128:47;3187:9;3203:1;3199;:5;;;;:::i;:::-;3187:17;;3232:1;3227;3223;:5;;;;:::i;:::-;:10;3215:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3291:1;3284:8;;;3050:250;;;;;:::o;3308:132::-;3366:7;3393:39;3397:1;3400;3393:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3386:46;;3308:132;;;;:::o;20917:648::-;21043:21;21081:1;21067:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21043:40;;21112:4;21094;21099:1;21094:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21138:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21128:4;21133:1;21128:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;21167:56;21184:4;21199:9;;;;;;;;;;;21211:11;21167:8;:56::i;:::-;21262:9;;;;;;;;;;;:60;;;21337:11;21363:1;21407:4;21434;21470:15;21262:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21522:35;21539:11;21552:4;21522:35;;;;;;;:::i;:::-;;;;;;;;20972:593;20917:648;:::o;20019:372::-;20072:21;20110:1;20096:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20072:40;;20133:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20123:4;20128:1;20123:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20178:9;;;;;;;;;;;20160:4;20165:1;20160:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;20199:9;;;;;;;;;;;:60;;;20267:6;20289:1;20306:4;20334:6;;;;;;;;;;;20357:15;20199:184;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20061:330;20019:372;:::o;20399:510::-;20547:56;20564:4;20579:9;;;;;;;;;;;20591:11;20547:8;:56::i;:::-;20646:9;;;;;;;;;;;:25;;;20679:9;20712:4;20732:11;20758:1;20801;20844:16;;;;;;;;;;;20875:15;20646:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20399:510;;:::o;3448:278::-;3534:7;3566:1;3562;:5;3569:12;3554:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3593:9;3609:1;3605;:5;;;;:::i;:::-;3593:17;;3717:1;3710:8;;;3448:278;;;;;:::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:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:148::-;2334:9;2367:37;2398:5;2367:37;:::i;:::-;2354:50;;2262:148;;;:::o;2416:175::-;2525:59;2578:5;2525:59;:::i;:::-;2520:3;2513:72;2416:175;;:::o;2597:266::-;2712:4;2750:2;2739:9;2735:18;2727:26;;2763:93;2853:1;2842:9;2838:17;2829:6;2763:93;:::i;:::-;2597:266;;;;:::o;2869:96::-;2906:7;2935:24;2953:5;2935:24;:::i;:::-;2924:35;;2869:96;;;:::o;2971:118::-;3058:24;3076:5;3058:24;:::i;:::-;3053:3;3046:37;2971:118;;:::o;3095:222::-;3188:4;3226:2;3215:9;3211:18;3203:26;;3239:71;3307:1;3296:9;3292:17;3283:6;3239:71;:::i;:::-;3095:222;;;;:::o;3404:117::-;3513:1;3510;3503:12;3650:122;3723:24;3741:5;3723:24;:::i;:::-;3716:5;3713:35;3703:63;;3762:1;3759;3752:12;3703:63;3650:122;:::o;3778:139::-;3824:5;3862:6;3849:20;3840:29;;3878:33;3905:5;3878:33;:::i;:::-;3778:139;;;;:::o;3923:122::-;3996:24;4014:5;3996:24;:::i;:::-;3989:5;3986:35;3976:63;;4035:1;4032;4025:12;3976:63;3923:122;:::o;4051:139::-;4097:5;4135:6;4122:20;4113:29;;4151:33;4178:5;4151:33;:::i;:::-;4051:139;;;;:::o;4196:474::-;4264:6;4272;4321:2;4309:9;4300:7;4296:23;4292:32;4289:119;;;4327:79;;:::i;:::-;4289:119;4447:1;4472:53;4517:7;4508:6;4497:9;4493:22;4472:53;:::i;:::-;4462:63;;4418:117;4574:2;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4545:118;4196:474;;;;;:::o;4676:90::-;4710:7;4753:5;4746:13;4739:21;4728:32;;4676:90;;;:::o;4772:109::-;4853:21;4868:5;4853:21;:::i;:::-;4848:3;4841:34;4772:109;;:::o;4887:210::-;4974:4;5012:2;5001:9;4997:18;4989:26;;5025:65;5087:1;5076:9;5072:17;5063:6;5025:65;:::i;:::-;4887:210;;;;:::o;5103:619::-;5180:6;5188;5196;5245:2;5233:9;5224:7;5220:23;5216:32;5213:119;;;5251:79;;:::i;:::-;5213:119;5371:1;5396:53;5441:7;5432:6;5421:9;5417:22;5396:53;:::i;:::-;5386:63;;5342:117;5498:2;5524:53;5569:7;5560:6;5549:9;5545:22;5524:53;:::i;:::-;5514:63;;5469:118;5626:2;5652:53;5697:7;5688:6;5677:9;5673:22;5652:53;:::i;:::-;5642:63;;5597:118;5103:619;;;;;:::o;5728:::-;5805:6;5813;5821;5870:2;5858:9;5849:7;5845:23;5841:32;5838:119;;;5876:79;;:::i;:::-;5838:119;5996:1;6021:53;6066:7;6057:6;6046:9;6042:22;6021:53;:::i;:::-;6011:63;;5967:117;6123:2;6149:53;6194:7;6185:6;6174:9;6170:22;6149:53;:::i;:::-;6139:63;;6094:118;6251:2;6277:53;6322:7;6313:6;6302:9;6298:22;6277:53;:::i;:::-;6267:63;;6222:118;5728:619;;;;;:::o;6353:86::-;6388:7;6428:4;6421:5;6417:16;6406:27;;6353:86;;;:::o;6445:112::-;6528:22;6544:5;6528:22;:::i;:::-;6523:3;6516:35;6445:112;;:::o;6563:214::-;6652:4;6690:2;6679:9;6675:18;6667:26;;6703:67;6767:1;6756:9;6752:17;6743:6;6703:67;:::i;:::-;6563:214;;;;:::o;6783:329::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;6783:329;;;;:::o;7118:116::-;7188:21;7203:5;7188:21;:::i;:::-;7181:5;7178:32;7168:60;;7224:1;7221;7214:12;7168:60;7118:116;:::o;7240:133::-;7283:5;7321:6;7308:20;7299:29;;7337:30;7361:5;7337:30;:::i;:::-;7240:133;;;;:::o;7379:323::-;7435:6;7484:2;7472:9;7463:7;7459:23;7455:32;7452:119;;;7490:79;;:::i;:::-;7452:119;7610:1;7635:50;7677:7;7668:6;7657:9;7653:22;7635:50;:::i;:::-;7625:60;;7581:114;7379:323;;;;:::o;7708:329::-;7767:6;7816:2;7804:9;7795:7;7791:23;7787:32;7784:119;;;7822:79;;:::i;:::-;7784:119;7942:1;7967:53;8012:7;8003:6;7992:9;7988:22;7967:53;:::i;:::-;7957:63;;7913:117;7708:329;;;;:::o;8043:468::-;8108:6;8116;8165:2;8153:9;8144:7;8140:23;8136:32;8133:119;;;8171:79;;:::i;:::-;8133:119;8291:1;8316:53;8361:7;8352:6;8341:9;8337:22;8316:53;:::i;:::-;8306:63;;8262:117;8418:2;8444:50;8486:7;8477:6;8466:9;8462:22;8444:50;:::i;:::-;8434:60;;8389:115;8043:468;;;;;:::o;8517:607::-;8588:6;8596;8604;8653:2;8641:9;8632:7;8628:23;8624:32;8621:119;;;8659:79;;:::i;:::-;8621:119;8779:1;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8750:117;8906:2;8932:50;8974:7;8965:6;8954:9;8950:22;8932:50;:::i;:::-;8922:60;;8877:115;9031:2;9057:50;9099:7;9090:6;9079:9;9075:22;9057:50;:::i;:::-;9047:60;;9002:115;8517:607;;;;;:::o;9130:474::-;9198:6;9206;9255:2;9243:9;9234:7;9230:23;9226:32;9223:119;;;9261:79;;:::i;:::-;9223:119;9381:1;9406:53;9451:7;9442:6;9431:9;9427:22;9406:53;:::i;:::-;9396:63;;9352:117;9508:2;9534:53;9579:7;9570:6;9559:9;9555:22;9534:53;:::i;:::-;9524:63;;9479:118;9130:474;;;;;:::o;9610:182::-;9750:34;9746:1;9738:6;9734:14;9727:58;9610:182;:::o;9798:366::-;9940:3;9961:67;10025:2;10020:3;9961:67;:::i;:::-;9954:74;;10037:93;10126:3;10037:93;:::i;:::-;10155:2;10150:3;10146:12;10139:19;;9798:366;;;:::o;10170:419::-;10336:4;10374:2;10363:9;10359:18;10351:26;;10423:9;10417:4;10413:20;10409:1;10398:9;10394:17;10387:47;10451:131;10577:4;10451:131;:::i;:::-;10443:139;;10170:419;;;:::o;10595:167::-;10735:19;10731:1;10723:6;10719:14;10712:43;10595:167;:::o;10768:366::-;10910:3;10931:67;10995:2;10990:3;10931:67;:::i;:::-;10924:74;;11007:93;11096:3;11007:93;:::i;:::-;11125:2;11120:3;11116:12;11109:19;;10768:366;;;:::o;11140:419::-;11306:4;11344:2;11333:9;11329:18;11321:26;;11393:9;11387:4;11383:20;11379:1;11368:9;11364:17;11357:47;11421:131;11547:4;11421:131;:::i;:::-;11413:139;;11140:419;;;:::o;11565:85::-;11610:7;11639:5;11628:16;;11565:85;;;:::o;11656:158::-;11714:9;11747:61;11765:42;11774:32;11800:5;11774:32;:::i;:::-;11765:42;:::i;:::-;11747:61;:::i;:::-;11734:74;;11656:158;;;:::o;11820:147::-;11915:45;11954:5;11915:45;:::i;:::-;11910:3;11903:58;11820:147;;:::o;11973:807::-;12222:4;12260:3;12249:9;12245:19;12237:27;;12274:71;12342:1;12331:9;12327:17;12318:6;12274:71;:::i;:::-;12355:72;12423:2;12412:9;12408:18;12399:6;12355:72;:::i;:::-;12437:80;12513:2;12502:9;12498:18;12489:6;12437:80;:::i;:::-;12527;12603:2;12592:9;12588:18;12579:6;12527:80;:::i;:::-;12617:73;12685:3;12674:9;12670:19;12661:6;12617:73;:::i;:::-;12700;12768:3;12757:9;12753:19;12744:6;12700:73;:::i;:::-;11973:807;;;;;;;;;:::o;12786:143::-;12843:5;12874:6;12868:13;12859:22;;12890:33;12917:5;12890:33;:::i;:::-;12786:143;;;;:::o;12935:663::-;13023:6;13031;13039;13088:2;13076:9;13067:7;13063:23;13059:32;13056:119;;;13094:79;;:::i;:::-;13056:119;13214:1;13239:64;13295:7;13286:6;13275:9;13271:22;13239:64;:::i;:::-;13229:74;;13185:128;13352:2;13378:64;13434:7;13425:6;13414:9;13410:22;13378:64;:::i;:::-;13368:74;;13323:129;13491:2;13517:64;13573:7;13564:6;13553:9;13549:22;13517:64;:::i;:::-;13507:74;;13462:129;12935:663;;;;;:::o;13604:143::-;13661:5;13692:6;13686:13;13677:22;;13708:33;13735:5;13708:33;:::i;:::-;13604:143;;;;:::o;13753:351::-;13823:6;13872:2;13860:9;13851:7;13847:23;13843:32;13840:119;;;13878:79;;:::i;:::-;13840:119;13998:1;14023:64;14079:7;14070:6;14059:9;14055:22;14023:64;:::i;:::-;14013:74;;13969:128;13753:351;;;;:::o;14110:332::-;14231:4;14269:2;14258:9;14254:18;14246:26;;14282:71;14350:1;14339:9;14335:17;14326:6;14282:71;:::i;:::-;14363:72;14431:2;14420:9;14416:18;14407:6;14363:72;:::i;:::-;14110:332;;;;;:::o;14448:180::-;14496:77;14493:1;14486:88;14593:4;14590:1;14583:15;14617:4;14614:1;14607:15;14634:320;14678:6;14715:1;14709:4;14705:12;14695:22;;14762:1;14756:4;14752:12;14783:18;14773:81;;14839:4;14831:6;14827:17;14817:27;;14773:81;14901:2;14893:6;14890:14;14870:18;14867:38;14864:84;;14920:18;;:::i;:::-;14864:84;14685:269;14634:320;;;:::o;14960:164::-;15100:16;15096:1;15088:6;15084:14;15077:40;14960:164;:::o;15130:366::-;15272:3;15293:67;15357:2;15352:3;15293:67;:::i;:::-;15286:74;;15369:93;15458:3;15369:93;:::i;:::-;15487:2;15482:3;15478:12;15471:19;;15130:366;;;:::o;15502:419::-;15668:4;15706:2;15695:9;15691:18;15683:26;;15755:9;15749:4;15745:20;15741:1;15730:9;15726:17;15719:47;15783:131;15909:4;15783:131;:::i;:::-;15775:139;;15502:419;;;:::o;15927:332::-;16048:4;16086:2;16075:9;16071:18;16063:26;;16099:71;16167:1;16156:9;16152:17;16143:6;16099:71;:::i;:::-;16180:72;16248:2;16237:9;16233:18;16224:6;16180:72;:::i;:::-;15927:332;;;;;:::o;16265:98::-;16316:6;16350:5;16344:12;16334:22;;16265:98;;;:::o;16369:147::-;16470:11;16507:3;16492:18;;16369:147;;;;:::o;16522:386::-;16626:3;16654:38;16686:5;16654:38;:::i;:::-;16708:88;16789:6;16784:3;16708:88;:::i;:::-;16701:95;;16805:65;16863:6;16858:3;16851:4;16844:5;16840:16;16805:65;:::i;:::-;16895:6;16890:3;16886:16;16879:23;;16630:278;16522:386;;;;:::o;16914:271::-;17044:3;17066:93;17155:3;17146:6;17066:93;:::i;:::-;17059:100;;17176:3;17169:10;;16914:271;;;;:::o;17191:170::-;17331:22;17327:1;17319:6;17315:14;17308:46;17191:170;:::o;17367:366::-;17509:3;17530:67;17594:2;17589:3;17530:67;:::i;:::-;17523:74;;17606:93;17695:3;17606:93;:::i;:::-;17724:2;17719:3;17715:12;17708:19;;17367:366;;;:::o;17739:419::-;17905:4;17943:2;17932:9;17928:18;17920:26;;17992:9;17986:4;17982:20;17978:1;17967:9;17963:17;17956:47;18020:131;18146:4;18020:131;:::i;:::-;18012:139;;17739:419;;;:::o;18164:114::-;;:::o;18284:398::-;18443:3;18464:83;18545:1;18540:3;18464:83;:::i;:::-;18457:90;;18556:93;18645:3;18556:93;:::i;:::-;18674:1;18669:3;18665:11;18658:18;;18284:398;;;:::o;18688:379::-;18872:3;18894:147;19037:3;18894:147;:::i;:::-;18887:154;;19058:3;19051:10;;18688:379;;;:::o;19073:170::-;19213:22;19209:1;19201:6;19197:14;19190:46;19073:170;:::o;19249:366::-;19391:3;19412:67;19476:2;19471:3;19412:67;:::i;:::-;19405:74;;19488:93;19577:3;19488:93;:::i;:::-;19606:2;19601:3;19597:12;19590:19;;19249:366;;;:::o;19621:419::-;19787:4;19825:2;19814:9;19810:18;19802:26;;19874:9;19868:4;19864:20;19860:1;19849:9;19845:17;19838:47;19902:131;20028:4;19902:131;:::i;:::-;19894:139;;19621:419;;;:::o;20046:225::-;20186:34;20182:1;20174:6;20170:14;20163:58;20255:8;20250:2;20242:6;20238:15;20231:33;20046:225;:::o;20277:366::-;20419:3;20440:67;20504:2;20499:3;20440:67;:::i;:::-;20433:74;;20516:93;20605:3;20516:93;:::i;:::-;20634:2;20629:3;20625:12;20618:19;;20277:366;;;:::o;20649:419::-;20815:4;20853:2;20842:9;20838:18;20830:26;;20902:9;20896:4;20892:20;20888:1;20877:9;20873:17;20866:47;20930:131;21056:4;20930:131;:::i;:::-;20922:139;;20649:419;;;:::o;21074:223::-;21214:34;21210:1;21202:6;21198:14;21191:58;21283:6;21278:2;21270:6;21266:15;21259:31;21074:223;:::o;21303:366::-;21445:3;21466:67;21530:2;21525:3;21466:67;:::i;:::-;21459:74;;21542:93;21631:3;21542:93;:::i;:::-;21660:2;21655:3;21651:12;21644:19;;21303:366;;;:::o;21675:419::-;21841:4;21879:2;21868:9;21864:18;21856:26;;21928:9;21922:4;21918:20;21914:1;21903:9;21899:17;21892:47;21956:131;22082:4;21956:131;:::i;:::-;21948:139;;21675:419;;;:::o;22100:221::-;22240:34;22236:1;22228:6;22224:14;22217:58;22309:4;22304:2;22296:6;22292:15;22285:29;22100:221;:::o;22327:366::-;22469:3;22490:67;22554:2;22549:3;22490:67;:::i;:::-;22483:74;;22566:93;22655:3;22566:93;:::i;:::-;22684:2;22679:3;22675:12;22668:19;;22327:366;;;:::o;22699:419::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22952:9;22946:4;22942:20;22938:1;22927:9;22923:17;22916:47;22980:131;23106:4;22980:131;:::i;:::-;22972:139;;22699:419;;;:::o;23124:180::-;23172:77;23169:1;23162:88;23269:4;23266:1;23259:15;23293:4;23290:1;23283:15;23310:191;23350:3;23369:20;23387:1;23369:20;:::i;:::-;23364:25;;23403:20;23421:1;23403:20;:::i;:::-;23398:25;;23446:1;23443;23439:9;23432:16;;23467:3;23464:1;23461:10;23458:36;;;23474:18;;:::i;:::-;23458:36;23310:191;;;;:::o;23507:177::-;23647:29;23643:1;23635:6;23631:14;23624:53;23507:177;:::o;23690:366::-;23832:3;23853:67;23917:2;23912:3;23853:67;:::i;:::-;23846:74;;23929:93;24018:3;23929:93;:::i;:::-;24047:2;24042:3;24038:12;24031:19;;23690:366;;;:::o;24062:419::-;24228:4;24266:2;24255:9;24251:18;24243:26;;24315:9;24309:4;24305:20;24301:1;24290:9;24286:17;24279:47;24343:131;24469:4;24343:131;:::i;:::-;24335:139;;24062:419;;;:::o;24487:172::-;24627:24;24623:1;24615:6;24611:14;24604:48;24487:172;:::o;24665:366::-;24807:3;24828:67;24892:2;24887:3;24828:67;:::i;:::-;24821:74;;24904:93;24993:3;24904:93;:::i;:::-;25022:2;25017:3;25013:12;25006:19;;24665:366;;;:::o;25037:419::-;25203:4;25241:2;25230:9;25226:18;25218:26;;25290:9;25284:4;25280:20;25276:1;25265:9;25261:17;25254:47;25318:131;25444:4;25318:131;:::i;:::-;25310:139;;25037:419;;;:::o;25462:169::-;25602:21;25598:1;25590:6;25586:14;25579:45;25462:169;:::o;25637:366::-;25779:3;25800:67;25864:2;25859:3;25800:67;:::i;:::-;25793:74;;25876:93;25965:3;25876:93;:::i;:::-;25994:2;25989:3;25985:12;25978:19;;25637:366;;;:::o;26009:419::-;26175:4;26213:2;26202:9;26198:18;26190:26;;26262:9;26256:4;26252:20;26248:1;26237:9;26233:17;26226:47;26290:131;26416:4;26290:131;:::i;:::-;26282:139;;26009:419;;;:::o;26434:164::-;26574:16;26570:1;26562:6;26558:14;26551:40;26434:164;:::o;26604:366::-;26746:3;26767:67;26831:2;26826:3;26767:67;:::i;:::-;26760:74;;26843:93;26932:3;26843:93;:::i;:::-;26961:2;26956:3;26952:12;26945:19;;26604:366;;;:::o;26976:419::-;27142:4;27180:2;27169:9;27165:18;27157:26;;27229:9;27223:4;27219:20;27215:1;27204:9;27200:17;27193:47;27257:131;27383:4;27257:131;:::i;:::-;27249:139;;26976:419;;;:::o;27401:194::-;27441:4;27461:20;27479:1;27461:20;:::i;:::-;27456:25;;27495:20;27513:1;27495:20;:::i;:::-;27490:25;;27539:1;27536;27532:9;27524:17;;27563:1;27557:4;27554:11;27551:37;;;27568:18;;:::i;:::-;27551:37;27401:194;;;;:::o;27601:410::-;27641:7;27664:20;27682:1;27664:20;:::i;:::-;27659:25;;27698:20;27716:1;27698:20;:::i;:::-;27693:25;;27753:1;27750;27746:9;27775:30;27793:11;27775:30;:::i;:::-;27764:41;;27954:1;27945:7;27941:15;27938:1;27935:22;27915:1;27908:9;27888:83;27865:139;;27984:18;;:::i;:::-;27865:139;27649:362;27601:410;;;;:::o;28017:180::-;28065:77;28062:1;28055:88;28162:4;28159:1;28152:15;28186:4;28183:1;28176:15;28203:185;28243:1;28260:20;28278:1;28260:20;:::i;:::-;28255:25;;28294:20;28312:1;28294:20;:::i;:::-;28289:25;;28333:1;28323:35;;28338:18;;:::i;:::-;28323:35;28380:1;28377;28373:9;28368:14;;28203:185;;;;:::o;28394:220::-;28534:34;28530:1;28522:6;28518:14;28511:58;28603:3;28598:2;28590:6;28586:15;28579:28;28394:220;:::o;28620:366::-;28762:3;28783:67;28847:2;28842:3;28783:67;:::i;:::-;28776:74;;28859:93;28948:3;28859:93;:::i;:::-;28977:2;28972:3;28968:12;28961:19;;28620:366;;;:::o;28992:419::-;29158:4;29196:2;29185:9;29181:18;29173:26;;29245:9;29239:4;29235:20;29231:1;29220:9;29216:17;29209:47;29273:131;29399:4;29273:131;:::i;:::-;29265:139;;28992:419;;;:::o;29417:180::-;29465:77;29462:1;29455:88;29562:4;29559:1;29552:15;29586:4;29583:1;29576:15;29603:180;29651:77;29648:1;29641:88;29748:4;29745:1;29738:15;29772:4;29769:1;29762:15;29789:114;29856:6;29890:5;29884:12;29874:22;;29789:114;;;:::o;29909:184::-;30008:11;30042:6;30037:3;30030:19;30082:4;30077:3;30073:14;30058:29;;29909:184;;;;:::o;30099:132::-;30166:4;30189:3;30181:11;;30219:4;30214:3;30210:14;30202:22;;30099:132;;;:::o;30237:108::-;30314:24;30332:5;30314:24;:::i;:::-;30309:3;30302:37;30237:108;;:::o;30351:179::-;30420:10;30441:46;30483:3;30475:6;30441:46;:::i;:::-;30519:4;30514:3;30510:14;30496:28;;30351:179;;;;:::o;30536:113::-;30606:4;30638;30633:3;30629:14;30621:22;;30536:113;;;:::o;30685:732::-;30804:3;30833:54;30881:5;30833:54;:::i;:::-;30903:86;30982:6;30977:3;30903:86;:::i;:::-;30896:93;;31013:56;31063:5;31013:56;:::i;:::-;31092:7;31123:1;31108:284;31133:6;31130:1;31127:13;31108:284;;;31209:6;31203:13;31236:63;31295:3;31280:13;31236:63;:::i;:::-;31229:70;;31322:60;31375:6;31322:60;:::i;:::-;31312:70;;31168:224;31155:1;31152;31148:9;31143:14;;31108:284;;;31112:14;31408:3;31401:10;;30809:608;;;30685:732;;;;:::o;31423:831::-;31686:4;31724:3;31713:9;31709:19;31701:27;;31738:71;31806:1;31795:9;31791:17;31782:6;31738:71;:::i;:::-;31819:80;31895:2;31884:9;31880:18;31871:6;31819:80;:::i;:::-;31946:9;31940:4;31936:20;31931:2;31920:9;31916:18;31909:48;31974:108;32077:4;32068:6;31974:108;:::i;:::-;31966:116;;32092:72;32160:2;32149:9;32145:18;32136:6;32092:72;:::i;:::-;32174:73;32242:3;32231:9;32227:19;32218:6;32174:73;:::i;:::-;31423:831;;;;;;;;:::o;32260:483::-;32431:4;32469:2;32458:9;32454:18;32446:26;;32482:71;32550:1;32539:9;32535:17;32526:6;32482:71;:::i;:::-;32600:9;32594:4;32590:20;32585:2;32574:9;32570:18;32563:48;32628:108;32731:4;32722:6;32628:108;:::i;:::-;32620:116;;32260:483;;;;;:::o;32749:720::-;32984:4;33022:3;33011:9;33007:19;32999:27;;33036:79;33112:1;33101:9;33097:17;33088:6;33036:79;:::i;:::-;33162:9;33156:4;33152:20;33147:2;33136:9;33132:18;33125:48;33190:108;33293:4;33284:6;33190:108;:::i;:::-;33182:116;;33308:72;33376:2;33365:9;33361:18;33352:6;33308:72;:::i;:::-;33390;33458:2;33447:9;33443:18;33434:6;33390:72;:::i;:::-;32749:720;;;;;;;:::o

Swarm Source

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