ETH Price: $3,174.95 (+4.55%)
Gas: 12.3 Gwei

Token

Ascend (ASC)
 

Overview

Max Total Supply

100,000,000,000 ASC

Holders

609

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000014715576533 ASC

Value
$0.00
0x517d72ae57e4ccacaa7a9f3bfff3c97613a5c6b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Ascend

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at BscScan.com on 2023-07-01
*/

// SPDX-License-Identifier: MIT   

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
}

interface ILpPair {
    function sync() external;
}

contract Ascend is ERC20, Ownable {

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;

    address public operationsWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    
    uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet
    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty
    
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public constant feeDivisor = 10000;

    uint256 public totalSellFees;
    uint256 public operationsSellFee;
    uint256 public liquiditySellFee;
    
    uint256 public totalBuyFees;
    uint256 public operationsBuyFee;
    uint256 public liquidityBuyFee;
    
    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;

    address[] private earlyBuyers;
    uint256 private deadBlocks;
    mapping (address => bool) public _isBot;

    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event OperationsWalletUpdated(address indexed newWallet, address indexed oldWallet);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() ERC20("Ascend", "ASC", 18) {

        address _dexRouter;

        if(block.chainid == 1){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uni V2 Router
        } else if(block.chainid == 5){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Goerli Router
        } else if(block.chainid == 56){
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // Pancake V2 Router
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_dexRouter);

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 100 * 1e9 * (10 ** decimals());
        
        maxTransactionAmount = totalSupply * 5 / 1000; // 0.5% maxTransactionAmountTxn
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap tokens amount
        maxWallet = totalSupply * 1 / 100; // 1% Max wallet

        operationsBuyFee = 6000; // 100 = 1%
        liquidityBuyFee = 1000;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        
        operationsSellFee = 7000;
        liquiditySellFee = 2000;
        totalSellFees = operationsSellFee + liquiditySellFee;
    	
    	operationsWallet = address(msg.sender); // set as operations wallet
        
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_dexRouter), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(_dexRouter), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _createInitialSupply(address(owner()), totalSupply);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(owner(), address(dexRouter), totalSupply);
    }

    receive() external payable {}

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re-enable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        deadBlocks = _deadBlocks;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateMaxAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** decimals());
    }
    
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/(10 ** decimals()), "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10 ** decimals());
    }
    
    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsBuyFee = _operationsFee;
        liquidityBuyFee = _liquidityFee;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        require(totalBuyFees <= 10000, "Must keep fees at 100% or less");
    }
    
    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsSellFee = _operationsFee;
        liquiditySellFee = _liquidityFee;
        totalSellFees = operationsSellFee + liquiditySellFee;
        require(totalSellFees <= 10000, "Must keep fees at 100% or less");
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
        emit ExcludedMaxTransactionAmount(updAds, isEx);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateOperationsWallet(address newOperationsWallet) external onlyOwner {
        require(newOperationsWallet != address(0), "may not set to 0 address");
        excludeFromFees(newOperationsWallet, true);
        emit OperationsWalletUpdated(newOperationsWallet, operationsWallet);
        operationsWallet = newOperationsWallet;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        transferDelayEnabled = false;
        return true;
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBot[to] && !_isBot[from], "No bots");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet.");
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    require(_holderLastTransferTimestamp[tx.origin] + 15 < block.number, "Transfer Delay enabled.");
                    if (to != address(dexRouter) && to != address(lpPair)){
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        
        // no taxes on transfers (non buys/sells)
        if(takeFee){
            if(tradingActiveBlock + deadBlocks >= block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){
                fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
                earlyBuyers.push(to);
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount * totalSellFees / feeDivisor;
                tokensForLiquidity += fees * liquiditySellFee / totalSellFees;
                tokensForOperations += fees * operationsSellFee / totalSellFees;
            }
            
            // on buy
            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
        	    fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
            }

            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}


        if(tokensForLiquidity > 0){
            uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap;
            super._transfer(address(this), lpPair, liquidityTokens);
            try ILpPair(lpPair).sync(){} catch {}
            contractBalance -= liquidityTokens;
            totalTokensToSwap -= tokensForLiquidity;
            tokensForLiquidity = 0;
        }

        if(contractBalance > 0){
            swapTokensForEth(contractBalance);
        }
    }

    function descendToPrison() external onlyOwner {
        require(earlyBuyers.length > 0, "No bots to block");

        for(uint256 i = 0; i < earlyBuyers.length; i++){
            if(!_isBot[earlyBuyers[i]]){
                _isBot[earlyBuyers[i]] = true;
            }
        }

        delete earlyBuyers;
    }

    function freeToAscend(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = false;
        }
    }

    function addPrisoner(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = true;
        }
    }

    function ascendToWallets(address[] memory wallets, uint256[] memory amountsInWei) external onlyOwner {
        require(wallets.length == amountsInWei.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            super._transfer(msg.sender, wallets[i], amountsInWei[i]);
        }

    }


}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OperationsWalletUpdated","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addPrisoner","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":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"}],"name":"ascendToWallets","outputs":[],"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":"account","type":"address"}],"name":"balanceOf","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":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"descendToPrison","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"freeToAscend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a556000600b556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200008757600080fd5b506040518060400160405280600681526020017f417363656e6400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f41534300000000000000000000000000000000000000000000000000000000008152506012826003908162000107919062001022565b50816004908162000119919062001022565b5080600560006101000a81548160ff021916908360ff16021790555050505060006200014a620006f160201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600146036200021157737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029c565b600546036200023757737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029b565b603846036200025d577310ed43c718714eb63d5aa57b78b54704e256024e90506200029a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000291906200116a565b60405180910390fd5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003449190620011f6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d49190620011f6565b6040518363ffffffff1660e01b8152600401620003f392919062001239565b6020604051808303816000875af115801562000413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004399190620011f6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200048160a0516001620006f960201b60201c565b600062000493620007ac60201b60201c565b600a620004a19190620013f6565b64174876e800620004b3919062001447565b90506103e8600582620004c7919062001447565b620004d39190620014c1565b600781905550612710600582620004eb919062001447565b620004f79190620014c1565b60088190555060646001826200050e919062001447565b6200051a9190620014c1565b6009819055506117706014819055506103e8601581905550601554601454620005449190620014f9565b601381905550611b586011819055506107d06012819055506012546011546200056e9190620014f9565b60108190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005d7620005c9620007c360201b60201c565b6001620007ed60201b60201c565b620005ea306001620007ed60201b60201c565b620005ff61dead6001620007ed60201b60201c565b62000612826001620007ed60201b60201c565b6200063462000626620007c360201b60201c565b60016200093a60201b60201c565b620006473060016200093a60201b60201c565b6200065a8260016200093a60201b60201c565b6200066f61dead60016200093a60201b60201c565b6200069062000683620007c360201b60201c565b8262000a8760201b60201c565b620006c5306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bd760201b60201c565b620006e9620006d9620007c360201b60201c565b6080518362000bd760201b60201c565b5050620017b0565b600033905090565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076282826200093a60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900460ff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fd620006f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200088f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008869062001584565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200092e9190620015c3565b60405180910390a25050565b6200094a620006f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d39062001584565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d958260405162000a7b9190620015c3565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af09062001630565b60405180910390fd5b806002600082825462000b0d9190620014f9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b649190620014f9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bcb919062001663565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4090620016f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb2906200178e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d9b919062001663565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2a57607f821691505b60208210810362000e405762000e3f62000de2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000eaa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e6b565b62000eb6868362000e6b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f0362000efd62000ef78462000ece565b62000ed8565b62000ece565b9050919050565b6000819050919050565b62000f1f8362000ee2565b62000f3762000f2e8262000f0a565b84845462000e78565b825550505050565b600090565b62000f4e62000f3f565b62000f5b81848462000f14565b505050565b5b8181101562000f835762000f7760008262000f44565b60018101905062000f61565b5050565b601f82111562000fd25762000f9c8162000e46565b62000fa78462000e5b565b8101602085101562000fb7578190505b62000fcf62000fc68562000e5b565b83018262000f60565b50505b505050565b600082821c905092915050565b600062000ff76000198460080262000fd7565b1980831691505092915050565b600062001012838362000fe4565b9150826002028217905092915050565b6200102d8262000da8565b67ffffffffffffffff81111562001049576200104862000db3565b5b62001055825462000e11565b6200106282828562000f87565b600060209050601f8311600181146200109a576000841562001085578287015190505b62001091858262001004565b86555062001101565b601f198416620010aa8662000e46565b60005b82811015620010d457848901518255600182019150602085019450602081019050620010ad565b86831015620010f45784890151620010f0601f89168262000fe4565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b60006200115260148362001109565b91506200115f826200111a565b602082019050919050565b60006020820190508181036000830152620011858162001143565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011be8262001191565b9050919050565b620011d081620011b1565b8114620011dc57600080fd5b50565b600081519050620011f081620011c5565b92915050565b6000602082840312156200120f576200120e6200118c565b5b60006200121f84828501620011df565b91505092915050565b6200123381620011b1565b82525050565b600060408201905062001250600083018562001228565b6200125f602083018462001228565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620012f457808604811115620012cc57620012cb62001266565b5b6001851615620012dc5780820291505b8081029050620012ec8562001295565b9450620012ac565b94509492505050565b6000826200130f5760019050620013e2565b816200131f5760009050620013e2565b8160018114620013385760028114620013435762001379565b6001915050620013e2565b60ff84111562001358576200135762001266565b5b8360020a91508482111562001372576200137162001266565b5b50620013e2565b5060208310610133831016604e8410600b8410161715620013b35782820a905083811115620013ad57620013ac62001266565b5b620013e2565b620013c28484846001620012a2565b92509050818404811115620013dc57620013db62001266565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014038262000ece565b91506200141083620013e9565b92506200143f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620012fd565b905092915050565b6000620014548262000ece565b9150620014618362000ece565b9250828202620014718162000ece565b915082820484148315176200148b576200148a62001266565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014ce8262000ece565b9150620014db8362000ece565b925082620014ee57620014ed62001492565b5b828204905092915050565b6000620015068262000ece565b9150620015138362000ece565b92508282019050808211156200152e576200152d62001266565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200156c60208362001109565b9150620015798262001534565b602082019050919050565b600060208201905081810360008301526200159f816200155d565b9050919050565b60008115159050919050565b620015bd81620015a6565b82525050565b6000602082019050620015da6000830184620015b2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001618601f8362001109565b91506200162582620015e0565b602082019050919050565b600060208201905081810360008301526200164b8162001609565b9050919050565b6200165d8162000ece565b82525050565b60006020820190506200167a600083018462001652565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620016de60248362001109565b9150620016eb8262001680565b604082019050919050565b600060208201905081810360008301526200171181620016cf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200177660228362001109565b9150620017838262001718565b604082019050919050565b60006020820190508181036000830152620017a98162001767565b9050919050565b60805160a051615ea7620018076000396000818161180f0152818161222f01528181613374015281816140c401526140eb015260008181610f330152818161331d01528181614242015261431f0152615ea76000f3fe60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c18bc19511610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610cef578063f8b45b0514610d18578063fb002c9714610d43578063fd72e22a14610d6e57610381565b8063e2f4560514610c43578063e884f26014610c6e578063ee40166e14610c99578063efcc1b2f14610cc457610381565b8063c8c8ebe4116100dc578063c8c8ebe414610b85578063ccb6135814610bb0578063d0a3981414610bdb578063dd62ed3e14610c0657610381565b8063c18bc19514610b08578063c492f04614610b31578063c876d0b914610b5a57610381565b8063a9059cbb1161016f578063b71dc42a11610149578063b71dc42a14610a60578063b9e9370014610a89578063bbc0c74214610ab4578063c024666814610adf57610381565b8063a9059cbb146109a9578063abb81052146109e6578063b62496f514610a2357610381565b806395d89b41116101ab57806395d89b41146108ed5780639a36f932146109185780639a7a23d614610943578063a457c2d71461096c57610381565b806382aa7c68146108705780638da5cb5b14610899578063924de9b7146108c457610381565b8063313ce567116102ab5780636ddd171311610249578063715018a611610223578063715018a6146107da5780637506cbd8146107f1578063751039fc1461081c5780637571336a1461084757610381565b80636ddd1713146107495780636e0285d81461077457806370a082311461079d57610381565b8063452ed4f111610285578063452ed4f11461068d5780634a62bb65146106b85780634fbee193146106e357806366ca9b831461072057610381565b8063313ce5671461060e578063327b8e7514610639578063395093511461065057610381565b8063106b5da1116103185780631a8145bb116102f25780631a8145bb146105525780631fc851bd1461057d57806323b872dd146105a857806330d5d18d146105e557610381565b8063106b5da1146104c157806310d5de53146104ea57806318160ddd1461052757610381565b8063095ea7b311610354578063095ea7b314610405578063099d0d30146104425780630d128cfe1461046d5780630f4432e31461049657610381565b806302dbd8f81461038657806306fdde03146103af5780630758d924146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b506103ad60048036038101906103a8919061445f565b610d99565b005b3480156103bb57600080fd5b506103c4610e9f565b6040516103d1919061452f565b60405180910390f35b3480156103e657600080fd5b506103ef610f31565b6040516103fc91906145d0565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614629565b610f55565b6040516104399190614684565b60405180910390f35b34801561044e57600080fd5b50610457610f73565b60405161046491906146ae565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614811565b610f79565b005b3480156104a257600080fd5b506104ab6110a5565b6040516104b891906146ae565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e3919061485a565b6110ab565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614887565b6111ea565b60405161051e9190614684565b60405180910390f35b34801561053357600080fd5b5061053c61120a565b60405161054991906146ae565b60405180910390f35b34801561055e57600080fd5b50610567611214565b60405161057491906146ae565b60405180910390f35b34801561058957600080fd5b5061059261121a565b60405161059f91906146ae565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906148b4565b611220565b6040516105dc9190614684565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614887565b611340565b005b34801561061a57600080fd5b50610623611511565b6040516106309190614923565b60405180910390f35b34801561064557600080fd5b5061064e611528565b005b34801561065c57600080fd5b5061067760048036038101906106729190614629565b611761565b6040516106849190614684565b60405180910390f35b34801561069957600080fd5b506106a261180d565b6040516106af919061494d565b60405180910390f35b3480156106c457600080fd5b506106cd611831565b6040516106da9190614684565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190614887565b611844565b6040516107179190614684565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061445f565b61189a565b005b34801561075557600080fd5b5061075e6119a0565b60405161076b9190614684565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614a2b565b6119b3565b005b3480156107a957600080fd5b506107c460048036038101906107bf9190614887565b611b36565b6040516107d191906146ae565b60405180910390f35b3480156107e657600080fd5b506107ef611b7e565b005b3480156107fd57600080fd5b50610806611cd6565b60405161081391906146ae565b60405180910390f35b34801561082857600080fd5b50610831611cdc565b60405161083e9190614684565b60405180910390f35b34801561085357600080fd5b5061086e60048036038101906108699190614acf565b611db2565b005b34801561087c57600080fd5b506108976004803603810190610892919061485a565b611ef2565b005b3480156108a557600080fd5b506108ae612020565b6040516108bb919061494d565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614b0f565b61204a565b005b3480156108f957600080fd5b506109026120fe565b60405161090f919061452f565b60405180910390f35b34801561092457600080fd5b5061092d612190565b60405161093a91906146ae565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614acf565b612196565b005b34801561097857600080fd5b50610993600480360381019061098e9190614629565b6122c9565b6040516109a09190614684565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190614629565b6123b4565b6040516109dd9190614684565b60405180910390f35b3480156109f257600080fd5b50610a0d6004803603810190610a089190614887565b6123d2565b604051610a1a9190614684565b60405180910390f35b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614887565b6123f2565b604051610a579190614684565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614811565b612412565b005b348015610a9557600080fd5b50610a9e61253e565b604051610aab91906146ae565b60405180910390f35b348015610ac057600080fd5b50610ac9612544565b604051610ad69190614684565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614acf565b612557565b005b348015610b1457600080fd5b50610b2f6004803603810190610b2a919061485a565b612697565b005b348015610b3d57600080fd5b50610b586004803603810190610b539190614b97565b6127d5565b005b348015610b6657600080fd5b50610b6f61294c565b604051610b7c9190614684565b60405180910390f35b348015610b9157600080fd5b50610b9a61295f565b604051610ba791906146ae565b60405180910390f35b348015610bbc57600080fd5b50610bc5612965565b604051610bd291906146ae565b60405180910390f35b348015610be757600080fd5b50610bf061296b565b604051610bfd91906146ae565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c289190614bf7565b612971565b604051610c3a91906146ae565b60405180910390f35b348015610c4f57600080fd5b50610c586129f8565b604051610c6591906146ae565b60405180910390f35b348015610c7a57600080fd5b50610c836129fe565b604051610c909190614684565b60405180910390f35b348015610ca557600080fd5b50610cae612ab9565b604051610cbb91906146ae565b60405180910390f35b348015610cd057600080fd5b50610cd9612abf565b604051610ce691906146ae565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614887565b612ac5565b005b348015610d2457600080fd5b50610d2d612c8b565b604051610d3a91906146ae565b60405180910390f35b348015610d4f57600080fd5b50610d58612c91565b604051610d6591906146ae565b60405180910390f35b348015610d7a57600080fd5b50610d83612c97565b604051610d90919061494d565b60405180910390f35b610da1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c83565b60405180910390fd5b8160118190555080601281905550601254601154610e4e9190614cd2565b6010819055506127106010541115610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614d52565b60405180910390fd5b5050565b606060038054610eae90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90614da1565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f69610f62612cbd565b8484612cc5565b6001905092915050565b60125481565b610f81612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790614c83565b60405180910390fd5b60005b81518110156110a1576001601b600084848151811061103557611034614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061109990614e01565b915050611013565b5050565b600a5481565b6110b3612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990614c83565b60405180910390fd5b61114a611511565b600a6111569190614f7c565b6103e8600161116361120a565b61116d9190614fc7565b6111779190615038565b6111819190615038565b81116111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906150db565b60405180910390fd5b6111ca611511565b600a6111d69190614f7c565b816111e19190614fc7565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b600061122d848484612e8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611278612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611334578281101561131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061516d565b60405180910390fd5b6113338561132b612cbd565b858403612cc5565b5b60019150509392505050565b611348612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906151d9565b60405180910390fd5b611451816001612557565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b611530612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690614c83565b60405180910390fd5b600060198054905011611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90615245565b60405180910390fd5b60005b60198054905081101561175057601b60006019838154811061162f5761162e614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173d576001601b6000601984815481106116c0576116bf614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061174890614e01565b91505061160a565b506019600061175f91906143d7565b565b600061180361176e612cbd565b84846001600061177c612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117fe9190614cd2565b612cc5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118a2612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614c83565b60405180910390fd5b816014819055508060158190555060155460145461194f9190614cd2565b601381905550612710601354111561199c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199390614d52565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b6119bb612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190614c83565b60405180910390fd5b8051825114611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a85906152b1565b60405180910390fd5b610258825110611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90615343565b60405180910390fd5b60005b8251811015611b3157611b1e33848381518110611af657611af5614dd2565b5b6020026020010151848481518110611b1157611b10614dd2565b5b6020026020010151613d46565b8080611b2990614e01565b915050611ad6565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b86612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611ce6612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614c83565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611dba612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614c83565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611ee69190614684565b60405180910390a25050565b611efa612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614c83565b60405180910390fd5b600d60019054906101000a900460ff1615611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd0906153af565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612052612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d890614c83565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461210d90614da1565b80601f016020809104026020016040519081016040528092919081815260200182805461213990614da1565b80156121865780601f1061215b57610100808354040283529160200191612186565b820191906000526020600020905b81548152906001019060200180831161216957829003601f168201915b5050505050905090565b61271081565b61219e612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461222d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222490614c83565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b290615467565b60405180910390fd5b6122c58282613faf565b5050565b600080600160006122d8612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906154f9565b60405180910390fd5b6123a96123a0612cbd565b85858403612cc5565b600191505092915050565b60006123c86123c1612cbd565b8484612e8e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601d6020528060005260406000206000915054906101000a900460ff1681565b61241a612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a090614c83565b60405180910390fd5b60005b815181101561253a576000601b60008484815181106124ce576124cd614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061253290614e01565b9150506124ac565b5050565b60135481565b600d60019054906101000a900460ff1681565b61255f612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e590614c83565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161268b9190614684565b60405180910390a25050565b61269f612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272590614c83565b60405180910390fd5b612736611511565b600a6127429190614f7c565b6064600161274e61120a565b6127589190614fc7565b6127629190615038565b61276c9190615038565b81116127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49061558b565b60405180910390fd5b6127b5611511565b600a6127c19190614f7c565b816127cc9190614fc7565b60098190555050565b6127dd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390614c83565b60405180910390fd5b60005b8383905081101561290b57816018600086868581811061289257612891614dd2565b5b90506020020160208101906128a79190614887565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061290390614e01565b91505061286f565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161293f9392919061566e565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000612a08612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e90614c83565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b600b5481565b60145481565b612acd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5390614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615712565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2b906157a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90615836565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e8191906146ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef4906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f639061595a565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130105750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61304f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613046906159c6565b60405180910390fd5b600081036130685761306383836000613d46565b613d41565b600d60019054906101000a900460ff1661315d57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390615a32565b60405180910390fd5b5b600d60009054906101000a900460ff161561373c5761317a612020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131e857506131b8612020565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132745750600560159054906101000a900460ff16155b1561373b57600f60009054906101000a900460ff16156134525743600f600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132db9190614cd2565b1061331b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331290615a9e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133c357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134515743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359c5760075481111561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353690615b30565b60405180910390fd5b60095461354b83611b36565b826135569190614cd2565b1115613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90615b9c565b60405180910390fd5b61373a565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368e57600754811115613689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368090615c2e565b60405180910390fd5b613739565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613738576009546136eb83611b36565b826136f69190614cd2565b1115613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90615b9c565b60405180910390fd5b5b5b5b5b5b600061374730611b36565b90506000600854821015905080801561376c5750600d60029054906101000a900460ff165b80156137855750600560159054906101000a900460ff16155b80156137db5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138315750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138875750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138cb576001600560156101000a81548160ff0219169083151502179055506138af61405a565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139815750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398b57600090505b60008115613d315743601a54600b546139a49190614cd2565b10158015613a4f5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a4e5750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613b3f5761271060135486613a659190614fc7565b613a6f9190615038565b905060135460155482613a829190614fc7565b613a8c9190615038565b60176000828254613a9d9190614cd2565b9250508190555060135460145482613ab59190614fc7565b613abf9190615038565b60166000828254613ad09190614cd2565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613d0d565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b9a57506000601054115b15613c275761271060105486613bb09190614fc7565b613bba9190615038565b905060105460125482613bcd9190614fc7565b613bd79190615038565b60176000828254613be89190614cd2565b9250508190555060105460115482613c009190614fc7565b613c0a9190615038565b60166000828254613c1b9190614cd2565b92505081905550613d0c565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c8257506000601354115b15613d0b5761271060135486613c989190614fc7565b613ca29190615038565b905060135460155482613cb59190614fc7565b613cbf9190615038565b60176000828254613cd09190614cd2565b9250508190555060135460145482613ce89190614fc7565b613cf29190615038565b60166000828254613d039190614cd2565b925050819055505b5b5b6000811115613d2257613d21873083613d46565b5b8085613d2e9190615c4e565b94505b613d3c878787613d46565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dac906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1b9061595a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea190615cf4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f3d9190614cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa191906146ae565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506140108282611db2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061406530611b36565b905060006016546017546140799190614cd2565b9050600082148061408a5750600081145b156140965750506141a1565b6000601754111561418b57600081601754846140b29190614fc7565b6140bc9190615038565b90506140e9307f000000000000000000000000000000000000000000000000000000000000000083613d46565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561415157600080fd5b505af1925050508015614162575060015b50808361416f9190615c4e565b92506017548261417f9190615c4e565b91506000601781905550505b600082111561419e5761419d826141a3565b5b50505b565b6000600267ffffffffffffffff8111156141c0576141bf6146ce565b5b6040519080825280602002602001820160405280156141ee5781602001602082028036833780820191505090505b509050308160008151811061420657614205614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142cf9190615d29565b816001815181106142e3576142e2614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016143a1959493929190615e17565b600060405180830381600087803b1580156143bb57600080fd5b505af11580156143cf573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906143f591906143f8565b50565b5b808211156144115760008160009055506001016143f9565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61443c81614429565b811461444757600080fd5b50565b60008135905061445981614433565b92915050565b600080604083850312156144765761447561441f565b5b60006144848582860161444a565b92505060206144958582860161444a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144d95780820151818401526020810190506144be565b60008484015250505050565b6000601f19601f8301169050919050565b60006145018261449f565b61450b81856144aa565b935061451b8185602086016144bb565b614524816144e5565b840191505092915050565b6000602082019050818103600083015261454981846144f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061459661459161458c84614551565b614571565b614551565b9050919050565b60006145a88261457b565b9050919050565b60006145ba8261459d565b9050919050565b6145ca816145af565b82525050565b60006020820190506145e560008301846145c1565b92915050565b60006145f682614551565b9050919050565b614606816145eb565b811461461157600080fd5b50565b600081359050614623816145fd565b92915050565b600080604083850312156146405761463f61441f565b5b600061464e85828601614614565b925050602061465f8582860161444a565b9150509250929050565b60008115159050919050565b61467e81614669565b82525050565b60006020820190506146996000830184614675565b92915050565b6146a881614429565b82525050565b60006020820190506146c3600083018461469f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614706826144e5565b810181811067ffffffffffffffff82111715614725576147246146ce565b5b80604052505050565b6000614738614415565b905061474482826146fd565b919050565b600067ffffffffffffffff821115614764576147636146ce565b5b602082029050602081019050919050565b600080fd5b600061478d61478884614749565b61472e565b905080838252602082019050602084028301858111156147b0576147af614775565b5b835b818110156147d957806147c58882614614565b8452602084019350506020810190506147b2565b5050509392505050565b600082601f8301126147f8576147f76146c9565b5b813561480884826020860161477a565b91505092915050565b6000602082840312156148275761482661441f565b5b600082013567ffffffffffffffff81111561484557614844614424565b5b614851848285016147e3565b91505092915050565b6000602082840312156148705761486f61441f565b5b600061487e8482850161444a565b91505092915050565b60006020828403121561489d5761489c61441f565b5b60006148ab84828501614614565b91505092915050565b6000806000606084860312156148cd576148cc61441f565b5b60006148db86828701614614565b93505060206148ec86828701614614565b92505060406148fd8682870161444a565b9150509250925092565b600060ff82169050919050565b61491d81614907565b82525050565b60006020820190506149386000830184614914565b92915050565b614947816145eb565b82525050565b6000602082019050614962600083018461493e565b92915050565b600067ffffffffffffffff821115614983576149826146ce565b5b602082029050602081019050919050565b60006149a76149a284614968565b61472e565b905080838252602082019050602084028301858111156149ca576149c9614775565b5b835b818110156149f357806149df888261444a565b8452602084019350506020810190506149cc565b5050509392505050565b600082601f830112614a1257614a116146c9565b5b8135614a22848260208601614994565b91505092915050565b60008060408385031215614a4257614a4161441f565b5b600083013567ffffffffffffffff811115614a6057614a5f614424565b5b614a6c858286016147e3565b925050602083013567ffffffffffffffff811115614a8d57614a8c614424565b5b614a99858286016149fd565b9150509250929050565b614aac81614669565b8114614ab757600080fd5b50565b600081359050614ac981614aa3565b92915050565b60008060408385031215614ae657614ae561441f565b5b6000614af485828601614614565b9250506020614b0585828601614aba565b9150509250929050565b600060208284031215614b2557614b2461441f565b5b6000614b3384828501614aba565b91505092915050565b600080fd5b60008083601f840112614b5757614b566146c9565b5b8235905067ffffffffffffffff811115614b7457614b73614b3c565b5b602083019150836020820283011115614b9057614b8f614775565b5b9250929050565b600080600060408486031215614bb057614baf61441f565b5b600084013567ffffffffffffffff811115614bce57614bcd614424565b5b614bda86828701614b41565b93509350506020614bed86828701614aba565b9150509250925092565b60008060408385031215614c0e57614c0d61441f565b5b6000614c1c85828601614614565b9250506020614c2d85828601614614565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c6d6020836144aa565b9150614c7882614c37565b602082019050919050565b60006020820190508181036000830152614c9c81614c60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cdd82614429565b9150614ce883614429565b9250828201905080821115614d0057614cff614ca3565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614d3c601e836144aa565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db957607f821691505b602082108103614dcc57614dcb614d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e0c82614429565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e3e57614e3d614ca3565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614ea057808604811115614e7c57614e7b614ca3565b5b6001851615614e8b5780820291505b8081029050614e9985614e49565b9450614e60565b94509492505050565b600082614eb95760019050614f75565b81614ec75760009050614f75565b8160018114614edd5760028114614ee757614f16565b6001915050614f75565b60ff841115614ef957614ef8614ca3565b5b8360020a915084821115614f1057614f0f614ca3565b5b50614f75565b5060208310610133831016604e8410600b8410161715614f4b5782820a905083811115614f4657614f45614ca3565b5b614f75565b614f588484846001614e56565b92509050818404811115614f6f57614f6e614ca3565b5b81810290505b9392505050565b6000614f8782614429565b9150614f9283614907565b9250614fbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ea9565b905092915050565b6000614fd282614429565b9150614fdd83614429565b9250828202614feb81614429565b9150828204841483151761500257615001614ca3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504382614429565b915061504e83614429565b92508261505e5761505d615009565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c5602f836144aa565b91506150d082615069565b604082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006151576028836144aa565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006151c36018836144aa565b91506151ce8261518d565b602082019050919050565b600060208201905081810360008301526151f2816151b6565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b600061522f6010836144aa565b915061523a826151f9565b602082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b600061529b601e836144aa565b91506152a682615265565b602082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b600061532d6036836144aa565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006153996018836144aa565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006154516045836144aa565b915061545c826153cf565b606082019050919050565b6000602082019050818103600083015261548081615444565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006154e36025836144aa565b91506154ee82615487565b604082019050919050565b60006020820190508181036000830152615512816154d6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155756022836144aa565b915061558082615519565b604082019050919050565b600060208201905081810360008301526155a481615568565b9050919050565b600082825260208201905092915050565b6000819050919050565b6155cf816145eb565b82525050565b60006155e183836155c6565b60208301905092915050565b60006155fc6020840184614614565b905092915050565b6000602082019050919050565b600061561d83856155ab565b9350615628826155bc565b8060005b858110156156615761563e82846155ed565b61564888826155d5565b975061565383615604565b92505060018101905061562c565b5085925050509392505050565b60006040820190508181036000830152615689818587615611565b90506156986020830184614675565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156fc6026836144aa565b9150615707826156a0565b604082019050919050565b6000602082019050818103600083015261572b816156ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061578e6024836144aa565b915061579982615732565b604082019050919050565b600060208201905081810360008301526157bd81615781565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006158206022836144aa565b915061582b826157c4565b604082019050919050565b6000602082019050818103600083015261584f81615813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158b26025836144aa565b91506158bd82615856565b604082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006159446023836144aa565b915061594f826158e8565b604082019050919050565b6000602082019050818103600083015261597381615937565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b60006159b06007836144aa565b91506159bb8261597a565b602082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615a1c601a836144aa565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615a886017836144aa565b9150615a9382615a52565b602082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b1a6035836144aa565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615b86601b836144aa565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c186036836144aa565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c5982614429565b9150615c6483614429565b9250828203905081811115615c7c57615c7b614ca3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615cde6026836144aa565b9150615ce982615c82565b604082019050919050565b60006020820190508181036000830152615d0d81615cd1565b9050919050565b600081519050615d23816145fd565b92915050565b600060208284031215615d3f57615d3e61441f565b5b6000615d4d84828501615d14565b91505092915050565b6000819050919050565b6000615d7b615d76615d7184615d56565b614571565b614429565b9050919050565b615d8b81615d60565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615dc482615d91565b615dce81856155ab565b9350615dd983615d9c565b8060005b83811015615e0a578151615df188826155d5565b9750615dfc83615dac565b925050600181019050615ddd565b5085935050505092915050565b600060a082019050615e2c600083018861469f565b615e396020830187615d82565b8181036040830152615e4b8186615db9565b9050615e5a606083018561493e565b615e67608083018461469f565b969550505050505056fea26469706673582212207cc21b1d4672a127020b050c71d59d881198a2e37cd7dbb75b7ba7cb8028eb2c64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c18bc19511610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610cef578063f8b45b0514610d18578063fb002c9714610d43578063fd72e22a14610d6e57610381565b8063e2f4560514610c43578063e884f26014610c6e578063ee40166e14610c99578063efcc1b2f14610cc457610381565b8063c8c8ebe4116100dc578063c8c8ebe414610b85578063ccb6135814610bb0578063d0a3981414610bdb578063dd62ed3e14610c0657610381565b8063c18bc19514610b08578063c492f04614610b31578063c876d0b914610b5a57610381565b8063a9059cbb1161016f578063b71dc42a11610149578063b71dc42a14610a60578063b9e9370014610a89578063bbc0c74214610ab4578063c024666814610adf57610381565b8063a9059cbb146109a9578063abb81052146109e6578063b62496f514610a2357610381565b806395d89b41116101ab57806395d89b41146108ed5780639a36f932146109185780639a7a23d614610943578063a457c2d71461096c57610381565b806382aa7c68146108705780638da5cb5b14610899578063924de9b7146108c457610381565b8063313ce567116102ab5780636ddd171311610249578063715018a611610223578063715018a6146107da5780637506cbd8146107f1578063751039fc1461081c5780637571336a1461084757610381565b80636ddd1713146107495780636e0285d81461077457806370a082311461079d57610381565b8063452ed4f111610285578063452ed4f11461068d5780634a62bb65146106b85780634fbee193146106e357806366ca9b831461072057610381565b8063313ce5671461060e578063327b8e7514610639578063395093511461065057610381565b8063106b5da1116103185780631a8145bb116102f25780631a8145bb146105525780631fc851bd1461057d57806323b872dd146105a857806330d5d18d146105e557610381565b8063106b5da1146104c157806310d5de53146104ea57806318160ddd1461052757610381565b8063095ea7b311610354578063095ea7b314610405578063099d0d30146104425780630d128cfe1461046d5780630f4432e31461049657610381565b806302dbd8f81461038657806306fdde03146103af5780630758d924146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b506103ad60048036038101906103a8919061445f565b610d99565b005b3480156103bb57600080fd5b506103c4610e9f565b6040516103d1919061452f565b60405180910390f35b3480156103e657600080fd5b506103ef610f31565b6040516103fc91906145d0565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614629565b610f55565b6040516104399190614684565b60405180910390f35b34801561044e57600080fd5b50610457610f73565b60405161046491906146ae565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614811565b610f79565b005b3480156104a257600080fd5b506104ab6110a5565b6040516104b891906146ae565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e3919061485a565b6110ab565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614887565b6111ea565b60405161051e9190614684565b60405180910390f35b34801561053357600080fd5b5061053c61120a565b60405161054991906146ae565b60405180910390f35b34801561055e57600080fd5b50610567611214565b60405161057491906146ae565b60405180910390f35b34801561058957600080fd5b5061059261121a565b60405161059f91906146ae565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906148b4565b611220565b6040516105dc9190614684565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614887565b611340565b005b34801561061a57600080fd5b50610623611511565b6040516106309190614923565b60405180910390f35b34801561064557600080fd5b5061064e611528565b005b34801561065c57600080fd5b5061067760048036038101906106729190614629565b611761565b6040516106849190614684565b60405180910390f35b34801561069957600080fd5b506106a261180d565b6040516106af919061494d565b60405180910390f35b3480156106c457600080fd5b506106cd611831565b6040516106da9190614684565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190614887565b611844565b6040516107179190614684565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061445f565b61189a565b005b34801561075557600080fd5b5061075e6119a0565b60405161076b9190614684565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614a2b565b6119b3565b005b3480156107a957600080fd5b506107c460048036038101906107bf9190614887565b611b36565b6040516107d191906146ae565b60405180910390f35b3480156107e657600080fd5b506107ef611b7e565b005b3480156107fd57600080fd5b50610806611cd6565b60405161081391906146ae565b60405180910390f35b34801561082857600080fd5b50610831611cdc565b60405161083e9190614684565b60405180910390f35b34801561085357600080fd5b5061086e60048036038101906108699190614acf565b611db2565b005b34801561087c57600080fd5b506108976004803603810190610892919061485a565b611ef2565b005b3480156108a557600080fd5b506108ae612020565b6040516108bb919061494d565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614b0f565b61204a565b005b3480156108f957600080fd5b506109026120fe565b60405161090f919061452f565b60405180910390f35b34801561092457600080fd5b5061092d612190565b60405161093a91906146ae565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614acf565b612196565b005b34801561097857600080fd5b50610993600480360381019061098e9190614629565b6122c9565b6040516109a09190614684565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190614629565b6123b4565b6040516109dd9190614684565b60405180910390f35b3480156109f257600080fd5b50610a0d6004803603810190610a089190614887565b6123d2565b604051610a1a9190614684565b60405180910390f35b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614887565b6123f2565b604051610a579190614684565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614811565b612412565b005b348015610a9557600080fd5b50610a9e61253e565b604051610aab91906146ae565b60405180910390f35b348015610ac057600080fd5b50610ac9612544565b604051610ad69190614684565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614acf565b612557565b005b348015610b1457600080fd5b50610b2f6004803603810190610b2a919061485a565b612697565b005b348015610b3d57600080fd5b50610b586004803603810190610b539190614b97565b6127d5565b005b348015610b6657600080fd5b50610b6f61294c565b604051610b7c9190614684565b60405180910390f35b348015610b9157600080fd5b50610b9a61295f565b604051610ba791906146ae565b60405180910390f35b348015610bbc57600080fd5b50610bc5612965565b604051610bd291906146ae565b60405180910390f35b348015610be757600080fd5b50610bf061296b565b604051610bfd91906146ae565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c289190614bf7565b612971565b604051610c3a91906146ae565b60405180910390f35b348015610c4f57600080fd5b50610c586129f8565b604051610c6591906146ae565b60405180910390f35b348015610c7a57600080fd5b50610c836129fe565b604051610c909190614684565b60405180910390f35b348015610ca557600080fd5b50610cae612ab9565b604051610cbb91906146ae565b60405180910390f35b348015610cd057600080fd5b50610cd9612abf565b604051610ce691906146ae565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614887565b612ac5565b005b348015610d2457600080fd5b50610d2d612c8b565b604051610d3a91906146ae565b60405180910390f35b348015610d4f57600080fd5b50610d58612c91565b604051610d6591906146ae565b60405180910390f35b348015610d7a57600080fd5b50610d83612c97565b604051610d90919061494d565b60405180910390f35b610da1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c83565b60405180910390fd5b8160118190555080601281905550601254601154610e4e9190614cd2565b6010819055506127106010541115610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614d52565b60405180910390fd5b5050565b606060038054610eae90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90614da1565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000610f69610f62612cbd565b8484612cc5565b6001905092915050565b60125481565b610f81612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790614c83565b60405180910390fd5b60005b81518110156110a1576001601b600084848151811061103557611034614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061109990614e01565b915050611013565b5050565b600a5481565b6110b3612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990614c83565b60405180910390fd5b61114a611511565b600a6111569190614f7c565b6103e8600161116361120a565b61116d9190614fc7565b6111779190615038565b6111819190615038565b81116111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906150db565b60405180910390fd5b6111ca611511565b600a6111d69190614f7c565b816111e19190614fc7565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b600061122d848484612e8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611278612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611334578281101561131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061516d565b60405180910390fd5b6113338561132b612cbd565b858403612cc5565b5b60019150509392505050565b611348612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906151d9565b60405180910390fd5b611451816001612557565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b611530612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690614c83565b60405180910390fd5b600060198054905011611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90615245565b60405180910390fd5b60005b60198054905081101561175057601b60006019838154811061162f5761162e614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173d576001601b6000601984815481106116c0576116bf614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061174890614e01565b91505061160a565b506019600061175f91906143d7565b565b600061180361176e612cbd565b84846001600061177c612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117fe9190614cd2565b612cc5565b6001905092915050565b7f000000000000000000000000e8f2bc22dac68a6b537e7391abb785d477fa8dca81565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118a2612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614c83565b60405180910390fd5b816014819055508060158190555060155460145461194f9190614cd2565b601381905550612710601354111561199c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199390614d52565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b6119bb612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190614c83565b60405180910390fd5b8051825114611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a85906152b1565b60405180910390fd5b610258825110611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90615343565b60405180910390fd5b60005b8251811015611b3157611b1e33848381518110611af657611af5614dd2565b5b6020026020010151848481518110611b1157611b10614dd2565b5b6020026020010151613d46565b8080611b2990614e01565b915050611ad6565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b86612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611ce6612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614c83565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611dba612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614c83565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611ee69190614684565b60405180910390a25050565b611efa612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614c83565b60405180910390fd5b600d60019054906101000a900460ff1615611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd0906153af565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612052612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d890614c83565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461210d90614da1565b80601f016020809104026020016040519081016040528092919081815260200182805461213990614da1565b80156121865780601f1061215b57610100808354040283529160200191612186565b820191906000526020600020905b81548152906001019060200180831161216957829003601f168201915b5050505050905090565b61271081565b61219e612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461222d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222490614c83565b60405180910390fd5b7f000000000000000000000000e8f2bc22dac68a6b537e7391abb785d477fa8dca73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b290615467565b60405180910390fd5b6122c58282613faf565b5050565b600080600160006122d8612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906154f9565b60405180910390fd5b6123a96123a0612cbd565b85858403612cc5565b600191505092915050565b60006123c86123c1612cbd565b8484612e8e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601d6020528060005260406000206000915054906101000a900460ff1681565b61241a612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a090614c83565b60405180910390fd5b60005b815181101561253a576000601b60008484815181106124ce576124cd614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061253290614e01565b9150506124ac565b5050565b60135481565b600d60019054906101000a900460ff1681565b61255f612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e590614c83565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161268b9190614684565b60405180910390a25050565b61269f612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272590614c83565b60405180910390fd5b612736611511565b600a6127429190614f7c565b6064600161274e61120a565b6127589190614fc7565b6127629190615038565b61276c9190615038565b81116127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49061558b565b60405180910390fd5b6127b5611511565b600a6127c19190614f7c565b816127cc9190614fc7565b60098190555050565b6127dd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390614c83565b60405180910390fd5b60005b8383905081101561290b57816018600086868581811061289257612891614dd2565b5b90506020020160208101906128a79190614887565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061290390614e01565b91505061286f565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161293f9392919061566e565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6000612a08612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e90614c83565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b600b5481565b60145481565b612acd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5390614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615712565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2b906157a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90615836565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e8191906146ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef4906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f639061595a565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130105750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61304f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613046906159c6565b60405180910390fd5b600081036130685761306383836000613d46565b613d41565b600d60019054906101000a900460ff1661315d57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390615a32565b60405180910390fd5b5b600d60009054906101000a900460ff161561373c5761317a612020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131e857506131b8612020565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132745750600560159054906101000a900460ff16155b1561373b57600f60009054906101000a900460ff16156134525743600f600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132db9190614cd2565b1061331b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331290615a9e565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133c357507f000000000000000000000000e8f2bc22dac68a6b537e7391abb785d477fa8dca73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134515743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359c5760075481111561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353690615b30565b60405180910390fd5b60095461354b83611b36565b826135569190614cd2565b1115613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90615b9c565b60405180910390fd5b61373a565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368e57600754811115613689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368090615c2e565b60405180910390fd5b613739565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613738576009546136eb83611b36565b826136f69190614cd2565b1115613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90615b9c565b60405180910390fd5b5b5b5b5b5b600061374730611b36565b90506000600854821015905080801561376c5750600d60029054906101000a900460ff165b80156137855750600560159054906101000a900460ff16155b80156137db5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138315750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138875750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138cb576001600560156101000a81548160ff0219169083151502179055506138af61405a565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139815750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398b57600090505b60008115613d315743601a54600b546139a49190614cd2565b10158015613a4f5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a4e5750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613b3f5761271060135486613a659190614fc7565b613a6f9190615038565b905060135460155482613a829190614fc7565b613a8c9190615038565b60176000828254613a9d9190614cd2565b9250508190555060135460145482613ab59190614fc7565b613abf9190615038565b60166000828254613ad09190614cd2565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613d0d565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b9a57506000601054115b15613c275761271060105486613bb09190614fc7565b613bba9190615038565b905060105460125482613bcd9190614fc7565b613bd79190615038565b60176000828254613be89190614cd2565b9250508190555060105460115482613c009190614fc7565b613c0a9190615038565b60166000828254613c1b9190614cd2565b92505081905550613d0c565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c8257506000601354115b15613d0b5761271060135486613c989190614fc7565b613ca29190615038565b905060135460155482613cb59190614fc7565b613cbf9190615038565b60176000828254613cd09190614cd2565b9250508190555060135460145482613ce89190614fc7565b613cf29190615038565b60166000828254613d039190614cd2565b925050819055505b5b5b6000811115613d2257613d21873083613d46565b5b8085613d2e9190615c4e565b94505b613d3c878787613d46565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dac906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1b9061595a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea190615cf4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f3d9190614cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa191906146ae565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506140108282611db2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061406530611b36565b905060006016546017546140799190614cd2565b9050600082148061408a5750600081145b156140965750506141a1565b6000601754111561418b57600081601754846140b29190614fc7565b6140bc9190615038565b90506140e9307f000000000000000000000000e8f2bc22dac68a6b537e7391abb785d477fa8dca83613d46565b7f000000000000000000000000e8f2bc22dac68a6b537e7391abb785d477fa8dca73ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561415157600080fd5b505af1925050508015614162575060015b50808361416f9190615c4e565b92506017548261417f9190615c4e565b91506000601781905550505b600082111561419e5761419d826141a3565b5b50505b565b6000600267ffffffffffffffff8111156141c0576141bf6146ce565b5b6040519080825280602002602001820160405280156141ee5781602001602082028036833780820191505090505b509050308160008151811061420657614205614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142cf9190615d29565b816001815181106142e3576142e2614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016143a1959493929190615e17565b600060405180830381600087803b1580156143bb57600080fd5b505af11580156143cf573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906143f591906143f8565b50565b5b808211156144115760008160009055506001016143f9565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61443c81614429565b811461444757600080fd5b50565b60008135905061445981614433565b92915050565b600080604083850312156144765761447561441f565b5b60006144848582860161444a565b92505060206144958582860161444a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144d95780820151818401526020810190506144be565b60008484015250505050565b6000601f19601f8301169050919050565b60006145018261449f565b61450b81856144aa565b935061451b8185602086016144bb565b614524816144e5565b840191505092915050565b6000602082019050818103600083015261454981846144f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061459661459161458c84614551565b614571565b614551565b9050919050565b60006145a88261457b565b9050919050565b60006145ba8261459d565b9050919050565b6145ca816145af565b82525050565b60006020820190506145e560008301846145c1565b92915050565b60006145f682614551565b9050919050565b614606816145eb565b811461461157600080fd5b50565b600081359050614623816145fd565b92915050565b600080604083850312156146405761463f61441f565b5b600061464e85828601614614565b925050602061465f8582860161444a565b9150509250929050565b60008115159050919050565b61467e81614669565b82525050565b60006020820190506146996000830184614675565b92915050565b6146a881614429565b82525050565b60006020820190506146c3600083018461469f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614706826144e5565b810181811067ffffffffffffffff82111715614725576147246146ce565b5b80604052505050565b6000614738614415565b905061474482826146fd565b919050565b600067ffffffffffffffff821115614764576147636146ce565b5b602082029050602081019050919050565b600080fd5b600061478d61478884614749565b61472e565b905080838252602082019050602084028301858111156147b0576147af614775565b5b835b818110156147d957806147c58882614614565b8452602084019350506020810190506147b2565b5050509392505050565b600082601f8301126147f8576147f76146c9565b5b813561480884826020860161477a565b91505092915050565b6000602082840312156148275761482661441f565b5b600082013567ffffffffffffffff81111561484557614844614424565b5b614851848285016147e3565b91505092915050565b6000602082840312156148705761486f61441f565b5b600061487e8482850161444a565b91505092915050565b60006020828403121561489d5761489c61441f565b5b60006148ab84828501614614565b91505092915050565b6000806000606084860312156148cd576148cc61441f565b5b60006148db86828701614614565b93505060206148ec86828701614614565b92505060406148fd8682870161444a565b9150509250925092565b600060ff82169050919050565b61491d81614907565b82525050565b60006020820190506149386000830184614914565b92915050565b614947816145eb565b82525050565b6000602082019050614962600083018461493e565b92915050565b600067ffffffffffffffff821115614983576149826146ce565b5b602082029050602081019050919050565b60006149a76149a284614968565b61472e565b905080838252602082019050602084028301858111156149ca576149c9614775565b5b835b818110156149f357806149df888261444a565b8452602084019350506020810190506149cc565b5050509392505050565b600082601f830112614a1257614a116146c9565b5b8135614a22848260208601614994565b91505092915050565b60008060408385031215614a4257614a4161441f565b5b600083013567ffffffffffffffff811115614a6057614a5f614424565b5b614a6c858286016147e3565b925050602083013567ffffffffffffffff811115614a8d57614a8c614424565b5b614a99858286016149fd565b9150509250929050565b614aac81614669565b8114614ab757600080fd5b50565b600081359050614ac981614aa3565b92915050565b60008060408385031215614ae657614ae561441f565b5b6000614af485828601614614565b9250506020614b0585828601614aba565b9150509250929050565b600060208284031215614b2557614b2461441f565b5b6000614b3384828501614aba565b91505092915050565b600080fd5b60008083601f840112614b5757614b566146c9565b5b8235905067ffffffffffffffff811115614b7457614b73614b3c565b5b602083019150836020820283011115614b9057614b8f614775565b5b9250929050565b600080600060408486031215614bb057614baf61441f565b5b600084013567ffffffffffffffff811115614bce57614bcd614424565b5b614bda86828701614b41565b93509350506020614bed86828701614aba565b9150509250925092565b60008060408385031215614c0e57614c0d61441f565b5b6000614c1c85828601614614565b9250506020614c2d85828601614614565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c6d6020836144aa565b9150614c7882614c37565b602082019050919050565b60006020820190508181036000830152614c9c81614c60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cdd82614429565b9150614ce883614429565b9250828201905080821115614d0057614cff614ca3565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614d3c601e836144aa565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db957607f821691505b602082108103614dcc57614dcb614d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e0c82614429565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e3e57614e3d614ca3565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614ea057808604811115614e7c57614e7b614ca3565b5b6001851615614e8b5780820291505b8081029050614e9985614e49565b9450614e60565b94509492505050565b600082614eb95760019050614f75565b81614ec75760009050614f75565b8160018114614edd5760028114614ee757614f16565b6001915050614f75565b60ff841115614ef957614ef8614ca3565b5b8360020a915084821115614f1057614f0f614ca3565b5b50614f75565b5060208310610133831016604e8410600b8410161715614f4b5782820a905083811115614f4657614f45614ca3565b5b614f75565b614f588484846001614e56565b92509050818404811115614f6f57614f6e614ca3565b5b81810290505b9392505050565b6000614f8782614429565b9150614f9283614907565b9250614fbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ea9565b905092915050565b6000614fd282614429565b9150614fdd83614429565b9250828202614feb81614429565b9150828204841483151761500257615001614ca3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504382614429565b915061504e83614429565b92508261505e5761505d615009565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c5602f836144aa565b91506150d082615069565b604082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006151576028836144aa565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006151c36018836144aa565b91506151ce8261518d565b602082019050919050565b600060208201905081810360008301526151f2816151b6565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b600061522f6010836144aa565b915061523a826151f9565b602082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b600061529b601e836144aa565b91506152a682615265565b602082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b600061532d6036836144aa565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006153996018836144aa565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006154516045836144aa565b915061545c826153cf565b606082019050919050565b6000602082019050818103600083015261548081615444565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006154e36025836144aa565b91506154ee82615487565b604082019050919050565b60006020820190508181036000830152615512816154d6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155756022836144aa565b915061558082615519565b604082019050919050565b600060208201905081810360008301526155a481615568565b9050919050565b600082825260208201905092915050565b6000819050919050565b6155cf816145eb565b82525050565b60006155e183836155c6565b60208301905092915050565b60006155fc6020840184614614565b905092915050565b6000602082019050919050565b600061561d83856155ab565b9350615628826155bc565b8060005b858110156156615761563e82846155ed565b61564888826155d5565b975061565383615604565b92505060018101905061562c565b5085925050509392505050565b60006040820190508181036000830152615689818587615611565b90506156986020830184614675565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156fc6026836144aa565b9150615707826156a0565b604082019050919050565b6000602082019050818103600083015261572b816156ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061578e6024836144aa565b915061579982615732565b604082019050919050565b600060208201905081810360008301526157bd81615781565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006158206022836144aa565b915061582b826157c4565b604082019050919050565b6000602082019050818103600083015261584f81615813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158b26025836144aa565b91506158bd82615856565b604082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006159446023836144aa565b915061594f826158e8565b604082019050919050565b6000602082019050818103600083015261597381615937565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b60006159b06007836144aa565b91506159bb8261597a565b602082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615a1c601a836144aa565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615a886017836144aa565b9150615a9382615a52565b602082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b1a6035836144aa565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615b86601b836144aa565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c186036836144aa565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c5982614429565b9150615c6483614429565b9250828203905081811115615c7c57615c7b614ca3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615cde6026836144aa565b9150615ce982615c82565b604082019050919050565b60006020820190508181036000830152615d0d81615cd1565b9050919050565b600081519050615d23816145fd565b92915050565b600060208284031215615d3f57615d3e61441f565b5b6000615d4d84828501615d14565b91505092915050565b6000819050919050565b6000615d7b615d76615d7184615d56565b614571565b614429565b9050919050565b615d8b81615d60565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615dc482615d91565b615dce81856155ab565b9350615dd983615d9c565b8060005b83811015615e0a578151615df188826155d5565b9750615dfc83615dac565b925050600181019050615ddd565b5085935050505092915050565b600060a082019050615e2c600083018861469f565b615e396020830187615d82565b8181036040830152615e4b8186615db9565b9050615e5a606083018561493e565b615e67608083018461469f565b969550505050505056fea26469706673582212207cc21b1d4672a127020b050c71d59d881198a2e37cd7dbb75b7ba7cb8028eb2c64736f6c63430008130033

