ETH Price: $3,150.52 (-8.48%)
Gas: 8 Gwei

Token

PEPESTAR (PEPES)
 

Overview

Max Total Supply

4,206,900,000,000,000 PEPES

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
15,950,311,587 PEPES

Value
$0.00
0x78de8c05f97fab1c844bea7683b8510a8ff5de91
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:
PEPESTAR

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-19
*/

//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣿⠽⠭⣥⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠞⠉⠁⠀⠀⠀⠀⠉⠉⠛⠶⣤⣀⠀⠀⢀⣤⠴⠞⠛⠉⠉⠉⠛⠶⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⣏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠏⠀⠀⠀⠀⠀⠀⢀⣠⠤⠤⠤⠤⢤⣄⡀⠀⠀⠹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡄⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠐⠈⠁⠀⠀⠀⠀⠀⠀⠀⠉⠛⠶⢤⣽⡦⠐⠒⠒⠂⠀⠀⠀⠀⠐⠒⠀⢿⣦⣀⡀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⢀⡞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡤⠤⠤⠤⠤⠠⠌⢻⣆⡀⠀⠀⠀⣀⣀⣀⡀⠤⠤⠄⠠⢉⣙⡿⣆⡀⠀
//⠀⠀⠀⠀⣀⣴⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⢶⣛⣩⣶⣶⡾⢯⠿⠷⣖⣦⣤⣍⣿⣴⠖⣋⠭⣷⣶⣶⡶⠒⠒⣶⣒⣠⣀⣙⣿⣆
//⠀⠀⢀⠞⠋⠀⡇⠀⠀⠀⠀⠀⠀⢀⣠⡶⣻⡯⣲⡿⠟⢋⣵⣛⣾⣿⣷⡄⠀⠈⠉⠙⠛⢻⣯⠤⠚⠋⢉⣴⣻⣿⣿⣷⣼⠁⠉⠛⠺⣿
//⠀⣠⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣟⣫⣿⠟⠉⠀⠀⣾⣿⣻⣿⣤⣿⣿⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⣿⣿⣻⣿⣼⣿⣿⠇⠀⠀⠀⢙
//⢠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⡶⣄⠀⠀⢻⣿⣿⣿⣿⣿⡏⠀⠀⠀⣀⣤⣾⣁⠀⠀⠀⠸⢿⣿⣿⣿⡿⠋⠀⣀⣠⣶⣿
//⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠺⢿⣶⣶⣮⣭⣭⣭⣭⡴⢶⣶⣾⠿⠟⠋⠉⠉⠙⠒⠒⠊⠉⠈⠉⠚⠉⠉⢉⣷⡾⠯
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⢈⣽⠟⠁⠀⠀⠀⠀⣄⡀⠀⠀⠀⠀⠀⠀⢀⣴⡾⠟⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⡴⠞⠋⠁⠀⠀⠀⠀⠀⠀⠈⠙⢷⡀⠉⠉⠉⠀⠙⢿⣵⡄⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⡀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣧⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠋⠉⠀⠀⠉⠛⠛⠛⠛⠷⠶⠶⠶⠶⠤⢤⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡤⢿⣆⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡶⠋⠀⠀⠀⠸⠿⠛⠛⠛⠓⠒⠲⠶⢤⣤⣄⣀⠀⠀⠀⠈⠙⠛⠛⠛⠛⠒⠶⠶⠶⣶⠖⠛⠛⠁⢠⣸⡟⠀
//⠀⠀⠀⠀⠀⠀⢰⣆⠀⢸⣧⣤⣤⣤⣤⣤⣤⣤⣤⣤⣀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠓⠒⠲⠦⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣾⠋⠀⠀
//⡀⠀⠀⠀⠀⠀⠀⠙⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠲⠶⣶⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡾⠃⠀⠀⠀
//⣿⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠛⠛⣳⣶⡶⠟⠉⠀⠀⠀⠀⠀
//⠛⢷⣿⣷⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠈⠙⠻⢷⣬⣗⣒⣂⡀⠠⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣤⡴⠾⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠿⠶⠶⠶⠶⣤⣤⣭⣭⣍⣉⣉⣀⣀⣀⣀⣼⣯⡽⠷⠿⠛⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠈⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//
//

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

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

abstract contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

interface IUniswapV2Pair 
{
    function factory() external view returns (address);
}

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

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

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

