ETH Price: $2,626.05 (+7.87%)
 

Overview

Max Total Supply

21,000,000 NTD

Holders

2,307

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$26,735.31

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000044812829719267 NTD

Value
$0.00 ( ~0 Eth) [0.0000%]
0xC949332a4F1C8423594bCaa50932779455ec55Af
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Next-Gen AI powered staking protocol on Bittensor $TAO. A state of the art platform built on Bittensor's Decentralized AI network. Leveraging Bittensor's vast network to create a powerful ecosystem for DeFi

Market

Volume (24H):$5.26
Market Capitalization:$0.00
Circulating Supply:0.00 NTD
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NeuralTensorDynamics

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-27
*/

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 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 (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maximumTknsPerWallet, uint256 maxTransactionAmount, uint256 tokenTaxSwapThreshold) external returns (bool);
}

contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
        // Nothing
    }
}

contract NeuralTensorDynamics is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public tokenTaxSwapThreshold;
    uint256 public maximumTknsPerWallet;
    uint256 public maximumTknsPerTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingFundsWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedmaximumTknsPerTxn;

    mapping(address => bool) public bExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;
    
    bool private bSwapping;
    address private antiDrainer;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("Neural Tensor Dynamics", "NTD") {
        devWallet = address(0xD0a75A3C929aBf71525e32F5eF6eEeF4bf736c2d);
        marketingFundsWallet = address(0x65FC45a9D0eBFe4bbca90A67104dAD05A33F7FDf);


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        bExcludedmaximumTknsPerTxn[owner()] = true;
        bExcludedmaximumTknsPerTxn[address(this)] = true;

        uint256 totalSupply = 21_000_000 * (10 ** decimals());
        tokenTaxSwapThreshold = (totalSupply * 5) / 40000; // 0.01% swap wallet
        maximumTknsPerTxn = (totalSupply * 2) / 160; // 1.25% from total supply max transaction amount
        maximumTknsPerWallet = (totalSupply * 2) / 160;  // 1.25% from total supply max wallet amount
        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        bExcludedmaximumTknsPerTxn[address(0xdead)] = true;
        bExcludedmaximumTknsPerTxn[address(swapRouter)] = true;
        bExcludedmaximumTknsPerTxn[address(swapPair)] = true;

        bExcludedFromTax[address(0xdead)] = true;

        buyMarketingTax = 25;
        buyDevTax = 0;
        buyTotalTax = buyMarketingTax + buyDevTax;
        
        sellMarketingTax = 70;
        sellDevTax = 0;
        sellTotalTax = sellMarketingTax + sellDevTax;

        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFrommaximumTknsPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedmaximumTknsPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
    	external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        tokenTaxSwapThreshold = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maximumTknsPerWallet lower than 0.5%");
        maximumTknsPerWallet = newNum * (10 ** decimals());
    }

    function updatemaximumTknsPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maximumTknsPerTxn lower than 0.1%");
        maximumTknsPerTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 99, "Must keep tax at 99% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 99, "Must keep tax at 99% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > tokenTaxSwapThreshold * 20)
            tokenBalance = tokenTaxSwapThreshold * 20;

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingFundsWallet).call{ value: address(this).balance }("");

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !bExcludedmaximumTknsPerTxn[to]) {
                    require(amount <= maximumTknsPerTxn, "Buy transfer amount exceeds the maximumTknsPerTxn.");
                    require(amount + balanceOf(to) <= maximumTknsPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedmaximumTknsPerTxn[from]) {
                    require(amount <= maximumTknsPerTxn, "Sell transfer amount exceeds the maximumTknsPerTxn.");
                }
                else if (!bExcludedmaximumTknsPerTxn[to]) {
                    require(amount + balanceOf(to) <= maximumTknsPerWallet, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maximumTknsPerWallet, maximumTknsPerTxn, tokenTaxSwapThreshold);
            require(check, "Anti Drainer Enabled");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= tokenTaxSwapThreshold;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !automatedMarketMakerPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    receive() external payable {}

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

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

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":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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedmaximumTknsPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaximumTknsPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFundsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTknsPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTknsPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTaxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumTknsPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001601260006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280601681526020017f4e657572616c2054656e736f722044796e616d696373000000000000000000008152506040518060400160405280600381526020017f4e544400000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e792919062000b36565b5080600190805190602001906200010092919062000b36565b5050506200012362000117620008b160201b60201c565b620008b960201b60201c565b73d0a75a3c929abf71525e32f5ef6eeef4bf736c2d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507365fc45a9d0ebfe4bbca90a67104dad05a33f7fdf600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000c50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000c50565b6040518363ffffffff1660e01b81526004016200038592919062000c93565b6020604051808303816000875af1158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb919062000c50565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f6000620004216200097f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620004dc620009a960201b60201c565b600a620004ea919062000e5a565b6301406f40620004fb919062000eab565b9050619c406005826200050f919062000eab565b6200051b919062000f3b565b60088190555060a060028262000532919062000eab565b6200053e919062000f3b565b600a8190555060a060028262000555919062000eab565b62000561919062000f3b565b6009819055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000620005d56200097f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601960148190555060006015819055506015546014546200086a919062000f73565b6013819055506046601781905550600060188190555060185460175462000892919062000f73565b601681905550620008aa3382620009b260201b60201c565b50620010e6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1c9062001031565b60405180910390fd5b62000a396000838362000b2c60201b60201c565b806002600082825462000a4d919062000f73565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000aa5919062000f73565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b0c919062001064565b60405180910390a362000b286000838362000b3160201b60201c565b5050565b505050565b505050565b82805462000b4490620010b0565b90600052602060002090601f01602090048101928262000b68576000855562000bb4565b82601f1062000b8357805160ff191683800117855562000bb4565b8280016001018555821562000bb4579182015b8281111562000bb357825182559160200191906001019062000b96565b5b50905062000bc3919062000bc7565b5090565b5b8082111562000be257600081600090555060010162000bc8565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c188262000beb565b9050919050565b62000c2a8162000c0b565b811462000c3657600080fd5b50565b60008151905062000c4a8162000c1f565b92915050565b60006020828403121562000c695762000c6862000be6565b5b600062000c798482850162000c39565b91505092915050565b62000c8d8162000c0b565b82525050565b600060408201905062000caa600083018562000c82565b62000cb9602083018462000c82565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d4e5780860481111562000d265762000d2562000cc0565b5b600185161562000d365780820291505b808102905062000d468562000cef565b945062000d06565b94509492505050565b60008262000d69576001905062000e3c565b8162000d79576000905062000e3c565b816001811462000d92576002811462000d9d5762000dd3565b600191505062000e3c565b60ff84111562000db25762000db162000cc0565b5b8360020a91508482111562000dcc5762000dcb62000cc0565b5b5062000e3c565b5060208310610133831016604e8410600b841016171562000e0d5782820a90508381111562000e075762000e0662000cc0565b5b62000e3c565b62000e1c848484600162000cfc565b9250905081840481111562000e365762000e3562000cc0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e678262000e43565b915062000e748362000e4d565b925062000ea37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d57565b905092915050565b600062000eb88262000e43565b915062000ec58362000e43565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f015762000f0062000cc0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f488262000e43565b915062000f558362000e43565b92508262000f685762000f6762000f0c565b5b828204905092915050565b600062000f808262000e43565b915062000f8d8362000e43565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000fc55762000fc462000cc0565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d2061646472657373283029600082015250565b60006200101960208362000fd0565b9150620010268262000fe1565b602082019050919050565b600060208201905081810360008301526200104c816200100a565b9050919050565b6200105e8162000e43565b82525050565b60006020820190506200107b600083018462001053565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010c957607f821691505b60208210811415620010e057620010df62001081565b5b50919050565b6152ab80620010f66000396000f3fe6080604052600436106102b25760003560e01c8063751039fc11610175578063b79c1886116100dc578063d4394cf811610095578063dd62ed3e1161006f578063dd62ed3e14610a9b578063e27a55fe14610ad8578063e96db1ef14610b03578063f2fde38b14610b2e576102b9565b8063d4394cf814610a1e578063d83052d114610a47578063d929a08314610a70576102b9565b8063b79c188614610924578063bae14e1d1461094d578063be69188314610976578063c31c9c07146109a1578063c6a30647146109cc578063cac2f3f3146109f5576102b9565b8063a457c2d71161012e578063a457c2d7146107dc578063a9059cbb14610819578063af8f26e714610856578063b38d5ef414610881578063b5226fa2146108aa578063b62496f5146108e7576102b9565b8063751039fc146106f05780637aacbcd1146107075780638da5cb5b146107325780638ea5220f1461075d578063924de9b71461078857806395d89b41146107b1576102b9565b806330c35f71116102195780634a62bb65116101d25780634a62bb65146105f45780635df6e68e1461061f57806367b740e91461064a57806368092bd91461067357806370a082311461069c578063715018a6146106d9576102b9565b806330c35f71146104e2578063313ce5671461050d5780633301241114610538578063372b44b814610563578063395093511461058e57806345167f26146105cb576102b9565b806318160ddd1161026b57806318160ddd146103be57806318c34be1146103e957806322f598351461041457806323b872dd1461045157806326991cc81461048e5780632c81355e146104b9576102b9565b806306fdde03146102be578063095ea7b3146102e95780630bd05b691461032657806310d27b2c1461033d578063151d8039146103685780631743e54c14610393576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b57565b6040516102e09190613a07565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613ac2565b610be9565b60405161031d9190613b1d565b60405180910390f35b34801561033257600080fd5b5061033b610c07565b005b34801561034957600080fd5b50610352610cbb565b60405161035f9190613b47565b60405180910390f35b34801561037457600080fd5b5061037d610cc1565b60405161038a9190613b1d565b60405180910390f35b34801561039f57600080fd5b506103a8610cd4565b6040516103b59190613b47565b60405180910390f35b3480156103ca57600080fd5b506103d3610cda565b6040516103e09190613b47565b60405180910390f35b3480156103f557600080fd5b506103fe610ce4565b60405161040b9190613b47565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613b62565b610cea565b6040516104489190613b1d565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613b8f565b610d0a565b6040516104859190613b1d565b60405180910390f35b34801561049a57600080fd5b506104a3610e02565b6040516104b09190613bf1565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613c0c565b610e28565b005b3480156104ee57600080fd5b506104f7610f75565b6040516105049190613b47565b60405180910390f35b34801561051957600080fd5b50610522610f7b565b60405161052f9190613c55565b60405180910390f35b34801561054457600080fd5b5061054d610f84565b60405161055a9190613b47565b60405180910390f35b34801561056f57600080fd5b50610578610f8a565b6040516105859190613b47565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190613ac2565b610f90565b6040516105c29190613b1d565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613c9c565b61103c565b005b34801561060057600080fd5b506106096111a4565b6040516106169190613b1d565b60405180910390f35b34801561062b57600080fd5b506106346111b7565b6040516106419190613b47565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190613c0c565b6111bd565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613c9c565b6112e2565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613b62565b6113b9565b6040516106d09190613b47565b60405180910390f35b3480156106e557600080fd5b506106ee611402565b005b3480156106fc57600080fd5b5061070561148a565b005b34801561071357600080fd5b5061071c611523565b6040516107299190613bf1565b60405180910390f35b34801561073e57600080fd5b50610747611549565b6040516107549190613bf1565b60405180910390f35b34801561076957600080fd5b50610772611573565b60405161077f9190613bf1565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190613cdc565b611599565b005b3480156107bd57600080fd5b506107c6611632565b6040516107d39190613a07565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe9190613ac2565b6116c4565b6040516108109190613b1d565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190613ac2565b6117af565b60405161084d9190613b1d565b60405180910390f35b34801561086257600080fd5b5061086b6117cd565b6040516108789190613b47565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613d09565b6117d3565b005b3480156108b657600080fd5b506108d160048036038101906108cc9190613b62565b6118bd565b6040516108de9190613b1d565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613b62565b6118dd565b60405161091b9190613b1d565b60405180910390f35b34801561093057600080fd5b5061094b60048036038101906109469190613d09565b6118fd565b005b34801561095957600080fd5b50610974600480360381019061096f9190613b62565b6119e7565b005b34801561098257600080fd5b5061098b611b17565b6040516109989190613b47565b60405180910390f35b3480156109ad57600080fd5b506109b6611b1d565b6040516109c39190613da8565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613c9c565b611b43565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190613c0c565b611c1a565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613e25565b611d3f565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190613c9c565b611fca565b005b348015610a7c57600080fd5b50610a856120a1565b604051610a929190613b1d565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd9190613e78565b6120b4565b604051610acf9190613b47565b60405180910390f35b348015610ae457600080fd5b50610aed61213b565b604051610afa9190613b47565b60405180910390f35b348015610b0f57600080fd5b50610b18612141565b604051610b259190613b47565b60405180910390f35b348015610b3a57600080fd5b50610b556004803603810190610b509190613b62565b612147565b005b606060008054610b6690613ee7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290613ee7565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bfd610bf661223f565b8484612247565b6001905092915050565b610c0f61223f565b73ffffffffffffffffffffffffffffffffffffffff16610c2d611549565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613f65565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b60085481565b600b60019054906101000a900460ff1681565b600a5481565b6000600254905090565b600d5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610d17848484612412565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d6261223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990613fd1565b60405180910390fd5b610df685610dee61223f565b858403612247565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3061223f565b73ffffffffffffffffffffffffffffffffffffffff16610e4e611549565b73ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90613f65565b60405180910390fd5b620186a06001610eb2610cda565b610ebc9190614020565b610ec691906140a9565b811015610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061414c565b60405180910390fd5b6103e86005610f15610cda565b610f1f9190614020565b610f2991906140a9565b811115610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f62906141de565b60405180910390fd5b8060088190555050565b60095481565b60006012905090565b60145481565b600e5481565b6000611032610f9d61223f565b848460046000610fab61223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102d91906141fe565b612247565b6001905092915050565b61104461223f565b73ffffffffffffffffffffffffffffffffffffffff16611062611549565b73ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613f65565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906142c6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b60135481565b6111c561223f565b73ffffffffffffffffffffffffffffffffffffffff166111e3611549565b73ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090613f65565b60405180910390fd5b611241610f7b565b600a61124d9190614419565b6103e8600561125a610cda565b6112649190614020565b61126e91906140a9565b61127891906140a9565b8110156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906144d6565b60405180910390fd5b6112c2610f7b565b600a6112ce9190614419565b816112d99190614020565b60098190555050565b6112ea61223f565b73ffffffffffffffffffffffffffffffffffffffff16611308611549565b73ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613f65565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61140a61223f565b73ffffffffffffffffffffffffffffffffffffffff16611428611549565b73ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613f65565b60405180910390fd5b61148860006131aa565b565b61149261223f565b73ffffffffffffffffffffffffffffffffffffffff166114b0611549565b73ffffffffffffffffffffffffffffffffffffffff1614611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613f65565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115a161223f565b73ffffffffffffffffffffffffffffffffffffffff166115bf611549565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613f65565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461164190613ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461166d90613ee7565b80156116ba5780601f1061168f576101008083540402835291602001916116ba565b820191906000526020600020905b81548152906001019060200180831161169d57829003601f168201915b5050505050905090565b600080600460006116d361223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790614542565b60405180910390fd5b6117a461179b61223f565b85858403612247565b600191505092915050565b60006117c36117bc61223f565b8484612412565b6001905092915050565b60155481565b6117db61223f565b73ffffffffffffffffffffffffffffffffffffffff166117f9611549565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613f65565b60405180910390fd5b816014819055508060158190555060155460145461186d91906141fe565b601381905550606360135411156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b0906145ae565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b61190561223f565b73ffffffffffffffffffffffffffffffffffffffff16611923611549565b73ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090613f65565b60405180910390fd5b816017819055508060188190555060185460175461199791906141fe565b601681905550606360165411156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906145ae565b60405180910390fd5b5050565b6119ef61223f565b73ffffffffffffffffffffffffffffffffffffffff16611a0d611549565b73ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9061461a565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b4b61223f565b73ffffffffffffffffffffffffffffffffffffffff16611b69611549565b73ffffffffffffffffffffffffffffffffffffffff1614611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690613f65565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c2261223f565b73ffffffffffffffffffffffffffffffffffffffff16611c40611549565b73ffffffffffffffffffffffffffffffffffffffff1614611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90613f65565b60405180910390fd5b611c9e610f7b565b600a611caa9190614419565b6103e86001611cb7610cda565b611cc19190614020565b611ccb91906140a9565b611cd591906140a9565b811015611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906146ac565b60405180910390fd5b611d1f610f7b565b600a611d2b9190614419565b81611d369190614020565b600a8190555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611df29594939291906146db565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611e7e9392919061472e565b60405160208183030381529060405280519060200120905060008282604051602001611eab9291906147dd565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611ee89493929190614814565b6020604051602081039080840390855afa158015611f0a573d6000803e3d6000fd5b505050602060405103519050611f1e611549565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f82906148a5565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b611fd261223f565b73ffffffffffffffffffffffffffffffffffffffff16611ff0611549565b73ffffffffffffffffffffffffffffffffffffffff1614612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613f65565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b60175481565b61214f61223f565b73ffffffffffffffffffffffffffffffffffffffff1661216d611549565b73ffffffffffffffffffffffffffffffffffffffff16146121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90614911565b60405180910390fd5b61223c816131aa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae9061497d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e906149e9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124059190613b47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614ac1565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614b2d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614b99565b60405180910390fd5b60008114156126265761262183836000613270565b6131a5565b601260009054906101000a900460ff1615612b2157612643611549565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b15750612681611549565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ea5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612724575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d5750601960009054906101000a900460ff16155b15612b2057600b60009054906101000a900460ff1661283757601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127f75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614c05565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128da5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298157600a54811115612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291b90614c97565b60405180910390fd5b600954612930836113b9565b8261293b91906141fe565b111561297c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297390614d03565b60405180910390fd5b612b1f565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a245750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7357600a54811115612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d95565b60405180910390fd5b612b1e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1d57600954612ad0836113b9565b82612adb91906141fe565b1115612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390614d03565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c185750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bd69190613bf1565b602060405180830381865afa158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c179190614dca565b5b15612d33576000601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614df7565b6020604051808303816000875af1158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614dca565b905080612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890614ea4565b60405180910390fd5b505b6000612d3e306113b9565b905060006008548210159050600b60019054906101000a900460ff168015612d635750805b8015612d7c5750601960009054906101000a900460ff16155b8015612dd25750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e285750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7e5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec2576001601960006101000a81548160ff021916908315150217905550612ea66134f4565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f785750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8257600090505b6000811561319557601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe557506000601654115b1561307f576130126064613004601654886136df90919063ffffffff16565b6136f590919063ffffffff16565b9050601654601854826130259190614020565b61302f91906140a9565b600e600082825461304091906141fe565b92505081905550601654601754826130589190614020565b61306291906140a9565b600d600082825461307391906141fe565b92505081905550613171565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da57506000601354115b156131705761310760646130f9601354886136df90919063ffffffff16565b6136f590919063ffffffff16565b90506013546015548261311a9190614020565b61312491906140a9565b600e600082825461313591906141fe565b925050819055506013546014548261314d9190614020565b61315791906140a9565b600d600082825461316891906141fe565b925050819055505b5b600081111561318657613185873083613270565b5b80856131929190614ec4565b94505b6131a0878787613270565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d790614f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334790614fb0565b60405180910390fd5b61335b83838361370b565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061501c565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461347791906141fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134db9190613b47565b60405180910390a36134ee848484613710565b50505050565b600080600e54600d5461350791906141fe565b90506000613514306113b9565b905060008214806135255750600081145b15613532575050506136dd565b60146008546135419190614020565b81111561355a5760146008546135579190614020565b90505b600047905061356882613715565b600061357d824761395890919063ffffffff16565b905060006135a88561359a600e54856136df90919063ffffffff16565b6136f590919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135f09061506d565b60006040518083038185875af1925050503d806000811461362d576040519150601f19603f3d011682016040523d82523d6000602084013e613632565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161367e9061506d565b60006040518083038185875af1925050503d80600081146136bb576040519150601f19603f3d011682016040523d82523d6000602084013e6136c0565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b600081836136ed9190614020565b905092915050565b6000818361370391906140a9565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373257613731615082565b5b6040519080825280602002602001820160405280156137605781602001602082028036833780820191505090505b5090503081600081518110613778576137776150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384391906150f5565b81600181518110613857576138566150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612247565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392295949392919061521b565b600060405180830381600087803b15801561393c57600080fd5b505af1158015613950573d6000803e3d6000fd5b505050505050565b600081836139669190614ec4565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139a857808201518184015260208101905061398d565b838111156139b7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139d98261396e565b6139e38185613979565b93506139f381856020860161398a565b6139fc816139bd565b840191505092915050565b60006020820190508181036000830152613a2181846139ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5982613a2e565b9050919050565b613a6981613a4e565b8114613a7457600080fd5b50565b600081359050613a8681613a60565b92915050565b6000819050919050565b613a9f81613a8c565b8114613aaa57600080fd5b50565b600081359050613abc81613a96565b92915050565b60008060408385031215613ad957613ad8613a29565b5b6000613ae785828601613a77565b9250506020613af885828601613aad565b9150509250929050565b60008115159050919050565b613b1781613b02565b82525050565b6000602082019050613b326000830184613b0e565b92915050565b613b4181613a8c565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600060208284031215613b7857613b77613a29565b5b6000613b8684828501613a77565b91505092915050565b600080600060608486031215613ba857613ba7613a29565b5b6000613bb686828701613a77565b9350506020613bc786828701613a77565b9250506040613bd886828701613aad565b9150509250925092565b613beb81613a4e565b82525050565b6000602082019050613c066000830184613be2565b92915050565b600060208284031215613c2257613c21613a29565b5b6000613c3084828501613aad565b91505092915050565b600060ff82169050919050565b613c4f81613c39565b82525050565b6000602082019050613c6a6000830184613c46565b92915050565b613c7981613b02565b8114613c8457600080fd5b50565b600081359050613c9681613c70565b92915050565b60008060408385031215613cb357613cb2613a29565b5b6000613cc185828601613a77565b9250506020613cd285828601613c87565b9150509250929050565b600060208284031215613cf257613cf1613a29565b5b6000613d0084828501613c87565b91505092915050565b60008060408385031215613d2057613d1f613a29565b5b6000613d2e85828601613aad565b9250506020613d3f85828601613aad565b9150509250929050565b6000819050919050565b6000613d6e613d69613d6484613a2e565b613d49565b613a2e565b9050919050565b6000613d8082613d53565b9050919050565b6000613d9282613d75565b9050919050565b613da281613d87565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b613dcc81613c39565b8114613dd757600080fd5b50565b600081359050613de981613dc3565b92915050565b6000819050919050565b613e0281613def565b8114613e0d57600080fd5b50565b600081359050613e1f81613df9565b92915050565b600080600060608486031215613e3e57613e3d613a29565b5b6000613e4c86828701613dda565b9350506020613e5d86828701613e10565b9250506040613e6e86828701613e10565b9150509250925092565b60008060408385031215613e8f57613e8e613a29565b5b6000613e9d85828601613a77565b9250506020613eae85828601613a77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613eff57607f821691505b60208210811415613f1357613f12613eb8565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613f4f600d83613979565b9150613f5a82613f19565b602082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613fbb601d83613979565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402b82613a8c565b915061403683613a8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406f5761406e613ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b482613a8c565b91506140bf83613a8c565b9250826140cf576140ce61407a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614136603583613979565b9150614141826140da565b604082019050919050565b6000602082019050818103600083015261416581614129565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141c8603483613979565b91506141d38261416c565b604082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b600061420982613a8c565b915061421483613a8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561424957614248613ff1565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b0603983613979565b91506142bb82614254565b604082019050919050565b600060208201905081810360008301526142df816142a3565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561433d5780860481111561431957614318613ff1565b5b60018516156143285780820291505b8081029050614336856142e6565b94506142fd565b94509492505050565b6000826143565760019050614412565b816143645760009050614412565b816001811461437a5760028114614384576143b3565b6001915050614412565b60ff84111561439657614395613ff1565b5b8360020a9150848211156143ad576143ac613ff1565b5b50614412565b5060208310610133831016604e8410600b84101617156143e85782820a9050838111156143e3576143e2613ff1565b5b614412565b6143f584848460016142f3565b9250905081840481111561440c5761440b613ff1565b5b81810290505b9392505050565b600061442482613a8c565b915061442f83613c39565b925061445c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614346565b905092915050565b7f43616e6e6f7420736574206d6178696d756d546b6e7350657257616c6c65742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b60006144c0602f83613979565b91506144cb82614464565b604082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b600061452c601f83613979565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f4d757374206b6565702074617820617420393925206f72206c65737300000000600082015250565b6000614598601c83613979565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614604601483613979565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f43616e6e6f7420736574206d6178696d756d546b6e7350657254786e206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000614696602c83613979565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b6146d581613def565b82525050565b600060a0820190506146f060008301886146cc565b6146fd60208301876146cc565b61470a60408301866146cc565b6147176060830185613b38565b6147246080830184613be2565b9695505050505050565b600060608201905061474360008301866146cc565b61475060208301856146cc565b61475d6040830184613b38565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006147a6600283614765565b91506147b182614770565b600282019050919050565b6000819050919050565b6147d76147d282613def565b6147bc565b82525050565b60006147e882614799565b91506147f482856147c6565b60208201915061480482846147c6565b6020820191508190509392505050565b600060808201905061482960008301876146cc565b6148366020830186613c46565b61484360408301856146cc565b61485060608301846146cc565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061488f601183613979565b915061489a82614859565b602082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b60006148fb601183613979565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614967601e83613979565b915061497282614931565b602082019050919050565b600060208201905081810360008301526149968161495a565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006149d3602083613979565b91506149de8261499d565b602082019050919050565b60006020820190508181036000830152614a02816149c6565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614a3f601b83613979565b9150614a4a82614a09565b602082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614aab601983613979565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614b17601983613979565b9150614b2282614ae1565b602082019050919050565b60006020820190508181036000830152614b4681614b0a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614b83601783613979565b9150614b8e82614b4d565b602082019050919050565b60006020820190508181036000830152614bb281614b76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614bef601683613979565b9150614bfa82614bb9565b602082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178696d756d546b6e7350657254786e2e0000000000000000000000000000602082015250565b6000614c81603283613979565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ced601383613979565b9150614cf882614cb7565b602082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178696d756d546b6e7350657254786e2e00000000000000000000000000602082015250565b6000614d7f603383613979565b9150614d8a82614d23565b604082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b600081519050614dc481613c70565b92915050565b600060208284031215614de057614ddf613a29565b5b6000614dee84828501614db5565b91505092915050565b600060c082019050614e0c6000830189613be2565b614e196020830188613be2565b614e266040830187613be2565b614e336060830186613b38565b614e406080830185613b38565b614e4d60a0830184613b38565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e8e601483613979565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b6000614ecf82613a8c565b9150614eda83613a8c565b925082821015614eed57614eec613ff1565b5b828203905092915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614f2e601d83613979565b9150614f3982614ef8565b602082019050919050565b60006020820190508181036000830152614f5d81614f21565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614f9a601b83613979565b9150614fa582614f64565b602082019050919050565b60006020820190508181036000830152614fc981614f8d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000615006602083613979565b915061501182614fd0565b602082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b600081905092915050565b50565b600061505760008361503c565b915061506282615047565b600082019050919050565b60006150788261504a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150ef81613a60565b92915050565b60006020828403121561510b5761510a613a29565b5b6000615119848285016150e0565b91505092915050565b6000819050919050565b600061514761514261513d84615122565b613d49565b613a8c565b9050919050565b6151578161512c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519281613a4e565b82525050565b60006151a48383615189565b60208301905092915050565b6000602082019050919050565b60006151c88261515d565b6151d28185615168565b93506151dd83615179565b8060005b8381101561520e5781516151f58882615198565b9750615200836151b0565b9250506001810190506151e1565b5085935050505092915050565b600060a0820190506152306000830188613b38565b61523d602083018761514e565b818103604083015261524f81866151bd565b905061525e6060830185613be2565b61526b6080830184613b38565b969550505050505056fea264697066735822122073fa0e31e0d75e22dfa5e73b18fffa7ad8e87de57b572c8dd823bc1e55821e1a64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063751039fc11610175578063b79c1886116100dc578063d4394cf811610095578063dd62ed3e1161006f578063dd62ed3e14610a9b578063e27a55fe14610ad8578063e96db1ef14610b03578063f2fde38b14610b2e576102b9565b8063d4394cf814610a1e578063d83052d114610a47578063d929a08314610a70576102b9565b8063b79c188614610924578063bae14e1d1461094d578063be69188314610976578063c31c9c07146109a1578063c6a30647146109cc578063cac2f3f3146109f5576102b9565b8063a457c2d71161012e578063a457c2d7146107dc578063a9059cbb14610819578063af8f26e714610856578063b38d5ef414610881578063b5226fa2146108aa578063b62496f5146108e7576102b9565b8063751039fc146106f05780637aacbcd1146107075780638da5cb5b146107325780638ea5220f1461075d578063924de9b71461078857806395d89b41146107b1576102b9565b806330c35f71116102195780634a62bb65116101d25780634a62bb65146105f45780635df6e68e1461061f57806367b740e91461064a57806368092bd91461067357806370a082311461069c578063715018a6146106d9576102b9565b806330c35f71146104e2578063313ce5671461050d5780633301241114610538578063372b44b814610563578063395093511461058e57806345167f26146105cb576102b9565b806318160ddd1161026b57806318160ddd146103be57806318c34be1146103e957806322f598351461041457806323b872dd1461045157806326991cc81461048e5780632c81355e146104b9576102b9565b806306fdde03146102be578063095ea7b3146102e95780630bd05b691461032657806310d27b2c1461033d578063151d8039146103685780631743e54c14610393576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b57565b6040516102e09190613a07565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613ac2565b610be9565b60405161031d9190613b1d565b60405180910390f35b34801561033257600080fd5b5061033b610c07565b005b34801561034957600080fd5b50610352610cbb565b60405161035f9190613b47565b60405180910390f35b34801561037457600080fd5b5061037d610cc1565b60405161038a9190613b1d565b60405180910390f35b34801561039f57600080fd5b506103a8610cd4565b6040516103b59190613b47565b60405180910390f35b3480156103ca57600080fd5b506103d3610cda565b6040516103e09190613b47565b60405180910390f35b3480156103f557600080fd5b506103fe610ce4565b60405161040b9190613b47565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613b62565b610cea565b6040516104489190613b1d565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613b8f565b610d0a565b6040516104859190613b1d565b60405180910390f35b34801561049a57600080fd5b506104a3610e02565b6040516104b09190613bf1565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613c0c565b610e28565b005b3480156104ee57600080fd5b506104f7610f75565b6040516105049190613b47565b60405180910390f35b34801561051957600080fd5b50610522610f7b565b60405161052f9190613c55565b60405180910390f35b34801561054457600080fd5b5061054d610f84565b60405161055a9190613b47565b60405180910390f35b34801561056f57600080fd5b50610578610f8a565b6040516105859190613b47565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190613ac2565b610f90565b6040516105c29190613b1d565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613c9c565b61103c565b005b34801561060057600080fd5b506106096111a4565b6040516106169190613b1d565b60405180910390f35b34801561062b57600080fd5b506106346111b7565b6040516106419190613b47565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190613c0c565b6111bd565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613c9c565b6112e2565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613b62565b6113b9565b6040516106d09190613b47565b60405180910390f35b3480156106e557600080fd5b506106ee611402565b005b3480156106fc57600080fd5b5061070561148a565b005b34801561071357600080fd5b5061071c611523565b6040516107299190613bf1565b60405180910390f35b34801561073e57600080fd5b50610747611549565b6040516107549190613bf1565b60405180910390f35b34801561076957600080fd5b50610772611573565b60405161077f9190613bf1565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190613cdc565b611599565b005b3480156107bd57600080fd5b506107c6611632565b6040516107d39190613a07565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe9190613ac2565b6116c4565b6040516108109190613b1d565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190613ac2565b6117af565b60405161084d9190613b1d565b60405180910390f35b34801561086257600080fd5b5061086b6117cd565b6040516108789190613b47565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613d09565b6117d3565b005b3480156108b657600080fd5b506108d160048036038101906108cc9190613b62565b6118bd565b6040516108de9190613b1d565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613b62565b6118dd565b60405161091b9190613b1d565b60405180910390f35b34801561093057600080fd5b5061094b60048036038101906109469190613d09565b6118fd565b005b34801561095957600080fd5b50610974600480360381019061096f9190613b62565b6119e7565b005b34801561098257600080fd5b5061098b611b17565b6040516109989190613b47565b60405180910390f35b3480156109ad57600080fd5b506109b6611b1d565b6040516109c39190613da8565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613c9c565b611b43565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190613c0c565b611c1a565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613e25565b611d3f565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190613c9c565b611fca565b005b348015610a7c57600080fd5b50610a856120a1565b604051610a929190613b1d565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd9190613e78565b6120b4565b604051610acf9190613b47565b60405180910390f35b348015610ae457600080fd5b50610aed61213b565b604051610afa9190613b47565b60405180910390f35b348015610b0f57600080fd5b50610b18612141565b604051610b259190613b47565b60405180910390f35b348015610b3a57600080fd5b50610b556004803603810190610b509190613b62565b612147565b005b606060008054610b6690613ee7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290613ee7565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bfd610bf661223f565b8484612247565b6001905092915050565b610c0f61223f565b73ffffffffffffffffffffffffffffffffffffffff16610c2d611549565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613f65565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b60085481565b600b60019054906101000a900460ff1681565b600a5481565b6000600254905090565b600d5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610d17848484612412565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d6261223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990613fd1565b60405180910390fd5b610df685610dee61223f565b858403612247565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3061223f565b73ffffffffffffffffffffffffffffffffffffffff16610e4e611549565b73ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90613f65565b60405180910390fd5b620186a06001610eb2610cda565b610ebc9190614020565b610ec691906140a9565b811015610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061414c565b60405180910390fd5b6103e86005610f15610cda565b610f1f9190614020565b610f2991906140a9565b811115610f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f62906141de565b60405180910390fd5b8060088190555050565b60095481565b60006012905090565b60145481565b600e5481565b6000611032610f9d61223f565b848460046000610fab61223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102d91906141fe565b612247565b6001905092915050565b61104461223f565b73ffffffffffffffffffffffffffffffffffffffff16611062611549565b73ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613f65565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906142c6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b60135481565b6111c561223f565b73ffffffffffffffffffffffffffffffffffffffff166111e3611549565b73ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090613f65565b60405180910390fd5b611241610f7b565b600a61124d9190614419565b6103e8600561125a610cda565b6112649190614020565b61126e91906140a9565b61127891906140a9565b8110156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906144d6565b60405180910390fd5b6112c2610f7b565b600a6112ce9190614419565b816112d99190614020565b60098190555050565b6112ea61223f565b73ffffffffffffffffffffffffffffffffffffffff16611308611549565b73ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613f65565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61140a61223f565b73ffffffffffffffffffffffffffffffffffffffff16611428611549565b73ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613f65565b60405180910390fd5b61148860006131aa565b565b61149261223f565b73ffffffffffffffffffffffffffffffffffffffff166114b0611549565b73ffffffffffffffffffffffffffffffffffffffff1614611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613f65565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115a161223f565b73ffffffffffffffffffffffffffffffffffffffff166115bf611549565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613f65565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461164190613ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461166d90613ee7565b80156116ba5780601f1061168f576101008083540402835291602001916116ba565b820191906000526020600020905b81548152906001019060200180831161169d57829003601f168201915b5050505050905090565b600080600460006116d361223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790614542565b60405180910390fd5b6117a461179b61223f565b85858403612247565b600191505092915050565b60006117c36117bc61223f565b8484612412565b6001905092915050565b60155481565b6117db61223f565b73ffffffffffffffffffffffffffffffffffffffff166117f9611549565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613f65565b60405180910390fd5b816014819055508060158190555060155460145461186d91906141fe565b601381905550606360135411156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b0906145ae565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b61190561223f565b73ffffffffffffffffffffffffffffffffffffffff16611923611549565b73ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090613f65565b60405180910390fd5b816017819055508060188190555060185460175461199791906141fe565b601681905550606360165411156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906145ae565b60405180910390fd5b5050565b6119ef61223f565b73ffffffffffffffffffffffffffffffffffffffff16611a0d611549565b73ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9061461a565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b4b61223f565b73ffffffffffffffffffffffffffffffffffffffff16611b69611549565b73ffffffffffffffffffffffffffffffffffffffff1614611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690613f65565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c2261223f565b73ffffffffffffffffffffffffffffffffffffffff16611c40611549565b73ffffffffffffffffffffffffffffffffffffffff1614611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90613f65565b60405180910390fd5b611c9e610f7b565b600a611caa9190614419565b6103e86001611cb7610cda565b611cc19190614020565b611ccb91906140a9565b611cd591906140a9565b811015611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906146ac565b60405180910390fd5b611d1f610f7b565b600a611d2b9190614419565b81611d369190614020565b600a8190555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611df29594939291906146db565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611e7e9392919061472e565b60405160208183030381529060405280519060200120905060008282604051602001611eab9291906147dd565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611ee89493929190614814565b6020604051602081039080840390855afa158015611f0a573d6000803e3d6000fd5b505050602060405103519050611f1e611549565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f82906148a5565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b611fd261223f565b73ffffffffffffffffffffffffffffffffffffffff16611ff0611549565b73ffffffffffffffffffffffffffffffffffffffff1614612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613f65565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b60175481565b61214f61223f565b73ffffffffffffffffffffffffffffffffffffffff1661216d611549565b73ffffffffffffffffffffffffffffffffffffffff16146121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90614911565b60405180910390fd5b61223c816131aa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae9061497d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e906149e9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124059190613b47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614ac1565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614b2d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614b99565b60405180910390fd5b60008114156126265761262183836000613270565b6131a5565b601260009054906101000a900460ff1615612b2157612643611549565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b15750612681611549565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ea5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612724575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d5750601960009054906101000a900460ff16155b15612b2057600b60009054906101000a900460ff1661283757601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127f75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614c05565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128da5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298157600a54811115612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291b90614c97565b60405180910390fd5b600954612930836113b9565b8261293b91906141fe565b111561297c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297390614d03565b60405180910390fd5b612b1f565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a245750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7357600a54811115612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d95565b60405180910390fd5b612b1e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1d57600954612ad0836113b9565b82612adb91906141fe565b1115612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390614d03565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c185750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bd69190613bf1565b602060405180830381865afa158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c179190614dca565b5b15612d33576000601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614df7565b6020604051808303816000875af1158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614dca565b905080612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890614ea4565b60405180910390fd5b505b6000612d3e306113b9565b905060006008548210159050600b60019054906101000a900460ff168015612d635750805b8015612d7c5750601960009054906101000a900460ff16155b8015612dd25750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e285750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7e5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec2576001601960006101000a81548160ff021916908315150217905550612ea66134f4565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f785750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8257600090505b6000811561319557601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe557506000601654115b1561307f576130126064613004601654886136df90919063ffffffff16565b6136f590919063ffffffff16565b9050601654601854826130259190614020565b61302f91906140a9565b600e600082825461304091906141fe565b92505081905550601654601754826130589190614020565b61306291906140a9565b600d600082825461307391906141fe565b92505081905550613171565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da57506000601354115b156131705761310760646130f9601354886136df90919063ffffffff16565b6136f590919063ffffffff16565b90506013546015548261311a9190614020565b61312491906140a9565b600e600082825461313591906141fe565b925050819055506013546014548261314d9190614020565b61315791906140a9565b600d600082825461316891906141fe565b925050819055505b5b600081111561318657613185873083613270565b5b80856131929190614ec4565b94505b6131a0878787613270565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d790614f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334790614fb0565b60405180910390fd5b61335b83838361370b565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061501c565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461347791906141fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134db9190613b47565b60405180910390a36134ee848484613710565b50505050565b600080600e54600d5461350791906141fe565b90506000613514306113b9565b905060008214806135255750600081145b15613532575050506136dd565b60146008546135419190614020565b81111561355a5760146008546135579190614020565b90505b600047905061356882613715565b600061357d824761395890919063ffffffff16565b905060006135a88561359a600e54856136df90919063ffffffff16565b6136f590919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135f09061506d565b60006040518083038185875af1925050503d806000811461362d576040519150601f19603f3d011682016040523d82523d6000602084013e613632565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161367e9061506d565b60006040518083038185875af1925050503d80600081146136bb576040519150601f19603f3d011682016040523d82523d6000602084013e6136c0565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b600081836136ed9190614020565b905092915050565b6000818361370391906140a9565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373257613731615082565b5b6040519080825280602002602001820160405280156137605781602001602082028036833780820191505090505b5090503081600081518110613778576137776150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384391906150f5565b81600181518110613857576138566150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612247565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392295949392919061521b565b600060405180830381600087803b15801561393c57600080fd5b505af1158015613950573d6000803e3d6000fd5b505050505050565b600081836139669190614ec4565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139a857808201518184015260208101905061398d565b838111156139b7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139d98261396e565b6139e38185613979565b93506139f381856020860161398a565b6139fc816139bd565b840191505092915050565b60006020820190508181036000830152613a2181846139ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5982613a2e565b9050919050565b613a6981613a4e565b8114613a7457600080fd5b50565b600081359050613a8681613a60565b92915050565b6000819050919050565b613a9f81613a8c565b8114613aaa57600080fd5b50565b600081359050613abc81613a96565b92915050565b60008060408385031215613ad957613ad8613a29565b5b6000613ae785828601613a77565b9250506020613af885828601613aad565b9150509250929050565b60008115159050919050565b613b1781613b02565b82525050565b6000602082019050613b326000830184613b0e565b92915050565b613b4181613a8c565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600060208284031215613b7857613b77613a29565b5b6000613b8684828501613a77565b91505092915050565b600080600060608486031215613ba857613ba7613a29565b5b6000613bb686828701613a77565b9350506020613bc786828701613a77565b9250506040613bd886828701613aad565b9150509250925092565b613beb81613a4e565b82525050565b6000602082019050613c066000830184613be2565b92915050565b600060208284031215613c2257613c21613a29565b5b6000613c3084828501613aad565b91505092915050565b600060ff82169050919050565b613c4f81613c39565b82525050565b6000602082019050613c6a6000830184613c46565b92915050565b613c7981613b02565b8114613c8457600080fd5b50565b600081359050613c9681613c70565b92915050565b60008060408385031215613cb357613cb2613a29565b5b6000613cc185828601613a77565b9250506020613cd285828601613c87565b9150509250929050565b600060208284031215613cf257613cf1613a29565b5b6000613d0084828501613c87565b91505092915050565b60008060408385031215613d2057613d1f613a29565b5b6000613d2e85828601613aad565b9250506020613d3f85828601613aad565b9150509250929050565b6000819050919050565b6000613d6e613d69613d6484613a2e565b613d49565b613a2e565b9050919050565b6000613d8082613d53565b9050919050565b6000613d9282613d75565b9050919050565b613da281613d87565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b613dcc81613c39565b8114613dd757600080fd5b50565b600081359050613de981613dc3565b92915050565b6000819050919050565b613e0281613def565b8114613e0d57600080fd5b50565b600081359050613e1f81613df9565b92915050565b600080600060608486031215613e3e57613e3d613a29565b5b6000613e4c86828701613dda565b9350506020613e5d86828701613e10565b9250506040613e6e86828701613e10565b9150509250925092565b60008060408385031215613e8f57613e8e613a29565b5b6000613e9d85828601613a77565b9250506020613eae85828601613a77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613eff57607f821691505b60208210811415613f1357613f12613eb8565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613f4f600d83613979565b9150613f5a82613f19565b602082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613fbb601d83613979565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402b82613a8c565b915061403683613a8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406f5761406e613ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b482613a8c565b91506140bf83613a8c565b9250826140cf576140ce61407a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614136603583613979565b9150614141826140da565b604082019050919050565b6000602082019050818103600083015261416581614129565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141c8603483613979565b91506141d38261416c565b604082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b600061420982613a8c565b915061421483613a8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561424957614248613ff1565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b0603983613979565b91506142bb82614254565b604082019050919050565b600060208201905081810360008301526142df816142a3565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561433d5780860481111561431957614318613ff1565b5b60018516156143285780820291505b8081029050614336856142e6565b94506142fd565b94509492505050565b6000826143565760019050614412565b816143645760009050614412565b816001811461437a5760028114614384576143b3565b6001915050614412565b60ff84111561439657614395613ff1565b5b8360020a9150848211156143ad576143ac613ff1565b5b50614412565b5060208310610133831016604e8410600b84101617156143e85782820a9050838111156143e3576143e2613ff1565b5b614412565b6143f584848460016142f3565b9250905081840481111561440c5761440b613ff1565b5b81810290505b9392505050565b600061442482613a8c565b915061442f83613c39565b925061445c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614346565b905092915050565b7f43616e6e6f7420736574206d6178696d756d546b6e7350657257616c6c65742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b60006144c0602f83613979565b91506144cb82614464565b604082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b600061452c601f83613979565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f4d757374206b6565702074617820617420393925206f72206c65737300000000600082015250565b6000614598601c83613979565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614604601483613979565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f43616e6e6f7420736574206d6178696d756d546b6e7350657254786e206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000614696602c83613979565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b6146d581613def565b82525050565b600060a0820190506146f060008301886146cc565b6146fd60208301876146cc565b61470a60408301866146cc565b6147176060830185613b38565b6147246080830184613be2565b9695505050505050565b600060608201905061474360008301866146cc565b61475060208301856146cc565b61475d6040830184613b38565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006147a6600283614765565b91506147b182614770565b600282019050919050565b6000819050919050565b6147d76147d282613def565b6147bc565b82525050565b60006147e882614799565b91506147f482856147c6565b60208201915061480482846147c6565b6020820191508190509392505050565b600060808201905061482960008301876146cc565b6148366020830186613c46565b61484360408301856146cc565b61485060608301846146cc565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061488f601183613979565b915061489a82614859565b602082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b60006148fb601183613979565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614967601e83613979565b915061497282614931565b602082019050919050565b600060208201905081810360008301526149968161495a565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006149d3602083613979565b91506149de8261499d565b602082019050919050565b60006020820190508181036000830152614a02816149c6565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614a3f601b83613979565b9150614a4a82614a09565b602082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614aab601983613979565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614b17601983613979565b9150614b2282614ae1565b602082019050919050565b60006020820190508181036000830152614b4681614b0a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614b83601783613979565b9150614b8e82614b4d565b602082019050919050565b60006020820190508181036000830152614bb281614b76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614bef601683613979565b9150614bfa82614bb9565b602082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178696d756d546b6e7350657254786e2e0000000000000000000000000000602082015250565b6000614c81603283613979565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ced601383613979565b9150614cf882614cb7565b602082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178696d756d546b6e7350657254786e2e00000000000000000000000000602082015250565b6000614d7f603383613979565b9150614d8a82614d23565b604082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b600081519050614dc481613c70565b92915050565b600060208284031215614de057614ddf613a29565b5b6000614dee84828501614db5565b91505092915050565b600060c082019050614e0c6000830189613be2565b614e196020830188613be2565b614e266040830187613be2565b614e336060830186613b38565b614e406080830185613b38565b614e4d60a0830184613b38565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e8e601483613979565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b6000614ecf82613a8c565b9150614eda83613a8c565b925082821015614eed57614eec613ff1565b5b828203905092915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614f2e601d83613979565b9150614f3982614ef8565b602082019050919050565b60006020820190508181036000830152614f5d81614f21565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614f9a601b83613979565b9150614fa582614f64565b602082019050919050565b60006020820190508181036000830152614fc981614f8d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000615006602083613979565b915061501182614fd0565b602082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b600081905092915050565b50565b600061505760008361503c565b915061506282615047565b600082019050919050565b60006150788261504a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150ef81613a60565b92915050565b60006020828403121561510b5761510a613a29565b5b6000615119848285016150e0565b91505092915050565b6000819050919050565b600061514761514261513d84615122565b613d49565b613a8c565b9050919050565b6151578161512c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519281613a4e565b82525050565b60006151a48383615189565b60208301905092915050565b6000602082019050919050565b60006151c88261515d565b6151d28185615168565b93506151dd83615179565b8060005b8381101561520e5781516151f58882615198565b9750615200836151b0565b9250506001810190506151e1565b5085935050505092915050565b600060a0820190506152306000830188613b38565b61523d602083018761514e565b818103604083015261524f81866151bd565b905061525e6060830185613be2565b61526b6080830184613b38565b969550505050505056fea264697066735822122073fa0e31e0d75e22dfa5e73b18fffa7ad8e87de57b572c8dd823bc1e55821e1a64736f6c634300080a0033

Deployed Bytecode Sourcemap

14227:11202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9912:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10484:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16906:116;;;;;;;;;;;;;:::i;:::-;;14396:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14563:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14481;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10233:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14679:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14832:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11164:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14360:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18481:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14439:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10132:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15030:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14724:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11738:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20139:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14955:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14997:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18844:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19401:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10349:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;946:103;;;;;;;;;;;;;:::i;:::-;;18266:90;;;;;;;;;;;;;:::i;:::-;;14604:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;663:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14646:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18366:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10020:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11957:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11569:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15067:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19529:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14765:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14889:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19827:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20394:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15172:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14317:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18128:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19126:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17030:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17972:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14522:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11005:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15100:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15134:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;758:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9912:100;9966:13;9999:5;9992:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9912:100;:::o;10484:169::-;10567:4;10584:39;10593:12;:10;:12::i;:::-;10607:7;10616:6;10584:8;:39::i;:::-;10641:4;10634:11;;10484:169;;;;:::o;16906:116::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16980:4:::1;16963:14;;:21;;;;;;;;;;;;;;;;;;17010:4;16995:12;;:19;;;;;;;;;;;;;;;;;;16906:116::o:0;14396:36::-;;;;:::o;14563:32::-;;;;;;;;;;;;;:::o;14481:::-;;;;:::o;10233:108::-;10294:7;10321:12;;10314:19;;10233:108;:::o;14679:38::-;;;;:::o;14832:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;11164:397::-;11261:4;11278:27;11288:4;11294:2;11298:6;11278:9;:27::i;:::-;11316:16;11335:11;:17;11347:4;11335:17;;;;;;;;;;;;;;;:31;11353:12;:10;:12::i;:::-;11335:31;;;;;;;;;;;;;;;;11316:50;;11397:6;11385:8;:18;;11377:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11473:47;11482:4;11488:12;:10;:12::i;:::-;11513:6;11502:8;:17;11473:8;:47::i;:::-;11549:4;11542:11;;;11164:397;;;;;:::o;14360:23::-;;;;;;;;;;;;;:::o;18481:355::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18611:6:::1;18606:1;18590:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18589:28;;;;:::i;:::-;18579:6;:38;;18571:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;18726:4;18721:1;18705:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18704:26;;;;:::i;:::-;18694:6;:36;;18686:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18822:6;18798:21;:30;;;;18481:355:::0;:::o;14439:35::-;;;;:::o;10132:93::-;10190:5;10215:2;10208:9;;10132:93;:::o;15030:30::-;;;;:::o;14724:32::-;;;;:::o;11738:211::-;11824:4;11841:78;11850:12;:10;:12::i;:::-;11864:7;11910:8;11873:11;:25;11885:12;:10;:12::i;:::-;11873:25;;;;;;;;;;;;;;;:34;11899:7;11873:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11841:8;:78::i;:::-;11937:4;11930:11;;11738:211;;;;:::o;20139:247::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20258:8:::1;;;;;;;;;;;20250:16;;:4;:16;;;;20242:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20373:5;20339:25;:31;20365:4;20339:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20139:247:::0;;:::o;14955:33::-;;;;;;;;;;;;;:::o;14997:26::-;;;;:::o;18844:274::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18986:10:::1;:8;:10::i;:::-;18980:2;:16;;;;:::i;:::-;18971:4;18966:1;18950:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18949:26;;;;:::i;:::-;18948:49;;;;:::i;:::-;18938:6;:59;;18930:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;19099:10;:8;:10::i;:::-;19093:2;:16;;;;:::i;:::-;19083:6;:27;;;;:::i;:::-;19060:20;:50;;;;18844:274:::0;:::o;19401:120::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19507:6:::1;19489:9;:15;19499:4;19489:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;19401:120:::0;;:::o;10349:127::-;10423:7;10450:9;:18;10460:7;10450:18;;;;;;;;;;;;;;;;10443:25;;10349:127;;;:::o;946:103::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1011:30:::1;1038:1;1011:18;:30::i;:::-;946:103::o:0;18266:90::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18343:5:::1;18326:14;;:22;;;;;;;;;;;;;;;;;;18266:90::o:0;14604:35::-;;;;;;;;;;;;;:::o;663:87::-;709:7;736:6;;;;;;;;;;;729:13;;663:87;:::o;14646:24::-;;;;;;;;;;;;;:::o;18366:107::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18458:7:::1;18443:12;;:22;;;;;;;;;;;;;;;;;;18366:107:::0;:::o;10020:104::-;10076:13;10109:7;10102:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10020:104;:::o;11957:360::-;12043:4;12060:16;12079:11;:25;12091:12;:10;:12::i;:::-;12079:25;;;;;;;;;;;;;;;:34;12105:7;12079:34;;;;;;;;;;;;;;;;12060:53;;12144:8;12132;:20;;12124:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12224:52;12233:12;:10;:12::i;:::-;12247:7;12267:8;12256;:19;12224:8;:52::i;:::-;12305:4;12298:11;;;11957:360;;;;:::o;11569:161::-;11648:4;11665:35;11675:12;:10;:12::i;:::-;11689:2;11693:6;11665:9;:35::i;:::-;11718:4;11711:11;;11569:161;;;;:::o;15067:24::-;;;;:::o;19529:290::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19646:12:::1;19628:15;:30;;;;19681:9;19669;:21;;;;19733:9;;19715:15;;:27;;;;:::i;:::-;19701:11;:41;;;;19776:2;19761:11;;:17;;19753:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19529:290:::0;;:::o;14765:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;14889:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19827:300::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19949:12:::1;19930:16;:31;;;;19985:9;19972:10;:22;;;;20039:10;;20020:16;;:29;;;;:::i;:::-;20005:12;:44;;;;20084:2;20068:12;;:18;;20060:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19827:300:::0;;:::o;20394:197::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20515:3:::1;20489:30;;:14;:30;;;;20481:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20569:14;20555:11;;:28;;;;;;;;;;;;;;;;;;20394:197:::0;:::o;15172:25::-;;;;:::o;14317:36::-;;;;;;;;;;;;;:::o;18128:130::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18245:5:::1;18217:16;:25;18234:7;18217:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18128:130:::0;;:::o;19126:267::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19267:10:::1;:8;:10::i;:::-;19261:2;:16;;;;:::i;:::-;19252:4;19247:1;19231:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19230:26;;;;:::i;:::-;19229:49;;;;:::i;:::-;19219:6;:59;;19211:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;19374:10;:8;:10::i;:::-;19368:2;:16;;;;:::i;:::-;19358:6;:27;;;;:::i;:::-;19338:17;:47;;;;19126:267:::0;:::o;17030:934::-;17116:18;17172:95;17292:22;;;;;;;;;;;;;;;;;17282:33;;;;;;17340:10;;;;;;;;;;;;;;;;;17330:21;;;;;;17366:13;17402:4;17147:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17137:282;;;;;;17116:303;;17430:18;17486:49;17560:23;;;;;;;;;;;;;;;;;17550:34;;;;;;17607:1;17461:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17451:170;;;;;;17430:191;;17632:14;17715:10;17740;17659:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17649:129;;;;;;17632:146;;17791:14;17808:26;17818:6;17826:1;17829;17832;17808:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17791:43;;17863:7;:5;:7::i;:::-;17853:17;;:6;:17;;;17845:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17922:4;17905:14;;:21;;;;;;;;;;;;;;;;;;17952:4;17937:12;;:19;;;;;;;;;;;;;;;;;;17105:859;;;;17030:934;;;:::o;17972:148::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18107:5:::1;18072:26;:32;18099:4;18072:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;17972:148:::0;;:::o;14522:34::-;;;;;;;;;;;;;:::o;11005:151::-;11094:7;11121:11;:18;11133:5;11121:18;;;;;;;;;;;;;;;:27;11140:7;11121:27;;;;;;;;;;;;;;;;11114:34;;11005:151;;;;:::o;15100:27::-;;;;:::o;15134:31::-;;;;:::o;758:180::-;605:12;:10;:12::i;:::-;594:23;;:7;:5;:7::i;:::-;:23;;;586:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;867:1:::1;847:22;;:8;:22;;;;839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;902:28;921:8;902:18;:28::i;:::-;758:180:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;10661:336::-;10780:1;10763:19;;:5;:19;;;;10755:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10855:1;10836:21;;:7;:21;;;;10828:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10935:6;10905:11;:18;10917:5;10905:18;;;;;;;;;;;;;;;:27;10924:7;10905:27;;;;;;;;;;;;;;;:36;;;;10973:7;10957:32;;10966:5;10957:32;;;10982:6;10957:32;;;;;;:::i;:::-;;;;;;;;10661:336;;;:::o;21502:3203::-;21650:1;21634:18;;:4;:18;;;;21626:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21717:1;21703:16;;:2;:16;;;;21695:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21769:9;:15;21779:4;21769:15;;;;;;;;;;;;;;;;;;;;;;;;;21768:16;21760:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21834:9;:13;21844:2;21834:13;;;;;;;;;;;;;;;;;;;;;;;;;21833:14;21825:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;21902:1;21892:6;:11;21888:93;;;21920:28;21936:4;21942:2;21946:1;21920:15;:28::i;:::-;21963:7;;21888:93;21997:14;;;;;;;;;;;21993:1058;;;22040:7;:5;:7::i;:::-;22032:15;;:4;:15;;;;:32;;;;;22057:7;:5;:7::i;:::-;22051:13;;:2;:13;;;;22032:32;:52;;;;;22082:1;22068:16;;:2;:16;;;;22032:52;:77;;;;;22102:6;22088:21;;:2;:21;;;;22032:77;:91;;;;;22114:9;;;;;;;;;;;22113:10;22032:91;22028:1012;;;22149:14;;;;;;;;;;;22144:145;;22196:16;:22;22213:4;22196:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22222:16;:20;22239:2;22222:20;;;;;;;;;;;;;;;;;;;;;;;;;22196:46;22188:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22144:145;22313:25;:31;22339:4;22313:31;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;;22349:26;:30;22376:2;22349:30;;;;;;;;;;;;;;;;;;;;;;;;;22348:31;22313:66;22309:716;;;22422:17;;22412:6;:27;;22404:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;22551:20;;22534:13;22544:2;22534:9;:13::i;:::-;22525:6;:22;;;;:::i;:::-;:46;;22517:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22309:716;;;22642:25;:29;22668:2;22642:29;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;;22676:26;:32;22703:4;22676:32;;;;;;;;;;;;;;;;;;;;;;;;;22675:33;22642:66;22638:387;;;22751:17;;22741:6;:27;;22733:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22638:387;;;22872:26;:30;22899:2;22872:30;;;;;;;;;;;;;;;;;;;;;;;;;22867:158;;22961:20;;22944:13;22954:2;22944:9;:13::i;:::-;22935:6;:22;;;;:::i;:::-;:46;;22927:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22867:158;22638:387;22309:716;22028:1012;21993:1058;23090:1;23067:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;23109:11;;;;;;;;;;;23096:35;;;23140:4;23096:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23067:79;23063:302;;;23163:10;23189:11;;;;;;;;;;;23176:31;;;23208:4;23214:2;23226:8;;;;;;;;;;;23237:20;;23259:17;;23278:21;;23176:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23163:137;;23323:5;23315:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23148:217;23063:302;23377:20;23400:24;23418:4;23400:9;:24::i;:::-;23377:47;;23435:12;23466:21;;23450:12;:37;;23435:52;;23502:12;;;;;;;;;;;:23;;;;;23518:7;23502:23;:37;;;;;23530:9;;;;;;;;;;;23529:10;23502:37;:86;;;;;23557:25;:31;23583:4;23557:31;;;;;;;;;;;;;;;;;;;;;;;;;23556:32;23502:86;:113;;;;;23593:16;:22;23610:4;23593:22;;;;;;;;;;;;;;;;;;;;;;;;;23592:23;23502:113;:138;;;;;23620:16;:20;23637:2;23620:20;;;;;;;;;;;;;;;;;;;;;;;;;23619:21;23502:138;23498:244;;;23669:4;23657:9;;:16;;;;;;;;;;;;;;;;;;23688:10;:8;:10::i;:::-;23725:5;23713:9;;:17;;;;;;;;;;;;;;;;;;23498:244;23754:9;23767;;;;;;;;;;;23766:10;23754:22;;23791:16;:22;23808:4;23791:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;23817:16;:20;23834:2;23817:20;;;;;;;;;;;;;;;;;;;;;;;;;23791:46;23787:77;;;23859:5;23852:12;;23787:77;23877:12;23908:4;23904:748;;;23933:25;:29;23959:2;23933:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;23981:1;23966:12;;:16;23933:49;23929:595;;;24010:33;24039:3;24010:24;24021:12;;24010:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24003:40;;24105:12;;24091:10;;24084:4;:17;;;;:::i;:::-;24083:34;;;;:::i;:::-;24062:17;;:55;;;;;;;:::i;:::-;;;;;;;;24191:12;;24171:16;;24164:4;:23;;;;:::i;:::-;24163:40;;;;:::i;:::-;24136:23;;:67;;;;;;;:::i;:::-;;;;;;;;23929:595;;;24242:25;:31;24268:4;24242:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24291:1;24277:11;;:15;24242:50;24238:286;;;24320:32;24348:3;24320:23;24331:11;;24320:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;24313:39;;24413:11;;24400:9;;24393:4;:16;;;;:::i;:::-;24392:32;;;;:::i;:::-;24371:17;;:53;;;;;;;:::i;:::-;;;;;;;;24497:11;;24478:15;;24471:4;:22;;;;:::i;:::-;24470:38;;;;:::i;:::-;24443:23;;:65;;;;;;;:::i;:::-;;;;;;;;24238:286;23929:595;24549:1;24542:4;:8;24538:73;;;24569:42;24585:4;24599;24606;24569:15;:42::i;:::-;24538:73;24636:4;24626:14;;;;;:::i;:::-;;;23904:748;24664:33;24680:4;24686:2;24690:6;24664:15;:33::i;:::-;21615:3090;;;;21502:3203;;;;:::o;1057:191::-;1131:16;1150:6;;;;;;;;;;;1131:25;;1176:8;1167:6;;:17;;;;;;;;;;;;;;;;;;1231:8;1200:40;;1221:8;1200:40;;;;;;;;;;;;1120:128;1057:191;:::o;13461:607::-;13574:1;13558:18;;:4;:18;;;;13550:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13643:1;13629:16;;:2;:16;;;;13621:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13688:38;13709:4;13715:2;13719:6;13688:20;:38::i;:::-;13737:19;13759:9;:15;13769:4;13759:15;;;;;;;;;;;;;;;;13737:37;;13808:6;13793:11;:21;;13785:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13919:6;13905:11;:20;13887:9;:15;13897:4;13887:15;;;;;;;;;;;;;;;:38;;;;13964:6;13947:9;:13;13957:2;13947:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14001:2;13986:26;;13995:4;13986:26;;;14005:6;13986:26;;;;;;:::i;:::-;;;;;;;;14023:37;14043:4;14049:2;14053:6;14023:19;:37::i;:::-;13539:529;13461:607;;;:::o;20599:895::-;20638:12;20661:25;20715:17;;20689:23;;:43;;;;:::i;:::-;20661:71;;20743:20;20766:24;20784:4;20766:9;:24::i;:::-;20743:47;;20828:1;20807:17;:22;:43;;;;20849:1;20833:12;:17;20807:43;20803:69;;;20865:7;;;;;20803:69;20927:2;20903:21;;:26;;;;:::i;:::-;20888:12;:41;20884:101;;;20983:2;20959:21;;:26;;;;:::i;:::-;20944:41;;20884:101;20998:22;21023:21;20998:46;;21055:30;21072:12;21055:16;:30::i;:::-;21098:18;21119:41;21145:14;21119:21;:25;;:41;;;;:::i;:::-;21098:62;;21171:17;21191:56;21229:17;21191:33;21206:17;;21191:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;21171:76;;21282:9;;;;;;;;;;;21274:23;;21305:9;21274:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21260:59;;;;;21352:20;;;;;;;;;;;21344:34;;21387:21;21344:70;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21330:84;;;;;21453:1;21427:23;:27;;;;21485:1;21465:17;:21;;;;20627:867;;;;;;20599:895;:::o;1279:98::-;1337:7;1368:1;1364;:5;;;;:::i;:::-;1357:12;;1279:98;;;;:::o;1663:::-;1721:7;1752:1;1748;:5;;;;:::i;:::-;1741:12;;1663:98;;;;:::o;13328:125::-;;;;:::o;14076:144::-;;;;:::o;24865:559::-;24986:21;25024:1;25010:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24986:40;;25055:4;25037;25042:1;25037:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25081:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25071:4;25076:1;25071:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;25111:52;25128:4;25143:10;;;;;;;;;;;25156:6;25111:8;:52::i;:::-;25202:10;;;;;;;;;;;:61;;;25278:6;25299:1;25343:4;25370;25390:15;25202:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24915:509;24865:559;:::o;2308:98::-;2366:7;2397:1;2393;:5;;;;:::i;:::-;2386:12;;2308:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:118::-;4893:24;4911:5;4893:24;:::i;:::-;4888:3;4881:37;4806:118;;:::o;4930:222::-;5023:4;5061:2;5050:9;5046:18;5038:26;;5074:71;5142:1;5131:9;5127:17;5118:6;5074:71;:::i;:::-;4930:222;;;;:::o;5158:329::-;5217:6;5266:2;5254:9;5245:7;5241:23;5237:32;5234:119;;;5272:79;;:::i;:::-;5234:119;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5158:329;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:468::-;6249:6;6257;6306:2;6294:9;6285:7;6281:23;6277:32;6274:119;;;6312:79;;:::i;:::-;6274:119;6432:1;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6403:117;6559:2;6585:50;6627:7;6618:6;6607:9;6603:22;6585:50;:::i;:::-;6575:60;;6530:115;6184:468;;;;;:::o;6658:323::-;6714:6;6763:2;6751:9;6742:7;6738:23;6734:32;6731:119;;;6769:79;;:::i;:::-;6731:119;6889:1;6914:50;6956:7;6947:6;6936:9;6932:22;6914:50;:::i;:::-;6904:60;;6860:114;6658:323;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:60::-;7495:3;7516:5;7509:12;;7467:60;;;:::o;7533:142::-;7583:9;7616:53;7634:34;7643:24;7661:5;7643:24;:::i;:::-;7634:34;:::i;:::-;7616:53;:::i;:::-;7603:66;;7533:142;;;:::o;7681:126::-;7731:9;7764:37;7795:5;7764:37;:::i;:::-;7751:50;;7681:126;;;:::o;7813:152::-;7889:9;7922:37;7953:5;7922:37;:::i;:::-;7909:50;;7813:152;;;:::o;7971:183::-;8084:63;8141:5;8084:63;:::i;:::-;8079:3;8072:76;7971:183;;:::o;8160:274::-;8279:4;8317:2;8306:9;8302:18;8294:26;;8330:97;8424:1;8413:9;8409:17;8400:6;8330:97;:::i;:::-;8160:274;;;;:::o;8440:118::-;8511:22;8527:5;8511:22;:::i;:::-;8504:5;8501:33;8491:61;;8548:1;8545;8538:12;8491:61;8440:118;:::o;8564:135::-;8608:5;8646:6;8633:20;8624:29;;8662:31;8687:5;8662:31;:::i;:::-;8564:135;;;;:::o;8705:77::-;8742:7;8771:5;8760:16;;8705:77;;;:::o;8788:122::-;8861:24;8879:5;8861:24;:::i;:::-;8854:5;8851:35;8841:63;;8900:1;8897;8890:12;8841:63;8788:122;:::o;8916:139::-;8962:5;9000:6;8987:20;8978:29;;9016:33;9043:5;9016:33;:::i;:::-;8916:139;;;;:::o;9061:615::-;9136:6;9144;9152;9201:2;9189:9;9180:7;9176:23;9172:32;9169:119;;;9207:79;;:::i;:::-;9169:119;9327:1;9352:51;9395:7;9386:6;9375:9;9371:22;9352:51;:::i;:::-;9342:61;;9298:115;9452:2;9478:53;9523:7;9514:6;9503:9;9499:22;9478:53;:::i;:::-;9468:63;;9423:118;9580:2;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9551:118;9061:615;;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:180::-;10210:77;10207:1;10200:88;10307:4;10304:1;10297:15;10331:4;10328:1;10321:15;10348:320;10392:6;10429:1;10423:4;10419:12;10409:22;;10476:1;10470:4;10466:12;10497:18;10487:81;;10553:4;10545:6;10541:17;10531:27;;10487:81;10615:2;10607:6;10604:14;10584:18;10581:38;10578:84;;;10634:18;;:::i;:::-;10578:84;10399:269;10348:320;;;:::o;10674:163::-;10814:15;10810:1;10802:6;10798:14;10791:39;10674:163;:::o;10843:366::-;10985:3;11006:67;11070:2;11065:3;11006:67;:::i;:::-;10999:74;;11082:93;11171:3;11082:93;:::i;:::-;11200:2;11195:3;11191:12;11184:19;;10843:366;;;:::o;11215:419::-;11381:4;11419:2;11408:9;11404:18;11396:26;;11468:9;11462:4;11458:20;11454:1;11443:9;11439:17;11432:47;11496:131;11622:4;11496:131;:::i;:::-;11488:139;;11215:419;;;:::o;11640:179::-;11780:31;11776:1;11768:6;11764:14;11757:55;11640:179;:::o;11825:366::-;11967:3;11988:67;12052:2;12047:3;11988:67;:::i;:::-;11981:74;;12064:93;12153:3;12064:93;:::i;:::-;12182:2;12177:3;12173:12;12166:19;;11825:366;;;:::o;12197:419::-;12363:4;12401:2;12390:9;12386:18;12378:26;;12450:9;12444:4;12440:20;12436:1;12425:9;12421:17;12414:47;12478:131;12604:4;12478:131;:::i;:::-;12470:139;;12197:419;;;:::o;12622:180::-;12670:77;12667:1;12660:88;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12808:348;12848:7;12871:20;12889:1;12871:20;:::i;:::-;12866:25;;12905:20;12923:1;12905:20;:::i;:::-;12900:25;;13093:1;13025:66;13021:74;13018:1;13015:81;13010:1;13003:9;12996:17;12992:105;12989:131;;;13100:18;;:::i;:::-;12989:131;13148:1;13145;13141:9;13130:20;;12808:348;;;;:::o;13162:180::-;13210:77;13207:1;13200:88;13307:4;13304:1;13297:15;13331:4;13328:1;13321:15;13348:185;13388:1;13405:20;13423:1;13405:20;:::i;:::-;13400:25;;13439:20;13457:1;13439:20;:::i;:::-;13434:25;;13478:1;13468:35;;13483:18;;:::i;:::-;13468:35;13525:1;13522;13518:9;13513:14;;13348:185;;;;:::o;13539:240::-;13679:34;13675:1;13667:6;13663:14;13656:58;13748:23;13743:2;13735:6;13731:15;13724:48;13539:240;:::o;13785:366::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14157:419;;;:::o;14582:239::-;14722:34;14718:1;14710:6;14706:14;14699:58;14791:22;14786:2;14778:6;14774:15;14767:47;14582:239;:::o;14827:366::-;14969:3;14990:67;15054:2;15049:3;14990:67;:::i;:::-;14983:74;;15066:93;15155:3;15066:93;:::i;:::-;15184:2;15179:3;15175:12;15168:19;;14827:366;;;:::o;15199:419::-;15365:4;15403:2;15392:9;15388:18;15380:26;;15452:9;15446:4;15442:20;15438:1;15427:9;15423:17;15416:47;15480:131;15606:4;15480:131;:::i;:::-;15472:139;;15199:419;;;:::o;15624:305::-;15664:3;15683:20;15701:1;15683:20;:::i;:::-;15678:25;;15717:20;15735:1;15717:20;:::i;:::-;15712:25;;15871:1;15803:66;15799:74;15796:1;15793:81;15790:107;;;15877:18;;:::i;:::-;15790:107;15921:1;15918;15914:9;15907:16;;15624:305;;;;:::o;15935:244::-;16075:34;16071:1;16063:6;16059:14;16052:58;16144:27;16139:2;16131:6;16127:15;16120:52;15935:244;:::o;16185:366::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:419::-;16723:4;16761:2;16750:9;16746:18;16738:26;;16810:9;16804:4;16800:20;16796:1;16785:9;16781:17;16774:47;16838:131;16964:4;16838:131;:::i;:::-;16830:139;;16557:419;;;:::o;16982:102::-;17024:8;17071:5;17068:1;17064:13;17043:34;;16982:102;;;:::o;17090:848::-;17151:5;17158:4;17182:6;17173:15;;17206:5;17197:14;;17220:712;17241:1;17231:8;17228:15;17220:712;;;17336:4;17331:3;17327:14;17321:4;17318:24;17315:50;;;17345:18;;:::i;:::-;17315:50;17395:1;17385:8;17381:16;17378:451;;;17810:4;17803:5;17799:16;17790:25;;17378:451;17860:4;17854;17850:15;17842:23;;17890:32;17913:8;17890:32;:::i;:::-;17878:44;;17220:712;;;17090:848;;;;;;;:::o;17944:1073::-;17998:5;18189:8;18179:40;;18210:1;18201:10;;18212:5;;18179:40;18238:4;18228:36;;18255:1;18246:10;;18257:5;;18228:36;18324:4;18372:1;18367:27;;;;18408:1;18403:191;;;;18317:277;;18367:27;18385:1;18376:10;;18387:5;;;18403:191;18448:3;18438:8;18435:17;18432:43;;;18455:18;;:::i;:::-;18432:43;18504:8;18501:1;18497:16;18488:25;;18539:3;18532:5;18529:14;18526:40;;;18546:18;;:::i;:::-;18526:40;18579:5;;;18317:277;;18703:2;18693:8;18690:16;18684:3;18678:4;18675:13;18671:36;18653:2;18643:8;18640:16;18635:2;18629:4;18626:12;18622:35;18606:111;18603:246;;;18759:8;18753:4;18749:19;18740:28;;18794:3;18787:5;18784:14;18781:40;;;18801:18;;:::i;:::-;18781:40;18834:5;;18603:246;18874:42;18912:3;18902:8;18896:4;18893:1;18874:42;:::i;:::-;18859:57;;;;18948:4;18943:3;18939:14;18932:5;18929:25;18926:51;;;18957:18;;:::i;:::-;18926:51;19006:4;18999:5;18995:16;18986:25;;17944:1073;;;;;;:::o;19023:281::-;19081:5;19105:23;19123:4;19105:23;:::i;:::-;19097:31;;19149:25;19165:8;19149:25;:::i;:::-;19137:37;;19193:104;19230:66;19220:8;19214:4;19193:104;:::i;:::-;19184:113;;19023:281;;;;:::o;19310:234::-;19450:34;19446:1;19438:6;19434:14;19427:58;19519:17;19514:2;19506:6;19502:15;19495:42;19310:234;:::o;19550:366::-;19692:3;19713:67;19777:2;19772:3;19713:67;:::i;:::-;19706:74;;19789:93;19878:3;19789:93;:::i;:::-;19907:2;19902:3;19898:12;19891:19;;19550:366;;;:::o;19922:419::-;20088:4;20126:2;20115:9;20111:18;20103:26;;20175:9;20169:4;20165:20;20161:1;20150:9;20146:17;20139:47;20203:131;20329:4;20203:131;:::i;:::-;20195:139;;19922:419;;;:::o;20347:181::-;20487:33;20483:1;20475:6;20471:14;20464:57;20347:181;:::o;20534:366::-;20676:3;20697:67;20761:2;20756:3;20697:67;:::i;:::-;20690:74;;20773:93;20862:3;20773:93;:::i;:::-;20891:2;20886:3;20882:12;20875:19;;20534:366;;;:::o;20906:419::-;21072:4;21110:2;21099:9;21095:18;21087:26;;21159:9;21153:4;21149:20;21145:1;21134:9;21130:17;21123:47;21187:131;21313:4;21187:131;:::i;:::-;21179:139;;20906:419;;;:::o;21331:178::-;21471:30;21467:1;21459:6;21455:14;21448:54;21331:178;:::o;21515:366::-;21657:3;21678:67;21742:2;21737:3;21678:67;:::i;:::-;21671:74;;21754:93;21843:3;21754:93;:::i;:::-;21872:2;21867:3;21863:12;21856:19;;21515:366;;;:::o;21887:419::-;22053:4;22091:2;22080:9;22076:18;22068:26;;22140:9;22134:4;22130:20;22126:1;22115:9;22111:17;22104:47;22168:131;22294:4;22168:131;:::i;:::-;22160:139;;21887:419;;;:::o;22312:170::-;22452:22;22448:1;22440:6;22436:14;22429:46;22312:170;:::o;22488:366::-;22630:3;22651:67;22715:2;22710:3;22651:67;:::i;:::-;22644:74;;22727:93;22816:3;22727:93;:::i;:::-;22845:2;22840:3;22836:12;22829:19;;22488:366;;;:::o;22860:419::-;23026:4;23064:2;23053:9;23049:18;23041:26;;23113:9;23107:4;23103:20;23099:1;23088:9;23084:17;23077:47;23141:131;23267:4;23141:131;:::i;:::-;23133:139;;22860:419;;;:::o;23285:231::-;23425:34;23421:1;23413:6;23409:14;23402:58;23494:14;23489:2;23481:6;23477:15;23470:39;23285:231;:::o;23522:366::-;23664:3;23685:67;23749:2;23744:3;23685:67;:::i;:::-;23678:74;;23761:93;23850:3;23761:93;:::i;:::-;23879:2;23874:3;23870:12;23863:19;;23522:366;;;:::o;23894:419::-;24060:4;24098:2;24087:9;24083:18;24075:26;;24147:9;24141:4;24137:20;24133:1;24122:9;24118:17;24111:47;24175:131;24301:4;24175:131;:::i;:::-;24167:139;;23894:419;;;:::o;24319:118::-;24406:24;24424:5;24406:24;:::i;:::-;24401:3;24394:37;24319:118;;:::o;24443:664::-;24648:4;24686:3;24675:9;24671:19;24663:27;;24700:71;24768:1;24757:9;24753:17;24744:6;24700:71;:::i;:::-;24781:72;24849:2;24838:9;24834:18;24825:6;24781:72;:::i;:::-;24863;24931:2;24920:9;24916:18;24907:6;24863:72;:::i;:::-;24945;25013:2;25002:9;24998:18;24989:6;24945:72;:::i;:::-;25027:73;25095:3;25084:9;25080:19;25071:6;25027:73;:::i;:::-;24443:664;;;;;;;;:::o;25113:442::-;25262:4;25300:2;25289:9;25285:18;25277:26;;25313:71;25381:1;25370:9;25366:17;25357:6;25313:71;:::i;:::-;25394:72;25462:2;25451:9;25447:18;25438:6;25394:72;:::i;:::-;25476;25544:2;25533:9;25529:18;25520:6;25476:72;:::i;:::-;25113:442;;;;;;:::o;25561:148::-;25663:11;25700:3;25685:18;;25561:148;;;;:::o;25715:214::-;25855:66;25851:1;25843:6;25839:14;25832:90;25715:214;:::o;25935:400::-;26095:3;26116:84;26198:1;26193:3;26116:84;:::i;:::-;26109:91;;26209:93;26298:3;26209:93;:::i;:::-;26327:1;26322:3;26318:11;26311:18;;25935:400;;;:::o;26341:79::-;26380:7;26409:5;26398:16;;26341:79;;;:::o;26426:157::-;26531:45;26551:24;26569:5;26551:24;:::i;:::-;26531:45;:::i;:::-;26526:3;26519:58;26426:157;;:::o;26589:663::-;26830:3;26852:148;26996:3;26852:148;:::i;:::-;26845:155;;27010:75;27081:3;27072:6;27010:75;:::i;:::-;27110:2;27105:3;27101:12;27094:19;;27123:75;27194:3;27185:6;27123:75;:::i;:::-;27223:2;27218:3;27214:12;27207:19;;27243:3;27236:10;;26589:663;;;;;:::o;27258:545::-;27431:4;27469:3;27458:9;27454:19;27446:27;;27483:71;27551:1;27540:9;27536:17;27527:6;27483:71;:::i;:::-;27564:68;27628:2;27617:9;27613:18;27604:6;27564:68;:::i;:::-;27642:72;27710:2;27699:9;27695:18;27686:6;27642:72;:::i;:::-;27724;27792:2;27781:9;27777:18;27768:6;27724:72;:::i;:::-;27258:545;;;;;;;:::o;27809:167::-;27949:19;27945:1;27937:6;27933:14;27926:43;27809:167;:::o;27982:366::-;28124:3;28145:67;28209:2;28204:3;28145:67;:::i;:::-;28138:74;;28221:93;28310:3;28221:93;:::i;:::-;28339:2;28334:3;28330:12;28323:19;;27982:366;;;:::o;28354:419::-;28520:4;28558:2;28547:9;28543:18;28535:26;;28607:9;28601:4;28597:20;28593:1;28582:9;28578:17;28571:47;28635:131;28761:4;28635:131;:::i;:::-;28627:139;;28354:419;;;:::o;28779:167::-;28919:19;28915:1;28907:6;28903:14;28896:43;28779:167;:::o;28952:366::-;29094:3;29115:67;29179:2;29174:3;29115:67;:::i;:::-;29108:74;;29191:93;29280:3;29191:93;:::i;:::-;29309:2;29304:3;29300:12;29293:19;;28952:366;;;:::o;29324:419::-;29490:4;29528:2;29517:9;29513:18;29505:26;;29577:9;29571:4;29567:20;29563:1;29552:9;29548:17;29541:47;29605:131;29731:4;29605:131;:::i;:::-;29597:139;;29324:419;;;:::o;29749:180::-;29889:32;29885:1;29877:6;29873:14;29866:56;29749:180;:::o;29935:366::-;30077:3;30098:67;30162:2;30157:3;30098:67;:::i;:::-;30091:74;;30174:93;30263:3;30174:93;:::i;:::-;30292:2;30287:3;30283:12;30276:19;;29935:366;;;:::o;30307:419::-;30473:4;30511:2;30500:9;30496:18;30488:26;;30560:9;30554:4;30550:20;30546:1;30535:9;30531:17;30524:47;30588:131;30714:4;30588:131;:::i;:::-;30580:139;;30307:419;;;:::o;30732:182::-;30872:34;30868:1;30860:6;30856:14;30849:58;30732:182;:::o;30920:366::-;31062:3;31083:67;31147:2;31142:3;31083:67;:::i;:::-;31076:74;;31159:93;31248:3;31159:93;:::i;:::-;31277:2;31272:3;31268:12;31261:19;;30920:366;;;:::o;31292:419::-;31458:4;31496:2;31485:9;31481:18;31473:26;;31545:9;31539:4;31535:20;31531:1;31520:9;31516:17;31509:47;31573:131;31699:4;31573:131;:::i;:::-;31565:139;;31292:419;;;:::o;31717:177::-;31857:29;31853:1;31845:6;31841:14;31834:53;31717:177;:::o;31900:366::-;32042:3;32063:67;32127:2;32122:3;32063:67;:::i;:::-;32056:74;;32139:93;32228:3;32139:93;:::i;:::-;32257:2;32252:3;32248:12;32241:19;;31900:366;;;:::o;32272:419::-;32438:4;32476:2;32465:9;32461:18;32453:26;;32525:9;32519:4;32515:20;32511:1;32500:9;32496:17;32489:47;32553:131;32679:4;32553:131;:::i;:::-;32545:139;;32272:419;;;:::o;32697:175::-;32837:27;32833:1;32825:6;32821:14;32814:51;32697:175;:::o;32878:366::-;33020:3;33041:67;33105:2;33100:3;33041:67;:::i;:::-;33034:74;;33117:93;33206:3;33117:93;:::i;:::-;33235:2;33230:3;33226:12;33219:19;;32878:366;;;:::o;33250:419::-;33416:4;33454:2;33443:9;33439:18;33431:26;;33503:9;33497:4;33493:20;33489:1;33478:9;33474:17;33467:47;33531:131;33657:4;33531:131;:::i;:::-;33523:139;;33250:419;;;:::o;33675:175::-;33815:27;33811:1;33803:6;33799:14;33792:51;33675:175;:::o;33856:366::-;33998:3;34019:67;34083:2;34078:3;34019:67;:::i;:::-;34012:74;;34095:93;34184:3;34095:93;:::i;:::-;34213:2;34208:3;34204:12;34197:19;;33856:366;;;:::o;34228:419::-;34394:4;34432:2;34421:9;34417:18;34409:26;;34481:9;34475:4;34471:20;34467:1;34456:9;34452:17;34445:47;34509:131;34635:4;34509:131;:::i;:::-;34501:139;;34228:419;;;:::o;34653:173::-;34793:25;34789:1;34781:6;34777:14;34770:49;34653:173;:::o;34832:366::-;34974:3;34995:67;35059:2;35054:3;34995:67;:::i;:::-;34988:74;;35071:93;35160:3;35071:93;:::i;:::-;35189:2;35184:3;35180:12;35173:19;;34832:366;;;:::o;35204:419::-;35370:4;35408:2;35397:9;35393:18;35385:26;;35457:9;35451:4;35447:20;35443:1;35432:9;35428:17;35421:47;35485:131;35611:4;35485:131;:::i;:::-;35477:139;;35204:419;;;:::o;35629:172::-;35769:24;35765:1;35757:6;35753:14;35746:48;35629:172;:::o;35807:366::-;35949:3;35970:67;36034:2;36029:3;35970:67;:::i;:::-;35963:74;;36046:93;36135:3;36046:93;:::i;:::-;36164:2;36159:3;36155:12;36148:19;;35807:366;;;:::o;36179:419::-;36345:4;36383:2;36372:9;36368:18;36360:26;;36432:9;36426:4;36422:20;36418:1;36407:9;36403:17;36396:47;36460:131;36586:4;36460:131;:::i;:::-;36452:139;;36179:419;;;:::o;36604:237::-;36744:34;36740:1;36732:6;36728:14;36721:58;36813:20;36808:2;36800:6;36796:15;36789:45;36604:237;:::o;36847:366::-;36989:3;37010:67;37074:2;37069:3;37010:67;:::i;:::-;37003:74;;37086:93;37175:3;37086:93;:::i;:::-;37204:2;37199:3;37195:12;37188:19;;36847:366;;;:::o;37219:419::-;37385:4;37423:2;37412:9;37408:18;37400:26;;37472:9;37466:4;37462:20;37458:1;37447:9;37443:17;37436:47;37500:131;37626:4;37500:131;:::i;:::-;37492:139;;37219:419;;;:::o;37644:169::-;37784:21;37780:1;37772:6;37768:14;37761:45;37644:169;:::o;37819:366::-;37961:3;37982:67;38046:2;38041:3;37982:67;:::i;:::-;37975:74;;38058:93;38147:3;38058:93;:::i;:::-;38176:2;38171:3;38167:12;38160:19;;37819:366;;;:::o;38191:419::-;38357:4;38395:2;38384:9;38380:18;38372:26;;38444:9;38438:4;38434:20;38430:1;38419:9;38415:17;38408:47;38472:131;38598:4;38472:131;:::i;:::-;38464:139;;38191:419;;;:::o;38616:238::-;38756:34;38752:1;38744:6;38740:14;38733:58;38825:21;38820:2;38812:6;38808:15;38801:46;38616:238;:::o;38860:366::-;39002:3;39023:67;39087:2;39082:3;39023:67;:::i;:::-;39016:74;;39099:93;39188:3;39099:93;:::i;:::-;39217:2;39212:3;39208:12;39201:19;;38860:366;;;:::o;39232:419::-;39398:4;39436:2;39425:9;39421:18;39413:26;;39485:9;39479:4;39475:20;39471:1;39460:9;39456:17;39449:47;39513:131;39639:4;39513:131;:::i;:::-;39505:139;;39232:419;;;:::o;39657:137::-;39711:5;39742:6;39736:13;39727:22;;39758:30;39782:5;39758:30;:::i;:::-;39657:137;;;;:::o;39800:345::-;39867:6;39916:2;39904:9;39895:7;39891:23;39887:32;39884:119;;;39922:79;;:::i;:::-;39884:119;40042:1;40067:61;40120:7;40111:6;40100:9;40096:22;40067:61;:::i;:::-;40057:71;;40013:125;39800:345;;;;:::o;40151:775::-;40384:4;40422:3;40411:9;40407:19;40399:27;;40436:71;40504:1;40493:9;40489:17;40480:6;40436:71;:::i;:::-;40517:72;40585:2;40574:9;40570:18;40561:6;40517:72;:::i;:::-;40599;40667:2;40656:9;40652:18;40643:6;40599:72;:::i;:::-;40681;40749:2;40738:9;40734:18;40725:6;40681:72;:::i;:::-;40763:73;40831:3;40820:9;40816:19;40807:6;40763:73;:::i;:::-;40846;40914:3;40903:9;40899:19;40890:6;40846:73;:::i;:::-;40151:775;;;;;;;;;:::o;40932:170::-;41072:22;41068:1;41060:6;41056:14;41049:46;40932:170;:::o;41108:366::-;41250:3;41271:67;41335:2;41330:3;41271:67;:::i;:::-;41264:74;;41347:93;41436:3;41347:93;:::i;:::-;41465:2;41460:3;41456:12;41449:19;;41108:366;;;:::o;41480:419::-;41646:4;41684:2;41673:9;41669:18;41661:26;;41733:9;41727:4;41723:20;41719:1;41708:9;41704:17;41697:47;41761:131;41887:4;41761:131;:::i;:::-;41753:139;;41480:419;;;:::o;41905:191::-;41945:4;41965:20;41983:1;41965:20;:::i;:::-;41960:25;;41999:20;42017:1;41999:20;:::i;:::-;41994:25;;42038:1;42035;42032:8;42029:34;;;42043:18;;:::i;:::-;42029:34;42088:1;42085;42081:9;42073:17;;41905:191;;;;:::o;42102:179::-;42242:31;42238:1;42230:6;42226:14;42219:55;42102:179;:::o;42287:366::-;42429:3;42450:67;42514:2;42509:3;42450:67;:::i;:::-;42443:74;;42526:93;42615:3;42526:93;:::i;:::-;42644:2;42639:3;42635:12;42628:19;;42287:366;;;:::o;42659:419::-;42825:4;42863:2;42852:9;42848:18;42840:26;;42912:9;42906:4;42902:20;42898:1;42887:9;42883:17;42876:47;42940:131;43066:4;42940:131;:::i;:::-;42932:139;;42659:419;;;:::o;43084:177::-;43224:29;43220:1;43212:6;43208:14;43201:53;43084:177;:::o;43267:366::-;43409:3;43430:67;43494:2;43489:3;43430:67;:::i;:::-;43423:74;;43506:93;43595:3;43506:93;:::i;:::-;43624:2;43619:3;43615:12;43608:19;;43267:366;;;:::o;43639:419::-;43805:4;43843:2;43832:9;43828:18;43820:26;;43892:9;43886:4;43882:20;43878:1;43867:9;43863:17;43856:47;43920:131;44046:4;43920:131;:::i;:::-;43912:139;;43639:419;;;:::o;44064:182::-;44204:34;44200:1;44192:6;44188:14;44181:58;44064:182;:::o;44252:366::-;44394:3;44415:67;44479:2;44474:3;44415:67;:::i;:::-;44408:74;;44491:93;44580:3;44491:93;:::i;:::-;44609:2;44604:3;44600:12;44593:19;;44252:366;;;:::o;44624:419::-;44790:4;44828:2;44817:9;44813:18;44805:26;;44877:9;44871:4;44867:20;44863:1;44852:9;44848:17;44841:47;44905:131;45031:4;44905:131;:::i;:::-;44897:139;;44624:419;;;:::o;45049:147::-;45150:11;45187:3;45172:18;;45049:147;;;;:::o;45202:114::-;;:::o;45322:398::-;45481:3;45502:83;45583:1;45578:3;45502:83;:::i;:::-;45495:90;;45594:93;45683:3;45594:93;:::i;:::-;45712:1;45707:3;45703:11;45696:18;;45322:398;;;:::o;45726:379::-;45910:3;45932:147;46075:3;45932:147;:::i;:::-;45925:154;;46096:3;46089:10;;45726:379;;;:::o;46111:180::-;46159:77;46156:1;46149:88;46256:4;46253:1;46246:15;46280:4;46277:1;46270:15;46297:180;46345:77;46342:1;46335:88;46442:4;46439:1;46432:15;46466:4;46463:1;46456:15;46483:143;46540:5;46571:6;46565:13;46556:22;;46587:33;46614:5;46587:33;:::i;:::-;46483:143;;;;:::o;46632:351::-;46702:6;46751:2;46739:9;46730:7;46726:23;46722:32;46719:119;;;46757:79;;:::i;:::-;46719:119;46877:1;46902:64;46958:7;46949:6;46938:9;46934:22;46902:64;:::i;:::-;46892:74;;46848:128;46632:351;;;;:::o;46989:85::-;47034:7;47063:5;47052:16;;46989:85;;;:::o;47080:158::-;47138:9;47171:61;47189:42;47198:32;47224:5;47198:32;:::i;:::-;47189:42;:::i;:::-;47171:61;:::i;:::-;47158:74;;47080:158;;;:::o;47244:147::-;47339:45;47378:5;47339:45;:::i;:::-;47334:3;47327:58;47244:147;;:::o;47397:114::-;47464:6;47498:5;47492:12;47482:22;;47397:114;;;:::o;47517:184::-;47616:11;47650:6;47645:3;47638:19;47690:4;47685:3;47681:14;47666:29;;47517:184;;;;:::o;47707:132::-;47774:4;47797:3;47789:11;;47827:4;47822:3;47818:14;47810:22;;47707:132;;;:::o;47845:108::-;47922:24;47940:5;47922:24;:::i;:::-;47917:3;47910:37;47845:108;;:::o;47959:179::-;48028:10;48049:46;48091:3;48083:6;48049:46;:::i;:::-;48127:4;48122:3;48118:14;48104:28;;47959:179;;;;:::o;48144:113::-;48214:4;48246;48241:3;48237:14;48229:22;;48144:113;;;:::o;48293:732::-;48412:3;48441:54;48489:5;48441:54;:::i;:::-;48511:86;48590:6;48585:3;48511:86;:::i;:::-;48504:93;;48621:56;48671:5;48621:56;:::i;:::-;48700:7;48731:1;48716:284;48741:6;48738:1;48735:13;48716:284;;;48817:6;48811:13;48844:63;48903:3;48888:13;48844:63;:::i;:::-;48837:70;;48930:60;48983:6;48930:60;:::i;:::-;48920:70;;48776:224;48763:1;48760;48756:9;48751:14;;48716:284;;;48720:14;49016:3;49009:10;;48417:608;;;48293:732;;;;:::o;49031:831::-;49294:4;49332:3;49321:9;49317:19;49309:27;;49346:71;49414:1;49403:9;49399:17;49390:6;49346:71;:::i;:::-;49427:80;49503:2;49492:9;49488:18;49479:6;49427:80;:::i;:::-;49554:9;49548:4;49544:20;49539:2;49528:9;49524:18;49517:48;49582:108;49685:4;49676:6;49582:108;:::i;:::-;49574:116;;49700:72;49768:2;49757:9;49753:18;49744:6;49700:72;:::i;:::-;49782:73;49850:3;49839:9;49835:19;49826:6;49782:73;:::i;:::-;49031:831;;;;;;;;:::o

Swarm Source

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