Deployed Bytecode Sourcemap

10978:15264:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17118:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4220:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11021:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5141:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12049:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25603:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11298:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16273:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12551:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4548:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12249:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11460;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5318:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18671:349;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4440:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25074:323;;;;;;;;;;;;;:::i;:::-;;5899:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11065:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11569:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19028:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16788:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11649:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25799:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4664:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8987:148;;;;;;;;;;;;;:::i;:::-;;12010:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19205:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17451:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15792:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8345:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16164:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4328:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11924:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18167:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6122:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4799:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12503:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12773:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25405:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12093:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11609:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17661:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16541:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17853:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11872:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12165:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11975:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4982:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11221:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15600:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11383:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12127:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9290:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11261:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12208:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11135:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17118:325;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17239:14:::1;17219:17;:34;;;;17283:13;17264:16;:32;;;;17343:16;;17323:17;;:36;;;;:::i;:::-;17307:13;:52;;;;17395:5;17378:13;;:22;;17370:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17118:325:::0;;:::o;4220:100::-;4274:13;4307:5;4300:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4220:100;:::o;11021:37::-;;;:::o;5141:169::-;5224:4;5241:39;5250:12;:10;:12::i;:::-;5264:7;5273:6;5241:8;:39::i;:::-;5298:4;5291:11;;5141:169;;;;:::o;12049:31::-;;;;:::o;25603:188::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25687:9:::1;25683:101;25706:10;:17;25702:1;:21;25683:101;;;25768:4;25744:6;:21;25751:10;25762:1;25751:13;;;;;;;;:::i;:::-;;;;;;;;25744:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25725:3;;;;;:::i;:::-;;;;25683:101;;;;25603:188:::0;:::o;11298:39::-;;;;:::o;16273:256::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16397:10:::1;:8;:10::i;:::-;16391:2;:16;;;;:::i;:::-;16382:4;16378:1;16362:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16361:47;;;;:::i;:::-;16352:6;:56;16344:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;16510:10;:8;:10::i;:::-;16504:2;:16;;;;:::i;:::-;16494:6;:27;;;;:::i;:::-;16471:20;:50;;;;16273:256:::0;:::o;12551:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4548:108::-;4609:7;4636:12;;4629:19;;4548:108;:::o;12249:33::-;;;;:::o;11460:::-;;;;:::o;5318:573::-;5458:4;5475:36;5485:6;5493:9;5504:6;5475:9;:36::i;:::-;5524:24;5551:11;:19;5563:6;5551:19;;;;;;;;;;;;;;;:33;5571:12;:10;:12::i;:::-;5551:33;;;;;;;;;;;;;;;;5524:60;;5619:17;5599:16;:37;5595:265;;5681:6;5661:16;:26;;5653:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5776:57;5785:6;5793:12;:10;:12::i;:::-;5826:6;5807:16;:25;5776:8;:57::i;:::-;5595:265;5879:4;5872:11;;;5318:573;;;;;:::o;18671:349::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18801:1:::1;18770:33;;:19;:33;;::::0;18762:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18843:42;18859:19;18880:4;18843:15;:42::i;:::-;18946:16;;;;;;;;;;;18901:62;;18925:19;18901:62;;;;;;;;;;;;18993:19;18974:16;;:38;;;;;;;;;;;;;;;;;;18671:349:::0;:::o;4440:100::-;4498:5;4523:9;;;;;;;;;;;4516:16;;4440:100;:::o;25074:323::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25160:1:::1;25139:11;:18;;;;:22;25131:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25199:9;25195:164;25218:11;:18;;;;25214:1;:22;25195:164;;;25261:6;:22;25268:11;25280:1;25268:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25261:22;;;;;;;;;;;;;;;;;;;;;;;;;25257:91;;25328:4;25303:6;:22;25310:11;25322:1;25310:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25303:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25257:91;25238:3;;;;;:::i;:::-;;;;25195:164;;;;25378:11;;25371:18;;;;:::i;:::-;25074:323::o:0;5899:215::-;5987:4;6004:80;6013:12;:10;:12::i;:::-;6027:7;6073:10;6036:11;:25;6048:12;:10;:12::i;:::-;6036:25;;;;;;;;;;;;;;;:34;6062:7;6036:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6004:8;:80::i;:::-;6102:4;6095:11;;5899:215;;;;:::o;11065:31::-;;;:::o;11569:33::-;;;;;;;;;;;;;:::o;19028:127::-;19095:4;19119:19;:28;19139:7;19119:28;;;;;;;;;;;;;;;;;;;;;;;;;19112:35;;19028:127;;;:::o;16788:318::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16907:14:::1;16888:16;:33;;;;16950:13;16932:15;:31;;;;17008:15;;16989:16;;:34;;;;:::i;:::-;16974:12;:49;;;;17058:5;17042:12;;:21;;17034:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16788:318:::0;;:::o;11649:31::-;;;;;;;;;;;;;:::o;25799:436::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25937:12:::1;:19;25919:7;:14;:37;25911:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;26027:3;26010:7;:14;:20;26002:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26104:9;26100:126;26123:7;:14;26119:1;:18;26100:126;;;26158:56;26174:10;26186:7;26194:1;26186:10;;;;;;;;:::i;:::-;;;;;;;;26198:12;26211:1;26198:15;;;;;;;;:::i;:::-;;;;;;;;26158;:56::i;:::-;26139:3;;;;;:::i;:::-;;;;26100:126;;;;25799:436:::0;;:::o;4664:127::-;4738:7;4765:9;:18;4775:7;4765:18;;;;;;;;;;;;;;;;4758:25;;4664:127;;;:::o;8987:148::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9094:1:::1;9057:40;;9078:6;;;;;;;;;;;9057:40;;;;;;;;;;;;9125:1;9108:6;;:19;;;;;;;;;;;;;;;;;;8987:148::o:0;12010:32::-;;;;:::o;19205:159::-;19257:4;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19290:5:::1;19273:14;;:22;;;;;;;;;;;;;;;;;;19329:5;19306:20;;:28;;;;;;;;;;;;;;;;;;19352:4;19345:11;;19205:159:::0;:::o;17451:202::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17583:4:::1;17541:31;:39;17573:6;17541:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17632:6;17603:42;;;17640:4;17603:42;;;;;;:::i;:::-;;;;;;;;17451:202:::0;;:::o;15792:272::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15875:13:::1;;;;;;;;;;;15874:14;15866:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15944:4;15928:13;;:20;;;;;;;;;;;;;;;;;;15973:4;15959:11;;:18;;;;;;;;;;;;;;;;;;16009:12;15988:18;:33;;;;16045:11;16032:10;:24;;;;15792:272:::0;:::o;8345:79::-;8383:7;8410:6;;;;;;;;;;;8403:13;;8345:79;:::o;16164:101::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16250:7:::1;16236:11;;:21;;;;;;;;;;;;;;;;;;16164:101:::0;:::o;4328:104::-;4384:13;4417:7;4410:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:104;:::o;11924:42::-;11961:5;11924:42;:::o;18167:251::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18276:6:::1;18268:14;;:4;:14;;::::0;18260:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:41;18398:4;18404:5;18369:28;:41::i;:::-;18167:251:::0;;:::o;6122:413::-;6215:4;6232:24;6259:11;:25;6271:12;:10;:12::i;:::-;6259:25;;;;;;;;;;;;;;;:34;6285:7;6259:34;;;;;;;;;;;;;;;;6232:61;;6332:15;6312:16;:35;;6304:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6425:67;6434:12;:10;:12::i;:::-;6448:7;6476:15;6457:16;:34;6425:8;:67::i;:::-;6523:4;6516:11;;;6122:413;;;;:::o;4799:175::-;4885:4;4902:42;4912:12;:10;:12::i;:::-;4926:9;4937:6;4902:9;:42::i;:::-;4962:4;4955:11;;4799:175;;;;:::o;12503:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;12773:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;25405:190::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25490:9:::1;25486:102;25509:10;:17;25505:1;:21;25486:102;;;25571:5;25547:6;:21;25554:10;25565:1;25554:13;;;;;;;;:::i;:::-;;;;;;;;25547:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25528:3;;;;;:::i;:::-;;;;25486:102;;;;25405:190:::0;:::o;12093:27::-;;;;:::o;11609:33::-;;;;;;;;;;;;;:::o;17661:184::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17777:8:::1;17746:19;:28;17766:7;17746:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17819:7;17803:34;;;17828:8;17803:34;;;;;;:::i;:::-;;;;;;;;17661:184:::0;;:::o;16541:235::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16668:10:::1;:8;:10::i;:::-;16662:2;:16;;;;:::i;:::-;16656:3;16652:1;16636:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;16635:44;;;;:::i;:::-;16626:6;:53;16618:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16757:10;:8;:10::i;:::-;16751:2;:16;;;;:::i;:::-;16741:6;:27;;;;:::i;:::-;16729:9;:39;;;;16541:235:::0;:::o;17853:306::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17972:9:::1;17968:115;17991:8;;:15;;17987:1;:19;17968:115;;;18063:8;18028:19;:32;18048:8;;18057:1;18048:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18028:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;18008:3;;;;;:::i;:::-;;;;17968:115;;;;18100:51;18132:8;;18142;18100:51;;;;;;;;:::i;:::-;;;;;;;;17853:306:::0;;;:::o;11872:39::-;;;;;;;;;;;;;:::o;11179:35::-;;;;:::o;12165:30::-;;;;:::o;11975:28::-;;;;:::o;4982:151::-;5071:7;5098:11;:18;5110:5;5098:18;;;;;;;;;;;;;;;:27;5117:7;5098:27;;;;;;;;;;;;;;;;5091:34;;4982:151;;;;:::o;11221:33::-;;;;:::o;15600:134::-;15660:4;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15699:5:::1;15676:20;;:28;;;;;;;;;;;;;;;;;;15722:4;15715:11;;15600:134:::0;:::o;11383:37::-;;;;:::o;12127:31::-;;;;:::o;9290:244::-;8567:12;:10;:12::i;:::-;8557:22;;:6;;;;;;;;;;;:22;;;8549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9399:1:::1;9379:22;;:8;:22;;::::0;9371:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9489:8;9460:38;;9481:6;;;;;;;;;;;9460:38;;;;;;;;;;;;9518:8;9509:6;;:17;;;;;;;;;;;;;;;;;;9290:244:::0;:::o;11261:24::-;;;;:::o;12208:34::-;;;;:::o;11135:31::-;;;;;;;;;;;;;:::o;168:98::-;221:7;248:10;241:17;;168:98;:::o;7462:380::-;7615:1;7598:19;;:5;:19;;;7590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7696:1;7677:21;;:7;:21;;;7669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7780:6;7750:11;:18;7762:5;7750:18;;;;;;;;;;;;;;;:27;7769:7;7750:27;;;;;;;;;;;;;;;:36;;;;7818:7;7802:32;;7811:5;7802:32;;;7827:6;7802:32;;;;;;:::i;:::-;;;;;;;;7462:380;;;:::o;19376:4392::-;19524:1;19508:18;;:4;:18;;;19500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19601:1;19587:16;;:2;:16;;;19579:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19663:6;:10;19670:2;19663:10;;;;;;;;;;;;;;;;;;;;;;;;;19662:11;:28;;;;;19678:6;:12;19685:4;19678:12;;;;;;;;;;;;;;;;;;;;;;;;;19677:13;19662:28;19654:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19729:1;19719:6;:11;19716:92;;19747:28;19763:4;19769:2;19773:1;19747:15;:28::i;:::-;19790:7;;19716:92;19832:13;;;;;;;;;;;19828:136;;19869:19;:25;19889:4;19869:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19898:19;:23;19918:2;19898:23;;;;;;;;;;;;;;;;;;;;;;;;;19869:52;19861:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19828:136;19987:14;;;;;;;;;;;19984:1657;;;20047:7;:5;:7::i;:::-;20039:15;;:4;:15;;;;:49;;;;;20081:7;:5;:7::i;:::-;20075:13;;:2;:13;;;;20039:49;:86;;;;;20123:1;20109:16;;:2;:16;;;;20039:86;:128;;;;;20160:6;20146:21;;:2;:21;;;;20039:128;:158;;;;;20189:8;;;;;;;;;;;20188:9;20039:158;20017:1613;;;20371:20;;;;;;;;;;;20367:418;;;20470:12;20465:2;20423:28;:39;20452:9;20423:39;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;:59;20415:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:9;20537:24;;:2;:24;;;;:49;;;;;20579:6;20565:21;;:2;:21;;;;20537:49;20533:233;;;20656:12;20614:28;:39;20643:9;20614:39;;;;;;;;;;;;;;;:54;;;;20730:12;20695:28;:32;20724:2;20695:32;;;;;;;;;;;;;;;:47;;;;20533:233;20367:418;20853:25;:31;20879:4;20853:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20889:31;:35;20921:2;20889:35;;;;;;;;;;;;;;;;;;;;;;;;;20888:36;20853:71;20849:766;;;20967:20;;20957:6;:30;;20949:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21102:9;;21085:13;21095:2;21085:9;:13::i;:::-;21076:6;:22;;;;:::i;:::-;:35;;21068:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20849:766;;;21220:25;:29;21246:2;21220:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21254:31;:37;21286:4;21254:37;;;;;;;;;;;;;;;;;;;;;;;;;21253:38;21220:71;21216:399;;;21334:20;;21324:6;:30;;21316:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21216:399;;;21460:31;:35;21492:2;21460:35;;;;;;;;;;;;;;;;;;;;;;;;;21456:159;;21554:9;;21537:13;21547:2;21537:9;:13::i;:::-;21528:6;:22;;;;:::i;:::-;:35;;21520:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21456:159;21216:399;20849:766;20017:1613;19984:1657;21647:28;21678:24;21696:4;21678:9;:24::i;:::-;21647:55;;21723:12;21762:18;;21738:20;:42;;21723:57;;21811:7;:35;;;;;21835:11;;;;;;;;;;;21811:35;:61;;;;;21864:8;;;;;;;;;;;21863:9;21811:61;:110;;;;;21890:25;:31;21916:4;21890:31;;;;;;;;;;;;;;;;;;;;;;;;;21889:32;21811:110;:153;;;;;21939:19;:25;21959:4;21939:25;;;;;;;;;;;;;;;;;;;;;;;;;21938:26;21811:153;:194;;;;;21982:19;:23;22002:2;21982:23;;;;;;;;;;;;;;;;;;;;;;;;;21981:24;21811:194;21793:322;;;22043:4;22032:8;;:15;;;;;;;;;;;;;;;;;;22062:10;:8;:10::i;:::-;22098:5;22087:8;;:16;;;;;;;;;;;;;;;;;;21793:322;22127:12;22143:8;;;;;;;;;;;22142:9;22127:24;;22252:19;:25;22272:4;22252:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22281:19;:23;22301:2;22281:23;;;;;;;;;;;;;;;;;;;;;;;;;22252:52;22249:99;;;22331:5;22321:15;;22249:99;22368:12;22459:7;22456:1259;;;22520:12;22506:10;;22485:18;;:31;;;;:::i;:::-;:47;;:117;;;;;22537:25;:29;22563:2;22537:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;22570:25;:31;22596:4;22570:31;;;;;;;;;;;;;;;;;;;;;;;;;22537:64;22485:117;22482:1076;;;11961:5;22638:12;;22629:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;22622:41;;22729:12;;22711:15;;22704:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22682:18;;:59;;;;;;;:::i;:::-;;;;;;;;22809:12;;22790:16;;22783:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;22760:19;;:61;;;;;;;:::i;:::-;;;;;;;;22840:11;22857:2;22840:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22482:1076;;;22925:25;:29;22951:2;22925:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22974:1;22958:13;;:17;22925:50;22921:637;;;11961:5;23011:13;;23002:6;:22;;;;:::i;:::-;:35;;;;:::i;:::-;22995:42;;23104:13;;23085:16;;23078:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23056:18;;:61;;;;;;;:::i;:::-;;;;;;;;23186:13;;23166:17;;23159:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;23136:19;;:63;;;;;;;:::i;:::-;;;;;;;;22921:637;;;23274:25;:31;23300:4;23274:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23324:1;23309:12;;:16;23274:51;23271:287;;;11961:5;23359:12;;23350:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;23343:41;;23450:12;;23432:15;;23425:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23403:18;;:59;;;;;;;:::i;:::-;;;;;;;;23530:12;;23511:16;;23504:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;23481:19;;:61;;;;;;;:::i;:::-;;;;;;;;23271:287;22921:637;22482:1076;23584:1;23577:4;:8;23574:93;;;23609:42;23625:4;23639;23646;23609:15;:42::i;:::-;23574:93;23699:4;23689:14;;;;;:::i;:::-;;;22456:1259;23727:33;23743:4;23749:2;23753:6;23727:15;:33::i;:::-;19489:4279;;;;19376:4392;;;;:::o;6543:614::-;6701:1;6683:20;;:6;:20;;;6675:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6785:1;6764:23;;:9;:23;;;6756:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6840:21;6864:9;:17;6874:6;6864:17;;;;;;;;;;;;;;;;6840:41;;6917:6;6900:13;:23;;6892:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7038:6;7022:13;:22;7002:9;:17;7012:6;7002:17;;;;;;;;;;;;;;;:42;;;;7090:6;7066:9;:20;7076:9;7066:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7131:9;7114:35;;7123:6;7114:35;;;7142:6;7114:35;;;;;;:::i;:::-;;;;;;;;6664:493;6543:614;;;:::o;18426:237::-;18543:5;18509:25;:31;18535:4;18509:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18561:38;18587:4;18593:5;18561:25;:38::i;:::-;18649:5;18615:40;;18643:4;18615:40;;;;;;;;;;;;18426:237;;:::o;24305:761::-;24344:23;24370:24;24388:4;24370:9;:24::i;:::-;24344:50;;24405:25;24454:19;;24433:18;;:40;;;;:::i;:::-;24405:68;;24516:1;24497:15;:20;:46;;;;24542:1;24521:17;:22;24497:46;24494:60;;;24546:7;;;;24494:60;24592:1;24571:18;;:22;24568:396;;;24609:23;24674:17;24653:18;;24635:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;24609:82;;24706:55;24730:4;24737:6;24745:15;24706;:55::i;:::-;24788:6;24780:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24776:37;24846:15;24827:34;;;;;:::i;:::-;;;24897:18;;24876:39;;;;;:::i;:::-;;;24951:1;24930:18;:22;;;;24594:370;24568:396;24997:1;24979:15;:19;24976:83;;;25014:33;25031:15;25014:16;:33::i;:::-;24976:83;24333:733;;24305:761;:::o;23776:521::-;23904:21;23942:1;23928:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23904:40;;23973:4;23955;23960:1;23955:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23999:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23989:4;23994:1;23989:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;24054:9;:60;;;24129:11;24155:1;24199:4;24226:16;;;;;;;;;;;24258:15;24054:230;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23831:466;23776:521;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:60::-;2672:3;2693:5;2686:12;;2644:60;;;:::o;2710:142::-;2760:9;2793:53;2811:34;2820:24;2838:5;2820:24;:::i;:::-;2811:34;:::i;:::-;2793:53;:::i;:::-;2780:66;;2710:142;;;:::o;2858:126::-;2908:9;2941:37;2972:5;2941:37;:::i;:::-;2928:50;;2858:126;;;:::o;2990:144::-;3058:9;3091:37;3122:5;3091:37;:::i;:::-;3078:50;;2990:144;;;:::o;3140:167::-;3245:55;3294:5;3245:55;:::i;:::-;3240:3;3233:68;3140:167;;:::o;3313:258::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:89;3561:1;3550:9;3546:17;3537:6;3475:89;:::i;:::-;3313:258;;;;:::o;3577:96::-;3614:7;3643:24;3661:5;3643:24;:::i;:::-;3632:35;;3577:96;;;:::o;3679:122::-;3752:24;3770:5;3752:24;:::i;:::-;3745:5;3742:35;3732:63;;3791:1;3788;3781:12;3732:63;3679:122;:::o;3807:139::-;3853:5;3891:6;3878:20;3869:29;;3907:33;3934:5;3907:33;:::i;:::-;3807:139;;;;:::o;3952:474::-;4020:6;4028;4077:2;4065:9;4056:7;4052:23;4048:32;4045:119;;;4083:79;;:::i;:::-;4045:119;4203:1;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4174:117;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;3952:474;;;;;:::o;4432:90::-;4466:7;4509:5;4502:13;4495:21;4484:32;;4432:90;;;:::o;4528:109::-;4609:21;4624:5;4609:21;:::i;:::-;4604:3;4597:34;4528:109;;:::o;4643:210::-;4730:4;4768:2;4757:9;4753:18;4745:26;;4781:65;4843:1;4832:9;4828:17;4819:6;4781:65;:::i;:::-;4643:210;;;;:::o;4859:118::-;4946:24;4964:5;4946:24;:::i;:::-;4941:3;4934:37;4859:118;;:::o;4983:222::-;5076:4;5114:2;5103:9;5099:18;5091:26;;5127:71;5195:1;5184:9;5180:17;5171:6;5127:71;:::i;:::-;4983:222;;;;:::o;5211:117::-;5320:1;5317;5310:12;5334:180;5382:77;5379:1;5372:88;5479:4;5476:1;5469:15;5503:4;5500:1;5493:15;5520:281;5603:27;5625:4;5603:27;:::i;:::-;5595:6;5591:40;5733:6;5721:10;5718:22;5697:18;5685:10;5682:34;5679:62;5676:88;;;5744:18;;:::i;:::-;5676:88;5784:10;5780:2;5773:22;5563:238;5520:281;;:::o;5807:129::-;5841:6;5868:20;;:::i;:::-;5858:30;;5897:33;5925:4;5917:6;5897:33;:::i;:::-;5807:129;;;:::o;5942:311::-;6019:4;6109:18;6101:6;6098:30;6095:56;;;6131:18;;:::i;:::-;6095:56;6181:4;6173:6;6169:17;6161:25;;6241:4;6235;6231:15;6223:23;;5942:311;;;:::o;6259:117::-;6368:1;6365;6358:12;6399:710;6495:5;6520:81;6536:64;6593:6;6536:64;:::i;:::-;6520:81;:::i;:::-;6511:90;;6621:5;6650:6;6643:5;6636:21;6684:4;6677:5;6673:16;6666:23;;6737:4;6729:6;6725:17;6717:6;6713:30;6766:3;6758:6;6755:15;6752:122;;;6785:79;;:::i;:::-;6752:122;6900:6;6883:220;6917:6;6912:3;6909:15;6883:220;;;6992:3;7021:37;7054:3;7042:10;7021:37;:::i;:::-;7016:3;7009:50;7088:4;7083:3;7079:14;7072:21;;6959:144;6943:4;6938:3;6934:14;6927:21;;6883:220;;;6887:21;6501:608;;6399:710;;;;;:::o;7132:370::-;7203:5;7252:3;7245:4;7237:6;7233:17;7229:27;7219:122;;7260:79;;:::i;:::-;7219:122;7377:6;7364:20;7402:94;7492:3;7484:6;7477:4;7469:6;7465:17;7402:94;:::i;:::-;7393:103;;7209:293;7132:370;;;;:::o;7508:539::-;7592:6;7641:2;7629:9;7620:7;7616:23;7612:32;7609:119;;;7647:79;;:::i;:::-;7609:119;7795:1;7784:9;7780:17;7767:31;7825:18;7817:6;7814:30;7811:117;;;7847:79;;:::i;:::-;7811:117;7952:78;8022:7;8013:6;8002:9;7998:22;7952:78;:::i;:::-;7942:88;;7738:302;7508:539;;;;:::o;8053:329::-;8112:6;8161:2;8149:9;8140:7;8136:23;8132:32;8129:119;;;8167:79;;:::i;:::-;8129:119;8287:1;8312:53;8357:7;8348:6;8337:9;8333:22;8312:53;:::i;:::-;8302:63;;8258:117;8053:329;;;;:::o;8388:::-;8447:6;8496:2;8484:9;8475:7;8471:23;8467:32;8464:119;;;8502:79;;:::i;:::-;8464:119;8622:1;8647:53;8692:7;8683:6;8672:9;8668:22;8647:53;:::i;:::-;8637:63;;8593:117;8388:329;;;;:::o;8723:619::-;8800:6;8808;8816;8865:2;8853:9;8844:7;8840:23;8836:32;8833:119;;;8871:79;;:::i;:::-;8833:119;8991:1;9016:53;9061:7;9052:6;9041:9;9037:22;9016:53;:::i;:::-;9006:63;;8962:117;9118:2;9144:53;9189:7;9180:6;9169:9;9165:22;9144:53;:::i;:::-;9134:63;;9089:118;9246:2;9272:53;9317:7;9308:6;9297:9;9293:22;9272:53;:::i;:::-;9262:63;;9217:118;8723:619;;;;;:::o;9348:86::-;9383:7;9423:4;9416:5;9412:16;9401:27;;9348:86;;;:::o;9440:112::-;9523:22;9539:5;9523:22;:::i;:::-;9518:3;9511:35;9440:112;;:::o;9558:214::-;9647:4;9685:2;9674:9;9670:18;9662:26;;9698:67;9762:1;9751:9;9747:17;9738:6;9698:67;:::i;:::-;9558:214;;;;:::o;9778:118::-;9865:24;9883:5;9865:24;:::i;:::-;9860:3;9853:37;9778:118;;:::o;9902:222::-;9995:4;10033:2;10022:9;10018:18;10010:26;;10046:71;10114:1;10103:9;10099:17;10090:6;10046:71;:::i;:::-;9902:222;;;;:::o;10130:311::-;10207:4;10297:18;10289:6;10286:30;10283:56;;;10319:18;;:::i;:::-;10283:56;10369:4;10361:6;10357:17;10349:25;;10429:4;10423;10419:15;10411:23;;10130:311;;;:::o;10464:710::-;10560:5;10585:81;10601:64;10658:6;10601:64;:::i;:::-;10585:81;:::i;:::-;10576:90;;10686:5;10715:6;10708:5;10701:21;10749:4;10742:5;10738:16;10731:23;;10802:4;10794:6;10790:17;10782:6;10778:30;10831:3;10823:6;10820:15;10817:122;;;10850:79;;:::i;:::-;10817:122;10965:6;10948:220;10982:6;10977:3;10974:15;10948:220;;;11057:3;11086:37;11119:3;11107:10;11086:37;:::i;:::-;11081:3;11074:50;11153:4;11148:3;11144:14;11137:21;;11024:144;11008:4;11003:3;10999:14;10992:21;;10948:220;;;10952:21;10566:608;;10464:710;;;;;:::o;11197:370::-;11268:5;11317:3;11310:4;11302:6;11298:17;11294:27;11284:122;;11325:79;;:::i;:::-;11284:122;11442:6;11429:20;11467:94;11557:3;11549:6;11542:4;11534:6;11530:17;11467:94;:::i;:::-;11458:103;;11274:293;11197:370;;;;:::o;11573:894::-;11691:6;11699;11748:2;11736:9;11727:7;11723:23;11719:32;11716:119;;;11754:79;;:::i;:::-;11716:119;11902:1;11891:9;11887:17;11874:31;11932:18;11924:6;11921:30;11918:117;;;11954:79;;:::i;:::-;11918:117;12059:78;12129:7;12120:6;12109:9;12105:22;12059:78;:::i;:::-;12049:88;;11845:302;12214:2;12203:9;12199:18;12186:32;12245:18;12237:6;12234:30;12231:117;;;12267:79;;:::i;:::-;12231:117;12372:78;12442:7;12433:6;12422:9;12418:22;12372:78;:::i;:::-;12362:88;;12157:303;11573:894;;;;;:::o;12473:116::-;12543:21;12558:5;12543:21;:::i;:::-;12536:5;12533:32;12523:60;;12579:1;12576;12569:12;12523:60;12473:116;:::o;12595:133::-;12638:5;12676:6;12663:20;12654:29;;12692:30;12716:5;12692:30;:::i;:::-;12595:133;;;;:::o;12734:468::-;12799:6;12807;12856:2;12844:9;12835:7;12831:23;12827:32;12824:119;;;12862:79;;:::i;:::-;12824:119;12982:1;13007:53;13052:7;13043:6;13032:9;13028:22;13007:53;:::i;:::-;12997:63;;12953:117;13109:2;13135:50;13177:7;13168:6;13157:9;13153:22;13135:50;:::i;:::-;13125:60;;13080:115;12734:468;;;;;:::o;13208:323::-;13264:6;13313:2;13301:9;13292:7;13288:23;13284:32;13281:119;;;13319:79;;:::i;:::-;13281:119;13439:1;13464:50;13506:7;13497:6;13486:9;13482:22;13464:50;:::i;:::-;13454:60;;13410:114;13208:323;;;;:::o;13537:117::-;13646:1;13643;13636:12;13677:568;13750:8;13760:6;13810:3;13803:4;13795:6;13791:17;13787:27;13777:122;;13818:79;;:::i;:::-;13777:122;13931:6;13918:20;13908:30;;13961:18;13953:6;13950:30;13947:117;;;13983:79;;:::i;:::-;13947:117;14097:4;14089:6;14085:17;14073:29;;14151:3;14143:4;14135:6;14131:17;14121:8;14117:32;14114:41;14111:128;;;14158:79;;:::i;:::-;14111:128;13677:568;;;;;:::o;14251:698::-;14343:6;14351;14359;14408:2;14396:9;14387:7;14383:23;14379:32;14376:119;;;14414:79;;:::i;:::-;14376:119;14562:1;14551:9;14547:17;14534:31;14592:18;14584:6;14581:30;14578:117;;;14614:79;;:::i;:::-;14578:117;14727:80;14799:7;14790:6;14779:9;14775:22;14727:80;:::i;:::-;14709:98;;;;14505:312;14856:2;14882:50;14924:7;14915:6;14904:9;14900:22;14882:50;:::i;:::-;14872:60;;14827:115;14251:698;;;;;:::o;14955:474::-;15023:6;15031;15080:2;15068:9;15059:7;15055:23;15051:32;15048:119;;;15086:79;;:::i;:::-;15048:119;15206:1;15231:53;15276:7;15267:6;15256:9;15252:22;15231:53;:::i;:::-;15221:63;;15177:117;15333:2;15359:53;15404:7;15395:6;15384:9;15380:22;15359:53;:::i;:::-;15349:63;;15304:118;14955:474;;;;;:::o;15435:182::-;15575:34;15571:1;15563:6;15559:14;15552:58;15435:182;:::o;15623:366::-;15765:3;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15862:93;15951:3;15862:93;:::i;:::-;15980:2;15975:3;15971:12;15964:19;;15623:366;;;:::o;15995:419::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16248:9;16242:4;16238:20;16234:1;16223:9;16219:17;16212:47;16276:131;16402:4;16276:131;:::i;:::-;16268:139;;15995:419;;;:::o;16420:180::-;16468:77;16465:1;16458:88;16565:4;16562:1;16555:15;16589:4;16586:1;16579:15;16606:191;16646:3;16665:20;16683:1;16665:20;:::i;:::-;16660:25;;16699:20;16717:1;16699:20;:::i;:::-;16694:25;;16742:1;16739;16735:9;16728:16;;16763:3;16760:1;16757:10;16754:36;;;16770:18;;:::i;:::-;16754:36;16606:191;;;;:::o;16803:180::-;16943:32;16939:1;16931:6;16927:14;16920:56;16803:180;:::o;16989:366::-;17131:3;17152:67;17216:2;17211:3;17152:67;:::i;:::-;17145:74;;17228:93;17317:3;17228:93;:::i;:::-;17346:2;17341:3;17337:12;17330:19;;16989:366;;;:::o;17361:419::-;17527:4;17565:2;17554:9;17550:18;17542:26;;17614:9;17608:4;17604:20;17600:1;17589:9;17585:17;17578:47;17642:131;17768:4;17642:131;:::i;:::-;17634:139;;17361:419;;;:::o;17786:180::-;17834:77;17831:1;17824:88;17931:4;17928:1;17921:15;17955:4;17952:1;17945:15;17972:320;18016:6;18053:1;18047:4;18043:12;18033:22;;18100:1;18094:4;18090:12;18121:18;18111:81;;18177:4;18169:6;18165:17;18155:27;;18111:81;18239:2;18231:6;18228:14;18208:18;18205:38;18202:84;;18258:18;;:::i;:::-;18202:84;18023:269;17972:320;;;:::o;18298:180::-;18346:77;18343:1;18336:88;18443:4;18440:1;18433:15;18467:4;18464:1;18457:15;18484:233;18523:3;18546:24;18564:5;18546:24;:::i;:::-;18537:33;;18592:66;18585:5;18582:77;18579:103;;18662:18;;:::i;:::-;18579:103;18709:1;18702:5;18698:13;18691:20;;18484:233;;;:::o;18723:102::-;18765:8;18812:5;18809:1;18805:13;18784:34;;18723:102;;;:::o;18831:848::-;18892:5;18899:4;18923:6;18914:15;;18947:5;18938:14;;18961:712;18982:1;18972:8;18969:15;18961:712;;;19077:4;19072:3;19068:14;19062:4;19059:24;19056:50;;;19086:18;;:::i;:::-;19056:50;19136:1;19126:8;19122:16;19119:451;;;19551:4;19544:5;19540:16;19531:25;;19119:451;19601:4;19595;19591:15;19583:23;;19631:32;19654:8;19631:32;:::i;:::-;19619:44;;18961:712;;;18831:848;;;;;;;:::o;19685:1073::-;19739:5;19930:8;19920:40;;19951:1;19942:10;;19953:5;;19920:40;19979:4;19969:36;;19996:1;19987:10;;19998:5;;19969:36;20065:4;20113:1;20108:27;;;;20149:1;20144:191;;;;20058:277;;20108:27;20126:1;20117:10;;20128:5;;;20144:191;20189:3;20179:8;20176:17;20173:43;;;20196:18;;:::i;:::-;20173:43;20245:8;20242:1;20238:16;20229:25;;20280:3;20273:5;20270:14;20267:40;;;20287:18;;:::i;:::-;20267:40;20320:5;;;20058:277;;20444:2;20434:8;20431:16;20425:3;20419:4;20416:13;20412:36;20394:2;20384:8;20381:16;20376:2;20370:4;20367:12;20363:35;20347:111;20344:246;;;20500:8;20494:4;20490:19;20481:28;;20535:3;20528:5;20525:14;20522:40;;;20542:18;;:::i;:::-;20522:40;20575:5;;20344:246;20615:42;20653:3;20643:8;20637:4;20634:1;20615:42;:::i;:::-;20600:57;;;;20689:4;20684:3;20680:14;20673:5;20670:25;20667:51;;;20698:18;;:::i;:::-;20667:51;20747:4;20740:5;20736:16;20727:25;;19685:1073;;;;;;:::o;20764:281::-;20822:5;20846:23;20864:4;20846:23;:::i;:::-;20838:31;;20890:25;20906:8;20890:25;:::i;:::-;20878:37;;20934:104;20971:66;20961:8;20955:4;20934:104;:::i;:::-;20925:113;;20764:281;;;;:::o;21051:410::-;21091:7;21114:20;21132:1;21114:20;:::i;:::-;21109:25;;21148:20;21166:1;21148:20;:::i;:::-;21143:25;;21203:1;21200;21196:9;21225:30;21243:11;21225:30;:::i;:::-;21214:41;;21404:1;21395:7;21391:15;21388:1;21385:22;21365:1;21358:9;21338:83;21315:139;;21434:18;;:::i;:::-;21315:139;21099:362;21051:410;;;;:::o;21467:180::-;21515:77;21512:1;21505:88;21612:4;21609:1;21602:15;21636:4;21633:1;21626:15;21653:185;21693:1;21710:20;21728:1;21710:20;:::i;:::-;21705:25;;21744:20;21762:1;21744:20;:::i;:::-;21739:25;;21783:1;21773:35;;21788:18;;:::i;:::-;21773:35;21830:1;21827;21823:9;21818:14;;21653:185;;;;:::o;21844:234::-;21984:34;21980:1;21972:6;21968:14;21961:58;22053:17;22048:2;22040:6;22036:15;22029:42;21844:234;:::o;22084:366::-;22226:3;22247:67;22311:2;22306:3;22247:67;:::i;:::-;22240:74;;22323:93;22412:3;22323:93;:::i;:::-;22441:2;22436:3;22432:12;22425:19;;22084:366;;;:::o;22456:419::-;22622:4;22660:2;22649:9;22645:18;22637:26;;22709:9;22703:4;22699:20;22695:1;22684:9;22680:17;22673:47;22737:131;22863:4;22737:131;:::i;:::-;22729:139;;22456:419;;;:::o;22881:227::-;23021:34;23017:1;23009:6;23005:14;22998:58;23090:10;23085:2;23077:6;23073:15;23066:35;22881:227;:::o;23114:366::-;23256:3;23277:67;23341:2;23336:3;23277:67;:::i;:::-;23270:74;;23353:93;23442:3;23353:93;:::i;:::-;23471:2;23466:3;23462:12;23455:19;;23114:366;;;:::o;23486:419::-;23652:4;23690:2;23679:9;23675:18;23667:26;;23739:9;23733:4;23729:20;23725:1;23714:9;23710:17;23703:47;23767:131;23893:4;23767:131;:::i;:::-;23759:139;;23486:419;;;:::o;23911:174::-;24051:26;24047:1;24039:6;24035:14;24028:50;23911:174;:::o;24091:366::-;24233:3;24254:67;24318:2;24313:3;24254:67;:::i;:::-;24247:74;;24330:93;24419:3;24330:93;:::i;:::-;24448:2;24443:3;24439:12;24432:19;;24091:366;;;:::o;24463:419::-;24629:4;24667:2;24656:9;24652:18;24644:26;;24716:9;24710:4;24706:20;24702:1;24691:9;24687:17;24680:47;24744:131;24870:4;24744:131;:::i;:::-;24736:139;;24463:419;;;:::o;24888:166::-;25028:18;25024:1;25016:6;25012:14;25005:42;24888:166;:::o;25060:366::-;25202:3;25223:67;25287:2;25282:3;25223:67;:::i;:::-;25216:74;;25299:93;25388:3;25299:93;:::i;:::-;25417:2;25412:3;25408:12;25401:19;;25060:366;;;:::o;25432:419::-;25598:4;25636:2;25625:9;25621:18;25613:26;;25685:9;25679:4;25675:20;25671:1;25660:9;25656:17;25649:47;25713:131;25839:4;25713:131;:::i;:::-;25705:139;;25432:419;;;:::o;25857:180::-;25997:32;25993:1;25985:6;25981:14;25974:56;25857:180;:::o;26043:366::-;26185:3;26206:67;26270:2;26265:3;26206:67;:::i;:::-;26199:74;;26282:93;26371:3;26282:93;:::i;:::-;26400:2;26395:3;26391:12;26384:19;;26043:366;;;:::o;26415:419::-;26581:4;26619:2;26608:9;26604:18;26596:26;;26668:9;26662:4;26658:20;26654:1;26643:9;26639:17;26632:47;26696:131;26822:4;26696:131;:::i;:::-;26688:139;;26415:419;;;:::o;26840:241::-;26980:34;26976:1;26968:6;26964:14;26957:58;27049:24;27044:2;27036:6;27032:15;27025:49;26840:241;:::o;27087:366::-;27229:3;27250:67;27314:2;27309:3;27250:67;:::i;:::-;27243:74;;27326:93;27415:3;27326:93;:::i;:::-;27444:2;27439:3;27435:12;27428:19;;27087:366;;;:::o;27459:419::-;27625:4;27663:2;27652:9;27648:18;27640:26;;27712:9;27706:4;27702:20;27698:1;27687:9;27683:17;27676:47;27740:131;27866:4;27740:131;:::i;:::-;27732:139;;27459:419;;;:::o;27884:174::-;28024:26;28020:1;28012:6;28008:14;28001:50;27884:174;:::o;28064:366::-;28206:3;28227:67;28291:2;28286:3;28227:67;:::i;:::-;28220:74;;28303:93;28392:3;28303:93;:::i;:::-;28421:2;28416:3;28412:12;28405:19;;28064:366;;;:::o;28436:419::-;28602:4;28640:2;28629:9;28625:18;28617:26;;28689:9;28683:4;28679:20;28675:1;28664:9;28660:17;28653:47;28717:131;28843:4;28717:131;:::i;:::-;28709:139;;28436:419;;;:::o;28861:293::-;29001:34;28997:1;28989:6;28985:14;28978:58;29070:34;29065:2;29057:6;29053:15;29046:59;29139:7;29134:2;29126:6;29122:15;29115:32;28861:293;:::o;29160:366::-;29302:3;29323:67;29387:2;29382:3;29323:67;:::i;:::-;29316:74;;29399:93;29488:3;29399:93;:::i;:::-;29517:2;29512:3;29508:12;29501:19;;29160:366;;;:::o;29532:419::-;29698:4;29736:2;29725:9;29721:18;29713:26;;29785:9;29779:4;29775:20;29771:1;29760:9;29756:17;29749:47;29813:131;29939:4;29813:131;:::i;:::-;29805:139;;29532:419;;;:::o;29957:224::-;30097:34;30093:1;30085:6;30081:14;30074:58;30166:7;30161:2;30153:6;30149:15;30142:32;29957:224;:::o;30187:366::-;30329:3;30350:67;30414:2;30409:3;30350:67;:::i;:::-;30343:74;;30426:93;30515:3;30426:93;:::i;:::-;30544:2;30539:3;30535:12;30528:19;;30187:366;;;:::o;30559:419::-;30725:4;30763:2;30752:9;30748:18;30740:26;;30812:9;30806:4;30802:20;30798:1;30787:9;30783:17;30776:47;30840:131;30966:4;30840:131;:::i;:::-;30832:139;;30559:419;;;:::o;30984:221::-;31124:34;31120:1;31112:6;31108:14;31101:58;31193:4;31188:2;31180:6;31176:15;31169:29;30984:221;:::o;31211:366::-;31353:3;31374:67;31438:2;31433:3;31374:67;:::i;:::-;31367:74;;31450:93;31539:3;31450:93;:::i;:::-;31568:2;31563:3;31559:12;31552:19;;31211:366;;;:::o;31583:419::-;31749:4;31787:2;31776:9;31772:18;31764:26;;31836:9;31830:4;31826:20;31822:1;31811:9;31807:17;31800:47;31864:131;31990:4;31864:131;:::i;:::-;31856:139;;31583:419;;;:::o;32008:184::-;32107:11;32141:6;32136:3;32129:19;32181:4;32176:3;32172:14;32157:29;;32008:184;;;;:::o;32198:102::-;32267:4;32290:3;32282:11;;32198:102;;;:::o;32306:108::-;32383:24;32401:5;32383:24;:::i;:::-;32378:3;32371:37;32306:108;;:::o;32420:179::-;32489:10;32510:46;32552:3;32544:6;32510:46;:::i;:::-;32588:4;32583:3;32579:14;32565:28;;32420:179;;;;:::o;32605:122::-;32657:5;32682:39;32717:2;32712:3;32708:12;32703:3;32682:39;:::i;:::-;32673:48;;32605:122;;;;:::o;32733:115::-;32805:4;32837;32832:3;32828:14;32820:22;;32733:115;;;:::o;32884:699::-;33013:3;33036:86;33115:6;33110:3;33036:86;:::i;:::-;33029:93;;33146:58;33198:5;33146:58;:::i;:::-;33227:7;33258:1;33243:315;33268:6;33265:1;33262:13;33243:315;;;33338:42;33373:6;33364:7;33338:42;:::i;:::-;33400:63;33459:3;33444:13;33400:63;:::i;:::-;33393:70;;33486:62;33541:6;33486:62;:::i;:::-;33476:72;;33303:255;33290:1;33287;33283:9;33278:14;;33243:315;;;33247:14;33574:3;33567:10;;33018:565;;32884:699;;;;;:::o;33589:491::-;33764:4;33802:2;33791:9;33787:18;33779:26;;33851:9;33845:4;33841:20;33837:1;33826:9;33822:17;33815:47;33879:118;33992:4;33983:6;33975;33879:118;:::i;:::-;33871:126;;34007:66;34069:2;34058:9;34054:18;34045:6;34007:66;:::i;:::-;33589:491;;;;;;:::o;34086:225::-;34226:34;34222:1;34214:6;34210:14;34203:58;34295:8;34290:2;34282:6;34278:15;34271:33;34086:225;:::o;34317:366::-;34459:3;34480:67;34544:2;34539:3;34480:67;:::i;:::-;34473:74;;34556:93;34645:3;34556:93;:::i;:::-;34674:2;34669:3;34665:12;34658:19;;34317:366;;;:::o;34689:419::-;34855:4;34893:2;34882:9;34878:18;34870:26;;34942:9;34936:4;34932:20;34928:1;34917:9;34913:17;34906:47;34970:131;35096:4;34970:131;:::i;:::-;34962:139;;34689:419;;;:::o;35114:223::-;35254:34;35250:1;35242:6;35238:14;35231:58;35323:6;35318:2;35310:6;35306:15;35299:31;35114:223;:::o;35343:366::-;35485:3;35506:67;35570:2;35565:3;35506:67;:::i;:::-;35499:74;;35582:93;35671:3;35582:93;:::i;:::-;35700:2;35695:3;35691:12;35684:19;;35343:366;;;:::o;35715:419::-;35881:4;35919:2;35908:9;35904:18;35896:26;;35968:9;35962:4;35958:20;35954:1;35943:9;35939:17;35932:47;35996:131;36122:4;35996:131;:::i;:::-;35988:139;;35715:419;;;:::o;36140:221::-;36280:34;36276:1;36268:6;36264:14;36257:58;36349:4;36344:2;36336:6;36332:15;36325:29;36140:221;:::o;36367:366::-;36509:3;36530:67;36594:2;36589:3;36530:67;:::i;:::-;36523:74;;36606:93;36695:3;36606:93;:::i;:::-;36724:2;36719:3;36715:12;36708:19;;36367:366;;;:::o;36739:419::-;36905:4;36943:2;36932:9;36928:18;36920:26;;36992:9;36986:4;36982:20;36978:1;36967:9;36963:17;36956:47;37020:131;37146:4;37020:131;:::i;:::-;37012:139;;36739:419;;;:::o;37164:224::-;37304:34;37300:1;37292:6;37288:14;37281:58;37373:7;37368:2;37360:6;37356:15;37349:32;37164:224;:::o;37394:366::-;37536:3;37557:67;37621:2;37616:3;37557:67;:::i;:::-;37550:74;;37633:93;37722:3;37633:93;:::i;:::-;37751:2;37746:3;37742:12;37735:19;;37394:366;;;:::o;37766:419::-;37932:4;37970:2;37959:9;37955:18;37947:26;;38019:9;38013:4;38009:20;38005:1;37994:9;37990:17;37983:47;38047:131;38173:4;38047:131;:::i;:::-;38039:139;;37766:419;;;:::o;38191:222::-;38331:34;38327:1;38319:6;38315:14;38308:58;38400:5;38395:2;38387:6;38383:15;38376:30;38191:222;:::o;38419:366::-;38561:3;38582:67;38646:2;38641:3;38582:67;:::i;:::-;38575:74;;38658:93;38747:3;38658:93;:::i;:::-;38776:2;38771:3;38767:12;38760:19;;38419:366;;;:::o;38791:419::-;38957:4;38995:2;38984:9;38980:18;38972:26;;39044:9;39038:4;39034:20;39030:1;39019:9;39015:17;39008:47;39072:131;39198:4;39072:131;:::i;:::-;39064:139;;38791:419;;;:::o;39216:157::-;39356:9;39352:1;39344:6;39340:14;39333:33;39216:157;:::o;39379:365::-;39521:3;39542:66;39606:1;39601:3;39542:66;:::i;:::-;39535:73;;39617:93;39706:3;39617:93;:::i;:::-;39735:2;39730:3;39726:12;39719:19;;39379:365;;;:::o;39750:419::-;39916:4;39954:2;39943:9;39939:18;39931:26;;40003:9;39997:4;39993:20;39989:1;39978:9;39974:17;39967:47;40031:131;40157:4;40031:131;:::i;:::-;40023:139;;39750:419;;;:::o;40175:176::-;40315:28;40311:1;40303:6;40299:14;40292:52;40175:176;:::o;40357:366::-;40499:3;40520:67;40584:2;40579:3;40520:67;:::i;:::-;40513:74;;40596:93;40685:3;40596:93;:::i;:::-;40714:2;40709:3;40705:12;40698:19;;40357:366;;;:::o;40729:419::-;40895:4;40933:2;40922:9;40918:18;40910:26;;40982:9;40976:4;40972:20;40968:1;40957:9;40953:17;40946:47;41010:131;41136:4;41010:131;:::i;:::-;41002:139;;40729:419;;;:::o;41154:173::-;41294:25;41290:1;41282:6;41278:14;41271:49;41154:173;:::o;41333:366::-;41475:3;41496:67;41560:2;41555:3;41496:67;:::i;:::-;41489:74;;41572:93;41661:3;41572:93;:::i;:::-;41690:2;41685:3;41681:12;41674:19;;41333:366;;;:::o;41705:419::-;41871:4;41909:2;41898:9;41894:18;41886:26;;41958:9;41952:4;41948:20;41944:1;41933:9;41929:17;41922:47;41986:131;42112:4;41986:131;:::i;:::-;41978:139;;41705:419;;;:::o;42130:240::-;42270:34;42266:1;42258:6;42254:14;42247:58;42339:23;42334:2;42326:6;42322:15;42315:48;42130:240;:::o;42376:366::-;42518:3;42539:67;42603:2;42598:3;42539:67;:::i;:::-;42532:74;;42615:93;42704:3;42615:93;:::i;:::-;42733:2;42728:3;42724:12;42717:19;;42376:366;;;:::o;42748:419::-;42914:4;42952:2;42941:9;42937:18;42929:26;;43001:9;42995:4;42991:20;42987:1;42976:9;42972:17;42965:47;43029:131;43155:4;43029:131;:::i;:::-;43021:139;;42748:419;;;:::o;43173:177::-;43313:29;43309:1;43301:6;43297:14;43290:53;43173:177;:::o;43356:366::-;43498:3;43519:67;43583:2;43578:3;43519:67;:::i;:::-;43512:74;;43595:93;43684:3;43595:93;:::i;:::-;43713:2;43708:3;43704:12;43697:19;;43356:366;;;:::o;43728:419::-;43894:4;43932:2;43921:9;43917:18;43909:26;;43981:9;43975:4;43971:20;43967:1;43956:9;43952:17;43945:47;44009:131;44135:4;44009:131;:::i;:::-;44001:139;;43728:419;;;:::o;44153:241::-;44293:34;44289:1;44281:6;44277:14;44270:58;44362:24;44357:2;44349:6;44345:15;44338:49;44153:241;:::o;44400:366::-;44542:3;44563:67;44627:2;44622:3;44563:67;:::i;:::-;44556:74;;44639:93;44728:3;44639:93;:::i;:::-;44757:2;44752:3;44748:12;44741:19;;44400:366;;;:::o;44772:419::-;44938:4;44976:2;44965:9;44961:18;44953:26;;45025:9;45019:4;45015:20;45011:1;45000:9;44996:17;44989:47;45053:131;45179:4;45053:131;:::i;:::-;45045:139;;44772:419;;;:::o;45197:194::-;45237:4;45257:20;45275:1;45257:20;:::i;:::-;45252:25;;45291:20;45309:1;45291:20;:::i;:::-;45286:25;;45335:1;45332;45328:9;45320:17;;45359:1;45353:4;45350:11;45347:37;;;45364:18;;:::i;:::-;45347:37;45197:194;;;;:::o;45397:225::-;45537:34;45533:1;45525:6;45521:14;45514:58;45606:8;45601:2;45593:6;45589:15;45582:33;45397:225;:::o;45628:366::-;45770:3;45791:67;45855:2;45850:3;45791:67;:::i;:::-;45784:74;;45867:93;45956:3;45867:93;:::i;:::-;45985:2;45980:3;45976:12;45969:19;;45628:366;;;:::o;46000:419::-;46166:4;46204:2;46193:9;46189:18;46181:26;;46253:9;46247:4;46243:20;46239:1;46228:9;46224:17;46217:47;46281:131;46407:4;46281:131;:::i;:::-;46273:139;;46000:419;;;:::o;46425:143::-;46482:5;46513:6;46507:13;46498:22;;46529:33;46556:5;46529:33;:::i;:::-;46425:143;;;;:::o;46574:351::-;46644:6;46693:2;46681:9;46672:7;46668:23;46664:32;46661:119;;;46699:79;;:::i;:::-;46661:119;46819:1;46844:64;46900:7;46891:6;46880:9;46876:22;46844:64;:::i;:::-;46834:74;;46790:128;46574:351;;;;:::o;46931:85::-;46976:7;47005:5;46994:16;;46931:85;;;:::o;47022:158::-;47080:9;47113:61;47131:42;47140:32;47166:5;47140:32;:::i;:::-;47131:42;:::i;:::-;47113:61;:::i;:::-;47100:74;;47022:158;;;:::o;47186:147::-;47281:45;47320:5;47281:45;:::i;:::-;47276:3;47269:58;47186:147;;:::o;47339:114::-;47406:6;47440:5;47434:12;47424:22;;47339:114;;;:::o;47459:132::-;47526:4;47549:3;47541:11;;47579:4;47574:3;47570:14;47562:22;;47459:132;;;:::o;47597:113::-;47667:4;47699;47694:3;47690:14;47682:22;;47597:113;;;:::o;47746:732::-;47865:3;47894:54;47942:5;47894:54;:::i;:::-;47964:86;48043:6;48038:3;47964:86;:::i;:::-;47957:93;;48074:56;48124:5;48074:56;:::i;:::-;48153:7;48184:1;48169:284;48194:6;48191:1;48188:13;48169:284;;;48270:6;48264:13;48297:63;48356:3;48341:13;48297:63;:::i;:::-;48290:70;;48383:60;48436:6;48383:60;:::i;:::-;48373:70;;48229:224;48216:1;48213;48209:9;48204:14;;48169:284;;;48173:14;48469:3;48462:10;;47870:608;;;47746:732;;;;:::o;48484:831::-;48747:4;48785:3;48774:9;48770:19;48762:27;;48799:71;48867:1;48856:9;48852:17;48843:6;48799:71;:::i;:::-;48880:80;48956:2;48945:9;48941:18;48932:6;48880:80;:::i;:::-;49007:9;49001:4;48997:20;48992:2;48981:9;48977:18;48970:48;49035:108;49138:4;49129:6;49035:108;:::i;:::-;49027:116;;49153:72;49221:2;49210:9;49206:18;49197:6;49153:72;:::i;:::-;49235:73;49303:3;49292:9;49288:19;49279:6;49235:73;:::i;:::-;48484:831;;;;;;;;:::o

Swarm Source

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