contract PEPESTAR is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    address public _burnAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;
    string private _name;
    string private _symbol;
    uint256 private _decimals;

    // Buy tax
    uint256 private _buyTaxFee = 0;
    uint256 private _buyLiquidityFee = 0;

    // Sell tax
    uint256 private _sellTaxFee = 0;
    uint256 private _sellLiquidityFee = 0;

    uint256 public _taxFee = _buyTaxFee;
    uint256 public _liquidityFee = _buyLiquidityFee;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousLiquidityFee = _liquidityFee;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public numTokensSellToAddToLiquidity;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        _name = "PEPESTAR";
        _symbol = "PEPES";
        _decimals = 0;
        _tTotal = 4206900000000000;
        _rTotal = (MAX - (MAX % _tTotal));
        numTokensSellToAddToLiquidity = 0;

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , ,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setSellFeePercent(
        uint256 tFee,
        uint256 lFee
            ) external onlyOwner {
        _sellTaxFee = tFee;
        _sellLiquidityFee = lFee;
        _taxFee = _sellTaxFee;
        _liquidityFee = _sellLiquidityFee;
        uint256 sFee = _taxFee.add(_liquidityFee);
        require(sFee <= 0, "ERC20: 0% taxFee");

    }

    function setBuyFeePercent(
        uint256 tFee,
        uint256 lFee
            ) external onlyOwner {
        _buyTaxFee = tFee;
        _buyLiquidityFee = lFee;
        _taxFee = _buyTaxFee;
        _liquidityFee = _buyLiquidityFee;
        uint256 bFee = _taxFee.add(_liquidityFee);
        require(bFee <= 0, "ERC20: 0% taxFee");

    }
    
    function setNumTokensSellToAddToLiquidity(uint256 amount)
        external
        onlyOwner
    {
        numTokensSellToAddToLiquidity = amount;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

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

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLiquidity,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity)
        private
    {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(
            currentRate
        );
        _rOwned[address(this)] = _rOwned[address(this)].add(
            rLiquidity
        );
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(
                tLiquidity
            );
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**2);
    }

    function calculateLiquidityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul((_liquidityFee)).div(10**2);
    }

    function removeAllFee() private {
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;

        _taxFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair) {
                // Buy
                _taxFee = _buyTaxFee;
                _liquidityFee = _buyLiquidityFee;
            } else if (to == uniswapV2Pair) {
                // Sell
                _taxFee = _sellTaxFee;
                _liquidityFee = _sellLiquidityFee;
            } else {
                // Transfer
                _taxFee = 0;
                _liquidityFee = 0;
            }
        }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half); 
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function withdrawStuckETH() external onlyOwner{
        require (address(this).balance > 0, "Can't withdraw negative or zero");
        payable(owner()).transfer(address(this).balance);
    }

    function removeStuckToken(address _address) external onlyOwner {
        require(_address != address(this), "Can't withdraw tokens destined for liquidity");
        require(IERC20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");

        IERC20(_address).transfer(owner(), IERC20(_address).balanceOf(address(this)));
    }  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"lFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"lFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f55600060105560006011556000601255600f546013556010546014556013546015556014546016556001601860156101000a81548160ff0219169083151502179055503480156200009b57600080fd5b50620000ac6200050d60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36040518060400160405280600881526020017f5045504553544152000000000000000000000000000000000000000000000000815250600c9081620001ac9190620007b8565b506040518060400160405280600581526020017f5045504553000000000000000000000000000000000000000000000000000000815250600d9081620001f39190620007b8565b506000600e81905550660ef2273c1b08006009819055506009546000196200021c9190620008ce565b6000196200022b919062000935565b600a819055506000601981905550600a5460026000620002506200050d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003199190620009da565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000381573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a79190620009da565b6040518363ffffffff1660e01b8152600401620003c692919062000a1d565b6020604051808303816000875af1158015620003e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040c9190620009da565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049d6200051560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620004fe919062000a5b565b60405180910390a35062000a78565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005c057607f821691505b602082108103620005d657620005d562000578565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000601565b6200064c868362000601565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000699620006936200068d8462000664565b6200066e565b62000664565b9050919050565b6000819050919050565b620006b58362000678565b620006cd620006c482620006a0565b8484546200060e565b825550505050565b600090565b620006e4620006d5565b620006f1818484620006aa565b505050565b5b8181101562000719576200070d600082620006da565b600181019050620006f7565b5050565b601f82111562000768576200073281620005dc565b6200073d84620005f1565b810160208510156200074d578190505b620007656200075c85620005f1565b830182620006f6565b50505b505050565b600082821c905092915050565b60006200078d600019846008026200076d565b1980831691505092915050565b6000620007a883836200077a565b9150826002028217905092915050565b620007c3826200053e565b67ffffffffffffffff811115620007df57620007de62000549565b5b620007eb8254620005a7565b620007f88282856200071d565b600060209050601f8311600181146200083057600084156200081b578287015190505b6200082785826200079a565b86555062000897565b601f1984166200084086620005dc565b60005b828110156200086a5784890151825560018201915060208501945060208101905062000843565b868310156200088a578489015162000886601f8916826200077a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008db8262000664565b9150620008e88362000664565b925082620008fb57620008fa6200089f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009428262000664565b91506200094f8362000664565b92508282039050818111156200096a576200096962000906565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009a28262000975565b9050919050565b620009b48162000995565b8114620009c057600080fd5b50565b600081519050620009d481620009a9565b92915050565b600060208284031215620009f357620009f262000970565b5b600062000a0384828501620009c3565b91505092915050565b62000a178162000995565b82525050565b600060408201905062000a34600083018562000a0c565b62000a43602083018462000a0c565b9392505050565b62000a558162000664565b82525050565b600060208201905062000a72600083018462000a4a565b92915050565b6153748062000a886000396000f3fe6080604052600436106102295760003560e01c80636bc87c3a11610123578063be291dc6116100ab578063ea2f0b371161006f578063ea2f0b3714610864578063f0f165af1461088d578063f2fde38b146108b6578063f5648a4f146108df578063f9dfdaeb146108f657610230565b8063be291dc614610781578063c49b9a80146107aa578063d12a7688146107d3578063dd62ed3e146107fe578063e083e9221461083b57610230565b80638da5cb5b116100f25780638da5cb5b1461068657806395d89b41146106b1578063a457c2d7146106dc578063a9059cbb14610719578063bd3900c01461075657610230565b80636bc87c3a146105ca57806370a08231146105f5578063715018a61461063257806388f820201461064957610230565b80633685d419116101b15780634549b039116101755780634549b039146104d157806349bd5a5e1461050e5780634a74bb021461053957806352390c02146105645780635342acb41461058d57610230565b80633685d419146103ee57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b806318160ddd116101f857806318160ddd146102f3578063220f66961461031e57806323b872dd146103495780632d83811914610386578063313ce567146103c357610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61091f565b604051610257919061417b565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190614236565b6109b1565b6040516102949190614291565b60405180910390f35b3480156102a957600080fd5b506102b26109cf565b6040516102bf91906142bb565b60405180910390f35b3480156102d457600080fd5b506102dd6109d9565b6040516102ea9190614335565b60405180910390f35b3480156102ff57600080fd5b506103086109ff565b60405161031591906142bb565b60405180910390f35b34801561032a57600080fd5b50610333610a09565b6040516103409190614291565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614350565b610a1c565b60405161037d9190614291565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a891906143a3565b610af5565b6040516103ba91906142bb565b60405180910390f35b3480156103cf57600080fd5b506103d8610b63565b6040516103e591906142bb565b60405180910390f35b3480156103fa57600080fd5b50610415600480360381019061041091906143d0565b610b6d565b005b34801561042357600080fd5b5061043e60048036038101906104399190614236565b610ea2565b60405161044b9190614291565b60405180910390f35b34801561046057600080fd5b50610469610f55565b60405161047691906142bb565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906143a3565b610f5b565b005b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d0565b6110d6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190614429565b6111ad565b60405161050591906142bb565b60405180910390f35b34801561051a57600080fd5b50610523611231565b6040516105309190614478565b60405180910390f35b34801561054557600080fd5b5061054e611257565b60405161055b9190614291565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906143d0565b61126a565b005b34801561059957600080fd5b506105b460048036038101906105af91906143d0565b611505565b6040516105c19190614291565b60405180910390f35b3480156105d657600080fd5b506105df61155b565b6040516105ec91906142bb565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906143d0565b611561565b60405161062991906142bb565b60405180910390f35b34801561063e57600080fd5b5061064761164c565b005b34801561065557600080fd5b50610670600480360381019061066b91906143d0565b611786565b60405161067d9190614291565b60405180910390f35b34801561069257600080fd5b5061069b6117dc565b6040516106a89190614478565b60405180910390f35b3480156106bd57600080fd5b506106c6611805565b6040516106d3919061417b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614236565b611897565b6040516107109190614291565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614236565b611964565b60405161074d9190614291565b60405180910390f35b34801561076257600080fd5b5061076b611982565b6040516107789190614478565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614493565b6119a8565b005b3480156107b657600080fd5b506107d160048036038101906107cc91906144d3565b611aa8565b005b3480156107df57600080fd5b506107e8611b78565b6040516107f591906142bb565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614500565b611b7e565b60405161083291906142bb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906143d0565b611c05565b005b34801561087057600080fd5b5061088b600480360381019061088691906143d0565b611ead565b005b34801561089957600080fd5b506108b460048036038101906108af91906143a3565b611f84565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906143d0565b61200a565b005b3480156108eb57600080fd5b506108f46121b2565b005b34801561090257600080fd5b5061091d60048036038101906109189190614493565b6122c1565b005b6060600c805461092e9061456f565b80601f016020809104026020016040519081016040528092919081815260200182805461095a9061456f565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c1565b84846123c9565b6001905092915050565b6000600b54905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601860149054906101000a900460ff1681565b6000610a29848484612592565b610aea84610a356123c1565b610ae5856040518060600160405280602881526020016152f260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a9b6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b600190509392505050565b6000600a54821115610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390614612565b60405180910390fd5b6000610b46612973565b9050610b5b818461299e90919063ffffffff16565b915050919050565b6000600e54905090565b610b756123c1565b73ffffffffffffffffffffffffffffffffffffffff16610b936117dc565b73ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146ea565b60405180910390fd5b60005b600780549050811015610e9e578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610cb057610caf61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e8b5760076001600780549050610d0a9190614768565b81548110610d1b57610d1a61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610d5a57610d5961470a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610e5157610e5061479c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e9e565b8080610e96906147cb565b915050610c78565b5050565b6000610f4b610eaf6123c1565b84610f468560046000610ec06123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b6123c9565b6001905092915050565b60135481565b6000610f656123c1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614885565b60405180910390fd5b6000610fff836129ca565b5050505050905061105881600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b081600a54612a2690919063ffffffff16565b600a819055506110cb83600b546129b490919063ffffffff16565b600b81905550505050565b6110de6123c1565b73ffffffffffffffffffffffffffffffffffffffff166110fc6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111499061467e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb906148f1565b60405180910390fd5b81611214576000611204846129ca565b505050505090508091505061122b565b600061121f846129ca565b50505050915050809150505b92915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112726123c1565b73ffffffffffffffffffffffffffffffffffffffff166112906117dc565b73ffffffffffffffffffffffffffffffffffffffff16146112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061495d565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561144757611403600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115fc57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611647565b611644600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b90505b919050565b6116546123c1565b73ffffffffffffffffffffffffffffffffffffffff166116726117dc565b73ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d80546118149061456f565b80601f01602080910402602001604051908101604052809291908181526020018280546118409061456f565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b600061195a6118a46123c1565b846119558560405180606001604052806025815260200161531a60259139600460006118ce6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b6001905092915050565b60006119786119716123c1565b8484612592565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119b06123c1565b73ffffffffffffffffffffffffffffffffffffffff166119ce6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b9061467e565b60405180910390fd5b81601181905550806012819055506011546013819055506012546014819055506000611a5d6014546013546129b490919063ffffffff16565b90506000811115611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a906149c9565b60405180910390fd5b505050565b611ab06123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ace6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b9061467e565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b6d9190614291565b60405180910390a150565b60195481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0d6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611c2b6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061467e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690614a5b565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d2a9190614478565b602060405180830381865afa158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b9190614a90565b11611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290614b09565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611dcf6117dc565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e089190614478565b602060405180830381865afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190614a90565b6040518363ffffffff1660e01b8152600401611e66929190614b29565b6020604051808303816000875af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea99190614b67565b5050565b611eb56123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ed36117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f209061467e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8c6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611faa6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff79061467e565b60405180910390fd5b8060198190555050565b6120126123c1565b73ffffffffffffffffffffffffffffffffffffffff166120306117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614c06565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121ba6123c1565b73ffffffffffffffffffffffffffffffffffffffff166121d86117dc565b73ffffffffffffffffffffffffffffffffffffffff161461222e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122259061467e565b60405180910390fd5b60004711612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614c72565b60405180910390fd5b6122796117dc565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b50565b6122c96123c1565b73ffffffffffffffffffffffffffffffffffffffff166122e76117dc565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123349061467e565b60405180910390fd5b81600f8190555080601081905550600f5460138190555060105460148190555060006123766014546013546129b490919063ffffffff16565b905060008111156123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b3906149c9565b60405180910390fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90614d04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614d96565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258591906142bb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614eba565b60405180910390fd5b600081116126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90614f4c565b60405180910390fd5b60006126be30611561565b9050600060195482101590508080156126e45750601860149054906101000a900460ff16155b801561273e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750601860159054906101000a900460ff165b1561276a57601954915061276982612a3c565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128115750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281f576000905061290a565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361288b57600f54601381905550601054601481905550612909565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036128f757601154601381905550601254601481905550612908565b600060138190555060006014819055505b5b5b61291686868684612b12565b505050505050565b6000838311158290612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d919061417b565b60405180910390fd5b5082840390509392505050565b6000806000612980612e23565b91509150612997818361299e90919063ffffffff16565b9250505090565b600081836129ac9190614f9b565b905092915050565b600081836129c29190614fcc565b905092915050565b60008060008060008060008060006129e18a6130d6565b92509250925060008060006129ff8d86866129fa612973565b613130565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183612a349190614768565b905092915050565b6001601860146101000a81548160ff0219169083151502179055506000612a6d60028361299e90919063ffffffff16565b90506000612a848284612a2690919063ffffffff16565b90506000479050612a94836131b9565b6000612aa98247612a2690919063ffffffff16565b9050612ab583826133fc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612ae893929190615000565b60405180910390a1505050506000601860146101000a81548160ff02191690831515021790555050565b80612b2057612b1f6134dc565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bc35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bd857612bd3848484613500565b612e0f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c7b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c9057612c8b848484613760565b612e0e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d345750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4957612d448484846139c0565b612e0d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612deb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0057612dfb848484613b8b565b612e0c565b612e0b8484846139c0565b5b5b5b5b80612e1d57612e1c613e80565b5b50505050565b6000806000600a5490506000600954905060005b60078054905081101561309957826002600060078481548110612e5d57612e5c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612f4b5750816003600060078481548110612ee357612ee261470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612f6257600a54600954945094505050506130d2565b612ff26002600060078481548110612f7d57612f7c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a2690919063ffffffff16565b9250613084600360006007848154811061300f5761300e61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a2690919063ffffffff16565b91508080613091906147cb565b915050612e37565b506130b1600954600a5461299e90919063ffffffff16565b8210156130c957600a546009549350935050506130d2565b81819350935050505b9091565b6000806000806130e585613e94565b905060006130f286613ec5565b9050600061311b8261310d858a612a2690919063ffffffff16565b612a2690919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806131498589613ef690919063ffffffff16565b905060006131608689613ef690919063ffffffff16565b905060006131778789613ef690919063ffffffff16565b905060006131a0826131928587612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156131d6576131d5615037565b5b6040519080825280602002602001820160405280156132045781602001602082028036833780820191505090505b509050308160008151811061321c5761321b61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e7919061507b565b816001815181106132fb576132fa61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061336230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133c69594939291906151a1565b600060405180830381600087803b1580156133e057600080fd5b505af11580156133f4573d6000803e3d6000fd5b505050505050565b61342930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613492969594939291906151fb565b60606040518083038185885af11580156134b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134d5919061525c565b5050505050565b60135460158190555060145460168190555060006013819055506000601481905550565b600080600080600080613512876129ca565b95509550955095509550955061357087600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e681613f0c565b6136f084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161374d91906142bb565b60405180910390a3505050505050505050565b600080600080600080613772876129ca565b9550955095509550955095506137d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394681613f0c565b61395084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139ad91906142bb565b60405180910390a3505050505050505050565b6000806000806000806139d2876129ca565b955095509550955095509550613a3086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1181613f0c565b613b1b84836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b7891906142bb565b60405180910390a3505050505050505050565b600080600080600080613b9d876129ca565b955095509550955095509550613bfb87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0681613f0c565b613e1084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e6d91906142bb565b60405180910390a3505050505050505050565b601554601381905550601654601481905550565b6000613ebe6064613eb060135485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b6000613eef6064613ee160145485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b60008183613f0491906152af565b905092915050565b6000613f16612973565b90506000613f2d8284613ef690919063ffffffff16565b9050613f8181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ac5761406883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6140c682600a54612a2690919063ffffffff16565b600a819055506140e181600b546129b490919063ffffffff16565b600b819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561412557808201518184015260208101905061410a565b60008484015250505050565b6000601f19601f8301169050919050565b600061414d826140eb565b61415781856140f6565b9350614167818560208601614107565b61417081614131565b840191505092915050565b600060208201905081810360008301526141958184614142565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141cd826141a2565b9050919050565b6141dd816141c2565b81146141e857600080fd5b50565b6000813590506141fa816141d4565b92915050565b6000819050919050565b61421381614200565b811461421e57600080fd5b50565b6000813590506142308161420a565b92915050565b6000806040838503121561424d5761424c61419d565b5b600061425b858286016141eb565b925050602061426c85828601614221565b9150509250929050565b60008115159050919050565b61428b81614276565b82525050565b60006020820190506142a66000830184614282565b92915050565b6142b581614200565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6000819050919050565b60006142fb6142f66142f1846141a2565b6142d6565b6141a2565b9050919050565b600061430d826142e0565b9050919050565b600061431f82614302565b9050919050565b61432f81614314565b82525050565b600060208201905061434a6000830184614326565b92915050565b6000806000606084860312156143695761436861419d565b5b6000614377868287016141eb565b9350506020614388868287016141eb565b925050604061439986828701614221565b9150509250925092565b6000602082840312156143b9576143b861419d565b5b60006143c784828501614221565b91505092915050565b6000602082840312156143e6576143e561419d565b5b60006143f4848285016141eb565b91505092915050565b61440681614276565b811461441157600080fd5b50565b600081359050614423816143fd565b92915050565b600080604083850312156144405761443f61419d565b5b600061444e85828601614221565b925050602061445f85828601614414565b9150509250929050565b614472816141c2565b82525050565b600060208201905061448d6000830184614469565b92915050565b600080604083850312156144aa576144a961419d565b5b60006144b885828601614221565b92505060206144c985828601614221565b9150509250929050565b6000602082840312156144e9576144e861419d565b5b60006144f784828501614414565b91505092915050565b600080604083850312156145175761451661419d565b5b6000614525858286016141eb565b9250506020614536858286016141eb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458757607f821691505b60208210810361459a57614599614540565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145fc602a836140f6565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146686020836140f6565b915061467382614632565b602082019050919050565b600060208201905081810360008301526146978161465b565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006146d4601b836140f6565b91506146df8261469e565b602082019050919050565b60006020820190508181036000830152614703816146c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061477382614200565b915061477e83614200565b925082820390508181111561479657614795614739565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006147d682614200565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361480857614807614739565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b600061486f602c836140f6565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006148db601f836140f6565b91506148e6826148a5565b602082019050919050565b6000602082019050818103600083015261490a816148ce565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614947601b836140f6565b915061495282614911565b602082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f45524332303a2030252074617846656500000000000000000000000000000000600082015250565b60006149b36010836140f6565b91506149be8261497d565b602082019050919050565b600060208201905081810360008301526149e2816149a6565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b6000614a45602c836140f6565b9150614a50826149e9565b604082019050919050565b60006020820190508181036000830152614a7481614a38565b9050919050565b600081519050614a8a8161420a565b92915050565b600060208284031215614aa657614aa561419d565b5b6000614ab484828501614a7b565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b6000614af36010836140f6565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b6000604082019050614b3e6000830185614469565b614b4b60208301846142ac565b9392505050565b600081519050614b61816143fd565b92915050565b600060208284031215614b7d57614b7c61419d565b5b6000614b8b84828501614b52565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bf06026836140f6565b9150614bfb82614b94565b604082019050919050565b60006020820190508181036000830152614c1f81614be3565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000614c5c601f836140f6565b9150614c6782614c26565b602082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cee6024836140f6565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d806022836140f6565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e126025836140f6565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea46023836140f6565b9150614eaf82614e48565b604082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614f366029836140f6565b9150614f4182614eda565b604082019050919050565b60006020820190508181036000830152614f6581614f29565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614fa682614200565b9150614fb183614200565b925082614fc157614fc0614f6c565b5b828204905092915050565b6000614fd782614200565b9150614fe283614200565b9250828201905080821115614ffa57614ff9614739565b5b92915050565b600060608201905061501560008301866142ac565b61502260208301856142ac565b61502f60408301846142ac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615075816141d4565b92915050565b6000602082840312156150915761509061419d565b5b600061509f84828501615066565b91505092915050565b6000819050919050565b60006150cd6150c86150c3846150a8565b6142d6565b614200565b9050919050565b6150dd816150b2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615118816141c2565b82525050565b600061512a838361510f565b60208301905092915050565b6000602082019050919050565b600061514e826150e3565b61515881856150ee565b9350615163836150ff565b8060005b8381101561519457815161517b888261511e565b975061518683615136565b925050600181019050615167565b5085935050505092915050565b600060a0820190506151b660008301886142ac565b6151c360208301876150d4565b81810360408301526151d58186615143565b90506151e46060830185614469565b6151f160808301846142ac565b9695505050505050565b600060c0820190506152106000830189614469565b61521d60208301886142ac565b61522a60408301876150d4565b61523760608301866150d4565b6152446080830185614469565b61525160a08301846142ac565b979650505050505050565b6000806000606084860312156152755761527461419d565b5b600061528386828701614a7b565b935050602061529486828701614a7b565b92505060406152a586828701614a7b565b9150509250925092565b60006152ba82614200565b91506152c583614200565b92508282026152d381614200565b915082820484148315176152ea576152e9614739565b5b509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220737909708490498af5277a6ed1ea6da946ea9f47380f8a9943734c8e3e077cc864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80636bc87c3a11610123578063be291dc6116100ab578063ea2f0b371161006f578063ea2f0b3714610864578063f0f165af1461088d578063f2fde38b146108b6578063f5648a4f146108df578063f9dfdaeb146108f657610230565b8063be291dc614610781578063c49b9a80146107aa578063d12a7688146107d3578063dd62ed3e146107fe578063e083e9221461083b57610230565b80638da5cb5b116100f25780638da5cb5b1461068657806395d89b41146106b1578063a457c2d7146106dc578063a9059cbb14610719578063bd3900c01461075657610230565b80636bc87c3a146105ca57806370a08231146105f5578063715018a61461063257806388f820201461064957610230565b80633685d419116101b15780634549b039116101755780634549b039146104d157806349bd5a5e1461050e5780634a74bb021461053957806352390c02146105645780635342acb41461058d57610230565b80633685d419146103ee57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b806318160ddd116101f857806318160ddd146102f3578063220f66961461031e57806323b872dd146103495780632d83811914610386578063313ce567146103c357610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61091f565b604051610257919061417b565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190614236565b6109b1565b6040516102949190614291565b60405180910390f35b3480156102a957600080fd5b506102b26109cf565b6040516102bf91906142bb565b60405180910390f35b3480156102d457600080fd5b506102dd6109d9565b6040516102ea9190614335565b60405180910390f35b3480156102ff57600080fd5b506103086109ff565b60405161031591906142bb565b60405180910390f35b34801561032a57600080fd5b50610333610a09565b6040516103409190614291565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614350565b610a1c565b60405161037d9190614291565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a891906143a3565b610af5565b6040516103ba91906142bb565b60405180910390f35b3480156103cf57600080fd5b506103d8610b63565b6040516103e591906142bb565b60405180910390f35b3480156103fa57600080fd5b50610415600480360381019061041091906143d0565b610b6d565b005b34801561042357600080fd5b5061043e60048036038101906104399190614236565b610ea2565b60405161044b9190614291565b60405180910390f35b34801561046057600080fd5b50610469610f55565b60405161047691906142bb565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906143a3565b610f5b565b005b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d0565b6110d6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190614429565b6111ad565b60405161050591906142bb565b60405180910390f35b34801561051a57600080fd5b50610523611231565b6040516105309190614478565b60405180910390f35b34801561054557600080fd5b5061054e611257565b60405161055b9190614291565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906143d0565b61126a565b005b34801561059957600080fd5b506105b460048036038101906105af91906143d0565b611505565b6040516105c19190614291565b60405180910390f35b3480156105d657600080fd5b506105df61155b565b6040516105ec91906142bb565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906143d0565b611561565b60405161062991906142bb565b60405180910390f35b34801561063e57600080fd5b5061064761164c565b005b34801561065557600080fd5b50610670600480360381019061066b91906143d0565b611786565b60405161067d9190614291565b60405180910390f35b34801561069257600080fd5b5061069b6117dc565b6040516106a89190614478565b60405180910390f35b3480156106bd57600080fd5b506106c6611805565b6040516106d3919061417b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614236565b611897565b6040516107109190614291565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614236565b611964565b60405161074d9190614291565b60405180910390f35b34801561076257600080fd5b5061076b611982565b6040516107789190614478565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614493565b6119a8565b005b3480156107b657600080fd5b506107d160048036038101906107cc91906144d3565b611aa8565b005b3480156107df57600080fd5b506107e8611b78565b6040516107f591906142bb565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614500565b611b7e565b60405161083291906142bb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906143d0565b611c05565b005b34801561087057600080fd5b5061088b600480360381019061088691906143d0565b611ead565b005b34801561089957600080fd5b506108b460048036038101906108af91906143a3565b611f84565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906143d0565b61200a565b005b3480156108eb57600080fd5b506108f46121b2565b005b34801561090257600080fd5b5061091d60048036038101906109189190614493565b6122c1565b005b6060600c805461092e9061456f565b80601f016020809104026020016040519081016040528092919081815260200182805461095a9061456f565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c1565b84846123c9565b6001905092915050565b6000600b54905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601860149054906101000a900460ff1681565b6000610a29848484612592565b610aea84610a356123c1565b610ae5856040518060600160405280602881526020016152f260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a9b6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b600190509392505050565b6000600a54821115610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390614612565b60405180910390fd5b6000610b46612973565b9050610b5b818461299e90919063ffffffff16565b915050919050565b6000600e54905090565b610b756123c1565b73ffffffffffffffffffffffffffffffffffffffff16610b936117dc565b73ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146ea565b60405180910390fd5b60005b600780549050811015610e9e578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610cb057610caf61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e8b5760076001600780549050610d0a9190614768565b81548110610d1b57610d1a61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610d5a57610d5961470a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610e5157610e5061479c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e9e565b8080610e96906147cb565b915050610c78565b5050565b6000610f4b610eaf6123c1565b84610f468560046000610ec06123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b6123c9565b6001905092915050565b60135481565b6000610f656123c1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614885565b60405180910390fd5b6000610fff836129ca565b5050505050905061105881600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b081600a54612a2690919063ffffffff16565b600a819055506110cb83600b546129b490919063ffffffff16565b600b81905550505050565b6110de6123c1565b73ffffffffffffffffffffffffffffffffffffffff166110fc6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111499061467e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb906148f1565b60405180910390fd5b81611214576000611204846129ca565b505050505090508091505061122b565b600061121f846129ca565b50505050915050809150505b92915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112726123c1565b73ffffffffffffffffffffffffffffffffffffffff166112906117dc565b73ffffffffffffffffffffffffffffffffffffffff16146112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061495d565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561144757611403600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115fc57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611647565b611644600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b90505b919050565b6116546123c1565b73ffffffffffffffffffffffffffffffffffffffff166116726117dc565b73ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d80546118149061456f565b80601f01602080910402602001604051908101604052809291908181526020018280546118409061456f565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b600061195a6118a46123c1565b846119558560405180606001604052806025815260200161531a60259139600460006118ce6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b6001905092915050565b60006119786119716123c1565b8484612592565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119b06123c1565b73ffffffffffffffffffffffffffffffffffffffff166119ce6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b9061467e565b60405180910390fd5b81601181905550806012819055506011546013819055506012546014819055506000611a5d6014546013546129b490919063ffffffff16565b90506000811115611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a906149c9565b60405180910390fd5b505050565b611ab06123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ace6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b9061467e565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b6d9190614291565b60405180910390a150565b60195481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0d6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611c2b6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061467e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690614a5b565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d2a9190614478565b602060405180830381865afa158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b9190614a90565b11611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290614b09565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611dcf6117dc565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e089190614478565b602060405180830381865afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190614a90565b6040518363ffffffff1660e01b8152600401611e66929190614b29565b6020604051808303816000875af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea99190614b67565b5050565b611eb56123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ed36117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f209061467e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8c6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611faa6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff79061467e565b60405180910390fd5b8060198190555050565b6120126123c1565b73ffffffffffffffffffffffffffffffffffffffff166120306117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614c06565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121ba6123c1565b73ffffffffffffffffffffffffffffffffffffffff166121d86117dc565b73ffffffffffffffffffffffffffffffffffffffff161461222e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122259061467e565b60405180910390fd5b60004711612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614c72565b60405180910390fd5b6122796117dc565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b50565b6122c96123c1565b73ffffffffffffffffffffffffffffffffffffffff166122e76117dc565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123349061467e565b60405180910390fd5b81600f8190555080601081905550600f5460138190555060105460148190555060006123766014546013546129b490919063ffffffff16565b905060008111156123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b3906149c9565b60405180910390fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90614d04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614d96565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258591906142bb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614eba565b60405180910390fd5b600081116126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90614f4c565b60405180910390fd5b60006126be30611561565b9050600060195482101590508080156126e45750601860149054906101000a900460ff16155b801561273e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750601860159054906101000a900460ff165b1561276a57601954915061276982612a3c565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128115750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281f576000905061290a565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361288b57600f54601381905550601054601481905550612909565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036128f757601154601381905550601254601481905550612908565b600060138190555060006014819055505b5b5b61291686868684612b12565b505050505050565b6000838311158290612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d919061417b565b60405180910390fd5b5082840390509392505050565b6000806000612980612e23565b91509150612997818361299e90919063ffffffff16565b9250505090565b600081836129ac9190614f9b565b905092915050565b600081836129c29190614fcc565b905092915050565b60008060008060008060008060006129e18a6130d6565b92509250925060008060006129ff8d86866129fa612973565b613130565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183612a349190614768565b905092915050565b6001601860146101000a81548160ff0219169083151502179055506000612a6d60028361299e90919063ffffffff16565b90506000612a848284612a2690919063ffffffff16565b90506000479050612a94836131b9565b6000612aa98247612a2690919063ffffffff16565b9050612ab583826133fc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612ae893929190615000565b60405180910390a1505050506000601860146101000a81548160ff02191690831515021790555050565b80612b2057612b1f6134dc565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bc35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bd857612bd3848484613500565b612e0f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c7b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c9057612c8b848484613760565b612e0e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d345750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4957612d448484846139c0565b612e0d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612deb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0057612dfb848484613b8b565b612e0c565b612e0b8484846139c0565b5b5b5b5b80612e1d57612e1c613e80565b5b50505050565b6000806000600a5490506000600954905060005b60078054905081101561309957826002600060078481548110612e5d57612e5c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612f4b5750816003600060078481548110612ee357612ee261470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612f6257600a54600954945094505050506130d2565b612ff26002600060078481548110612f7d57612f7c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a2690919063ffffffff16565b9250613084600360006007848154811061300f5761300e61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a2690919063ffffffff16565b91508080613091906147cb565b915050612e37565b506130b1600954600a5461299e90919063ffffffff16565b8210156130c957600a546009549350935050506130d2565b81819350935050505b9091565b6000806000806130e585613e94565b905060006130f286613ec5565b9050600061311b8261310d858a612a2690919063ffffffff16565b612a2690919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806131498589613ef690919063ffffffff16565b905060006131608689613ef690919063ffffffff16565b905060006131778789613ef690919063ffffffff16565b905060006131a0826131928587612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156131d6576131d5615037565b5b6040519080825280602002602001820160405280156132045781602001602082028036833780820191505090505b509050308160008151811061321c5761321b61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e7919061507b565b816001815181106132fb576132fa61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061336230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133c69594939291906151a1565b600060405180830381600087803b1580156133e057600080fd5b505af11580156133f4573d6000803e3d6000fd5b505050505050565b61342930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613492969594939291906151fb565b60606040518083038185885af11580156134b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134d5919061525c565b5050505050565b60135460158190555060145460168190555060006013819055506000601481905550565b600080600080600080613512876129ca565b95509550955095509550955061357087600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e681613f0c565b6136f084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161374d91906142bb565b60405180910390a3505050505050505050565b600080600080600080613772876129ca565b9550955095509550955095506137d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394681613f0c565b61395084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139ad91906142bb565b60405180910390a3505050505050505050565b6000806000806000806139d2876129ca565b955095509550955095509550613a3086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1181613f0c565b613b1b84836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b7891906142bb565b60405180910390a3505050505050505050565b600080600080600080613b9d876129ca565b955095509550955095509550613bfb87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0681613f0c565b613e1084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e6d91906142bb565b60405180910390a3505050505050505050565b601554601381905550601654601481905550565b6000613ebe6064613eb060135485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b6000613eef6064613ee160145485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b60008183613f0491906152af565b905092915050565b6000613f16612973565b90506000613f2d8284613ef690919063ffffffff16565b9050613f8181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ac5761406883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6140c682600a54612a2690919063ffffffff16565b600a819055506140e181600b546129b490919063ffffffff16565b600b819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561412557808201518184015260208101905061410a565b60008484015250505050565b6000601f19601f8301169050919050565b600061414d826140eb565b61415781856140f6565b9350614167818560208601614107565b61417081614131565b840191505092915050565b600060208201905081810360008301526141958184614142565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141cd826141a2565b9050919050565b6141dd816141c2565b81146141e857600080fd5b50565b6000813590506141fa816141d4565b92915050565b6000819050919050565b61421381614200565b811461421e57600080fd5b50565b6000813590506142308161420a565b92915050565b6000806040838503121561424d5761424c61419d565b5b600061425b858286016141eb565b925050602061426c85828601614221565b9150509250929050565b60008115159050919050565b61428b81614276565b82525050565b60006020820190506142a66000830184614282565b92915050565b6142b581614200565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6000819050919050565b60006142fb6142f66142f1846141a2565b6142d6565b6141a2565b9050919050565b600061430d826142e0565b9050919050565b600061431f82614302565b9050919050565b61432f81614314565b82525050565b600060208201905061434a6000830184614326565b92915050565b6000806000606084860312156143695761436861419d565b5b6000614377868287016141eb565b9350506020614388868287016141eb565b925050604061439986828701614221565b9150509250925092565b6000602082840312156143b9576143b861419d565b5b60006143c784828501614221565b91505092915050565b6000602082840312156143e6576143e561419d565b5b60006143f4848285016141eb565b91505092915050565b61440681614276565b811461441157600080fd5b50565b600081359050614423816143fd565b92915050565b600080604083850312156144405761443f61419d565b5b600061444e85828601614221565b925050602061445f85828601614414565b9150509250929050565b614472816141c2565b82525050565b600060208201905061448d6000830184614469565b92915050565b600080604083850312156144aa576144a961419d565b5b60006144b885828601614221565b92505060206144c985828601614221565b9150509250929050565b6000602082840312156144e9576144e861419d565b5b60006144f784828501614414565b91505092915050565b600080604083850312156145175761451661419d565b5b6000614525858286016141eb565b9250506020614536858286016141eb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458757607f821691505b60208210810361459a57614599614540565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145fc602a836140f6565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146686020836140f6565b915061467382614632565b602082019050919050565b600060208201905081810360008301526146978161465b565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006146d4601b836140f6565b91506146df8261469e565b602082019050919050565b60006020820190508181036000830152614703816146c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061477382614200565b915061477e83614200565b925082820390508181111561479657614795614739565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006147d682614200565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361480857614807614739565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b600061486f602c836140f6565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006148db601f836140f6565b91506148e6826148a5565b602082019050919050565b6000602082019050818103600083015261490a816148ce565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614947601b836140f6565b915061495282614911565b602082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f45524332303a2030252074617846656500000000000000000000000000000000600082015250565b60006149b36010836140f6565b91506149be8261497d565b602082019050919050565b600060208201905081810360008301526149e2816149a6565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b6000614a45602c836140f6565b9150614a50826149e9565b604082019050919050565b60006020820190508181036000830152614a7481614a38565b9050919050565b600081519050614a8a8161420a565b92915050565b600060208284031215614aa657614aa561419d565b5b6000614ab484828501614a7b565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b6000614af36010836140f6565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b6000604082019050614b3e6000830185614469565b614b4b60208301846142ac565b9392505050565b600081519050614b61816143fd565b92915050565b600060208284031215614b7d57614b7c61419d565b5b6000614b8b84828501614b52565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bf06026836140f6565b9150614bfb82614b94565b604082019050919050565b60006020820190508181036000830152614c1f81614be3565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000614c5c601f836140f6565b9150614c6782614c26565b602082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cee6024836140f6565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d806022836140f6565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e126025836140f6565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea46023836140f6565b9150614eaf82614e48565b604082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614f366029836140f6565b9150614f4182614eda565b604082019050919050565b60006020820190508181036000830152614f6581614f29565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614fa682614200565b9150614fb183614200565b925082614fc157614fc0614f6c565b5b828204905092915050565b6000614fd782614200565b9150614fe283614200565b9250828201905080821115614ffa57614ff9614739565b5b92915050565b600060608201905061501560008301866142ac565b61502260208301856142ac565b61502f60408301846142ac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615075816141d4565b92915050565b6000602082840312156150915761509061419d565b5b600061509f84828501615066565b91505092915050565b6000819050919050565b60006150cd6150c86150c3846150a8565b6142d6565b614200565b9050919050565b6150dd816150b2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615118816141c2565b82525050565b600061512a838361510f565b60208301905092915050565b6000602082019050919050565b600061514e826150e3565b61515881856150ee565b9350615163836150ff565b8060005b8381101561519457815161517b888261511e565b975061518683615136565b925050600181019050615167565b5085935050505092915050565b600060a0820190506151b660008301886142ac565b6151c360208301876150d4565b81810360408301526151d58186615143565b90506151e46060830185614469565b6151f160808301846142ac565b9695505050505050565b600060c0820190506152106000830189614469565b61521d60208301886142ac565b61522a60408301876150d4565b61523760608301866150d4565b6152446080830185614469565b61525160a08301846142ac565b979650505050505050565b6000806000606084860312156152755761527461419d565b5b600061528386828701614a7b565b935050602061529486828701614a7b565b92505060406152a586828701614a7b565b9150509250925092565b60006152ba82614200565b91506152c583614200565b92508282026152d381614200565b915082820484148315176152ea576152e9614739565b5b509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220737909708490498af5277a6ed1ea6da946ea9f47380f8a9943734c8e3e077cc864736f6c63430008110033

Deployed Bytecode Sourcemap

8222:19847:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10651:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11638:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13137:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9347:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10930:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9430:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11839:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14145:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10837:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14815:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12293:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9139:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13232:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16065:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13659:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9395:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9465:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14475:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21240:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9181:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11033:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6616:148;;;;;;;;;;;;;:::i;:::-;;13009:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10742;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12601:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11239:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8629:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16302:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17198:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9512:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11446:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27725:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16184:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17033:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6772:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27523:194;;;;;;;;;;;;;:::i;:::-;;16668:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10651:83;10688:13;10721:5;10714:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10651:83;:::o;11638:193::-;11740:4;11762:39;11771:12;:10;:12::i;:::-;11785:7;11794:6;11762:8;:39::i;:::-;11819:4;11812:11;;11638:193;;;;:::o;13137:87::-;13179:7;13206:10;;13199:17;;13137:87;:::o;9347:41::-;;;;;;;;;;;;;:::o;10930:95::-;10983:7;11010;;11003:14;;10930:95;:::o;9430:28::-;;;;;;;;;;;;;:::o;11839:446::-;11971:4;11988:36;11998:6;12006:9;12017:6;11988:9;:36::i;:::-;12035:220;12058:6;12079:12;:10;:12::i;:::-;12106:138;12162:6;12106:138;;;;;;;;;;;;;;;;;:11;:19;12118:6;12106:19;;;;;;;;;;;;;;;:33;12126:12;:10;:12::i;:::-;12106:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;12035:8;:220::i;:::-;12273:4;12266:11;;11839:446;;;;;:::o;14145:322::-;14239:7;14297;;14286;:18;;14264:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;14385:19;14407:10;:8;:10::i;:::-;14385:32;;14435:24;14447:11;14435:7;:11;;:24;;;;:::i;:::-;14428:31;;;14145:322;;;:::o;10837:85::-;10878:7;10905:9;;10898:16;;10837:85;:::o;14815:477::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14895:11:::1;:20;14907:7;14895:20;;;;;;;;;;;;;;;;;;;;;;;;;14887:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14963:9;14958:327;14982:9;:16;;;;14978:1;:20;14958:327;;;15040:7;15024:23;;:9;15034:1;15024:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;15020:254:::1;;15083:9;15112:1;15093:9;:16;;;;:20;;;;:::i;:::-;15083:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15068:9;15078:1;15068:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15152:1;15133:7;:16;15141:7;15133:16;;;;;;;;;;;;;;;:20;;;;15195:5;15172:11;:20;15184:7;15172:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15219:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15253:5;;15020:254;15000:3;;;;;:::i;:::-;;;;14958:327;;;;14815:477:::0;:::o;12293:300::-;12408:4;12430:133;12453:12;:10;:12::i;:::-;12480:7;12502:50;12541:10;12502:11;:25;12514:12;:10;:12::i;:::-;12502:25;;;;;;;;;;;;;;;:34;12528:7;12502:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12430:8;:133::i;:::-;12581:4;12574:11;;12293:300;;;;:::o;9139:35::-;;;;:::o;13232:419::-;13284:14;13301:12;:10;:12::i;:::-;13284:29;;13347:11;:19;13359:6;13347:19;;;;;;;;;;;;;;;;;;;;;;;;;13346:20;13324:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;13450:15;13479:19;13490:7;13479:10;:19::i;:::-;13449:49;;;;;;;13527:28;13547:7;13527;:15;13535:6;13527:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13509:7;:15;13517:6;13509:15;;;;;;;;;;;;;;;:46;;;;13576:20;13588:7;13576;;:11;;:20;;;;:::i;:::-;13566:7;:30;;;;13620:23;13635:7;13620:10;;:14;;:23;;;;:::i;:::-;13607:10;:36;;;;13273:378;;13232:419;:::o;16065:111::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16164:4:::1;16134:18;:27;16153:7;16134:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16065:111:::0;:::o;13659:478::-;13777:7;13821;;13810;:18;;13802:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:17;13875:255;;13915:15;13944:19;13955:7;13944:10;:19::i;:::-;13914:49;;;;;;;13985:7;13978:14;;;;;13875:255;14028:23;14062:19;14073:7;14062:10;:19::i;:::-;14025:56;;;;;;;14103:15;14096:22;;;13659:478;;;;;:::o;9395:28::-;;;;;;;;;;;;;:::o;9465:40::-;;;;;;;;;;;;;:::o;14475:332::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14556:11:::1;:20;14568:7;14556:20;;;;;;;;;;;;;;;;;;;;;;;;;14555:21;14547:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14642:1;14623:7;:16;14631:7;14623:16;;;;;;;;;;;;;;;;:20;14619:109;;;14679:37;14699:7;:16;14707:7;14699:16;;;;;;;;;;;;;;;;14679:19;:37::i;:::-;14660:7;:16;14668:7;14660:16;;;;;;;;;;;;;;;:56;;;;14619:109;14761:4;14738:11;:20;14750:7;14738:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14776:9;14791:7;14776:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14475:332:::0;:::o;21240:124::-;21305:4;21329:18;:27;21348:7;21329:27;;;;;;;;;;;;;;;;;;;;;;;;;21322:34;;21240:124;;;:::o;9181:47::-;;;;:::o;11033:198::-;11099:7;11123:11;:20;11135:7;11123:20;;;;;;;;;;;;;;;;;;;;;;;;;11119:49;;;11152:7;:16;11160:7;11152:16;;;;;;;;;;;;;;;;11145:23;;;;11119:49;11186:37;11206:7;:16;11214:7;11206:16;;;;;;;;;;;;;;;;11186:19;:37::i;:::-;11179:44;;11033:198;;;;:::o;6616:148::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6723:1:::1;6686:40;;6707:6;::::0;::::1;;;;;;;;6686:40;;;;;;;;;;;;6754:1;6737:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6616:148::o:0;13009:120::-;13077:4;13101:11;:20;13113:7;13101:20;;;;;;;;;;;;;;;;;;;;;;;;;13094:27;;13009:120;;;:::o;6393:87::-;6439:7;6466:6;;;;;;;;;;;6459:13;;6393:87;:::o;10742:::-;10781:13;10814:7;10807:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10742:87;:::o;12601:400::-;12721:4;12743:228;12766:12;:10;:12::i;:::-;12793:7;12815:145;12872:15;12815:145;;;;;;;;;;;;;;;;;:11;:25;12827:12;:10;:12::i;:::-;12815:25;;;;;;;;;;;;;;;:34;12841:7;12815:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;12743:8;:228::i;:::-;12989:4;12982:11;;12601:400;;;;:::o;11239:199::-;11344:4;11366:42;11376:12;:10;:12::i;:::-;11390:9;11401:6;11366:9;:42::i;:::-;11426:4;11419:11;;11239:199;;;;:::o;8629:72::-;;;;;;;;;;;;;:::o;16302:358::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16434:4:::1;16420:11;:18;;;;16469:4;16449:17;:24;;;;16494:11;;16484:7;:21;;;;16532:17;;16516:13;:33;;;;16560:12;16575:26;16587:13;;16575:7;;:11;;:26;;;;:::i;:::-;16560:41;;16628:1;16620:4;:9;;16612:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16409:251;16302:358:::0;;:::o;17198:173::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17301:8:::1;17277:21;;:32;;;;;;;;;;;;;;;;;;17325:38;17354:8;17325:38;;;;;;:::i;:::-;;;;;;;;17198:173:::0;:::o;9512:44::-;;;;:::o;11446:184::-;11563:7;11595:11;:18;11607:5;11595:18;;;;;;;;;;;;;;;:27;11614:7;11595:27;;;;;;;;;;;;;;;;11588:34;;11446:184;;;;:::o;27725:339::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27827:4:::1;27807:25;;:8;:25;;::::0;27799:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27944:1;27907:8;27900:26;;;27935:4;27900:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;27892:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27986:8;27979:25;;;28005:7;:5;:7::i;:::-;28021:8;28014:26;;;28049:4;28014:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27979:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27725:339:::0;:::o;16184:110::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16281:5:::1;16251:18;:27;16270:7;16251:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16184:110:::0;:::o;17033:157::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17176:6:::1;17144:29;:38;;;;17033:157:::0;:::o;6772:281::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6895:1:::1;6875:22;;:8;:22;;::::0;6853:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7008:8;6979:38;;7000:6;::::0;::::1;;;;;;;;6979:38;;;;;;;;;;;;7037:8;7028:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6772:281:::0;:::o;27523:194::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27613:1:::1;27589:21;:25;27580:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27669:7;:5;:7::i;:::-;27661:25;;:48;27687:21;27661:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27523:194::o:0;16668:353::-;6539:12;:10;:12::i;:::-;6528:23;;:7;:5;:7::i;:::-;:23;;;6520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16798:4:::1;16785:10;:17;;;;16832:4;16813:16;:23;;;;16857:10;;16847:7;:20;;;;16894:16;;16878:13;:32;;;;16921:12;16936:26;16948:13;;16936:7;;:11;;:26;;;;:::i;:::-;16921:41;;16989:1;16981:4;:9;;16973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16774:247;16668:353:::0;;:::o;5815:98::-;5868:7;5895:10;5888:17;;5815:98;:::o;21372:371::-;21516:1;21499:19;;:5;:19;;;21491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21597:1;21578:21;;:7;:21;;;21570:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21681:6;21651:11;:18;21663:5;21651:18;;;;;;;;;;;;;;;:27;21670:7;21651:27;;;;;;;;;;;;;;;:36;;;;21719:7;21703:32;;21712:5;21703:32;;;21728:6;21703:32;;;;;;:::i;:::-;;;;;;;;21372:371;;;:::o;21751:1475::-;21889:1;21873:18;;:4;:18;;;21865:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21966:1;21952:16;;:2;:16;;;21944:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22036:1;22027:6;:10;22019:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22096:28;22127:24;22145:4;22127:9;:24::i;:::-;22096:55;;22164:24;22228:29;;22191:20;:66;;22164:93;;22286:19;:53;;;;;22323:16;;;;;;;;;;;22322:17;22286:53;:91;;;;;22364:13;;;;;;;;;;;22356:21;;:4;:21;;;;22286:91;:129;;;;;22394:21;;;;;;;;;;;22286:129;22268:289;;;22465:29;;22442:52;;22509:36;22524:20;22509:14;:36::i;:::-;22268:289;22569:12;22584:4;22569:19;;22603:18;:24;22622:4;22603:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;22631:18;:22;22650:2;22631:22;;;;;;;;;;;;;;;;;;;;;;;;;22603:50;22599:568;;;22680:5;22670:15;;22599:568;;;22730:13;;;;;;;;;;;22722:21;;:4;:21;;;22718:438;;22798:10;;22788:7;:20;;;;22843:16;;22827:13;:32;;;;22718:438;;;22891:13;;;;;;;;;;;22885:19;;:2;:19;;;22881:275;;22960:11;;22950:7;:21;;;;23006:17;;22990:13;:33;;;;22881:275;;;23103:1;23093:7;:11;;;;23139:1;23123:13;:17;;;;22881:275;22718:438;22599:568;23177:41;23192:4;23198:2;23202:6;23210:7;23177:14;:41::i;:::-;21854:1372;;;21751:1475;;;:::o;5288:240::-;5408:7;5466:1;5461;:6;;5469:12;5453:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5508:1;5504;:5;5497:12;;5288:240;;;;;:::o;19359:164::-;19401:7;19422:15;19439;19458:19;:17;:19::i;:::-;19421:56;;;;19495:20;19507:7;19495;:11;;:20;;;;:::i;:::-;19488:27;;;;19359:164;:::o;5076:98::-;5134:7;5165:1;5161;:5;;;;:::i;:::-;5154:12;;5076:98;;;;:::o;4758:::-;4816:7;4847:1;4843;:5;;;;:::i;:::-;4836:12;;4758:98;;;;:::o;17627:742::-;17727:7;17749;17771;17793;17815;17837;17887:23;17925:12;17952:18;17984:20;17996:7;17984:11;:20::i;:::-;17872:132;;;;;;18016:15;18033:23;18058:12;18074:113;18100:7;18122:4;18141:10;18166;:8;:10::i;:::-;18074:11;:113::i;:::-;18015:172;;;;;;18220:7;18242:15;18272:4;18291:15;18321:4;18340:10;18198:163;;;;;;;;;;;;;;;;;;17627:742;;;;;;;:::o;4864:98::-;4922:7;4953:1;4949;:5;;;;:::i;:::-;4942:12;;4864:98;;;;:::o;23234:465::-;9874:4;9855:16;;:23;;;;;;;;;;;;;;;;;;23319:12:::1;23334:27;23359:1;23334:20;:24;;:27;;;;:::i;:::-;23319:42;;23372:17;23392:30;23417:4;23392:20;:24;;:30;;;;:::i;:::-;23372:50;;23433:22;23458:21;23433:46;;23490:22;23507:4;23490:16;:22::i;:::-;23524:18;23545:41;23571:14;23545:21;:25;;:41;;;;:::i;:::-;23524:62;;23597:35;23610:9;23621:10;23597:12;:35::i;:::-;23648:43;23663:4;23669:10;23681:9;23648:43;;;;;;;;:::i;:::-;;;;;;;;23308:391;;;;9920:5:::0;9901:16;;:24;;;;;;;;;;;;;;;;;;23234:465;:::o;24644:838::-;24800:7;24795:28;;24809:14;:12;:14::i;:::-;24795:28;24840:11;:19;24852:6;24840:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;24864:11;:22;24876:9;24864:22;;;;;;;;;;;;;;;;;;;;;;;;;24863:23;24840:46;24836:597;;;24903:48;24925:6;24933:9;24944:6;24903:21;:48::i;:::-;24836:597;;;24974:11;:19;24986:6;24974:19;;;;;;;;;;;;;;;;;;;;;;;;;24973:20;:46;;;;;24997:11;:22;25009:9;24997:22;;;;;;;;;;;;;;;;;;;;;;;;;24973:46;24969:464;;;25036:46;25056:6;25064:9;25075:6;25036:19;:46::i;:::-;24969:464;;;25105:11;:19;25117:6;25105:19;;;;;;;;;;;;;;;;;;;;;;;;;25104:20;:47;;;;;25129:11;:22;25141:9;25129:22;;;;;;;;;;;;;;;;;;;;;;;;;25128:23;25104:47;25100:333;;;25168:44;25186:6;25194:9;25205:6;25168:17;:44::i;:::-;25100:333;;;25234:11;:19;25246:6;25234:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25257:11;:22;25269:9;25257:22;;;;;;;;;;;;;;;;;;;;;;;;;25234:45;25230:203;;;25296:48;25318:6;25326:9;25337:6;25296:21;:48::i;:::-;25230:203;;;25377:44;25395:6;25403:9;25414:6;25377:17;:44::i;:::-;25230:203;25100:333;24969:464;24836:597;25450:7;25445:29;;25459:15;:13;:15::i;:::-;25445:29;24644:838;;;;:::o;19531:605::-;19582:7;19591;19611:15;19629:7;;19611:25;;19647:15;19665:7;;19647:25;;19688:9;19683:338;19707:9;:16;;;;19703:1;:20;19683:338;;;19791:7;19767;:21;19775:9;19785:1;19775:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19767:21;;;;;;;;;;;;;;;;:31;:83;;;;19843:7;19819;:21;19827:9;19837:1;19827:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19819:21;;;;;;;;;;;;;;;;:31;19767:83;19745:146;;;19874:7;;19883;;19866:25;;;;;;;;;19745:146;19916:34;19928:7;:21;19936:9;19946:1;19936:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19928:21;;;;;;;;;;;;;;;;19916:7;:11;;:34;;;;:::i;:::-;19906:44;;19975:34;19987:7;:21;19995:9;20005:1;19995:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19987:21;;;;;;;;;;;;;;;;19975:7;:11;;:34;;;;:::i;:::-;19965:44;;19725:3;;;;;:::i;:::-;;;;19683:338;;;;20045:20;20057:7;;20045;;:11;;:20;;;;:::i;:::-;20035:7;:30;20031:61;;;20075:7;;20084;;20067:25;;;;;;;;20031:61;20111:7;20120;20103:25;;;;;;19531:605;;;:::o;18377:412::-;18478:7;18500;18522;18557:12;18572:24;18588:7;18572:15;:24::i;:::-;18557:39;;18607:18;18628:30;18650:7;18628:21;:30::i;:::-;18607:51;;18669:23;18695:33;18717:10;18695:17;18707:4;18695:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;18669:59;;18747:15;18764:4;18770:10;18739:42;;;;;;;;;18377:412;;;;;:::o;18797:554::-;18996:7;19018;19040;19075:15;19093:24;19105:11;19093:7;:11;;:24;;;;:::i;:::-;19075:42;;19128:12;19143:21;19152:11;19143:4;:8;;:21;;;;:::i;:::-;19128:36;;19175:18;19196:27;19211:11;19196:10;:14;;:27;;;;:::i;:::-;19175:48;;19234:23;19260:33;19282:10;19260:17;19272:4;19260:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;19234:59;;19312:7;19321:15;19338:4;19304:39;;;;;;;;;;18797:554;;;;;;;;:::o;23707:499::-;23773:21;23811:1;23797:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23773:40;;23842:4;23824;23829:1;23824:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23868:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23858:4;23863:1;23858:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23901:62;23918:4;23933:15;;;;;;;;;;;23951:11;23901:8;:62::i;:::-;23974:15;;;;;;;;;;;:66;;;24055:11;24081:1;24125:4;24152;24172:15;23974:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23762:444;23707:499;:::o;24214:422::-;24295:62;24312:4;24327:15;;;;;;;;;;;24345:11;24295:8;:62::i;:::-;24368:15;;;;;;;;;;;:31;;;24407:9;24440:4;24460:11;24486:1;24529;24580:6;24602:15;24368:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24214:422;;:::o;20923:176::-;20984:7;;20966:15;:25;;;;21026:13;;21002:21;:37;;;;21062:1;21052:7;:11;;;;21090:1;21074:13;:17;;;;20923:176::o;26829:686::-;26980:15;27010:23;27048:12;27075:23;27113:12;27140:18;27172:19;27183:7;27172:10;:19::i;:::-;26965:226;;;;;;;;;;;;27220:28;27240:7;27220;:15;27228:6;27220:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27202:7;:15;27210:6;27202:15;;;;;;;;;;;;;;;:46;;;;27277:28;27297:7;27277;:15;27285:6;27277:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27259:7;:15;27267:6;27259:15;;;;;;;;;;;;;;;:46;;;;27337:39;27360:15;27337:7;:18;27345:9;27337:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27316:7;:18;27324:9;27316:18;;;;;;;;;;;;;;;:60;;;;27387:26;27402:10;27387:14;:26::i;:::-;27424:23;27436:4;27442;27424:11;:23::i;:::-;27480:9;27463:44;;27472:6;27463:44;;;27491:15;27463:44;;;;;;:::i;:::-;;;;;;;;26954:561;;;;;;26829:686;;;:::o;26123:698::-;26272:15;26302:23;26340:12;26367:23;26405:12;26432:18;26464:19;26475:7;26464:10;:19::i;:::-;26257:226;;;;;;;;;;;;26512:28;26532:7;26512;:15;26520:6;26512:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26494:7;:15;26502:6;26494:15;;;;;;;;;;;;;;;:46;;;;26572:39;26595:15;26572:7;:18;26580:9;26572:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26551:7;:18;26559:9;26551:18;;;;;;;;;;;;;;;:60;;;;26643:39;26666:15;26643:7;:18;26651:9;26643:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26622:7;:18;26630:9;26622:18;;;;;;;;;;;;;;;:60;;;;26693:26;26708:10;26693:14;:26::i;:::-;26730:23;26742:4;26748;26730:11;:23::i;:::-;26786:9;26769:44;;26778:6;26769:44;;;26797:15;26769:44;;;;;;:::i;:::-;;;;;;;;26246:575;;;;;;26123:698;;;:::o;25490:625::-;25637:15;25667:23;25705:12;25732:23;25770:12;25797:18;25829:19;25840:7;25829:10;:19::i;:::-;25622:226;;;;;;;;;;;;25877:28;25897:7;25877;:15;25885:6;25877:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25859:7;:15;25867:6;25859:15;;;;;;;;;;;;;;;:46;;;;25937:39;25960:15;25937:7;:18;25945:9;25937:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25916:7;:18;25924:9;25916:18;;;;;;;;;;;;;;;:60;;;;25987:26;26002:10;25987:14;:26::i;:::-;26024:23;26036:4;26042;26024:11;:23::i;:::-;26080:9;26063:44;;26072:6;26063:44;;;26091:15;26063:44;;;;;;:::i;:::-;;;;;;;;25611:504;;;;;;25490:625;;;:::o;15300:757::-;15451:15;15481:23;15519:12;15546:23;15584:12;15611:18;15643:19;15654:7;15643:10;:19::i;:::-;15436:226;;;;;;;;;;;;15691:28;15711:7;15691;:15;15699:6;15691:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15673:7;:15;15681:6;15673:15;;;;;;;;;;;;;;;:46;;;;15748:28;15768:7;15748;:15;15756:6;15748:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15730:7;:15;15738:6;15730:15;;;;;;;;;;;;;;;:46;;;;15808:39;15831:15;15808:7;:18;15816:9;15808:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15787:7;:18;15795:9;15787:18;;;;;;;;;;;;;;;:60;;;;15879:39;15902:15;15879:7;:18;15887:9;15879:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15858:7;:18;15866:9;15858:18;;;;;;;;;;;;;;;:60;;;;15929:26;15944:10;15929:14;:26::i;:::-;15966:23;15978:4;15984;15966:11;:23::i;:::-;16022:9;16005:44;;16014:6;16005:44;;;16033:15;16005:44;;;;;;:::i;:::-;;;;;;;;15425:632;;;;;;15300:757;;;:::o;21107:125::-;21161:15;;21151:7;:25;;;;21203:21;;21187:13;:37;;;;21107:125::o;20601:130::-;20665:7;20692:31;20717:5;20692:20;20704:7;;20692;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;20685:38;;20601:130;;;:::o;20739:176::-;20836:7;20868:39;20901:5;20868:28;20881:13;;20868:7;:11;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;20861:46;;20739:176;;;:::o;4970:98::-;5028:7;5059:1;5055;:5;;;;:::i;:::-;5048:12;;4970:98;;;;:::o;20144:449::-;20221:19;20243:10;:8;:10::i;:::-;20221:32;;20264:18;20285:51;20314:11;20285:10;:14;;:51;;;;:::i;:::-;20264:72;;20372:62;20413:10;20372:7;:22;20388:4;20372:22;;;;;;;;;;;;;;;;:26;;:62;;;;:::i;:::-;20347:7;:22;20363:4;20347:22;;;;;;;;;;;;;;;:87;;;;20449:11;:26;20469:4;20449:26;;;;;;;;;;;;;;;;;;;;;;;;;20445:140;;;20515:70;20560:10;20515:7;:22;20531:4;20515:22;;;;;;;;;;;;;;;;:26;;:70;;;;:::i;:::-;20490:7;:22;20506:4;20490:22;;;;;;;;;;;;;;;:95;;;;20445:140;20210:383;;20144:449;:::o;17472:147::-;17550:17;17562:4;17550:7;;:11;;:17;;;;:::i;:::-;17540:7;:27;;;;17591:20;17606:4;17591:10;;:14;;:20;;;;:::i;:::-;17578:10;:33;;;;17472:147;;:::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:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:116::-;6136:21;6151:5;6136:21;:::i;:::-;6129:5;6126:32;6116:60;;6172:1;6169;6162:12;6116:60;6066:116;:::o;6188:133::-;6231:5;6269:6;6256:20;6247:29;;6285:30;6309:5;6285:30;:::i;:::-;6188:133;;;;:::o;6327:468::-;6392:6;6400;6449:2;6437:9;6428:7;6424:23;6420:32;6417:119;;;6455:79;;:::i;:::-;6417:119;6575:1;6600:53;6645:7;6636:6;6625:9;6621:22;6600:53;:::i;:::-;6590:63;;6546:117;6702:2;6728:50;6770:7;6761:6;6750:9;6746:22;6728:50;:::i;:::-;6718:60;;6673:115;6327:468;;;;;:::o;6801:118::-;6888:24;6906:5;6888:24;:::i;:::-;6883:3;6876:37;6801:118;;:::o;6925:222::-;7018:4;7056:2;7045:9;7041:18;7033:26;;7069:71;7137:1;7126:9;7122:17;7113:6;7069:71;:::i;:::-;6925:222;;;;:::o;7153:474::-;7221:6;7229;7278:2;7266:9;7257:7;7253:23;7249:32;7246:119;;;7284:79;;:::i;:::-;7246:119;7404:1;7429:53;7474:7;7465:6;7454:9;7450:22;7429:53;:::i;:::-;7419:63;;7375:117;7531:2;7557:53;7602:7;7593:6;7582:9;7578:22;7557:53;:::i;:::-;7547:63;;7502:118;7153:474;;;;;:::o;7633:323::-;7689:6;7738:2;7726:9;7717:7;7713:23;7709:32;7706:119;;;7744:79;;:::i;:::-;7706:119;7864:1;7889:50;7931:7;7922:6;7911:9;7907:22;7889:50;:::i;:::-;7879:60;;7835:114;7633:323;;;;:::o;7962:474::-;8030:6;8038;8087:2;8075:9;8066:7;8062:23;8058:32;8055:119;;;8093:79;;:::i;:::-;8055:119;8213:1;8238:53;8283:7;8274:6;8263:9;8259:22;8238:53;:::i;:::-;8228:63;;8184:117;8340:2;8366:53;8411:7;8402:6;8391:9;8387:22;8366:53;:::i;:::-;8356:63;;8311:118;7962:474;;;;;:::o;8442:180::-;8490:77;8487:1;8480:88;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8628:320;8672:6;8709:1;8703:4;8699:12;8689:22;;8756:1;8750:4;8746:12;8777:18;8767:81;;8833:4;8825:6;8821:17;8811:27;;8767:81;8895:2;8887:6;8884:14;8864:18;8861:38;8858:84;;8914:18;;:::i;:::-;8858:84;8679:269;8628:320;;;:::o;8954:229::-;9094:34;9090:1;9082:6;9078:14;9071:58;9163:12;9158:2;9150:6;9146:15;9139:37;8954:229;:::o;9189:366::-;9331:3;9352:67;9416:2;9411:3;9352:67;:::i;:::-;9345:74;;9428:93;9517:3;9428:93;:::i;:::-;9546:2;9541:3;9537:12;9530:19;;9189:366;;;:::o;9561:419::-;9727:4;9765:2;9754:9;9750:18;9742:26;;9814:9;9808:4;9804:20;9800:1;9789:9;9785:17;9778:47;9842:131;9968:4;9842:131;:::i;:::-;9834:139;;9561:419;;;:::o;9986:182::-;10126:34;10122:1;10114:6;10110:14;10103:58;9986:182;:::o;10174:366::-;10316:3;10337:67;10401:2;10396:3;10337:67;:::i;:::-;10330:74;;10413:93;10502:3;10413:93;:::i;:::-;10531:2;10526:3;10522:12;10515:19;;10174:366;;;:::o;10546:419::-;10712:4;10750:2;10739:9;10735:18;10727:26;;10799:9;10793:4;10789:20;10785:1;10774:9;10770:17;10763:47;10827:131;10953:4;10827:131;:::i;:::-;10819:139;;10546:419;;;:::o;10971:177::-;11111:29;11107:1;11099:6;11095:14;11088:53;10971:177;:::o;11154:366::-;11296:3;11317:67;11381:2;11376:3;11317:67;:::i;:::-;11310:74;;11393:93;11482:3;11393:93;:::i;:::-;11511:2;11506:3;11502:12;11495:19;;11154:366;;;:::o;11526:419::-;11692:4;11730:2;11719:9;11715:18;11707:26;;11779:9;11773:4;11769:20;11765:1;11754:9;11750:17;11743:47;11807:131;11933:4;11807:131;:::i;:::-;11799:139;;11526:419;;;:::o;11951:180::-;11999:77;11996:1;11989:88;12096:4;12093:1;12086:15;12120:4;12117:1;12110:15;12137:180;12185:77;12182:1;12175:88;12282:4;12279:1;12272:15;12306:4;12303:1;12296:15;12323:194;12363:4;12383:20;12401:1;12383:20;:::i;:::-;12378:25;;12417:20;12435:1;12417:20;:::i;:::-;12412:25;;12461:1;12458;12454:9;12446:17;;12485:1;12479:4;12476:11;12473:37;;;12490:18;;:::i;:::-;12473:37;12323:194;;;;:::o;12523:180::-;12571:77;12568:1;12561:88;12668:4;12665:1;12658:15;12692:4;12689:1;12682:15;12709:233;12748:3;12771:24;12789:5;12771:24;:::i;:::-;12762:33;;12817:66;12810:5;12807:77;12804:103;;12887:18;;:::i;:::-;12804:103;12934:1;12927:5;12923:13;12916:20;;12709:233;;;:::o;12948:231::-;13088:34;13084:1;13076:6;13072:14;13065:58;13157:14;13152:2;13144:6;13140:15;13133:39;12948:231;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:181::-;14122:33;14118:1;14110:6;14106:14;14099:57;13982:181;:::o;14169:366::-;14311:3;14332:67;14396:2;14391:3;14332:67;:::i;:::-;14325:74;;14408:93;14497:3;14408:93;:::i;:::-;14526:2;14521:3;14517:12;14510:19;;14169:366;;;:::o;14541:419::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14794:9;14788:4;14784:20;14780:1;14769:9;14765:17;14758:47;14822:131;14948:4;14822:131;:::i;:::-;14814:139;;14541:419;;;:::o;14966:177::-;15106:29;15102:1;15094:6;15090:14;15083:53;14966:177;:::o;15149:366::-;15291:3;15312:67;15376:2;15371:3;15312:67;:::i;:::-;15305:74;;15388:93;15477:3;15388:93;:::i;:::-;15506:2;15501:3;15497:12;15490:19;;15149:366;;;:::o;15521:419::-;15687:4;15725:2;15714:9;15710:18;15702:26;;15774:9;15768:4;15764:20;15760:1;15749:9;15745:17;15738:47;15802:131;15928:4;15802:131;:::i;:::-;15794:139;;15521:419;;;:::o;15946:166::-;16086:18;16082:1;16074:6;16070:14;16063:42;15946:166;:::o;16118:366::-;16260:3;16281:67;16345:2;16340:3;16281:67;:::i;:::-;16274:74;;16357:93;16446:3;16357:93;:::i;:::-;16475:2;16470:3;16466:12;16459:19;;16118:366;;;:::o;16490:419::-;16656:4;16694:2;16683:9;16679:18;16671:26;;16743:9;16737:4;16733:20;16729:1;16718:9;16714:17;16707:47;16771:131;16897:4;16771:131;:::i;:::-;16763:139;;16490:419;;;:::o;16915:231::-;17055:34;17051:1;17043:6;17039:14;17032:58;17124:14;17119:2;17111:6;17107:15;17100:39;16915:231;:::o;17152:366::-;17294:3;17315:67;17379:2;17374:3;17315:67;:::i;:::-;17308:74;;17391:93;17480:3;17391:93;:::i;:::-;17509:2;17504:3;17500:12;17493:19;;17152:366;;;:::o;17524:419::-;17690:4;17728:2;17717:9;17713:18;17705:26;;17777:9;17771:4;17767:20;17763:1;17752:9;17748:17;17741:47;17805:131;17931:4;17805:131;:::i;:::-;17797:139;;17524:419;;;:::o;17949:143::-;18006:5;18037:6;18031:13;18022:22;;18053:33;18080:5;18053:33;:::i;:::-;17949:143;;;;:::o;18098:351::-;18168:6;18217:2;18205:9;18196:7;18192:23;18188:32;18185:119;;;18223:79;;:::i;:::-;18185:119;18343:1;18368:64;18424:7;18415:6;18404:9;18400:22;18368:64;:::i;:::-;18358:74;;18314:128;18098:351;;;;:::o;18455:166::-;18595:18;18591:1;18583:6;18579:14;18572:42;18455:166;:::o;18627:366::-;18769:3;18790:67;18854:2;18849:3;18790:67;:::i;:::-;18783:74;;18866:93;18955:3;18866:93;:::i;:::-;18984:2;18979:3;18975:12;18968:19;;18627:366;;;:::o;18999:419::-;19165:4;19203:2;19192:9;19188:18;19180:26;;19252:9;19246:4;19242:20;19238:1;19227:9;19223:17;19216:47;19280:131;19406:4;19280:131;:::i;:::-;19272:139;;18999:419;;;:::o;19424:332::-;19545:4;19583:2;19572:9;19568:18;19560:26;;19596:71;19664:1;19653:9;19649:17;19640:6;19596:71;:::i;:::-;19677:72;19745:2;19734:9;19730:18;19721:6;19677:72;:::i;:::-;19424:332;;;;;:::o;19762:137::-;19816:5;19847:6;19841:13;19832:22;;19863:30;19887:5;19863:30;:::i;:::-;19762:137;;;;:::o;19905:345::-;19972:6;20021:2;20009:9;20000:7;19996:23;19992:32;19989:119;;;20027:79;;:::i;:::-;19989:119;20147:1;20172:61;20225:7;20216:6;20205:9;20201:22;20172:61;:::i;:::-;20162:71;;20118:125;19905:345;;;;:::o;20256:225::-;20396:34;20392:1;20384:6;20380:14;20373:58;20465:8;20460:2;20452:6;20448:15;20441:33;20256:225;:::o;20487:366::-;20629:3;20650:67;20714:2;20709:3;20650:67;:::i;:::-;20643:74;;20726:93;20815:3;20726:93;:::i;:::-;20844:2;20839:3;20835:12;20828:19;;20487:366;;;:::o;20859:419::-;21025:4;21063:2;21052:9;21048:18;21040:26;;21112:9;21106:4;21102:20;21098:1;21087:9;21083:17;21076:47;21140:131;21266:4;21140:131;:::i;:::-;21132:139;;20859:419;;;:::o;21284:181::-;21424:33;21420:1;21412:6;21408:14;21401:57;21284:181;:::o;21471:366::-;21613:3;21634:67;21698:2;21693:3;21634:67;:::i;:::-;21627:74;;21710:93;21799:3;21710:93;:::i;:::-;21828:2;21823:3;21819:12;21812:19;;21471:366;;;:::o;21843:419::-;22009:4;22047:2;22036:9;22032:18;22024:26;;22096:9;22090:4;22086:20;22082:1;22071:9;22067:17;22060:47;22124:131;22250:4;22124:131;:::i;:::-;22116:139;;21843:419;;;:::o;22268:223::-;22408:34;22404:1;22396:6;22392:14;22385:58;22477:6;22472:2;22464:6;22460:15;22453:31;22268:223;:::o;22497:366::-;22639:3;22660:67;22724:2;22719:3;22660:67;:::i;:::-;22653:74;;22736:93;22825:3;22736:93;:::i;:::-;22854:2;22849:3;22845:12;22838:19;;22497:366;;;:::o;22869:419::-;23035:4;23073:2;23062:9;23058:18;23050:26;;23122:9;23116:4;23112:20;23108:1;23097:9;23093:17;23086:47;23150:131;23276:4;23150:131;:::i;:::-;23142:139;;22869:419;;;:::o;23294:221::-;23434:34;23430:1;23422:6;23418:14;23411:58;23503:4;23498:2;23490:6;23486:15;23479:29;23294:221;:::o;23521:366::-;23663:3;23684:67;23748:2;23743:3;23684:67;:::i;:::-;23677:74;;23760:93;23849:3;23760:93;:::i;:::-;23878:2;23873:3;23869:12;23862:19;;23521:366;;;:::o;23893:419::-;24059:4;24097:2;24086:9;24082:18;24074:26;;24146:9;24140:4;24136:20;24132:1;24121:9;24117:17;24110:47;24174:131;24300:4;24174:131;:::i;:::-;24166:139;;23893:419;;;:::o;24318:224::-;24458:34;24454:1;24446:6;24442:14;24435:58;24527:7;24522:2;24514:6;24510:15;24503:32;24318:224;:::o;24548:366::-;24690:3;24711:67;24775:2;24770:3;24711:67;:::i;:::-;24704:74;;24787:93;24876:3;24787:93;:::i;:::-;24905:2;24900:3;24896:12;24889:19;;24548:366;;;:::o;24920:419::-;25086:4;25124:2;25113:9;25109:18;25101:26;;25173:9;25167:4;25163:20;25159:1;25148:9;25144:17;25137:47;25201:131;25327:4;25201:131;:::i;:::-;25193:139;;24920:419;;;:::o;25345:222::-;25485:34;25481:1;25473:6;25469:14;25462:58;25554:5;25549:2;25541:6;25537:15;25530:30;25345:222;:::o;25573:366::-;25715:3;25736:67;25800:2;25795:3;25736:67;:::i;:::-;25729:74;;25812:93;25901:3;25812:93;:::i;:::-;25930:2;25925:3;25921:12;25914:19;;25573:366;;;:::o;25945:419::-;26111:4;26149:2;26138:9;26134:18;26126:26;;26198:9;26192:4;26188:20;26184:1;26173:9;26169:17;26162:47;26226:131;26352:4;26226:131;:::i;:::-;26218:139;;25945:419;;;:::o;26370:228::-;26510:34;26506:1;26498:6;26494:14;26487:58;26579:11;26574:2;26566:6;26562:15;26555:36;26370:228;:::o;26604:366::-;26746:3;26767:67;26831:2;26826:3;26767:67;:::i;:::-;26760:74;;26843:93;26932:3;26843:93;:::i;:::-;26961:2;26956:3;26952:12;26945:19;;26604:366;;;:::o;26976:419::-;27142:4;27180:2;27169:9;27165:18;27157:26;;27229:9;27223:4;27219:20;27215:1;27204:9;27200:17;27193:47;27257:131;27383:4;27257:131;:::i;:::-;27249:139;;26976:419;;;:::o;27401:180::-;27449:77;27446:1;27439:88;27546:4;27543:1;27536:15;27570:4;27567:1;27560:15;27587:185;27627:1;27644:20;27662:1;27644:20;:::i;:::-;27639:25;;27678:20;27696:1;27678:20;:::i;:::-;27673:25;;27717:1;27707:35;;27722:18;;:::i;:::-;27707:35;27764:1;27761;27757:9;27752:14;;27587:185;;;;:::o;27778:191::-;27818:3;27837:20;27855:1;27837:20;:::i;:::-;27832:25;;27871:20;27889:1;27871:20;:::i;:::-;27866:25;;27914:1;27911;27907:9;27900:16;;27935:3;27932:1;27929:10;27926:36;;;27942:18;;:::i;:::-;27926:36;27778:191;;;;:::o;27975:442::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28175:71;28243:1;28232:9;28228:17;28219:6;28175:71;:::i;:::-;28256:72;28324:2;28313:9;28309:18;28300:6;28256:72;:::i;:::-;28338;28406:2;28395:9;28391:18;28382:6;28338:72;:::i;:::-;27975:442;;;;;;:::o;28423:180::-;28471:77;28468:1;28461:88;28568:4;28565:1;28558:15;28592:4;28589:1;28582:15;28609:143;28666:5;28697:6;28691:13;28682:22;;28713:33;28740:5;28713:33;:::i;:::-;28609:143;;;;:::o;28758:351::-;28828:6;28877:2;28865:9;28856:7;28852:23;28848:32;28845:119;;;28883:79;;:::i;:::-;28845:119;29003:1;29028:64;29084:7;29075:6;29064:9;29060:22;29028:64;:::i;:::-;29018:74;;28974:128;28758:351;;;;:::o;29115:85::-;29160:7;29189:5;29178:16;;29115:85;;;:::o;29206:158::-;29264:9;29297:61;29315:42;29324:32;29350:5;29324:32;:::i;:::-;29315:42;:::i;:::-;29297:61;:::i;:::-;29284:74;;29206:158;;;:::o;29370:147::-;29465:45;29504:5;29465:45;:::i;:::-;29460:3;29453:58;29370:147;;:::o;29523:114::-;29590:6;29624:5;29618:12;29608:22;;29523:114;;;:::o;29643:184::-;29742:11;29776:6;29771:3;29764:19;29816:4;29811:3;29807:14;29792:29;;29643:184;;;;:::o;29833:132::-;29900:4;29923:3;29915:11;;29953:4;29948:3;29944:14;29936:22;;29833:132;;;:::o;29971:108::-;30048:24;30066:5;30048:24;:::i;:::-;30043:3;30036:37;29971:108;;:::o;30085:179::-;30154:10;30175:46;30217:3;30209:6;30175:46;:::i;:::-;30253:4;30248:3;30244:14;30230:28;;30085:179;;;;:::o;30270:113::-;30340:4;30372;30367:3;30363:14;30355:22;;30270:113;;;:::o;30419:732::-;30538:3;30567:54;30615:5;30567:54;:::i;:::-;30637:86;30716:6;30711:3;30637:86;:::i;:::-;30630:93;;30747:56;30797:5;30747:56;:::i;:::-;30826:7;30857:1;30842:284;30867:6;30864:1;30861:13;30842:284;;;30943:6;30937:13;30970:63;31029:3;31014:13;30970:63;:::i;:::-;30963:70;;31056:60;31109:6;31056:60;:::i;:::-;31046:70;;30902:224;30889:1;30886;30882:9;30877:14;;30842:284;;;30846:14;31142:3;31135:10;;30543:608;;;30419:732;;;;:::o;31157:831::-;31420:4;31458:3;31447:9;31443:19;31435:27;;31472:71;31540:1;31529:9;31525:17;31516:6;31472:71;:::i;:::-;31553:80;31629:2;31618:9;31614:18;31605:6;31553:80;:::i;:::-;31680:9;31674:4;31670:20;31665:2;31654:9;31650:18;31643:48;31708:108;31811:4;31802:6;31708:108;:::i;:::-;31700:116;;31826:72;31894:2;31883:9;31879:18;31870:6;31826:72;:::i;:::-;31908:73;31976:3;31965:9;31961:19;31952:6;31908:73;:::i;:::-;31157:831;;;;;;;;:::o;31994:807::-;32243:4;32281:3;32270:9;32266:19;32258:27;;32295:71;32363:1;32352:9;32348:17;32339:6;32295:71;:::i;:::-;32376:72;32444:2;32433:9;32429:18;32420:6;32376:72;:::i;:::-;32458:80;32534:2;32523:9;32519:18;32510:6;32458:80;:::i;:::-;32548;32624:2;32613:9;32609:18;32600:6;32548:80;:::i;:::-;32638:73;32706:3;32695:9;32691:19;32682:6;32638:73;:::i;:::-;32721;32789:3;32778:9;32774:19;32765:6;32721:73;:::i;:::-;31994:807;;;;;;;;;:::o;32807:663::-;32895:6;32903;32911;32960:2;32948:9;32939:7;32935:23;32931:32;32928:119;;;32966:79;;:::i;:::-;32928:119;33086:1;33111:64;33167:7;33158:6;33147:9;33143:22;33111:64;:::i;:::-;33101:74;;33057:128;33224:2;33250:64;33306:7;33297:6;33286:9;33282:22;33250:64;:::i;:::-;33240:74;;33195:129;33363:2;33389:64;33445:7;33436:6;33425:9;33421:22;33389:64;:::i;:::-;33379:74;;33334:129;32807:663;;;;;:::o;33476:410::-;33516:7;33539:20;33557:1;33539:20;:::i;:::-;33534:25;;33573:20;33591:1;33573:20;:::i;:::-;33568:25;;33628:1;33625;33621:9;33650:30;33668:11;33650:30;:::i;:::-;33639:41;;33829:1;33820:7;33816:15;33813:1;33810:22;33790:1;33783:9;33763:83;33740:139;;33859:18;;:::i;:::-;33740:139;33524:362;33476:410;;;;:::o

Swarm Source

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