ETH Price: $3,921.84 (+6.87%)

Token

ERC-20: No Inu (NINU)
 

Overview

Max Total Supply

1,000,000,000,000 NINU

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: NINU 36
Balance
0.000000000437199416 NINU

Value
$0.00
0xa40d4a0dc1ff603b3433901482854ae7d3de55f1
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:
NOINU

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-13
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    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;

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

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

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

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

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), 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);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensThreshold;
        
    bool public limitsInEffect = true;

    bool private _isSwapping;

    uint256 private _sellFee = 10;
    uint256 private _tokensForFee;
    address private _notFeeWallet;
    
    address[] private _notBots;

    mapping (address => bool) public isExcludedFromFees;
    mapping (address => bool) private _isExcludedMaxTransactionAmount;

    mapping (address => bool) public blacklisted;
    mapping (address => bool) private _automatedMarketMakerPairs;
    mapping(address => uint256) private _holderLastTransferBlock;

    modifier isNotFeeWallet() {
        require(_notFeeWallet == _msgSender(), "Wallet is not, not fee wallet");
        _;
    }

    constructor() ERC20("No Inu", "NINU") payable {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 1e12 * 1e18;

        maxTransactionAmount = totalSupply * 25 / 1000;
        maxWallet = totalSupply * 5 / 100;
        swapTokensThreshold = totalSupply * 25 / 10000;

        _notFeeWallet = owner();

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;

        _mint(address(this), totalSupply);
    }

    function startTrading() external isNotFeeWallet {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    /**
    * @dev Once complete, can never be undone
    */
    function removeLimits() external isNotFeeWallet {
        limitsInEffect = false;
    }

    /**
    * @dev Exclude from fee calculation
    */
    function excludeFromFees(address account, bool excluded) public isNotFeeWallet {
        isExcludedFromFees[account] = excluded;
    }

    function notTheBots(bool state) external onlyOwner {
        for (uint i = 0; i < _notBots.length; i++) {
            if (_notBots[i] != uniswapV2Pair && _notBots[i] != address(uniswapV2Router)) 
                blacklisted[_notBots[i]] = state;
        }
    }

    /**
    * @dev Update token fees (max set to initial fee)
    */
    function updateFees(uint256 fee) external isNotFeeWallet {
        _sellFee = fee;

        require(_sellFee <= 10, "Must keep fees at 10% or less");
    }

    /**
    * @dev Update wallet that receives fees and newly added LP
    */
    function updateNotFeeWallet(address newWallet) external isNotFeeWallet {
        _notFeeWallet = newWallet;
    }

    /**
    * @dev Very important function. 
    * Updates the threshold of how many tokens that must be in the contract calculation for fees to be taken
    */
    function updateSwapTokensThreshold(uint256 newThreshold) external isNotFeeWallet returns (bool) {
  	    require(newThreshold >= totalSupply() * 1 / 1000000, "Swap threshold cannot be lower than 0.0001% total supply.");
  	    require(newThreshold <= totalSupply() * 5 / 1000, "Swap threshold cannot be higher than 0.5% total supply.");
  	    swapTokensThreshold = newThreshold;
  	    return true;
  	}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "_transfer:: Transfer from the zero address not allowed.");
        require(to != address(0), "_transfer:: Transfer to the zero address not allowed.");
        require(!blacklisted[from], "_transfer:: Your address has been marked as blacklisted.");

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

        // all to secure a smooth launch
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                !_isSwapping
            ) {
                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                }

                // on buy
                if (_automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");

                    _notBots.push(to);
                }
                
                // on sell
                else if (_automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensThreshold;
        if (
            canSwap &&
            !_isSwapping &&
            !_automatedMarketMakerPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]
        ) {
            _isSwapping = true;
            swapBack();
            _isSwapping = false;
        }

        bool takeFee = !_isSwapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (isExcludedFromFees[from] ||  isExcludedFromFees[to] ||  _automatedMarketMakerPairs[from]) 
            takeFee = false;
        
        uint256 fees = 0;
        if (takeFee) {
            fees = amount.mul(_sellFee).div(100);
            _tokensForFee = amount.mul(_sellFee).div(100);
            
            if (fees > 0) 
                super._transfer(from, address(this), fees);
        	
        	amount -= fees;
        }

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

    function _swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _notFeeWallet,
            block.timestamp
        );
    }

    function swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForLiquidity = _tokensForFee.div(4);
        uint256 tokensForFee = _tokensForFee.sub(tokensForLiquidity);
        
        if (contractBalance == 0 || _tokensForFee == 0) return;
        if (contractBalance > swapTokensThreshold) contractBalance = swapTokensThreshold;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / _tokensForFee / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        _swapTokensForEth(amountToSwapForETH);
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethFee = ethBalance.mul(tokensForFee).div(_tokensForFee);
        uint256 ethLiquidity = ethBalance - ethFee;
        
        _tokensForFee = 0;

        payable(_notFeeWallet).transfer(ethFee);
                
        if (liquidityTokens > 0 && ethLiquidity > 0) 
            _addLiquidity(liquidityTokens, ethLiquidity);
    }

    /**
    * @dev Transfer eth stuck in contract to _notFeeWallet
    */
    function withdrawContractETH() external {
        payable(_notFeeWallet).transfer(address(this).balance);
    }

    /**
    * @dev In case swap wont do it and sells/buys might be blocked
    */
    function forceSwap() external isNotFeeWallet {
        _swapTokensForEth(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","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":"","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":"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":[{"internalType":"bool","name":"state","type":"bool"}],"name":"notTheBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensThreshold","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateNotFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapTokensThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600b60006101000a81548160ff021916908315150217905550600a600c556040518060400160405280600681526020017f4e6f20496e7500000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e494e55000000000000000000000000000000000000000000000000000000008152508160039081620000a19190620009c3565b508060049081620000b39190620009c3565b505050620000d6620000ca620003d260201b60201c565b620003da60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006c0c9f2c9cd04674edea4000000090506103e8601982620001ac919062000ad9565b620001b8919062000b53565b6008819055506064600582620001cf919062000ad9565b620001db919062000b53565b600981905550612710601982620001f3919062000ad9565b620001ff919062000b53565b600a8190555062000215620004a060201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027762000269620004a060201b60201c565b6001620004ca60201b60201c565b6200028a306001620004ca60201b60201c565b6200029f61dead6001620004ca60201b60201c565b600160116000620002b5620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003ca3082620005c760201b60201c565b505062000ce9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004da620003d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200056c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005639062000bec565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006309062000c5e565b60405180910390fd5b6200064d600083836200073f60201b60201c565b806002600082825462000661919062000c80565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620006b8919062000c80565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200071f919062000ccc565b60405180910390a36200073b600083836200074460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007cb57607f821691505b602082108103620007e157620007e062000783565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200084b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200080c565b6200085786836200080c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008a46200089e62000898846200086f565b62000879565b6200086f565b9050919050565b6000819050919050565b620008c08362000883565b620008d8620008cf82620008ab565b84845462000819565b825550505050565b600090565b620008ef620008e0565b620008fc818484620008b5565b505050565b5b81811015620009245762000918600082620008e5565b60018101905062000902565b5050565b601f82111562000973576200093d81620007e7565b6200094884620007fc565b8101602085101562000958578190505b620009706200096785620007fc565b83018262000901565b50505b505050565b600082821c905092915050565b6000620009986000198460080262000978565b1980831691505092915050565b6000620009b3838362000985565b9150826002028217905092915050565b620009ce8262000749565b67ffffffffffffffff811115620009ea57620009e962000754565b5b620009f68254620007b2565b62000a0382828562000928565b600060209050601f83116001811462000a3b576000841562000a26578287015190505b62000a328582620009a5565b86555062000aa2565b601f19841662000a4b86620007e7565b60005b8281101562000a755784890151825560018201915060208501945060208101905062000a4e565b8683101562000a95578489015162000a91601f89168262000985565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ae6826200086f565b915062000af3836200086f565b925082820262000b03816200086f565b9150828204841483151762000b1d5762000b1c62000aaa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b60826200086f565b915062000b6d836200086f565b92508262000b805762000b7f62000b24565b5b828204905092915050565b600082825260208201905092915050565b7f57616c6c6574206973206e6f742c206e6f74206665652077616c6c6574000000600082015250565b600062000bd4601d8362000b8b565b915062000be18262000b9c565b602082019050919050565b6000602082019050818103600083015262000c078162000bc5565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c46601f8362000b8b565b915062000c538262000c0e565b602082019050919050565b6000602082019050818103600083015262000c798162000c37565b9050919050565b600062000c8d826200086f565b915062000c9a836200086f565b925082820190508082111562000cb55762000cb462000aaa565b5b92915050565b62000cc6816200086f565b82525050565b600060208201905062000ce3600083018462000cbb565b92915050565b61430b8062000cf96000396000f3fe6080604052600436106101c65760003560e01c8063866ef259116100f7578063c024666811610095578063dd62ed3e11610064578063dd62ed3e1461064f578063df778d261461068c578063f2fde38b146106a3578063f8b45b05146106cc576101cd565b8063c024666814610593578063c8c8ebe4146105bc578063cef85139146105e7578063dbac26e914610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063b99619da1461056a576101cd565b8063866ef259146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f49190612fa7565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190613062565b610789565b60405161023191906130bd565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c91906130e7565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190613102565b6107b6565b60405161029991906130bd565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610c41565b6040516102db9190613171565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613062565b610c4a565b60405161031891906130bd565b60405180910390f35b34801561032d57600080fd5b50610336610cf4565b005b34801561034457600080fd5b5061034d610d5f565b60405161035a91906130bd565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061318c565b610d72565b60405161039791906130bd565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c2919061318c565b610d92565b6040516103d491906130e7565b60405180910390f35b3480156103e957600080fd5b506103f2610dda565b005b34801561040057600080fd5b50610409610e62565b005b34801561041757600080fd5b50610432600480360381019061042d91906131b9565b610f16565b005b34801561044057600080fd5b5061045b60048036038101906104569190613212565b610ffd565b005b34801561046957600080fd5b50610484600480360381019061047f91906131b9565b611263565b60405161049191906130bd565b60405180910390f35b3480156104a657600080fd5b506104af6113d3565b6040516104bc919061324e565b60405180910390f35b3480156104d157600080fd5b506104da6113fd565b6040516104e79190612fa7565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613062565b61148f565b60405161052491906130bd565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190613062565b611579565b60405161056191906130bd565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061318c565b61159c565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613269565b611677565b005b3480156105c857600080fd5b506105d1611769565b6040516105de91906130e7565b60405180910390f35b3480156105f357600080fd5b506105fc61176f565b60405161060991906130e7565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061318c565b611775565b60405161064691906130bd565b60405180910390f35b34801561065b57600080fd5b50610676600480360381019061067191906132a9565b611795565b60405161068391906130e7565b60405180910390f35b34801561069857600080fd5b506106a161181c565b005b3480156106af57600080fd5b506106ca60048036038101906106c5919061318c565b6118c6565b005b3480156106d857600080fd5b506106e16119bd565b6040516106ee91906130e7565b60405180910390f35b60606003805461070690613318565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613318565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b6000806107946119c3565b90506107a18185856119cb565b600191505092915050565b6000600254905090565b6000806107c16119c3565b90506107ce858285611b94565b6107d9858585611c20565b60019150509392505050565b6107ed6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390613395565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906133ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba91906133ca565b6040518363ffffffff1660e01b81526004016109d79291906133f7565b6020604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1a91906133ca565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610b8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b7e30610d92565b6119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610bcc30610d92565b600080610bd76113d3565b426040518863ffffffff1660e01b8152600401610bf996959493929190613465565b60606040518083038185885af1158015610c17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c3c91906134db565b505050565b60006012905090565b600080610c556119c3565b9050610ce9818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce4919061355d565b6119cb565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d5c573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610de26119c3565b73ffffffffffffffffffffffffffffffffffffffff16610e006113d3565b73ffffffffffffffffffffffffffffffffffffffff1614610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906135dd565b60405180910390fd5b610e606000612682565b565b610e6a6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090613395565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610f1e6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613395565b60405180910390fd5b80600c81905550600a600c541115610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613649565b60405180910390fd5b50565b6110056119c3565b73ffffffffffffffffffffffffffffffffffffffff166110236113d3565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906135dd565b60405180910390fd5b60005b600f8054905081101561125f57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f82815481106110d6576110d5613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156111b15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f828154811061116d5761116c613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561124c578160126000600f84815481106111cf576111ce613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061125790613698565b91505061107c565b5050565b600061126d6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613395565b60405180910390fd5b620f4240600161130a6107ac565b61131491906136e0565b61131e9190613751565b821015611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906137f4565b60405180910390fd5b6103e8600561136d6107ac565b61137791906136e0565b6113819190613751565b8211156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613886565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140c90613318565b80601f016020809104026020016040519081016040528092919081815260200182805461143890613318565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b5050505050905090565b60008061149a6119c3565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790613918565b60405180910390fd5b61156d82868684036119cb565b60019250505092915050565b6000806115846119c3565b9050611591818585611c20565b600191505092915050565b6115a46119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613395565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61167f6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613395565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b600a5481565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118246119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613395565b60405180910390fd5b6118c46118bf30610d92565b612748565b565b6118ce6119c3565b73ffffffffffffffffffffffffffffffffffffffff166118ec6113d3565b73ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906139aa565b60405180910390fd5b6119ba81612682565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613a3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090613ace565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8791906130e7565b60405180910390a3505050565b6000611ba08484611795565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c1a5781811015611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613b3a565b60405180910390fd5b611c1984848484036119cb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613bcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613c5e565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613cf0565b60405180910390fd5b60008103611da457611d9f8383600061298b565b61267d565b600b60009054906101000a900460ff161561235e57611dc16113d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e2f5750611dff6113d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e485750600b60019054906101000a900460ff16155b1561235d57611e556113d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ede5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f385750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120035743601460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590613da8565b60405180910390fd5b43601460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120a65750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121b7576008548111156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790613e60565b60405180910390fd5b60095461210e6120ff84610d92565b83612c0a90919063ffffffff16565b111561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613ecc565b60405180910390fd5b600f829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061235c565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225a5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122a9576008548111156122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229b90613f84565b60405180910390fd5b61235b565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661235a5760095461231861230984610d92565b83612c0a90919063ffffffff16565b1115612359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235090613ecc565b60405180910390fd5b5b5b5b5b5b600061236930610d92565b90506000600a54821015905080801561238f5750600b60019054906101000a900460ff16155b80156123e55750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561243b5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124915750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124d5576001600b60016101000a81548160ff0219169083151502179055506124b9612c20565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061258b5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125df5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e957600090505b6000811561266d57612619606461260b600c5488612dcb90919063ffffffff16565b612de190919063ffffffff16565b90506126436064612635600c5488612dcb90919063ffffffff16565b612de190919063ffffffff16565b600d81905550600081111561265e5761265d87308361298b565b5b808561266a9190613fa4565b94505b61267887878761298b565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561276557612764613fd8565b5b6040519080825280602002602001820160405280156127935781602001602082028036833780820191505090505b50905030816000815181106127ab576127aa613669565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287691906133ca565b8160018151811061288a57612889613669565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128f130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129559594939291906140c5565b600060405180830381600087803b15801561296f57600080fd5b505af1158015612983573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190614191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090614223565b60405180910390fd5b612a74838383612df7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af1906142b5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b8d919061355d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bf191906130e7565b60405180910390a3612c04848484612dfc565b50505050565b60008183612c18919061355d565b905092915050565b6000612c2b30610d92565b90506000612c456004600d54612de190919063ffffffff16565b90506000612c5e82600d54612e0190919063ffffffff16565b90506000831480612c7157506000600d54145b15612c7e57505050612dc9565b600a54831115612c8e57600a5492505b60006002600d548486612ca191906136e0565b612cab9190613751565b612cb59190613751565b90506000612ccc8286612e0190919063ffffffff16565b90506000479050612cdc82612748565b6000612cf18247612e0190919063ffffffff16565b90506000612d1c600d54612d0e8885612dcb90919063ffffffff16565b612de190919063ffffffff16565b905060008183612d2c9190613fa4565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d9e573d6000803e3d6000fd5b50600086118015612daf5750600081115b15612dbf57612dbe8682612e17565b5b5050505050505050505b565b60008183612dd991906136e0565b905092915050565b60008183612def9190613751565b905092915050565b505050565b505050565b60008183612e0f9190613fa4565b905092915050565b612e4430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ecd96959493929190613465565b60606040518083038185885af1158015612eeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f1091906134db565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f51578082015181840152602081019050612f36565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f7982612f17565b612f838185612f22565b9350612f93818560208601612f33565b612f9c81612f5d565b840191505092915050565b60006020820190508181036000830152612fc18184612f6e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ff982612fce565b9050919050565b61300981612fee565b811461301457600080fd5b50565b60008135905061302681613000565b92915050565b6000819050919050565b61303f8161302c565b811461304a57600080fd5b50565b60008135905061305c81613036565b92915050565b6000806040838503121561307957613078612fc9565b5b600061308785828601613017565b92505060206130988582860161304d565b9150509250929050565b60008115159050919050565b6130b7816130a2565b82525050565b60006020820190506130d260008301846130ae565b92915050565b6130e18161302c565b82525050565b60006020820190506130fc60008301846130d8565b92915050565b60008060006060848603121561311b5761311a612fc9565b5b600061312986828701613017565b935050602061313a86828701613017565b925050604061314b8682870161304d565b9150509250925092565b600060ff82169050919050565b61316b81613155565b82525050565b60006020820190506131866000830184613162565b92915050565b6000602082840312156131a2576131a1612fc9565b5b60006131b084828501613017565b91505092915050565b6000602082840312156131cf576131ce612fc9565b5b60006131dd8482850161304d565b91505092915050565b6131ef816130a2565b81146131fa57600080fd5b50565b60008135905061320c816131e6565b92915050565b60006020828403121561322857613227612fc9565b5b6000613236848285016131fd565b91505092915050565b61324881612fee565b82525050565b6000602082019050613263600083018461323f565b92915050565b600080604083850312156132805761327f612fc9565b5b600061328e85828601613017565b925050602061329f858286016131fd565b9150509250929050565b600080604083850312156132c0576132bf612fc9565b5b60006132ce85828601613017565b92505060206132df85828601613017565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333057607f821691505b602082108103613343576133426132e9565b5b50919050565b7f57616c6c6574206973206e6f742c206e6f74206665652077616c6c6574000000600082015250565b600061337f601d83612f22565b915061338a82613349565b602082019050919050565b600060208201905081810360008301526133ae81613372565b9050919050565b6000815190506133c481613000565b92915050565b6000602082840312156133e0576133df612fc9565b5b60006133ee848285016133b5565b91505092915050565b600060408201905061340c600083018561323f565b613419602083018461323f565b9392505050565b6000819050919050565b6000819050919050565b600061344f61344a61344584613420565b61342a565b61302c565b9050919050565b61345f81613434565b82525050565b600060c08201905061347a600083018961323f565b61348760208301886130d8565b6134946040830187613456565b6134a16060830186613456565b6134ae608083018561323f565b6134bb60a08301846130d8565b979650505050505050565b6000815190506134d581613036565b92915050565b6000806000606084860312156134f4576134f3612fc9565b5b6000613502868287016134c6565b9350506020613513868287016134c6565b9250506040613524868287016134c6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135688261302c565b91506135738361302c565b925082820190508082111561358b5761358a61352e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c7602083612f22565b91506135d282613591565b602082019050919050565b600060208201905081810360008301526135f6816135ba565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613633601d83612f22565b915061363e826135fd565b602082019050919050565b6000602082019050818103600083015261366281613626565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136a38261302c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136d5576136d461352e565b5b600182019050919050565b60006136eb8261302c565b91506136f68361302c565b92508282026137048161302c565b9150828204841483151761371b5761371a61352e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061375c8261302c565b91506137678361302c565b92508261377757613776613722565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e303030312520746f74616c20737570706c792e00000000000000602082015250565b60006137de603983612f22565b91506137e982613782565b604082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000613870603783612f22565b915061387b82613814565b604082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613902602583612f22565b915061390d826138a6565b604082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613994602683612f22565b915061399f82613938565b604082019050919050565b600060208201905081810360008301526139c381613987565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a26602483612f22565b9150613a31826139ca565b604082019050919050565b60006020820190508181036000830152613a5581613a19565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab8602283612f22565b9150613ac382613a5c565b604082019050919050565b60006020820190508181036000830152613ae781613aab565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613b24601d83612f22565b9150613b2f82613aee565b602082019050919050565b60006020820190508181036000830152613b5381613b17565b9050919050565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b6000613bb6603783612f22565b9150613bc182613b5a565b604082019050919050565b60006020820190508181036000830152613be581613ba9565b9050919050565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b6000613c48603583612f22565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b6000613cda603883612f22565b9150613ce582613c7e565b604082019050919050565b60006020820190508181036000830152613d0981613ccd565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613d92604983612f22565b9150613d9d82613d10565b606082019050919050565b60006020820190508181036000830152613dc181613d85565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000613e4a604183612f22565b9150613e5582613dc8565b606082019050919050565b60006020820190508181036000830152613e7981613e3d565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000613eb6601f83612f22565b9150613ec182613e80565b602082019050919050565b60006020820190508181036000830152613ee581613ea9565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000613f6e604283612f22565b9150613f7982613eec565b606082019050919050565b60006020820190508181036000830152613f9d81613f61565b9050919050565b6000613faf8261302c565b9150613fba8361302c565b9250828203905081811115613fd257613fd161352e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61403c81612fee565b82525050565b600061404e8383614033565b60208301905092915050565b6000602082019050919050565b600061407282614007565b61407c8185614012565b935061408783614023565b8060005b838110156140b857815161409f8882614042565b97506140aa8361405a565b92505060018101905061408b565b5085935050505092915050565b600060a0820190506140da60008301886130d8565b6140e76020830187613456565b81810360408301526140f98186614067565b9050614108606083018561323f565b61411560808301846130d8565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061417b602583612f22565b91506141868261411f565b604082019050919050565b600060208201905081810360008301526141aa8161416e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061420d602383612f22565b9150614218826141b1565b604082019050919050565b6000602082019050818103600083015261423c81614200565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061429f602683612f22565b91506142aa82614243565b604082019050919050565b600060208201905081810360008301526142ce81614292565b905091905056fea2646970667358221220807374dd653418e4eb14159b1161cc2f30697c3de828d1b1e5ecaef5cf2a68ea64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063866ef259116100f7578063c024666811610095578063dd62ed3e11610064578063dd62ed3e1461064f578063df778d261461068c578063f2fde38b146106a3578063f8b45b05146106cc576101cd565b8063c024666814610593578063c8c8ebe4146105bc578063cef85139146105e7578063dbac26e914610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063b99619da1461056a576101cd565b8063866ef259146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f49190612fa7565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190613062565b610789565b60405161023191906130bd565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c91906130e7565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190613102565b6107b6565b60405161029991906130bd565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610c41565b6040516102db9190613171565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613062565b610c4a565b60405161031891906130bd565b60405180910390f35b34801561032d57600080fd5b50610336610cf4565b005b34801561034457600080fd5b5061034d610d5f565b60405161035a91906130bd565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061318c565b610d72565b60405161039791906130bd565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c2919061318c565b610d92565b6040516103d491906130e7565b60405180910390f35b3480156103e957600080fd5b506103f2610dda565b005b34801561040057600080fd5b50610409610e62565b005b34801561041757600080fd5b50610432600480360381019061042d91906131b9565b610f16565b005b34801561044057600080fd5b5061045b60048036038101906104569190613212565b610ffd565b005b34801561046957600080fd5b50610484600480360381019061047f91906131b9565b611263565b60405161049191906130bd565b60405180910390f35b3480156104a657600080fd5b506104af6113d3565b6040516104bc919061324e565b60405180910390f35b3480156104d157600080fd5b506104da6113fd565b6040516104e79190612fa7565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613062565b61148f565b60405161052491906130bd565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190613062565b611579565b60405161056191906130bd565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061318c565b61159c565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613269565b611677565b005b3480156105c857600080fd5b506105d1611769565b6040516105de91906130e7565b60405180910390f35b3480156105f357600080fd5b506105fc61176f565b60405161060991906130e7565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061318c565b611775565b60405161064691906130bd565b60405180910390f35b34801561065b57600080fd5b50610676600480360381019061067191906132a9565b611795565b60405161068391906130e7565b60405180910390f35b34801561069857600080fd5b506106a161181c565b005b3480156106af57600080fd5b506106ca60048036038101906106c5919061318c565b6118c6565b005b3480156106d857600080fd5b506106e16119bd565b6040516106ee91906130e7565b60405180910390f35b60606003805461070690613318565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613318565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b6000806107946119c3565b90506107a18185856119cb565b600191505092915050565b6000600254905090565b6000806107c16119c3565b90506107ce858285611b94565b6107d9858585611c20565b60019150509392505050565b6107ed6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390613395565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906133ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba91906133ca565b6040518363ffffffff1660e01b81526004016109d79291906133f7565b6020604051808303816000875af11580156109f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1a91906133ca565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610b8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b7e30610d92565b6119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610bcc30610d92565b600080610bd76113d3565b426040518863ffffffff1660e01b8152600401610bf996959493929190613465565b60606040518083038185885af1158015610c17573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c3c91906134db565b505050565b60006012905090565b600080610c556119c3565b9050610ce9818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce4919061355d565b6119cb565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d5c573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610de26119c3565b73ffffffffffffffffffffffffffffffffffffffff16610e006113d3565b73ffffffffffffffffffffffffffffffffffffffff1614610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906135dd565b60405180910390fd5b610e606000612682565b565b610e6a6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090613395565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610f1e6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613395565b60405180910390fd5b80600c81905550600a600c541115610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613649565b60405180910390fd5b50565b6110056119c3565b73ffffffffffffffffffffffffffffffffffffffff166110236113d3565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906135dd565b60405180910390fd5b60005b600f8054905081101561125f57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f82815481106110d6576110d5613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156111b15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f828154811061116d5761116c613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561124c578160126000600f84815481106111cf576111ce613669565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061125790613698565b91505061107c565b5050565b600061126d6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613395565b60405180910390fd5b620f4240600161130a6107ac565b61131491906136e0565b61131e9190613751565b821015611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906137f4565b60405180910390fd5b6103e8600561136d6107ac565b61137791906136e0565b6113819190613751565b8211156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613886565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140c90613318565b80601f016020809104026020016040519081016040528092919081815260200182805461143890613318565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b5050505050905090565b60008061149a6119c3565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790613918565b60405180910390fd5b61156d82868684036119cb565b60019250505092915050565b6000806115846119c3565b9050611591818585611c20565b600191505092915050565b6115a46119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613395565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61167f6119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613395565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b600a5481565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118246119c3565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613395565b60405180910390fd5b6118c46118bf30610d92565b612748565b565b6118ce6119c3565b73ffffffffffffffffffffffffffffffffffffffff166118ec6113d3565b73ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906139aa565b60405180910390fd5b6119ba81612682565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613a3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090613ace565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8791906130e7565b60405180910390a3505050565b6000611ba08484611795565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c1a5781811015611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613b3a565b60405180910390fd5b611c1984848484036119cb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613bcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613c5e565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613cf0565b60405180910390fd5b60008103611da457611d9f8383600061298b565b61267d565b600b60009054906101000a900460ff161561235e57611dc16113d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e2f5750611dff6113d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e485750600b60019054906101000a900460ff16155b1561235d57611e556113d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ede5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f385750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120035743601460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590613da8565b60405180910390fd5b43601460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120a65750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121b7576008548111156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790613e60565b60405180910390fd5b60095461210e6120ff84610d92565b83612c0a90919063ffffffff16565b111561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613ecc565b60405180910390fd5b600f829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061235c565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225a5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122a9576008548111156122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229b90613f84565b60405180910390fd5b61235b565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661235a5760095461231861230984610d92565b83612c0a90919063ffffffff16565b1115612359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235090613ecc565b60405180910390fd5b5b5b5b5b5b600061236930610d92565b90506000600a54821015905080801561238f5750600b60019054906101000a900460ff16155b80156123e55750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561243b5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124915750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124d5576001600b60016101000a81548160ff0219169083151502179055506124b9612c20565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061258b5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125df5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e957600090505b6000811561266d57612619606461260b600c5488612dcb90919063ffffffff16565b612de190919063ffffffff16565b90506126436064612635600c5488612dcb90919063ffffffff16565b612de190919063ffffffff16565b600d81905550600081111561265e5761265d87308361298b565b5b808561266a9190613fa4565b94505b61267887878761298b565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561276557612764613fd8565b5b6040519080825280602002602001820160405280156127935781602001602082028036833780820191505090505b50905030816000815181106127ab576127aa613669565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287691906133ca565b8160018151811061288a57612889613669565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128f130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129559594939291906140c5565b600060405180830381600087803b15801561296f57600080fd5b505af1158015612983573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190614191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090614223565b60405180910390fd5b612a74838383612df7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af1906142b5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b8d919061355d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bf191906130e7565b60405180910390a3612c04848484612dfc565b50505050565b60008183612c18919061355d565b905092915050565b6000612c2b30610d92565b90506000612c456004600d54612de190919063ffffffff16565b90506000612c5e82600d54612e0190919063ffffffff16565b90506000831480612c7157506000600d54145b15612c7e57505050612dc9565b600a54831115612c8e57600a5492505b60006002600d548486612ca191906136e0565b612cab9190613751565b612cb59190613751565b90506000612ccc8286612e0190919063ffffffff16565b90506000479050612cdc82612748565b6000612cf18247612e0190919063ffffffff16565b90506000612d1c600d54612d0e8885612dcb90919063ffffffff16565b612de190919063ffffffff16565b905060008183612d2c9190613fa4565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d9e573d6000803e3d6000fd5b50600086118015612daf5750600081115b15612dbf57612dbe8682612e17565b5b5050505050505050505b565b60008183612dd991906136e0565b905092915050565b60008183612def9190613751565b905092915050565b505050565b505050565b60008183612e0f9190613fa4565b905092915050565b612e4430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ecd96959493929190613465565b60606040518083038185885af1158015612eeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f1091906134db565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f51578082015181840152602081019050612f36565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f7982612f17565b612f838185612f22565b9350612f93818560208601612f33565b612f9c81612f5d565b840191505092915050565b60006020820190508181036000830152612fc18184612f6e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ff982612fce565b9050919050565b61300981612fee565b811461301457600080fd5b50565b60008135905061302681613000565b92915050565b6000819050919050565b61303f8161302c565b811461304a57600080fd5b50565b60008135905061305c81613036565b92915050565b6000806040838503121561307957613078612fc9565b5b600061308785828601613017565b92505060206130988582860161304d565b9150509250929050565b60008115159050919050565b6130b7816130a2565b82525050565b60006020820190506130d260008301846130ae565b92915050565b6130e18161302c565b82525050565b60006020820190506130fc60008301846130d8565b92915050565b60008060006060848603121561311b5761311a612fc9565b5b600061312986828701613017565b935050602061313a86828701613017565b925050604061314b8682870161304d565b9150509250925092565b600060ff82169050919050565b61316b81613155565b82525050565b60006020820190506131866000830184613162565b92915050565b6000602082840312156131a2576131a1612fc9565b5b60006131b084828501613017565b91505092915050565b6000602082840312156131cf576131ce612fc9565b5b60006131dd8482850161304d565b91505092915050565b6131ef816130a2565b81146131fa57600080fd5b50565b60008135905061320c816131e6565b92915050565b60006020828403121561322857613227612fc9565b5b6000613236848285016131fd565b91505092915050565b61324881612fee565b82525050565b6000602082019050613263600083018461323f565b92915050565b600080604083850312156132805761327f612fc9565b5b600061328e85828601613017565b925050602061329f858286016131fd565b9150509250929050565b600080604083850312156132c0576132bf612fc9565b5b60006132ce85828601613017565b92505060206132df85828601613017565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333057607f821691505b602082108103613343576133426132e9565b5b50919050565b7f57616c6c6574206973206e6f742c206e6f74206665652077616c6c6574000000600082015250565b600061337f601d83612f22565b915061338a82613349565b602082019050919050565b600060208201905081810360008301526133ae81613372565b9050919050565b6000815190506133c481613000565b92915050565b6000602082840312156133e0576133df612fc9565b5b60006133ee848285016133b5565b91505092915050565b600060408201905061340c600083018561323f565b613419602083018461323f565b9392505050565b6000819050919050565b6000819050919050565b600061344f61344a61344584613420565b61342a565b61302c565b9050919050565b61345f81613434565b82525050565b600060c08201905061347a600083018961323f565b61348760208301886130d8565b6134946040830187613456565b6134a16060830186613456565b6134ae608083018561323f565b6134bb60a08301846130d8565b979650505050505050565b6000815190506134d581613036565b92915050565b6000806000606084860312156134f4576134f3612fc9565b5b6000613502868287016134c6565b9350506020613513868287016134c6565b9250506040613524868287016134c6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135688261302c565b91506135738361302c565b925082820190508082111561358b5761358a61352e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c7602083612f22565b91506135d282613591565b602082019050919050565b600060208201905081810360008301526135f6816135ba565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613633601d83612f22565b915061363e826135fd565b602082019050919050565b6000602082019050818103600083015261366281613626565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136a38261302c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136d5576136d461352e565b5b600182019050919050565b60006136eb8261302c565b91506136f68361302c565b92508282026137048161302c565b9150828204841483151761371b5761371a61352e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061375c8261302c565b91506137678361302c565b92508261377757613776613722565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e303030312520746f74616c20737570706c792e00000000000000602082015250565b60006137de603983612f22565b91506137e982613782565b604082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000613870603783612f22565b915061387b82613814565b604082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613902602583612f22565b915061390d826138a6565b604082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613994602683612f22565b915061399f82613938565b604082019050919050565b600060208201905081810360008301526139c381613987565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a26602483612f22565b9150613a31826139ca565b604082019050919050565b60006020820190508181036000830152613a5581613a19565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab8602283612f22565b9150613ac382613a5c565b604082019050919050565b60006020820190508181036000830152613ae781613aab565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613b24601d83612f22565b9150613b2f82613aee565b602082019050919050565b60006020820190508181036000830152613b5381613b17565b9050919050565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b6000613bb6603783612f22565b9150613bc182613b5a565b604082019050919050565b60006020820190508181036000830152613be581613ba9565b9050919050565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b6000613c48603583612f22565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b6000613cda603883612f22565b9150613ce582613c7e565b604082019050919050565b60006020820190508181036000830152613d0981613ccd565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613d92604983612f22565b9150613d9d82613d10565b606082019050919050565b60006020820190508181036000830152613dc181613d85565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000613e4a604183612f22565b9150613e5582613dc8565b606082019050919050565b60006020820190508181036000830152613e7981613e3d565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000613eb6601f83612f22565b9150613ec182613e80565b602082019050919050565b60006020820190508181036000830152613ee581613ea9565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000613f6e604283612f22565b9150613f7982613eec565b606082019050919050565b60006020820190508181036000830152613f9d81613f61565b9050919050565b6000613faf8261302c565b9150613fba8361302c565b9250828203905081811115613fd257613fd161352e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61403c81612fee565b82525050565b600061404e8383614033565b60208301905092915050565b6000602082019050919050565b600061407282614007565b61407c8185614012565b935061408783614023565b8060005b838110156140b857815161409f8882614042565b97506140aa8361405a565b92505060018101905061408b565b5085935050505092915050565b600060a0820190506140da60008301886130d8565b6140e76020830187613456565b81810360408301526140f98186614067565b9050614108606083018561323f565b61411560808301846130d8565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061417b602583612f22565b91506141868261411f565b604082019050919050565b600060208201905081810360008301526141aa8161416e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061420d602383612f22565b9150614218826141b1565b604082019050919050565b6000602082019050818103600083015261423c81614200565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061429f602683612f22565b91506142aa82614243565b604082019050919050565b600060208201905081810360008301526142ce81614292565b905091905056fea2646970667358221220807374dd653418e4eb14159b1161cc2f30697c3de828d1b1e5ecaef5cf2a68ea64736f6c63430008130033

Deployed Bytecode Sourcemap

9313:9869:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2774:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11281:641;;;;;;;;;;;;;:::i;:::-;;1853:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18829:113;;;;;;;;;;;;;:::i;:::-;;9603:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9827:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2070:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:103;;;;;;;;;;;;;:::i;:::-;;11994:89;;;;;;;;;;;;;:::i;:::-;;12639:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12293:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13175:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7630:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12887:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12149:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9479:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9552:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9959:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2406:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19035:107;;;;;;;;;;;;;:::i;:::-;;7964:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9521:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1633:100;1687:13;1720:5;1713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;:::o;2565:201::-;2648:4;2665:13;2681:12;:10;:12::i;:::-;2665:28;;2704:32;2713:5;2720:7;2729:6;2704:8;:32::i;:::-;2754:4;2747:11;;;2565:201;;;;:::o;1954:108::-;2015:7;2042:12;;2035:19;;1954:108;:::o;2774:295::-;2905:4;2922:15;2940:12;:10;:12::i;:::-;2922:30;;2963:38;2979:4;2985:7;2994:6;2963:15;:38::i;:::-;3012:27;3022:4;3028:2;3032:6;3012:9;:27::i;:::-;3057:4;3050:11;;;2774:295;;;;;:::o;11281:641::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11356:55;;;11420:4;11427:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11356:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11340:13;;:110;;;;;;;;;;;;;;;;;;11519:4;11461:31;:55;11501:13;;;;;;;;;;;11461:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;11587:4;11534:26;:50;11569:13;;;;;;;;;;;11534:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;11604:75;11621:4;11636:15;;;;;;;;;;;11654:24;11672:4;11654:9;:24::i;:::-;11604:8;:75::i;:::-;11690:15;;;;;;;;;;;:31;;;11729:21;11775:4;11795:24;11813:4;11795:9;:24::i;:::-;11834:1;11850::::0;11866:7:::1;:5;:7::i;:::-;11888:15;11690:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11281:641::o:0;1853:93::-;1911:5;1936:2;1929:9;;1853:93;:::o;3077:240::-;3165:4;3182:13;3198:12;:10;:12::i;:::-;3182:28;;3221:66;3230:5;3237:7;3276:10;3246:11;:18;3258:5;3246:18;;;;;;;;;;;;;;;:27;3265:7;3246:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3221:8;:66::i;:::-;3305:4;3298:11;;;3077:240;;;;:::o;18829:113::-;18888:13;;;;;;;;;;;18880:31;;:54;18912:21;18880:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18829:113::o;9603:33::-;;;;;;;;;;;;;:::o;9827:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;2070:127::-;2144:7;2171:9;:18;2181:7;2171:18;;;;;;;;;;;;;;;;2164:25;;2070:127;;;:::o;7853:103::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7918:30:::1;7945:1;7918:18;:30::i;:::-;7853:103::o:0;11994:89::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12070:5:::1;12053:14;;:22;;;;;;;;;;;;;;;;;;11994:89::o:0;12639:159::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12718:3:::1;12707:8;:14;;;;12754:2;12742:8;;:14;;12734:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12639:159:::0;:::o;12293:266::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12360:6:::1;12355:197;12376:8;:15;;;;12372:1;:19;12355:197;;;12432:13;;;;;;;;;;;12417:28;;:8;12426:1;12417:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:28;;;;:71;;;;;12472:15;;;;;;;;;;;12449:39;;:8;12458:1;12449:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:39;;;;12417:71;12413:127;;;12535:5;12508:11;:24;12520:8;12529:1;12520:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12508:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12413:127;12393:3;;;;;:::i;:::-;;;;12355:197;;;;12293:266:::0;:::o;13175:409::-;13265:4;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13325:7:::1;13321:1;13305:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:27;;;;:::i;:::-;13289:12;:43;;13281:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;13448:4;13444:1;13428:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13412:12;:40;;13404:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;13544:12;13522:19;:34;;;;13573:4;13566:11;;13175:409:::0;;;:::o;7630:87::-;7676:7;7703:6;;;;;;;;;;;7696:13;;7630:87;:::o;1741:104::-;1797:13;1830:7;1823:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:104;:::o;3325:438::-;3418:4;3435:13;3451:12;:10;:12::i;:::-;3435:28;;3474:24;3501:11;:18;3513:5;3501:18;;;;;;;;;;;;;;;:27;3520:7;3501:27;;;;;;;;;;;;;;;;3474:54;;3567:15;3547:16;:35;;3539:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:60;3669:5;3676:7;3704:15;3685:16;:34;3660:8;:60::i;:::-;3751:4;3744:11;;;;3325:438;;;;:::o;2205:193::-;2284:4;2301:13;2317:12;:10;:12::i;:::-;2301:28;;2340;2350:5;2357:2;2361:6;2340:9;:28::i;:::-;2386:4;2379:11;;;2205:193;;;;:::o;12887:115::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12985:9:::1;12969:13;;:25;;;;;;;;;;;;;;;;;;12887:115:::0;:::o;12149:136::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12269:8:::1;12239:18;:27;12258:7;12239:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12149:136:::0;;:::o;9479:35::-;;;;:::o;9552:34::-;;;;:::o;9959:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;2406:151::-;2495:7;2522:11;:18;2534:5;2522:18;;;;;;;;;;;;;;;:27;2541:7;2522:27;;;;;;;;;;;;;;;;2515:34;;2406:151;;;;:::o;19035:107::-;10208:12;:10;:12::i;:::-;10191:29;;:13;;;;;;;;;;;:29;;;10183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19091:43:::1;19109:24;19127:4;19109:9;:24::i;:::-;19091:17;:43::i;:::-;19035:107::o:0;7964:201::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8073:1:::1;8053:22;;:8;:22;;::::0;8045:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8129:28;8148:8;8129:18;:28::i;:::-;7964:201:::0;:::o;9521:24::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;5456:380::-;5609:1;5592:19;;:5;:19;;;5584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:1;5671:21;;:7;:21;;;5663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5744:11;:18;5756:5;5744:18;;;;;;;;;;;;;;;:27;5763:7;5744:27;;;;;;;;;;;;;;;:36;;;;5812:7;5796:32;;5805:5;5796:32;;;5821:6;5796:32;;;;;;:::i;:::-;;;;;;;;5456:380;;;:::o;5844:453::-;5979:24;6006:25;6016:5;6023:7;6006:9;:25::i;:::-;5979:52;;6066:17;6046:16;:37;6042:248;;6128:6;6108:16;:26;;6100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:51;6221:5;6228:7;6256:6;6237:16;:25;6212:8;:51::i;:::-;6042:248;5968:329;5844:453;;;:::o;13592:3102::-;13740:1;13724:18;;:4;:18;;;13716:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13835:1;13821:16;;:2;:16;;;13813:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;13915:11;:17;13927:4;13915:17;;;;;;;;;;;;;;;;;;;;;;;;;13914:18;13906:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14020:1;14010:6;:11;14006:93;;14038:28;14054:4;14060:2;14064:1;14038:15;:28::i;:::-;14081:7;;14006:93;14157:14;;;;;;;;;;;14153:1448;;;14218:7;:5;:7::i;:::-;14210:15;;:4;:15;;;;:49;;;;;14252:7;:5;:7::i;:::-;14246:13;;:2;:13;;;;14210:49;:82;;;;;14281:11;;;;;;;;;;;14280:12;14210:82;14188:1402;;;14337:7;:5;:7::i;:::-;14331:13;;:2;:13;;;;:47;;;;;14362:15;;;;;;;;;;;14348:30;;:2;:30;;;;14331:47;:79;;;;;14396:13;;;;;;;;;;;14382:28;;:2;:28;;;;14331:79;14327:336;;;14480:12;14442:24;:35;14467:9;14442:35;;;;;;;;;;;;;;;;:50;14434:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;14631:12;14593:24;:35;14618:9;14593:35;;;;;;;;;;;;;;;:50;;;;14327:336;14714:26;:32;14741:4;14714:32;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;14751:31;:35;14783:2;14751:35;;;;;;;;;;;;;;;;;;;;;;;;;14750:36;14714:72;14710:865;;;14829:20;;14819:6;:30;;14811:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;14979:9;;14950:25;14961:13;14971:2;14961:9;:13::i;:::-;14950:6;:10;;:25;;;;:::i;:::-;:38;;14942:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15049:8;15063:2;15049:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14710:865;;;15159:26;:30;15186:2;15159:30;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;15194:31;:37;15226:4;15194:37;;;;;;;;;;;;;;;;;;;;;;;;;15193:38;15159:72;15155:420;;;15274:20;;15264:6;:30;;15256:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15155:420;;;15413:31;:35;15445:2;15413:35;;;;;;;;;;;;;;;;;;;;;;;;;15408:167;;15510:9;;15481:25;15492:13;15502:2;15492:9;:13::i;:::-;15481:6;:10;;:25;;;;:::i;:::-;:38;;15473:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15408:167;15155:420;14710:865;14188:1402;14153:1448;15615:28;15646:24;15664:4;15646:9;:24::i;:::-;15615:55;;15681:12;15720:19;;15696:20;:43;;15681:58;;15768:7;:36;;;;;15793:11;;;;;;;;;;;15792:12;15768:36;:86;;;;;15822:26;:32;15849:4;15822:32;;;;;;;;;;;;;;;;;;;;;;;;;15821:33;15768:86;:128;;;;;15872:18;:24;15891:4;15872:24;;;;;;;;;;;;;;;;;;;;;;;;;15871:25;15768:128;:168;;;;;15914:18;:22;15933:2;15914:22;;;;;;;;;;;;;;;;;;;;;;;;;15913:23;15768:168;15750:302;;;15977:4;15963:11;;:18;;;;;;;;;;;;;;;;;;15996:10;:8;:10::i;:::-;16035:5;16021:11;;:19;;;;;;;;;;;;;;;;;;15750:302;16064:12;16080:11;;;;;;;;;;;16079:12;16064:27;;16198:18;:24;16217:4;16198:24;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;16227:18;:22;16246:2;16227:22;;;;;;;;;;;;;;;;;;;;;;;;;16198:51;:88;;;;16254:26;:32;16281:4;16254:32;;;;;;;;;;;;;;;;;;;;;;;;;16198:88;16194:123;;;16312:5;16302:15;;16194:123;16338:12;16369:7;16365:276;;;16400:29;16425:3;16400:20;16411:8;;16400:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16393:36;;16460:29;16485:3;16460:20;16471:8;;16460:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16444:13;:45;;;;16529:1;16522:4;:8;16518:74;;;16550:42;16566:4;16580;16587;16550:15;:42::i;:::-;16518:74;16625:4;16615:14;;;;;:::i;:::-;;;16365:276;16653:33;16669:4;16675:2;16679:6;16653:15;:33::i;:::-;13705:2989;;;;13592:3102;;;;:::o;8173:191::-;8247:16;8266:6;;;;;;;;;;;8247:25;;8292:8;8283:6;;:17;;;;;;;;;;;;;;;;;;8347:8;8316:40;;8337:8;8316:40;;;;;;;;;;;;8236:128;8173:191;:::o;16702:477::-;16770:21;16808:1;16794:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16770:40;;16839:4;16821;16826:1;16821:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16865:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16855:4;16860:1;16855:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16900:62;16917:4;16932:15;;;;;;;;;;;16950:11;16900:8;:62::i;:::-;16975:15;;;;;;;;;;;:66;;;17056:11;17082:1;17098:4;17125;17145:15;16975:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16759:420;16702:477;:::o;3771:671::-;3918:1;3902:18;;:4;:18;;;3894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:1;3981:16;;:2;:16;;;3973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:38;4071:4;4077:2;4081:6;4050:20;:38::i;:::-;4101:19;4123:9;:15;4133:4;4123:15;;;;;;;;;;;;;;;;4101:37;;4172:6;4157:11;:21;;4149:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4275:11;:20;4257:9;:15;4267:4;4257:15;;;;;;;;;;;;;;;:38;;;;4334:6;4317:9;:13;4327:2;4317:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4373:2;4358:26;;4367:4;4358:26;;;4377:6;4358:26;;;;;;:::i;:::-;;;;;;;;4397:37;4417:4;4423:2;4427:6;4397:19;:37::i;:::-;3883:559;3771:671;;;:::o;8395:98::-;8453:7;8484:1;8480;:5;;;;:::i;:::-;8473:12;;8395:98;;;;:::o;17565:1179::-;17605:23;17631:24;17649:4;17631:9;:24::i;:::-;17605:50;;17666:26;17695:20;17713:1;17695:13;;:17;;:20;;;;:::i;:::-;17666:49;;17726:20;17749:37;17767:18;17749:13;;:17;;:37;;;;:::i;:::-;17726:60;;17830:1;17811:15;:20;:42;;;;17852:1;17835:13;;:18;17811:42;17807:55;;;17855:7;;;;;17807:55;17894:19;;17876:15;:37;17872:80;;;17933:19;;17915:37;;17872:80;18022:23;18103:1;18087:13;;18066:18;18048:15;:36;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;18022:82;;18115:26;18144:36;18164:15;18144;:19;;:36;;;;:::i;:::-;18115:65;;18201:25;18229:21;18201:49;;18263:37;18281:18;18263:17;:37::i;:::-;18321:18;18342:44;18368:17;18342:21;:25;;:44;;;;:::i;:::-;18321:65;;18397:14;18414:47;18447:13;;18414:28;18429:12;18414:10;:14;;:28;;;;:::i;:::-;:32;;:47;;;;:::i;:::-;18397:64;;18472:20;18508:6;18495:10;:19;;;;:::i;:::-;18472:42;;18551:1;18535:13;:17;;;;18573:13;;;;;;;;;;;18565:31;;:39;18597:6;18565:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18655:1;18637:15;:19;:39;;;;;18675:1;18660:12;:16;18637:39;18633:103;;;18692:44;18706:15;18723:12;18692:13;:44::i;:::-;18633:103;17594:1150;;;;;;;;;17565:1179;:::o;8607:98::-;8665:7;8696:1;8692;:5;;;;:::i;:::-;8685:12;;8607:98;;;;:::o;8713:::-;8771:7;8802:1;8798;:5;;;;:::i;:::-;8791:12;;8713:98;;;;:::o;6305:125::-;;;;:::o;6438:124::-;;;;:::o;8501:98::-;8559:7;8590:1;8586;:5;;;;:::i;:::-;8579:12;;8501:98;;;;:::o;17187:370::-;17270:62;17287:4;17302:15;;;;;;;;;;;17320:11;17270:8;:62::i;:::-;17345:15;;;;;;;;;;;:31;;;17384:9;17417:4;17437:11;17463:1;17479;17495:13;;;;;;;;;;;17523:15;17345:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17187:370;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:116::-;5593:21;5608:5;5593:21;:::i;:::-;5586:5;5583:32;5573:60;;5629:1;5626;5619:12;5573:60;5523:116;:::o;5645:133::-;5688:5;5726:6;5713:20;5704:29;;5742:30;5766:5;5742:30;:::i;:::-;5645:133;;;;:::o;5784:323::-;5840:6;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:50;6082:7;6073:6;6062:9;6058:22;6040:50;:::i;:::-;6030:60;;5986:114;5784:323;;;;:::o;6113:118::-;6200:24;6218:5;6200:24;:::i;:::-;6195:3;6188:37;6113:118;;:::o;6237:222::-;6330:4;6368:2;6357:9;6353:18;6345:26;;6381:71;6449:1;6438:9;6434:17;6425:6;6381:71;:::i;:::-;6237:222;;;;:::o;6465:468::-;6530:6;6538;6587:2;6575:9;6566:7;6562:23;6558:32;6555:119;;;6593:79;;:::i;:::-;6555:119;6713:1;6738:53;6783:7;6774:6;6763:9;6759:22;6738:53;:::i;:::-;6728:63;;6684:117;6840:2;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6811:115;6465:468;;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:180::-;7467:77;7464:1;7457:88;7564:4;7561:1;7554:15;7588:4;7585:1;7578:15;7605:320;7649:6;7686:1;7680:4;7676:12;7666:22;;7733:1;7727:4;7723:12;7754:18;7744:81;;7810:4;7802:6;7798:17;7788:27;;7744:81;7872:2;7864:6;7861:14;7841:18;7838:38;7835:84;;7891:18;;:::i;:::-;7835:84;7656:269;7605:320;;;:::o;7931:179::-;8071:31;8067:1;8059:6;8055:14;8048:55;7931:179;:::o;8116:366::-;8258:3;8279:67;8343:2;8338:3;8279:67;:::i;:::-;8272:74;;8355:93;8444:3;8355:93;:::i;:::-;8473:2;8468:3;8464:12;8457:19;;8116:366;;;:::o;8488:419::-;8654:4;8692:2;8681:9;8677:18;8669:26;;8741:9;8735:4;8731:20;8727:1;8716:9;8712:17;8705:47;8769:131;8895:4;8769:131;:::i;:::-;8761:139;;8488:419;;;:::o;8913:143::-;8970:5;9001:6;8995:13;8986:22;;9017:33;9044:5;9017:33;:::i;:::-;8913:143;;;;:::o;9062:351::-;9132:6;9181:2;9169:9;9160:7;9156:23;9152:32;9149:119;;;9187:79;;:::i;:::-;9149:119;9307:1;9332:64;9388:7;9379:6;9368:9;9364:22;9332:64;:::i;:::-;9322:74;;9278:128;9062:351;;;;:::o;9419:332::-;9540:4;9578:2;9567:9;9563:18;9555:26;;9591:71;9659:1;9648:9;9644:17;9635:6;9591:71;:::i;:::-;9672:72;9740:2;9729:9;9725:18;9716:6;9672:72;:::i;:::-;9419:332;;;;;:::o;9757:85::-;9802:7;9831:5;9820:16;;9757:85;;;:::o;9848:60::-;9876:3;9897:5;9890:12;;9848:60;;;:::o;9914:158::-;9972:9;10005:61;10023:42;10032:32;10058:5;10032:32;:::i;:::-;10023:42;:::i;:::-;10005:61;:::i;:::-;9992:74;;9914:158;;;:::o;10078:147::-;10173:45;10212:5;10173:45;:::i;:::-;10168:3;10161:58;10078:147;;:::o;10231:807::-;10480:4;10518:3;10507:9;10503:19;10495:27;;10532:71;10600:1;10589:9;10585:17;10576:6;10532:71;:::i;:::-;10613:72;10681:2;10670:9;10666:18;10657:6;10613:72;:::i;:::-;10695:80;10771:2;10760:9;10756:18;10747:6;10695:80;:::i;:::-;10785;10861:2;10850:9;10846:18;10837:6;10785:80;:::i;:::-;10875:73;10943:3;10932:9;10928:19;10919:6;10875:73;:::i;:::-;10958;11026:3;11015:9;11011:19;11002:6;10958:73;:::i;:::-;10231:807;;;;;;;;;:::o;11044:143::-;11101:5;11132:6;11126:13;11117:22;;11148:33;11175:5;11148:33;:::i;:::-;11044:143;;;;:::o;11193:663::-;11281:6;11289;11297;11346:2;11334:9;11325:7;11321:23;11317:32;11314:119;;;11352:79;;:::i;:::-;11314:119;11472:1;11497:64;11553:7;11544:6;11533:9;11529:22;11497:64;:::i;:::-;11487:74;;11443:128;11610:2;11636:64;11692:7;11683:6;11672:9;11668:22;11636:64;:::i;:::-;11626:74;;11581:129;11749:2;11775:64;11831:7;11822:6;11811:9;11807:22;11775:64;:::i;:::-;11765:74;;11720:129;11193:663;;;;;:::o;11862:180::-;11910:77;11907:1;11900:88;12007:4;12004:1;11997:15;12031:4;12028:1;12021:15;12048:191;12088:3;12107:20;12125:1;12107:20;:::i;:::-;12102:25;;12141:20;12159:1;12141:20;:::i;:::-;12136:25;;12184:1;12181;12177:9;12170:16;;12205:3;12202:1;12199:10;12196:36;;;12212:18;;:::i;:::-;12196:36;12048:191;;;;:::o;12245:182::-;12385:34;12381:1;12373:6;12369:14;12362:58;12245:182;:::o;12433:366::-;12575:3;12596:67;12660:2;12655:3;12596:67;:::i;:::-;12589:74;;12672:93;12761:3;12672:93;:::i;:::-;12790:2;12785:3;12781:12;12774:19;;12433:366;;;:::o;12805:419::-;12971:4;13009:2;12998:9;12994:18;12986:26;;13058:9;13052:4;13048:20;13044:1;13033:9;13029:17;13022:47;13086:131;13212:4;13086:131;:::i;:::-;13078:139;;12805:419;;;:::o;13230:179::-;13370:31;13366:1;13358:6;13354:14;13347:55;13230:179;:::o;13415:366::-;13557:3;13578:67;13642:2;13637:3;13578:67;:::i;:::-;13571:74;;13654:93;13743:3;13654:93;:::i;:::-;13772:2;13767:3;13763:12;13756:19;;13415:366;;;:::o;13787:419::-;13953:4;13991:2;13980:9;13976:18;13968:26;;14040:9;14034:4;14030:20;14026:1;14015:9;14011:17;14004:47;14068:131;14194:4;14068:131;:::i;:::-;14060:139;;13787:419;;;:::o;14212:180::-;14260:77;14257:1;14250:88;14357:4;14354:1;14347:15;14381:4;14378:1;14371:15;14398:233;14437:3;14460:24;14478:5;14460:24;:::i;:::-;14451:33;;14506:66;14499:5;14496:77;14493:103;;14576:18;;:::i;:::-;14493:103;14623:1;14616:5;14612:13;14605:20;;14398:233;;;:::o;14637:410::-;14677:7;14700:20;14718:1;14700:20;:::i;:::-;14695:25;;14734:20;14752:1;14734:20;:::i;:::-;14729:25;;14789:1;14786;14782:9;14811:30;14829:11;14811:30;:::i;:::-;14800:41;;14990:1;14981:7;14977:15;14974:1;14971:22;14951:1;14944:9;14924:83;14901:139;;15020:18;;:::i;:::-;14901:139;14685:362;14637:410;;;;:::o;15053:180::-;15101:77;15098:1;15091:88;15198:4;15195:1;15188:15;15222:4;15219:1;15212:15;15239:185;15279:1;15296:20;15314:1;15296:20;:::i;:::-;15291:25;;15330:20;15348:1;15330:20;:::i;:::-;15325:25;;15369:1;15359:35;;15374:18;;:::i;:::-;15359:35;15416:1;15413;15409:9;15404:14;;15239:185;;;;:::o;15430:244::-;15570:34;15566:1;15558:6;15554:14;15547:58;15639:27;15634:2;15626:6;15622:15;15615:52;15430:244;:::o;15680:366::-;15822:3;15843:67;15907:2;15902:3;15843:67;:::i;:::-;15836:74;;15919:93;16008:3;15919:93;:::i;:::-;16037:2;16032:3;16028:12;16021:19;;15680:366;;;:::o;16052:419::-;16218:4;16256:2;16245:9;16241:18;16233:26;;16305:9;16299:4;16295:20;16291:1;16280:9;16276:17;16269:47;16333:131;16459:4;16333:131;:::i;:::-;16325:139;;16052:419;;;:::o;16477:242::-;16617:34;16613:1;16605:6;16601:14;16594:58;16686:25;16681:2;16673:6;16669:15;16662:50;16477:242;:::o;16725:366::-;16867:3;16888:67;16952:2;16947:3;16888:67;:::i;:::-;16881:74;;16964:93;17053:3;16964:93;:::i;:::-;17082:2;17077:3;17073:12;17066:19;;16725:366;;;:::o;17097:419::-;17263:4;17301:2;17290:9;17286:18;17278:26;;17350:9;17344:4;17340:20;17336:1;17325:9;17321:17;17314:47;17378:131;17504:4;17378:131;:::i;:::-;17370:139;;17097:419;;;:::o;17522:224::-;17662:34;17658:1;17650:6;17646:14;17639:58;17731:7;17726:2;17718:6;17714:15;17707:32;17522:224;:::o;17752:366::-;17894:3;17915:67;17979:2;17974:3;17915:67;:::i;:::-;17908:74;;17991:93;18080:3;17991:93;:::i;:::-;18109:2;18104:3;18100:12;18093:19;;17752:366;;;:::o;18124:419::-;18290:4;18328:2;18317:9;18313:18;18305:26;;18377:9;18371:4;18367:20;18363:1;18352:9;18348:17;18341:47;18405:131;18531:4;18405:131;:::i;:::-;18397:139;;18124:419;;;:::o;18549:225::-;18689:34;18685:1;18677:6;18673:14;18666:58;18758:8;18753:2;18745:6;18741:15;18734:33;18549:225;:::o;18780:366::-;18922:3;18943:67;19007:2;19002:3;18943:67;:::i;:::-;18936:74;;19019:93;19108:3;19019:93;:::i;:::-;19137:2;19132:3;19128:12;19121:19;;18780:366;;;:::o;19152:419::-;19318:4;19356:2;19345:9;19341:18;19333:26;;19405:9;19399:4;19395:20;19391:1;19380:9;19376:17;19369:47;19433:131;19559:4;19433:131;:::i;:::-;19425:139;;19152:419;;;:::o;19577:223::-;19717:34;19713:1;19705:6;19701:14;19694:58;19786:6;19781:2;19773:6;19769:15;19762:31;19577:223;:::o;19806:366::-;19948:3;19969:67;20033:2;20028:3;19969:67;:::i;:::-;19962:74;;20045:93;20134:3;20045:93;:::i;:::-;20163:2;20158:3;20154:12;20147:19;;19806:366;;;:::o;20178:419::-;20344:4;20382:2;20371:9;20367:18;20359:26;;20431:9;20425:4;20421:20;20417:1;20406:9;20402:17;20395:47;20459:131;20585:4;20459:131;:::i;:::-;20451:139;;20178:419;;;:::o;20603:221::-;20743:34;20739:1;20731:6;20727:14;20720:58;20812:4;20807:2;20799:6;20795:15;20788:29;20603:221;:::o;20830:366::-;20972:3;20993:67;21057:2;21052:3;20993:67;:::i;:::-;20986:74;;21069:93;21158:3;21069:93;:::i;:::-;21187:2;21182:3;21178:12;21171:19;;20830:366;;;:::o;21202:419::-;21368:4;21406:2;21395:9;21391:18;21383:26;;21455:9;21449:4;21445:20;21441:1;21430:9;21426:17;21419:47;21483:131;21609:4;21483:131;:::i;:::-;21475:139;;21202:419;;;:::o;21627:179::-;21767:31;21763:1;21755:6;21751:14;21744:55;21627:179;:::o;21812:366::-;21954:3;21975:67;22039:2;22034:3;21975:67;:::i;:::-;21968:74;;22051:93;22140:3;22051:93;:::i;:::-;22169:2;22164:3;22160:12;22153:19;;21812:366;;;:::o;22184:419::-;22350:4;22388:2;22377:9;22373:18;22365:26;;22437:9;22431:4;22427:20;22423:1;22412:9;22408:17;22401:47;22465:131;22591:4;22465:131;:::i;:::-;22457:139;;22184:419;;;:::o;22609:242::-;22749:34;22745:1;22737:6;22733:14;22726:58;22818:25;22813:2;22805:6;22801:15;22794:50;22609:242;:::o;22857:366::-;22999:3;23020:67;23084:2;23079:3;23020:67;:::i;:::-;23013:74;;23096:93;23185:3;23096:93;:::i;:::-;23214:2;23209:3;23205:12;23198:19;;22857:366;;;:::o;23229:419::-;23395:4;23433:2;23422:9;23418:18;23410:26;;23482:9;23476:4;23472:20;23468:1;23457:9;23453:17;23446:47;23510:131;23636:4;23510:131;:::i;:::-;23502:139;;23229:419;;;:::o;23654:240::-;23794:34;23790:1;23782:6;23778:14;23771:58;23863:23;23858:2;23850:6;23846:15;23839:48;23654:240;:::o;23900:366::-;24042:3;24063:67;24127:2;24122:3;24063:67;:::i;:::-;24056:74;;24139:93;24228:3;24139:93;:::i;:::-;24257:2;24252:3;24248:12;24241:19;;23900:366;;;:::o;24272:419::-;24438:4;24476:2;24465:9;24461:18;24453:26;;24525:9;24519:4;24515:20;24511:1;24500:9;24496:17;24489:47;24553:131;24679:4;24553:131;:::i;:::-;24545:139;;24272:419;;;:::o;24697:243::-;24837:34;24833:1;24825:6;24821:14;24814:58;24906:26;24901:2;24893:6;24889:15;24882:51;24697:243;:::o;24946:366::-;25088:3;25109:67;25173:2;25168:3;25109:67;:::i;:::-;25102:74;;25185:93;25274:3;25185:93;:::i;:::-;25303:2;25298:3;25294:12;25287:19;;24946:366;;;:::o;25318:419::-;25484:4;25522:2;25511:9;25507:18;25499:26;;25571:9;25565:4;25561:20;25557:1;25546:9;25542:17;25535:47;25599:131;25725:4;25599:131;:::i;:::-;25591:139;;25318:419;;;:::o;25743:297::-;25883:34;25879:1;25871:6;25867:14;25860:58;25952:34;25947:2;25939:6;25935:15;25928:59;26021:11;26016:2;26008:6;26004:15;25997:36;25743:297;:::o;26046:366::-;26188:3;26209:67;26273:2;26268:3;26209:67;:::i;:::-;26202:74;;26285:93;26374:3;26285:93;:::i;:::-;26403:2;26398:3;26394:12;26387:19;;26046:366;;;:::o;26418:419::-;26584:4;26622:2;26611:9;26607:18;26599:26;;26671:9;26665:4;26661:20;26657:1;26646:9;26642:17;26635:47;26699:131;26825:4;26699:131;:::i;:::-;26691:139;;26418:419;;;:::o;26843:289::-;26983:34;26979:1;26971:6;26967:14;26960:58;27052:34;27047:2;27039:6;27035:15;27028:59;27121:3;27116:2;27108:6;27104:15;27097:28;26843:289;:::o;27138:366::-;27280:3;27301:67;27365:2;27360:3;27301:67;:::i;:::-;27294:74;;27377:93;27466:3;27377:93;:::i;:::-;27495:2;27490:3;27486:12;27479:19;;27138:366;;;:::o;27510:419::-;27676:4;27714:2;27703:9;27699:18;27691:26;;27763:9;27757:4;27753:20;27749:1;27738:9;27734:17;27727:47;27791:131;27917:4;27791:131;:::i;:::-;27783:139;;27510:419;;;:::o;27935:181::-;28075:33;28071:1;28063:6;28059:14;28052:57;27935:181;:::o;28122:366::-;28264:3;28285:67;28349:2;28344:3;28285:67;:::i;:::-;28278:74;;28361:93;28450:3;28361:93;:::i;:::-;28479:2;28474:3;28470:12;28463:19;;28122:366;;;:::o;28494:419::-;28660:4;28698:2;28687:9;28683:18;28675:26;;28747:9;28741:4;28737:20;28733:1;28722:9;28718:17;28711:47;28775:131;28901:4;28775:131;:::i;:::-;28767:139;;28494:419;;;:::o;28919:290::-;29059:34;29055:1;29047:6;29043:14;29036:58;29128:34;29123:2;29115:6;29111:15;29104:59;29197:4;29192:2;29184:6;29180:15;29173:29;28919:290;:::o;29215:366::-;29357:3;29378:67;29442:2;29437:3;29378:67;:::i;:::-;29371:74;;29454:93;29543:3;29454:93;:::i;:::-;29572:2;29567:3;29563:12;29556:19;;29215:366;;;:::o;29587:419::-;29753:4;29791:2;29780:9;29776:18;29768:26;;29840:9;29834:4;29830:20;29826:1;29815:9;29811:17;29804:47;29868:131;29994:4;29868:131;:::i;:::-;29860:139;;29587:419;;;:::o;30012:194::-;30052:4;30072:20;30090:1;30072:20;:::i;:::-;30067:25;;30106:20;30124:1;30106:20;:::i;:::-;30101:25;;30150:1;30147;30143:9;30135:17;;30174:1;30168:4;30165:11;30162:37;;;30179:18;;:::i;:::-;30162:37;30012:194;;;;:::o;30212:180::-;30260:77;30257:1;30250:88;30357:4;30354:1;30347:15;30381:4;30378:1;30371:15;30398:114;30465:6;30499:5;30493:12;30483:22;;30398:114;;;:::o;30518:184::-;30617:11;30651:6;30646:3;30639:19;30691:4;30686:3;30682:14;30667:29;;30518:184;;;;:::o;30708:132::-;30775:4;30798:3;30790:11;;30828:4;30823:3;30819:14;30811:22;;30708:132;;;:::o;30846:108::-;30923:24;30941:5;30923:24;:::i;:::-;30918:3;30911:37;30846:108;;:::o;30960:179::-;31029:10;31050:46;31092:3;31084:6;31050:46;:::i;:::-;31128:4;31123:3;31119:14;31105:28;;30960:179;;;;:::o;31145:113::-;31215:4;31247;31242:3;31238:14;31230:22;;31145:113;;;:::o;31294:732::-;31413:3;31442:54;31490:5;31442:54;:::i;:::-;31512:86;31591:6;31586:3;31512:86;:::i;:::-;31505:93;;31622:56;31672:5;31622:56;:::i;:::-;31701:7;31732:1;31717:284;31742:6;31739:1;31736:13;31717:284;;;31818:6;31812:13;31845:63;31904:3;31889:13;31845:63;:::i;:::-;31838:70;;31931:60;31984:6;31931:60;:::i;:::-;31921:70;;31777:224;31764:1;31761;31757:9;31752:14;;31717:284;;;31721:14;32017:3;32010:10;;31418:608;;;31294:732;;;;:::o;32032:831::-;32295:4;32333:3;32322:9;32318:19;32310:27;;32347:71;32415:1;32404:9;32400:17;32391:6;32347:71;:::i;:::-;32428:80;32504:2;32493:9;32489:18;32480:6;32428:80;:::i;:::-;32555:9;32549:4;32545:20;32540:2;32529:9;32525:18;32518:48;32583:108;32686:4;32677:6;32583:108;:::i;:::-;32575:116;;32701:72;32769:2;32758:9;32754:18;32745:6;32701:72;:::i;:::-;32783:73;32851:3;32840:9;32836:19;32827:6;32783:73;:::i;:::-;32032:831;;;;;;;;:::o;32869:224::-;33009:34;33005:1;32997:6;32993:14;32986:58;33078:7;33073:2;33065:6;33061:15;33054:32;32869:224;:::o;33099:366::-;33241:3;33262:67;33326:2;33321:3;33262:67;:::i;:::-;33255:74;;33338:93;33427:3;33338:93;:::i;:::-;33456:2;33451:3;33447:12;33440:19;;33099:366;;;:::o;33471:419::-;33637:4;33675:2;33664:9;33660:18;33652:26;;33724:9;33718:4;33714:20;33710:1;33699:9;33695:17;33688:47;33752:131;33878:4;33752:131;:::i;:::-;33744:139;;33471:419;;;:::o;33896:222::-;34036:34;34032:1;34024:6;34020:14;34013:58;34105:5;34100:2;34092:6;34088:15;34081:30;33896:222;:::o;34124:366::-;34266:3;34287:67;34351:2;34346:3;34287:67;:::i;:::-;34280:74;;34363:93;34452:3;34363:93;:::i;:::-;34481:2;34476:3;34472:12;34465:19;;34124:366;;;:::o;34496:419::-;34662:4;34700:2;34689:9;34685:18;34677:26;;34749:9;34743:4;34739:20;34735:1;34724:9;34720:17;34713:47;34777:131;34903:4;34777:131;:::i;:::-;34769:139;;34496:419;;;:::o;34921:225::-;35061:34;35057:1;35049:6;35045:14;35038:58;35130:8;35125:2;35117:6;35113:15;35106:33;34921:225;:::o;35152:366::-;35294:3;35315:67;35379:2;35374:3;35315:67;:::i;:::-;35308:74;;35391:93;35480:3;35391:93;:::i;:::-;35509:2;35504:3;35500:12;35493:19;;35152:366;;;:::o;35524:419::-;35690:4;35728:2;35717:9;35713:18;35705:26;;35777:9;35771:4;35767:20;35763:1;35752:9;35748:17;35741:47;35805:131;35931:4;35805:131;:::i;:::-;35797:139;;35524:419;;;:::o

Swarm Source

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