ETH Price: $3,443.30 (-1.08%)
Gas: 12 Gwei

Token

Deep Search (DPS)
 

Overview

Max Total Supply

10,000,000 DPS

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
24,344.66653852382420296 DPS

Value
$0.00
0xfa536171e01dcd2aa88474888ba32c08535a4195
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:
DeepSearch

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwap;
    uint256 public maxWallet;
    uint256 public maxTx;

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

    address public marketingAddress;
    address public devAddress;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;

    mapping(address => bool) public excludeMaxTx;

    mapping(address => bool) public excludedTax;

    mapping(address => bool) public ammPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

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

    
    bool private bSwapping;
    address private antiDrainer;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("Deep Search ", "DPS") {
        devAddress = address(0x36939Ae15c6e35282D47385862007fe0BD973841);
        marketingAddress = address(0x36939Ae15c6e35282D47385862007fe0BD973841);


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

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

        uint256 totalSupply = 10_000_000 * (10 ** decimals());
        minSwap = (totalSupply * 5) / 40000; // 0.05% swap wallet

        maxTx = 300_000 * 1e18; // 3% from total supply maxTransactionTxn
        maxWallet = 300_000 * 1e18; // 3% from total supply maxWalletSize

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


        ammPairs[address(swapPair)] = true;
        
        excludeMaxTx[address(0xdead)] = true;
        excludeMaxTx[address(swapRouter)] = true;
        excludeMaxTx[address(swapPair)] = true;

        excludedTax[address(0xdead)] = true;

       
        buyMarketingTax = 10;
        buyDevTax = 20;
        buyTotalTax = buyMarketingTax + buyDevTax;

        sellMarketingTax = 35;
        sellDevTax = 40;
        sellTotalTax = sellMarketingTax + sellDevTax;


        _mint(msg.sender, totalSupply);
    }

    


    function doSwap() private {
        bool success;
        uint256 tokenAmountToSwap = tokensForMarketing + tokensForDev;
        uint256 tokenBalance = balanceOf(address(this));

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

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

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

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

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

        tokensForMarketing = 0;
        tokensForDev = 0;
    }

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

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

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

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

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

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

                if (ammPairs[from] && !excludeMaxTx[to]) {
                    require(amount <= maxTx, "Buy transfer amount exceeds the maxTx.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                else if (ammPairs[to] && !excludeMaxTx[from]) {
                    require(amount <= maxTx, "Sell transfer amount exceeds the maxTx.");
                }
                else if (!excludeMaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool _swapOk = tokenBalance >= minSwap;
        if (bSwapEnabled && _swapOk && !bSwapping &&
            !ammPairs[from] && !excludedTax[from] && !excludedTax[to]) {
            bSwapping = true;
            doSwap();
            bSwapping = false;
        }

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

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

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


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

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

        bTradingActive = true;
        bSwapEnabled = true;
    }

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

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

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


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

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

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

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

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

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

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

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }
    
    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    

   

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff0219169083151502179055503480156200005d575f80fd5b506040518060400160405280600c81526020017f44656570205365617263682000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4450530000000000000000000000000000000000000000000000000000000000815250815f9081620000da919062000d26565b508060019081620000ec919062000d26565b5050506200010f620001036200084d60201b60201c565b6200085460201b60201c565b7336939ae15c6e35282d47385862007fe0bd973841600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507336939ae15c6e35282d47385862007fe0bd973841600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d919062000e6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034a919062000e6f565b6040518363ffffffff1660e01b81526004016200036992919062000eb0565b6020604051808303815f875af115801562000386573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000e6f565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f620004006200091760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620004b56200093f60201b60201c565b600a620004c3919062001064565b62989680620004d39190620010b4565b9050619c40600582620004e79190620010b4565b620004f391906200112b565b600881905550693f870857a3e0e3800000600a81905550693f870857a3e0e3800000600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f620005856200091760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a601781905550601460188190555060185460175462000806919062001162565b601681905550602360148190555060286015819055506015546014546200082e919062001162565b6013819055506200084633826200094760201b60201c565b5062001246565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009af90620011fa565b60405180910390fd5b620009cb5f838362000ab860201b60201c565b8060025f828254620009de919062001162565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a33919062001162565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a9991906200122b565b60405180910390a362000ab45f838362000abd60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b3e57607f821691505b60208210810362000b545762000b5362000af9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bb87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b7b565b62000bc4868362000b7b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c0e62000c0862000c028462000bdc565b62000be5565b62000bdc565b9050919050565b5f819050919050565b62000c298362000bee565b62000c4162000c388262000c15565b84845462000b87565b825550505050565b5f90565b62000c5762000c49565b62000c6481848462000c1e565b505050565b5b8181101562000c8b5762000c7f5f8262000c4d565b60018101905062000c6a565b5050565b601f82111562000cda5762000ca48162000b5a565b62000caf8462000b6c565b8101602085101562000cbf578190505b62000cd762000cce8562000b6c565b83018262000c69565b50505b505050565b5f82821c905092915050565b5f62000cfc5f198460080262000cdf565b1980831691505092915050565b5f62000d16838362000ceb565b9150826002028217905092915050565b62000d318262000ac2565b67ffffffffffffffff81111562000d4d5762000d4c62000acc565b5b62000d59825462000b26565b62000d6682828562000c8f565b5f60209050601f83116001811462000d9c575f841562000d87578287015190505b62000d93858262000d09565b86555062000e02565b601f19841662000dac8662000b5a565b5f5b8281101562000dd55784890151825560018201915060208501945060208101905062000dae565b8683101562000df5578489015162000df1601f89168262000ceb565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e398262000e0e565b9050919050565b62000e4b8162000e2d565b811462000e56575f80fd5b50565b5f8151905062000e698162000e40565b92915050565b5f6020828403121562000e875762000e8662000e0a565b5b5f62000e968482850162000e59565b91505092915050565b62000eaa8162000e2d565b82525050565b5f60408201905062000ec55f83018562000e9f565b62000ed4602083018462000e9f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f655780860481111562000f3d5762000f3c62000edb565b5b600185161562000f4d5780820291505b808102905062000f5d8562000f08565b945062000f1d565b94509492505050565b5f8262000f7f576001905062001051565b8162000f8e575f905062001051565b816001811462000fa7576002811462000fb25762000fe8565b600191505062001051565b60ff84111562000fc75762000fc662000edb565b5b8360020a91508482111562000fe15762000fe062000edb565b5b5062001051565b5060208310610133831016604e8410600b8410161715620010225782820a9050838111156200101c576200101b62000edb565b5b62001051565b62001031848484600162000f14565b925090508184048111156200104b576200104a62000edb565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010708262000bdc565b91506200107d8362001058565b9250620010ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f6e565b905092915050565b5f620010c08262000bdc565b9150620010cd8362000bdc565b9250828202620010dd8162000bdc565b91508282048414831517620010f757620010f662000edb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011378262000bdc565b9150620011448362000bdc565b925082620011575762001156620010fe565b5b828204905092915050565b5f6200116e8262000bdc565b91506200117b8362000bdc565b925082820190508082111562001196576200119562000edb565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f620011e26020836200119c565b9150620011ef82620011ac565b602082019050919050565b5f6020820190508181035f8301526200121381620011d4565b9050919050565b620012258162000bdc565b82525050565b5f602082019050620012405f8301846200121a565b92915050565b614c6480620012545f395ff3fe608060405260043610610296575f3560e01c80637437681e11610159578063b79c1886116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063b79c1886146108f3578063bae14e1d1461091b578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a457c2d711610112578063a457c2d7146107c3578063a5ece941146107ff578063a72905a214610829578063a9059cbb14610865578063af8f26e7146108a1578063b38d5ef4146108cb5761029d565b80637437681e146106dd578063751039fc146107075780638da5cb5b1461071d578063924de9b71461074757806395d89b411461076f5780639fccce32146107995761029d565b806339509351116101fd5780635df6e68e116101b65780635df6e68e146105e957806367b740e91461061357806368092bd91461063b5780637070678b1461066357806370a082311461068b578063715018a6146106c75761029d565b806339509351146104df5780633ad10ef61461051b57806345167f26146105455780634a62bb651461056d578063544d1ec91461059757806359cd9031146105bf5761029d565b806323b872dd1161024f57806323b872dd146103c157806326991cc8146103fd5780632c81355e14610427578063313ce5671461044f57806333012411146104795780633544a2c7146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd14610331578063197c48691461035b5780631f3fed8f146103975761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c291906135fb565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906136ac565b610b82565b6040516102fe9190613704565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b6040516103289190613704565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b604051610352919061372c565b60405180910390f35b348015610366575f80fd5b50610381600480360381019061037c9190613745565b610bbb565b60405161038e9190613704565b60405180910390f35b3480156103a2575f80fd5b506103ab610bd8565b6040516103b8919061372c565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e29190613770565b610bde565b6040516103f49190613704565b60405180910390f35b348015610408575f80fd5b50610411610cd0565b60405161041e91906137cf565b60405180910390f35b348015610432575f80fd5b5061044d600480360381019061044891906137e8565b610cf5565b005b34801561045a575f80fd5b50610463610e42565b604051610470919061382e565b60405180910390f35b348015610484575f80fd5b5061048d610e4a565b60405161049a919061372c565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c49190613745565b610e50565b6040516104d69190613704565b60405180910390f35b3480156104ea575f80fd5b50610505600480360381019061050091906136ac565b610e6d565b6040516105129190613704565b60405180910390f35b348015610526575f80fd5b5061052f610f14565b60405161053c91906137cf565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190613871565b610f39565b005b348015610578575f80fd5b5061058161109c565b60405161058e9190613704565b60405180910390f35b3480156105a2575f80fd5b506105bd60048036038101906105b891906137e8565b6110ae565b005b3480156105ca575f80fd5b506105d36111d3565b6040516105e0919061372c565b60405180910390f35b3480156105f4575f80fd5b506105fd6111d9565b60405161060a919061372c565b60405180910390f35b34801561061e575f80fd5b50610639600480360381019061063491906137e8565b6111df565b005b348015610646575f80fd5b50610661600480360381019061065c9190613871565b611304565b005b34801561066e575f80fd5b5061068960048036038101906106849190613871565b6113d8565b005b348015610696575f80fd5b506106b160048036038101906106ac9190613745565b6114ac565b6040516106be919061372c565b60405180910390f35b3480156106d2575f80fd5b506106db6114f2565b005b3480156106e8575f80fd5b506106f1611579565b6040516106fe919061372c565b60405180910390f35b348015610712575f80fd5b5061071b61157f565b005b348015610728575f80fd5b50610731611616565b60405161073e91906137cf565b60405180910390f35b348015610752575f80fd5b5061076d600480360381019061076891906138af565b61163e565b005b34801561077a575f80fd5b506107836116d7565b60405161079091906135fb565b60405180910390f35b3480156107a4575f80fd5b506107ad611767565b6040516107ba919061372c565b60405180910390f35b3480156107ce575f80fd5b506107e960048036038101906107e491906136ac565b61176d565b6040516107f69190613704565b60405180910390f35b34801561080a575f80fd5b50610813611853565b60405161082091906137cf565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a9190613745565b611879565b60405161085c9190613704565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906136ac565b611896565b6040516108989190613704565b60405180910390f35b3480156108ac575f80fd5b506108b56118b3565b6040516108c2919061372c565b60405180910390f35b3480156108d6575f80fd5b506108f160048036038101906108ec91906138da565b6118b9565b005b3480156108fe575f80fd5b50610919600480360381019061091491906138da565b6119a3565b005b348015610926575f80fd5b50610941600480360381019061093c9190613745565b611a8d565b005b34801561094e575f80fd5b50610957611bbb565b604051610964919061372c565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613973565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613871565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e091906139e9565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a089190613704565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613a39565b611f4e565b604051610a44919061372c565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e919061372c565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a98919061372c565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190613745565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea919061372c565b60405180910390f35b60605f8054610b0190613aa4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613aa4565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b600d5481565b5f610bea8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c316120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790613b1e565b60405180910390fd5b610cc485610cbc6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cfd6120d8565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611616565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613b86565b60405180910390fd5b620186a06001610d7f610bb2565b610d899190613bd1565b610d939190613c3f565b811015610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613cdf565b60405180910390fd5b6103e86005610de2610bb2565b610dec9190613bd1565b610df69190613c3f565b811115610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613d6d565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610f0a610e796120d8565b848460045f610e866120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f059190613d8b565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f416120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f5f611616565b73ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90613b86565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90613e2e565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b6110b66120d8565b73ffffffffffffffffffffffffffffffffffffffff166110d4611616565b73ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190613b86565b60405180910390fd5b611132610e42565b600a61113e9190613f7b565b6103e8600161114b610bb2565b6111559190613bd1565b61115f9190613c3f565b6111699190613c3f565b8110156111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a29061400f565b60405180910390fd5b6111b3610e42565b600a6111bf9190613f7b565b816111ca9190613bd1565b600a8190555050565b60085481565b60165481565b6111e76120d8565b73ffffffffffffffffffffffffffffffffffffffff16611205611616565b73ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125290613b86565b60405180910390fd5b611263610e42565b600a61126f9190613f7b565b6103e8600561127c610bb2565b6112869190613bd1565b6112909190613c3f565b61129a9190613c3f565b8110156112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d39061409d565b60405180910390fd5b6112e4610e42565b600a6112f09190613f7b565b816112fb9190613bd1565b60098190555050565b61130c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661132a611616565b73ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613b86565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113e06120d8565b73ffffffffffffffffffffffffffffffffffffffff166113fe611616565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613b86565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114fa6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611518611616565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613b86565b60405180910390fd5b6115775f612ddc565b565b600a5481565b6115876120d8565b73ffffffffffffffffffffffffffffffffffffffff166115a5611616565b73ffffffffffffffffffffffffffffffffffffffff16146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613b86565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116466120d8565b73ffffffffffffffffffffffffffffffffffffffff16611664611616565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613b86565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116e690613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461171290613aa4565b801561175d5780601f106117345761010080835404028352916020019161175d565b820191905f5260205f20905b81548152906001019060200180831161174057829003601f168201915b5050505050905090565b600e5481565b5f8060045f61177a6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90614105565b60405180910390fd5b61184861183f6120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f6118a96118a26120d8565b84846122a2565b6001905092915050565b60185481565b6118c16120d8565b73ffffffffffffffffffffffffffffffffffffffff166118df611616565b73ffffffffffffffffffffffffffffffffffffffff1614611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613b86565b60405180910390fd5b81601781905550806018819055506018546017546119539190613d8b565b601681905550605f601654111561199f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119969061416d565b60405180910390fd5b5050565b6119ab6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119c9611616565b73ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690613b86565b60405180910390fd5b8160148190555080601581905550601554601454611a3d9190613d8b565b601381905550605f6013541115611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a809061416d565b60405180910390fd5b5050565b611a956120d8565b73ffffffffffffffffffffffffffffffffffffffff16611ab3611616565b73ffffffffffffffffffffffffffffffffffffffff1614611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090613b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e906141d5565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611616565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613b86565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c959493929190614202565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df693929190614253565b6040516020818303038152906040528051906020012090505f8282604051602001611e229291906142fc565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d9493929190614332565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e91611616565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906143bf565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff16612002611616565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614427565b60405180910390fd5b6120cf81612ddc565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061448f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906144f7565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612295919061372c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123079061455f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906145c7565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff9061462f565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248990614697565b60405180910390fd5b5f81036124a9576124a483835f612e9f565b612dd7565b60125f9054906101000a900460ff161561298b576124c5611616565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125335750612503611616565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a6906146ff565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e9061478d565b60405180910390fd5b6009546127a3836114ac565b826127ae9190613d8b565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906147f5565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614883565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a836114ac565b826129459190613d8b565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906147f5565b60405180910390fd5b5b5b5b5b5b5f612995306114ac565b90505f6008548210159050600b60019054906101000a900460ff1680156129b95750805b80156129d1575060195f9054906101000a900460ff16155b8015612a24575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a77575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612aca575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b0b57600160195f6101000a81548160ff021916908315150217905550612af1613117565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612bb9575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612bc2575f90505b5f8115612dc75760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c2057505f601354115b15612cb857612c4d6064612c3f601354886132f290919063ffffffff16565b61330790919063ffffffff16565b905060135460155482612c609190613bd1565b612c6a9190613c3f565b600e5f828254612c7a9190613d8b565b9250508190555060135460145482612c929190613bd1565b612c9c9190613c3f565b600d5f828254612cac9190613d8b565b92505081905550612da4565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d0f57505f601654115b15612da357612d3c6064612d2e601654886132f290919063ffffffff16565b61330790919063ffffffff16565b905060165460185482612d4f9190613bd1565b612d599190613c3f565b600e5f828254612d699190613d8b565b9250508190555060165460175482612d819190613bd1565b612d8b9190613c3f565b600d5f828254612d9b9190613d8b565b925050819055505b5b5f811115612db857612db7873083612e9f565b5b8085612dc491906148a1565b94505b612dd2878787612e9f565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f049061491e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7290614986565b60405180910390fd5b612f8683838361331c565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561300a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613001906149ee565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461309a9190613d8b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fe919061372c565b60405180910390a3613111848484613321565b50505050565b5f80600e54600d546131299190613d8b565b90505f613135306114ac565b90505f82148061314457505f81145b15613151575050506132f0565b60146008546131609190613bd1565b8111156131795760146008546131769190613bd1565b90505b5f47905061318682613326565b5f61319a824761355c90919063ffffffff16565b90505f6131c4856131b6600e54856132f290919063ffffffff16565b61330790919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161320b90614a39565b5f6040518083038185875af1925050503d805f8114613245576040519150601f19603f3d011682016040523d82523d5f602084013e61324a565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161329690614a39565b5f6040518083038185875af1925050503d805f81146132d0576040519150601f19603f3d011682016040523d82523d5f602084013e6132d5565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836132ff9190613bd1565b905092915050565b5f81836133149190613c3f565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561334257613341614a4d565b5b6040519080825280602002602001820160405280156133705781602001602082028036833780820191505090505b50905030815f8151811061338757613386614a7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561342b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061344f9190614abb565b8160018151811061346357613462614a7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134c93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161352b959493929190614bd6565b5f604051808303815f87803b158015613542575f80fd5b505af1158015613554573d5f803e3d5ffd5b505050505050565b5f818361356991906148a1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135a857808201518184015260208101905061358d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135cd82613571565b6135d7818561357b565b93506135e781856020860161358b565b6135f0816135b3565b840191505092915050565b5f6020820190508181035f83015261361381846135c3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136488261361f565b9050919050565b6136588161363e565b8114613662575f80fd5b50565b5f813590506136738161364f565b92915050565b5f819050919050565b61368b81613679565b8114613695575f80fd5b50565b5f813590506136a681613682565b92915050565b5f80604083850312156136c2576136c161361b565b5b5f6136cf85828601613665565b92505060206136e085828601613698565b9150509250929050565b5f8115159050919050565b6136fe816136ea565b82525050565b5f6020820190506137175f8301846136f5565b92915050565b61372681613679565b82525050565b5f60208201905061373f5f83018461371d565b92915050565b5f6020828403121561375a5761375961361b565b5b5f61376784828501613665565b91505092915050565b5f805f606084860312156137875761378661361b565b5b5f61379486828701613665565b93505060206137a586828701613665565b92505060406137b686828701613698565b9150509250925092565b6137c98161363e565b82525050565b5f6020820190506137e25f8301846137c0565b92915050565b5f602082840312156137fd576137fc61361b565b5b5f61380a84828501613698565b91505092915050565b5f60ff82169050919050565b61382881613813565b82525050565b5f6020820190506138415f83018461381f565b92915050565b613850816136ea565b811461385a575f80fd5b50565b5f8135905061386b81613847565b92915050565b5f80604083850312156138875761388661361b565b5b5f61389485828601613665565b92505060206138a58582860161385d565b9150509250929050565b5f602082840312156138c4576138c361361b565b5b5f6138d18482850161385d565b91505092915050565b5f80604083850312156138f0576138ef61361b565b5b5f6138fd85828601613698565b925050602061390e85828601613698565b9150509250929050565b5f819050919050565b5f61393b6139366139318461361f565b613918565b61361f565b9050919050565b5f61394c82613921565b9050919050565b5f61395d82613942565b9050919050565b61396d81613953565b82525050565b5f6020820190506139865f830184613964565b92915050565b61399581613813565b811461399f575f80fd5b50565b5f813590506139b08161398c565b92915050565b5f819050919050565b6139c8816139b6565b81146139d2575f80fd5b50565b5f813590506139e3816139bf565b92915050565b5f805f60608486031215613a00576139ff61361b565b5b5f613a0d868287016139a2565b9350506020613a1e868287016139d5565b9250506040613a2f868287016139d5565b9150509250925092565b5f8060408385031215613a4f57613a4e61361b565b5b5f613a5c85828601613665565b9250506020613a6d85828601613665565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613abb57607f821691505b602082108103613ace57613acd613a77565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613b08601d8361357b565b9150613b1382613ad4565b602082019050919050565b5f6020820190508181035f830152613b3581613afc565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613b70600d8361357b565b9150613b7b82613b3c565b602082019050919050565b5f6020820190508181035f830152613b9d81613b64565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bdb82613679565b9150613be683613679565b9250828202613bf481613679565b91508282048414831517613c0b57613c0a613ba4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4982613679565b9150613c5483613679565b925082613c6457613c63613c12565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613cc960358361357b565b9150613cd482613c6f565b604082019050919050565b5f6020820190508181035f830152613cf681613cbd565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613d5760348361357b565b9150613d6282613cfd565b604082019050919050565b5f6020820190508181035f830152613d8481613d4b565b9050919050565b5f613d9582613679565b9150613da083613679565b9250828201905080821115613db857613db7613ba4565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f613e1860288361357b565b9150613e2382613dbe565b604082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613ea157808604811115613e7d57613e7c613ba4565b5b6001851615613e8c5780820291505b8081029050613e9a85613e4c565b9450613e61565b94509492505050565b5f82613eb95760019050613f74565b81613ec6575f9050613f74565b8160018114613edc5760028114613ee657613f15565b6001915050613f74565b60ff841115613ef857613ef7613ba4565b5b8360020a915084821115613f0f57613f0e613ba4565b5b50613f74565b5060208310610133831016604e8410600b8410161715613f4a5782820a905083811115613f4557613f44613ba4565b5b613f74565b613f578484846001613e58565b92509050818404811115613f6e57613f6d613ba4565b5b81810290505b9392505050565b5f613f8582613679565b9150613f9083613813565b9250613fbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613eaa565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f613ff960208361357b565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61408760248361357b565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6140ef601f8361357b565b91506140fa826140bb565b602082019050919050565b5f6020820190508181035f83015261411c816140e3565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614157601c8361357b565b915061416282614123565b602082019050919050565b5f6020820190508181035f8301526141848161414b565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6141bf60148361357b565b91506141ca8261418b565b602082019050919050565b5f6020820190508181035f8301526141ec816141b3565b9050919050565b6141fc816139b6565b82525050565b5f60a0820190506142155f8301886141f3565b61422260208301876141f3565b61422f60408301866141f3565b61423c606083018561371d565b61424960808301846137c0565b9695505050505050565b5f6060820190506142665f8301866141f3565b61427360208301856141f3565b614280604083018461371d565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6142c6600283614288565b91506142d182614292565b600282019050919050565b5f819050919050565b6142f66142f1826139b6565b6142dc565b82525050565b5f614306826142ba565b915061431282856142e5565b60208201915061432282846142e5565b6020820191508190509392505050565b5f6080820190506143455f8301876141f3565b614352602083018661381f565b61435f60408301856141f3565b61436c60608301846141f3565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6143a960118361357b565b91506143b482614375565b602082019050919050565b5f6020820190508181035f8301526143d68161439d565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61441160118361357b565b915061441c826143dd565b602082019050919050565b5f6020820190508181035f83015261443e81614405565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614479601e8361357b565b915061448482614445565b602082019050919050565b5f6020820190508181035f8301526144a68161446d565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6144e160208361357b565b91506144ec826144ad565b602082019050919050565b5f6020820190508181035f83015261450e816144d5565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614549601b8361357b565b915061455482614515565b602082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6145b160198361357b565b91506145bc8261457d565b602082019050919050565b5f6020820190508181035f8301526145de816145a5565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f61461960198361357b565b9150614624826145e5565b602082019050919050565b5f6020820190508181035f8301526146468161460d565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61468160178361357b565b915061468c8261464d565b602082019050919050565b5f6020820190508181035f8301526146ae81614675565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6146e960168361357b565b91506146f4826146b5565b602082019050919050565b5f6020820190508181035f830152614716816146dd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f61477760268361357b565b91506147828261471d565b604082019050919050565b5f6020820190508181035f8301526147a48161476b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6147df60138361357b565b91506147ea826147ab565b602082019050919050565b5f6020820190508181035f83015261480c816147d3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f61486d60278361357b565b915061487882614813565b604082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b5f6148ab82613679565b91506148b683613679565b92508282039050818111156148ce576148cd613ba4565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614908601d8361357b565b9150614913826148d4565b602082019050919050565b5f6020820190508181035f830152614935816148fc565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614970601b8361357b565b915061497b8261493c565b602082019050919050565b5f6020820190508181035f83015261499d81614964565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6149d860208361357b565b91506149e3826149a4565b602082019050919050565b5f6020820190508181035f830152614a05816149cc565b9050919050565b5f81905092915050565b50565b5f614a245f83614a0c565b9150614a2f82614a16565b5f82019050919050565b5f614a4382614a19565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614ab58161364f565b92915050565b5f60208284031215614ad057614acf61361b565b5b5f614add84828501614aa7565b91505092915050565b5f819050919050565b5f614b09614b04614aff84614ae6565b613918565b613679565b9050919050565b614b1981614aef565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b518161363e565b82525050565b5f614b628383614b48565b60208301905092915050565b5f602082019050919050565b5f614b8482614b1f565b614b8e8185614b29565b9350614b9983614b39565b805f5b83811015614bc9578151614bb08882614b57565b9750614bbb83614b6e565b925050600181019050614b9c565b5085935050505092915050565b5f60a082019050614be95f83018861371d565b614bf66020830187614b10565b8181036040830152614c088186614b7a565b9050614c1760608301856137c0565b614c24608083018461371d565b969550505050505056fea26469706673582212201655968dfcd159e46025f2da140091c0487a825856aab3968cf6f65532c6a5c464736f6c63430008180033

Deployed Bytecode

0x608060405260043610610296575f3560e01c80637437681e11610159578063b79c1886116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063b79c1886146108f3578063bae14e1d1461091b578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a457c2d711610112578063a457c2d7146107c3578063a5ece941146107ff578063a72905a214610829578063a9059cbb14610865578063af8f26e7146108a1578063b38d5ef4146108cb5761029d565b80637437681e146106dd578063751039fc146107075780638da5cb5b1461071d578063924de9b71461074757806395d89b411461076f5780639fccce32146107995761029d565b806339509351116101fd5780635df6e68e116101b65780635df6e68e146105e957806367b740e91461061357806368092bd91461063b5780637070678b1461066357806370a082311461068b578063715018a6146106c75761029d565b806339509351146104df5780633ad10ef61461051b57806345167f26146105455780634a62bb651461056d578063544d1ec91461059757806359cd9031146105bf5761029d565b806323b872dd1161024f57806323b872dd146103c157806326991cc8146103fd5780632c81355e14610427578063313ce5671461044f57806333012411146104795780633544a2c7146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd14610331578063197c48691461035b5780631f3fed8f146103975761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c291906135fb565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906136ac565b610b82565b6040516102fe9190613704565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b6040516103289190613704565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b604051610352919061372c565b60405180910390f35b348015610366575f80fd5b50610381600480360381019061037c9190613745565b610bbb565b60405161038e9190613704565b60405180910390f35b3480156103a2575f80fd5b506103ab610bd8565b6040516103b8919061372c565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e29190613770565b610bde565b6040516103f49190613704565b60405180910390f35b348015610408575f80fd5b50610411610cd0565b60405161041e91906137cf565b60405180910390f35b348015610432575f80fd5b5061044d600480360381019061044891906137e8565b610cf5565b005b34801561045a575f80fd5b50610463610e42565b604051610470919061382e565b60405180910390f35b348015610484575f80fd5b5061048d610e4a565b60405161049a919061372c565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c49190613745565b610e50565b6040516104d69190613704565b60405180910390f35b3480156104ea575f80fd5b50610505600480360381019061050091906136ac565b610e6d565b6040516105129190613704565b60405180910390f35b348015610526575f80fd5b5061052f610f14565b60405161053c91906137cf565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190613871565b610f39565b005b348015610578575f80fd5b5061058161109c565b60405161058e9190613704565b60405180910390f35b3480156105a2575f80fd5b506105bd60048036038101906105b891906137e8565b6110ae565b005b3480156105ca575f80fd5b506105d36111d3565b6040516105e0919061372c565b60405180910390f35b3480156105f4575f80fd5b506105fd6111d9565b60405161060a919061372c565b60405180910390f35b34801561061e575f80fd5b50610639600480360381019061063491906137e8565b6111df565b005b348015610646575f80fd5b50610661600480360381019061065c9190613871565b611304565b005b34801561066e575f80fd5b5061068960048036038101906106849190613871565b6113d8565b005b348015610696575f80fd5b506106b160048036038101906106ac9190613745565b6114ac565b6040516106be919061372c565b60405180910390f35b3480156106d2575f80fd5b506106db6114f2565b005b3480156106e8575f80fd5b506106f1611579565b6040516106fe919061372c565b60405180910390f35b348015610712575f80fd5b5061071b61157f565b005b348015610728575f80fd5b50610731611616565b60405161073e91906137cf565b60405180910390f35b348015610752575f80fd5b5061076d600480360381019061076891906138af565b61163e565b005b34801561077a575f80fd5b506107836116d7565b60405161079091906135fb565b60405180910390f35b3480156107a4575f80fd5b506107ad611767565b6040516107ba919061372c565b60405180910390f35b3480156107ce575f80fd5b506107e960048036038101906107e491906136ac565b61176d565b6040516107f69190613704565b60405180910390f35b34801561080a575f80fd5b50610813611853565b60405161082091906137cf565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a9190613745565b611879565b60405161085c9190613704565b60405180910390f35b348015610870575f80fd5b5061088b600480360381019061088691906136ac565b611896565b6040516108989190613704565b60405180910390f35b3480156108ac575f80fd5b506108b56118b3565b6040516108c2919061372c565b60405180910390f35b3480156108d6575f80fd5b506108f160048036038101906108ec91906138da565b6118b9565b005b3480156108fe575f80fd5b50610919600480360381019061091491906138da565b6119a3565b005b348015610926575f80fd5b50610941600480360381019061093c9190613745565b611a8d565b005b34801561094e575f80fd5b50610957611bbb565b604051610964919061372c565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613973565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613871565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e091906139e9565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a089190613704565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613a39565b611f4e565b604051610a44919061372c565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e919061372c565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a98919061372c565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190613745565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea919061372c565b60405180910390f35b60605f8054610b0190613aa4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613aa4565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b600d5481565b5f610bea8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c316120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790613b1e565b60405180910390fd5b610cc485610cbc6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cfd6120d8565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611616565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613b86565b60405180910390fd5b620186a06001610d7f610bb2565b610d899190613bd1565b610d939190613c3f565b811015610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613cdf565b60405180910390fd5b6103e86005610de2610bb2565b610dec9190613bd1565b610df69190613c3f565b811115610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613d6d565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610f0a610e796120d8565b848460045f610e866120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f059190613d8b565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f416120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f5f611616565b73ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90613b86565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90613e2e565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b6110b66120d8565b73ffffffffffffffffffffffffffffffffffffffff166110d4611616565b73ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190613b86565b60405180910390fd5b611132610e42565b600a61113e9190613f7b565b6103e8600161114b610bb2565b6111559190613bd1565b61115f9190613c3f565b6111699190613c3f565b8110156111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a29061400f565b60405180910390fd5b6111b3610e42565b600a6111bf9190613f7b565b816111ca9190613bd1565b600a8190555050565b60085481565b60165481565b6111e76120d8565b73ffffffffffffffffffffffffffffffffffffffff16611205611616565b73ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125290613b86565b60405180910390fd5b611263610e42565b600a61126f9190613f7b565b6103e8600561127c610bb2565b6112869190613bd1565b6112909190613c3f565b61129a9190613c3f565b8110156112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d39061409d565b60405180910390fd5b6112e4610e42565b600a6112f09190613f7b565b816112fb9190613bd1565b60098190555050565b61130c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661132a611616565b73ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613b86565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113e06120d8565b73ffffffffffffffffffffffffffffffffffffffff166113fe611616565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613b86565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114fa6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611518611616565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613b86565b60405180910390fd5b6115775f612ddc565b565b600a5481565b6115876120d8565b73ffffffffffffffffffffffffffffffffffffffff166115a5611616565b73ffffffffffffffffffffffffffffffffffffffff16146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613b86565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116466120d8565b73ffffffffffffffffffffffffffffffffffffffff16611664611616565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613b86565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116e690613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461171290613aa4565b801561175d5780601f106117345761010080835404028352916020019161175d565b820191905f5260205f20905b81548152906001019060200180831161174057829003601f168201915b5050505050905090565b600e5481565b5f8060045f61177a6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90614105565b60405180910390fd5b61184861183f6120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f6118a96118a26120d8565b84846122a2565b6001905092915050565b60185481565b6118c16120d8565b73ffffffffffffffffffffffffffffffffffffffff166118df611616565b73ffffffffffffffffffffffffffffffffffffffff1614611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613b86565b60405180910390fd5b81601781905550806018819055506018546017546119539190613d8b565b601681905550605f601654111561199f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119969061416d565b60405180910390fd5b5050565b6119ab6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119c9611616565b73ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690613b86565b60405180910390fd5b8160148190555080601581905550601554601454611a3d9190613d8b565b601381905550605f6013541115611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a809061416d565b60405180910390fd5b5050565b611a956120d8565b73ffffffffffffffffffffffffffffffffffffffff16611ab3611616565b73ffffffffffffffffffffffffffffffffffffffff1614611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090613b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e906141d5565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611616565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613b86565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c959493929190614202565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df693929190614253565b6040516020818303038152906040528051906020012090505f8282604051602001611e229291906142fc565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d9493929190614332565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e91611616565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906143bf565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff16612002611616565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614427565b60405180910390fd5b6120cf81612ddc565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061448f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906144f7565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612295919061372c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123079061455f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906145c7565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff9061462f565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248990614697565b60405180910390fd5b5f81036124a9576124a483835f612e9f565b612dd7565b60125f9054906101000a900460ff161561298b576124c5611616565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125335750612503611616565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a6906146ff565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e9061478d565b60405180910390fd5b6009546127a3836114ac565b826127ae9190613d8b565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906147f5565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614883565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a836114ac565b826129459190613d8b565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906147f5565b60405180910390fd5b5b5b5b5b5b5f612995306114ac565b90505f6008548210159050600b60019054906101000a900460ff1680156129b95750805b80156129d1575060195f9054906101000a900460ff16155b8015612a24575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a77575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612aca575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b0b57600160195f6101000a81548160ff021916908315150217905550612af1613117565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612bb9575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612bc2575f90505b5f8115612dc75760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c2057505f601354115b15612cb857612c4d6064612c3f601354886132f290919063ffffffff16565b61330790919063ffffffff16565b905060135460155482612c609190613bd1565b612c6a9190613c3f565b600e5f828254612c7a9190613d8b565b9250508190555060135460145482612c929190613bd1565b612c9c9190613c3f565b600d5f828254612cac9190613d8b565b92505081905550612da4565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d0f57505f601654115b15612da357612d3c6064612d2e601654886132f290919063ffffffff16565b61330790919063ffffffff16565b905060165460185482612d4f9190613bd1565b612d599190613c3f565b600e5f828254612d699190613d8b565b9250508190555060165460175482612d819190613bd1565b612d8b9190613c3f565b600d5f828254612d9b9190613d8b565b925050819055505b5b5f811115612db857612db7873083612e9f565b5b8085612dc491906148a1565b94505b612dd2878787612e9f565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f049061491e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7290614986565b60405180910390fd5b612f8683838361331c565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561300a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613001906149ee565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461309a9190613d8b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fe919061372c565b60405180910390a3613111848484613321565b50505050565b5f80600e54600d546131299190613d8b565b90505f613135306114ac565b90505f82148061314457505f81145b15613151575050506132f0565b60146008546131609190613bd1565b8111156131795760146008546131769190613bd1565b90505b5f47905061318682613326565b5f61319a824761355c90919063ffffffff16565b90505f6131c4856131b6600e54856132f290919063ffffffff16565b61330790919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161320b90614a39565b5f6040518083038185875af1925050503d805f8114613245576040519150601f19603f3d011682016040523d82523d5f602084013e61324a565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161329690614a39565b5f6040518083038185875af1925050503d805f81146132d0576040519150601f19603f3d011682016040523d82523d5f602084013e6132d5565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836132ff9190613bd1565b905092915050565b5f81836133149190613c3f565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561334257613341614a4d565b5b6040519080825280602002602001820160405280156133705781602001602082028036833780820191505090505b50905030815f8151811061338757613386614a7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561342b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061344f9190614abb565b8160018151811061346357613462614a7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134c93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161352b959493929190614bd6565b5f604051808303815f87803b158015613542575f80fd5b505af1158015613554573d5f803e3d5ffd5b505050505050565b5f818361356991906148a1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135a857808201518184015260208101905061358d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135cd82613571565b6135d7818561357b565b93506135e781856020860161358b565b6135f0816135b3565b840191505092915050565b5f6020820190508181035f83015261361381846135c3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136488261361f565b9050919050565b6136588161363e565b8114613662575f80fd5b50565b5f813590506136738161364f565b92915050565b5f819050919050565b61368b81613679565b8114613695575f80fd5b50565b5f813590506136a681613682565b92915050565b5f80604083850312156136c2576136c161361b565b5b5f6136cf85828601613665565b92505060206136e085828601613698565b9150509250929050565b5f8115159050919050565b6136fe816136ea565b82525050565b5f6020820190506137175f8301846136f5565b92915050565b61372681613679565b82525050565b5f60208201905061373f5f83018461371d565b92915050565b5f6020828403121561375a5761375961361b565b5b5f61376784828501613665565b91505092915050565b5f805f606084860312156137875761378661361b565b5b5f61379486828701613665565b93505060206137a586828701613665565b92505060406137b686828701613698565b9150509250925092565b6137c98161363e565b82525050565b5f6020820190506137e25f8301846137c0565b92915050565b5f602082840312156137fd576137fc61361b565b5b5f61380a84828501613698565b91505092915050565b5f60ff82169050919050565b61382881613813565b82525050565b5f6020820190506138415f83018461381f565b92915050565b613850816136ea565b811461385a575f80fd5b50565b5f8135905061386b81613847565b92915050565b5f80604083850312156138875761388661361b565b5b5f61389485828601613665565b92505060206138a58582860161385d565b9150509250929050565b5f602082840312156138c4576138c361361b565b5b5f6138d18482850161385d565b91505092915050565b5f80604083850312156138f0576138ef61361b565b5b5f6138fd85828601613698565b925050602061390e85828601613698565b9150509250929050565b5f819050919050565b5f61393b6139366139318461361f565b613918565b61361f565b9050919050565b5f61394c82613921565b9050919050565b5f61395d82613942565b9050919050565b61396d81613953565b82525050565b5f6020820190506139865f830184613964565b92915050565b61399581613813565b811461399f575f80fd5b50565b5f813590506139b08161398c565b92915050565b5f819050919050565b6139c8816139b6565b81146139d2575f80fd5b50565b5f813590506139e3816139bf565b92915050565b5f805f60608486031215613a00576139ff61361b565b5b5f613a0d868287016139a2565b9350506020613a1e868287016139d5565b9250506040613a2f868287016139d5565b9150509250925092565b5f8060408385031215613a4f57613a4e61361b565b5b5f613a5c85828601613665565b9250506020613a6d85828601613665565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613abb57607f821691505b602082108103613ace57613acd613a77565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613b08601d8361357b565b9150613b1382613ad4565b602082019050919050565b5f6020820190508181035f830152613b3581613afc565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613b70600d8361357b565b9150613b7b82613b3c565b602082019050919050565b5f6020820190508181035f830152613b9d81613b64565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bdb82613679565b9150613be683613679565b9250828202613bf481613679565b91508282048414831517613c0b57613c0a613ba4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4982613679565b9150613c5483613679565b925082613c6457613c63613c12565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613cc960358361357b565b9150613cd482613c6f565b604082019050919050565b5f6020820190508181035f830152613cf681613cbd565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613d5760348361357b565b9150613d6282613cfd565b604082019050919050565b5f6020820190508181035f830152613d8481613d4b565b9050919050565b5f613d9582613679565b9150613da083613679565b9250828201905080821115613db857613db7613ba4565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f613e1860288361357b565b9150613e2382613dbe565b604082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613ea157808604811115613e7d57613e7c613ba4565b5b6001851615613e8c5780820291505b8081029050613e9a85613e4c565b9450613e61565b94509492505050565b5f82613eb95760019050613f74565b81613ec6575f9050613f74565b8160018114613edc5760028114613ee657613f15565b6001915050613f74565b60ff841115613ef857613ef7613ba4565b5b8360020a915084821115613f0f57613f0e613ba4565b5b50613f74565b5060208310610133831016604e8410600b8410161715613f4a5782820a905083811115613f4557613f44613ba4565b5b613f74565b613f578484846001613e58565b92509050818404811115613f6e57613f6d613ba4565b5b81810290505b9392505050565b5f613f8582613679565b9150613f9083613813565b9250613fbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613eaa565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f613ff960208361357b565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61408760248361357b565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6140ef601f8361357b565b91506140fa826140bb565b602082019050919050565b5f6020820190508181035f83015261411c816140e3565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614157601c8361357b565b915061416282614123565b602082019050919050565b5f6020820190508181035f8301526141848161414b565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6141bf60148361357b565b91506141ca8261418b565b602082019050919050565b5f6020820190508181035f8301526141ec816141b3565b9050919050565b6141fc816139b6565b82525050565b5f60a0820190506142155f8301886141f3565b61422260208301876141f3565b61422f60408301866141f3565b61423c606083018561371d565b61424960808301846137c0565b9695505050505050565b5f6060820190506142665f8301866141f3565b61427360208301856141f3565b614280604083018461371d565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6142c6600283614288565b91506142d182614292565b600282019050919050565b5f819050919050565b6142f66142f1826139b6565b6142dc565b82525050565b5f614306826142ba565b915061431282856142e5565b60208201915061432282846142e5565b6020820191508190509392505050565b5f6080820190506143455f8301876141f3565b614352602083018661381f565b61435f60408301856141f3565b61436c60608301846141f3565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6143a960118361357b565b91506143b482614375565b602082019050919050565b5f6020820190508181035f8301526143d68161439d565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61441160118361357b565b915061441c826143dd565b602082019050919050565b5f6020820190508181035f83015261443e81614405565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614479601e8361357b565b915061448482614445565b602082019050919050565b5f6020820190508181035f8301526144a68161446d565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6144e160208361357b565b91506144ec826144ad565b602082019050919050565b5f6020820190508181035f83015261450e816144d5565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614549601b8361357b565b915061455482614515565b602082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6145b160198361357b565b91506145bc8261457d565b602082019050919050565b5f6020820190508181035f8301526145de816145a5565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f61461960198361357b565b9150614624826145e5565b602082019050919050565b5f6020820190508181035f8301526146468161460d565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61468160178361357b565b915061468c8261464d565b602082019050919050565b5f6020820190508181035f8301526146ae81614675565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6146e960168361357b565b91506146f4826146b5565b602082019050919050565b5f6020820190508181035f830152614716816146dd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f61477760268361357b565b91506147828261471d565b604082019050919050565b5f6020820190508181035f8301526147a48161476b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6147df60138361357b565b91506147ea826147ab565b602082019050919050565b5f6020820190508181035f83015261480c816147d3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f61486d60278361357b565b915061487882614813565b604082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b5f6148ab82613679565b91506148b683613679565b92508282039050818111156148ce576148cd613ba4565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614908601d8361357b565b9150614913826148d4565b602082019050919050565b5f6020820190508181035f830152614935816148fc565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614970601b8361357b565b915061497b8261493c565b602082019050919050565b5f6020820190508181035f83015261499d81614964565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6149d860208361357b565b91506149e3826149a4565b602082019050919050565b5f6020820190508181035f830152614a05816149cc565b9050919050565b5f81905092915050565b50565b5f614a245f83614a0c565b9150614a2f82614a16565b5f82019050919050565b5f614a4382614a19565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614ab58161364f565b92915050565b5f60208284031215614ad057614acf61361b565b5b5f614add84828501614aa7565b91505092915050565b5f819050919050565b5f614b09614b04614aff84614ae6565b613918565b613679565b9050919050565b614b1981614aef565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b518161363e565b82525050565b5f614b628383614b48565b60208301905092915050565b5f602082019050919050565b5f614b8482614b1f565b614b8e8185614b29565b9350614b9983614b39565b805f5b83811015614bc9578151614bb08882614b57565b9750614bbb83614b6e565b925050600181019050614b9c565b5085935050505092915050565b5f60a082019050614be95f83018861371d565b614bf66020830187614b10565b8181036040830152614c088186614b7a565b9050614c1760608301856137c0565b614c24608083018461371d565b969550505050505056fea26469706673582212201655968dfcd159e46025f2da140091c0487a825856aab3968cf6f65532c6a5c464736f6c63430008180033

Deployed Bytecode Sourcemap

14238:10114:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9911:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10483:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14528:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10232:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14717:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14641:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11163:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14362:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22147:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10131:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15052:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14770:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11737:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14607:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23760:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14871:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22762:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14398:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15019:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22499:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23019:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21642:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10348:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;970:103;;;;;;;;;;;;;:::i;:::-;;14458:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21926:93;;;;;;;;;;;;;:::i;:::-;;687:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22029:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10019:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14681:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11956:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14569:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14822:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11568:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15089:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23147:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23448:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23981:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14985:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14319:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21790:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20694:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14487:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14913:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14947:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;782:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14427:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9911:100;9965:13;9998:5;9991:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9911:100;:::o;10483:169::-;10566:4;10583:39;10592:12;:10;:12::i;:::-;10606:7;10615:6;10583:8;:39::i;:::-;10640:4;10633:11;;10483:169;;;;:::o;14528:32::-;;;;;;;;;;;;;:::o;10232:108::-;10293:7;10320:12;;10313:19;;10232:108;:::o;14717:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;14641:33::-;;;;:::o;11163:397::-;11260:4;11277:27;11287:4;11293:2;11297:6;11277:9;:27::i;:::-;11315:16;11334:11;:17;11346:4;11334:17;;;;;;;;;;;;;;;:31;11352:12;:10;:12::i;:::-;11334:31;;;;;;;;;;;;;;;;11315:50;;11396:6;11384:8;:18;;11376:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11472:47;11481:4;11487:12;:10;:12::i;:::-;11512:6;11501:8;:17;11472:8;:47::i;:::-;11548:4;11541:11;;;11163:397;;;;;:::o;14362:23::-;;;;;;;;;;;;;:::o;22147:344::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22280:6:::1;22275:1;22259:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22258:28;;;;:::i;:::-;22248:6;:38;;22240:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22395:4;22390:1;22374:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22373:26;;;;:::i;:::-;22363:6;:36;;22355:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;22477:6;22467:7;:16;;;;22147:344:::0;:::o;10131:93::-;10189:5;10214:2;10207:9;;10131:93;:::o;15052:30::-;;;;:::o;14770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;11737:211::-;11823:4;11840:78;11849:12;:10;:12::i;:::-;11863:7;11909:8;11872:11;:25;11884:12;:10;:12::i;:::-;11872:25;;;;;;;;;;;;;;;:34;11898:7;11872:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11840:8;:78::i;:::-;11936:4;11929:11;;11737:211;;;;:::o;14607:25::-;;;;;;;;;;;;;:::o;23760:213::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23879:8:::1;;;;;;;;;;;23871:16;;:4;:16;;::::0;23863:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23960:5;23943:8;:14;23952:4;23943:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23760:213:::0;;:::o;14871:33::-;;;;;;;;;;;;;:::o;22762:249::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22909:10:::1;:8;:10::i;:::-;22903:2;:16;;;;:::i;:::-;22894:4;22889:1;22873:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22872:26;;;;:::i;:::-;22871:49;;;;:::i;:::-;22861:6;:59;;22853:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22992:10;:8;:10::i;:::-;22986:2;:16;;;;:::i;:::-;22976:6;:27;;;;:::i;:::-;22968:5;:35;;;;22762:249:::0;:::o;14398:22::-;;;;:::o;15019:26::-;;;;:::o;22499:255::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22644:10:::1;:8;:10::i;:::-;22638:2;:16;;;;:::i;:::-;22629:4;22624:1;22608:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22607:26;;;;:::i;:::-;22606:49;;;;:::i;:::-;22596:6;:59;;22588:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;22735:10;:8;:10::i;:::-;22729:2;:16;;;;:::i;:::-;22719:6;:27;;;;:::i;:::-;22707:9;:39;;;;22499:255:::0;:::o;23019:120::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23125:6:::1;23107:9;:15;23117:4;23107:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;23019:120:::0;;:::o;21642:140::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21769:5:::1;21748:12;:18;21761:4;21748:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21642:140:::0;;:::o;10348:127::-;10422:7;10449:9;:18;10459:7;10449:18;;;;;;;;;;;;;;;;10442:25;;10348:127;;;:::o;970:103::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1035:30:::1;1062:1;1035:18;:30::i;:::-;970:103::o:0;14458:20::-;;;;:::o;21926:93::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22006:5:::1;21989:14;;:22;;;;;;;;;;;;;;;;;;21926:93::o:0;687:87::-;733:7;760:6;;;;;;;;;;;753:13;;687:87;:::o;22029:110::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22124:7:::1;22109:12;;:22;;;;;;;;;;;;;;;;;;22029:110:::0;:::o;10019:104::-;10075:13;10108:7;10101:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10019:104;:::o;14681:27::-;;;;:::o;11956:360::-;12042:4;12059:16;12078:11;:25;12090:12;:10;:12::i;:::-;12078:25;;;;;;;;;;;;;;;:34;12104:7;12078:34;;;;;;;;;;;;;;;;12059:53;;12143:8;12131;:20;;12123:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12223:52;12232:12;:10;:12::i;:::-;12246:7;12266:8;12255;:19;12223:8;:52::i;:::-;12304:4;12297:11;;;11956:360;;;;:::o;14569:31::-;;;;;;;;;;;;;:::o;14822:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11568:161::-;11647:4;11664:35;11674:12;:10;:12::i;:::-;11688:2;11692:6;11664:9;:35::i;:::-;11717:4;11710:11;;11568:161;;;;:::o;15089:24::-;;;;:::o;23147:293::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23267:12:::1;23249:15;:30;;;;23302:9;23290;:21;;;;23354:9;;23336:15;;:27;;;;:::i;:::-;23322:11;:41;;;;23397:2;23382:11;;:17;;23374:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23147:293:::0;;:::o;23448:300::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23570:12:::1;23551:16;:31;;;;23606:9;23593:10;:22;;;;23660:10;;23641:16;;:29;;;;:::i;:::-;23626:12;:44;;;;23705:2;23689:12;;:18;;23681:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23448:300:::0;;:::o;23981:197::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24102:3:::1;24076:30;;:14;:30;;::::0;24068:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24156:14;24142:11;;:28;;;;;;;;;;;;;;;;;;23981:197:::0;:::o;14985:25::-;;;;:::o;14319:36::-;;;;;;;;;;;;;:::o;21790:128::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21905:5:::1;21882:11;:20;21894:7;21882:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21790:128:::0;;:::o;20694:934::-;20780:18;20836:95;20956:22;;;;;;;;;;;;;;;;;20946:33;;;;;;21004:10;;;;;;;;;;;;;;;;;20994:21;;;;;;21030:13;21066:4;20811:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20801:282;;;;;;20780:303;;21094:18;21150:49;21224:23;;;;;;;;;;;;;;;;;21214:34;;;;;;21271:1;21125:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21115:170;;;;;;21094:191;;21296:14;21379:10;21404;21323:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21313:129;;;;;;21296:146;;21455:14;21472:26;21482:6;21490:1;21493;21496;21472:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21455:43;;21527:7;:5;:7::i;:::-;21517:17;;:6;:17;;;21509:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21586:4;21569:14;;:21;;;;;;;;;;;;;;;;;;21616:4;21601:12;;:19;;;;;;;;;;;;;;;;;;20769:859;;;;20694:934;;;:::o;14487:34::-;;;;;;;;;;;;;:::o;11004:151::-;11093:7;11120:11;:18;11132:5;11120:18;;;;;;;;;;;;;;;:27;11139:7;11120:27;;;;;;;;;;;;;;;;11113:34;;11004:151;;;;:::o;14913:27::-;;;;:::o;14947:31::-;;;;:::o;782:180::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;891:1:::1;871:22;;:8;:22;;::::0;863:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;926:28;945:8;926:18;:28::i;:::-;782:180:::0;:::o;14427:24::-;;;;:::o;124:98::-;177:7;204:10;197:17;;124:98;:::o;10660:336::-;10779:1;10762:19;;:5;:19;;;10754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10854:1;10835:21;;:7;:21;;;10827:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10934:6;10904:11;:18;10916:5;10904:18;;;;;;;;;;;;;;;:27;10923:7;10904:27;;;;;;;;;;;;;;;:36;;;;10972:7;10956:32;;10965:5;10956:32;;;10981:6;10956:32;;;;;;:::i;:::-;;;;;;;;10660:336;;;:::o;18058:2626::-;18206:1;18190:18;;:4;:18;;;18182:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:1;18259:16;;:2;:16;;;18251:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18325:9;:15;18335:4;18325:15;;;;;;;;;;;;;;;;;;;;;;;;;18324:16;18316:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18390:9;:13;18400:2;18390:13;;;;;;;;;;;;;;;;;;;;;;;;;18389:14;18381:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18458:1;18448:6;:11;18444:93;;18476:28;18492:4;18498:2;18502:1;18476:15;:28::i;:::-;18519:7;;18444:93;18553:14;;;;;;;;;;;18549:902;;;18596:7;:5;:7::i;:::-;18588:15;;:4;:15;;;;:32;;;;;18613:7;:5;:7::i;:::-;18607:13;;:2;:13;;;;18588:32;:52;;;;;18638:1;18624:16;;:2;:16;;;;18588:52;:77;;;;;18658:6;18644:21;;:2;:21;;;;18588:77;:91;;;;;18670:9;;;;;;;;;;;18669:10;18588:91;18584:856;;;18705:14;;;;;;;;;;;18700:135;;18752:11;:17;18764:4;18752:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;18773:11;:15;18785:2;18773:15;;;;;;;;;;;;;;;;;;;;;;;;;18752:36;18744:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18700:135;18859:8;:14;18868:4;18859:14;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;18878:12;:16;18891:2;18878:16;;;;;;;;;;;;;;;;;;;;;;;;;18877:17;18859:35;18855:570;;;18937:5;;18927:6;:15;;18919:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;19042:9;;19025:13;19035:2;19025:9;:13::i;:::-;19016:6;:22;;;;:::i;:::-;:35;;19008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18855:570;;;19122:8;:12;19131:2;19122:12;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;19139:12;:18;19152:4;19139:18;;;;;;;;;;;;;;;;;;;;;;;;;19138:19;19122:35;19118:307;;;19200:5;;19190:6;:15;;19182:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19118:307;;;19297:12;:16;19310:2;19297:16;;;;;;;;;;;;;;;;;;;;;;;;;19292:133;;19372:9;;19355:13;19365:2;19355:9;:13::i;:::-;19346:6;:22;;;;:::i;:::-;:35;;19338:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19292:133;19118:307;18855:570;18584:856;18549:902;19463:20;19486:24;19504:4;19486:9;:24::i;:::-;19463:47;;19521:12;19552:7;;19536:12;:23;;19521:38;;19574:12;;;;;;;;;;;:23;;;;;19590:7;19574:23;:37;;;;;19602:9;;;;;;;;;;;19601:10;19574:37;:69;;;;;19629:8;:14;19638:4;19629:14;;;;;;;;;;;;;;;;;;;;;;;;;19628:15;19574:69;:91;;;;;19648:11;:17;19660:4;19648:17;;;;;;;;;;;;;;;;;;;;;;;;;19647:18;19574:91;:111;;;;;19670:11;:15;19682:2;19670:15;;;;;;;;;;;;;;;;;;;;;;;;;19669:16;19574:111;19570:215;;;19714:4;19702:9;;:16;;;;;;;;;;;;;;;;;;19733:8;:6;:8::i;:::-;19768:5;19756:9;;:17;;;;;;;;;;;;;;;;;;19570:215;19797:9;19810;;;;;;;;;;;19809:10;19797:22;;19834:11;:17;19846:4;19834:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;19855:11;:15;19867:2;19855:15;;;;;;;;;;;;;;;;;;;;;;;;;19834:36;19830:67;;;19892:5;19885:12;;19830:67;19910:12;19941:4;19937:694;;;19966:8;:12;19975:2;19966:12;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;19997:1;19982:12;;:16;19966:32;19962:541;;;20026:33;20055:3;20026:24;20037:12;;20026:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;20019:40;;20116:12;;20102:10;;20095:4;:17;;;;:::i;:::-;20094:34;;;;:::i;:::-;20078:12;;:50;;;;;;;:::i;:::-;;;;;;;;20197:12;;20177:16;;20170:4;:23;;;;:::i;:::-;20169:40;;;;:::i;:::-;20147:18;;:62;;;;;;;:::i;:::-;;;;;;;;19962:541;;;20248:8;:14;20257:4;20248:14;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;20280:1;20266:11;;:15;20248:33;20244:259;;;20309:32;20337:3;20309:23;20320:11;;20309:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;20302:39;;20397:11;;20384:9;;20377:4;:16;;;;:::i;:::-;20376:32;;;;:::i;:::-;20360:12;;:48;;;;;;;:::i;:::-;;;;;;;;20476:11;;20457:15;;20450:4;:22;;;;:::i;:::-;20449:38;;;;:::i;:::-;20427:18;;:60;;;;;;;:::i;:::-;;;;;;;;20244:259;19962:541;20528:1;20521:4;:8;20517:73;;;20548:42;20564:4;20578;20585;20548:15;:42::i;:::-;20517:73;20615:4;20605:14;;;;;:::i;:::-;;;19937:694;20643:33;20659:4;20665:2;20669:6;20643:15;:33::i;:::-;18171:2513;;;;18058:2626;;;;:::o;1081:191::-;1155:16;1174:6;;;;;;;;;;;1155:25;;1200:8;1191:6;;:17;;;;;;;;;;;;;;;;;;1255:8;1224:40;;1245:8;1224:40;;;;;;;;;;;;1144:128;1081:191;:::o;13472:607::-;13585:1;13569:18;;:4;:18;;;13561:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13654:1;13640:16;;:2;:16;;;13632:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13699:38;13720:4;13726:2;13730:6;13699:20;:38::i;:::-;13748:19;13770:9;:15;13780:4;13770:15;;;;;;;;;;;;;;;;13748:37;;13819:6;13804:11;:21;;13796:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13930:6;13916:11;:20;13898:9;:15;13908:4;13898:15;;;;;;;;;;;;;;;:38;;;;13975:6;13958:9;:13;13968:2;13958:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14012:2;13997:26;;14006:4;13997:26;;;14016:6;13997:26;;;;;;:::i;:::-;;;;;;;;14034:37;14054:4;14060:2;14064:6;14034:19;:37::i;:::-;13550:529;13472:607;;;:::o;16657:831::-;16694:12;16717:25;16766:12;;16745:18;;:33;;;;:::i;:::-;16717:61;;16789:20;16812:24;16830:4;16812:9;:24::i;:::-;16789:47;;16874:1;16853:17;:22;:43;;;;16895:1;16879:12;:17;16853:43;16849:69;;;16911:7;;;;;16849:69;16959:2;16949:7;;:12;;;;:::i;:::-;16934;:27;16930:73;;;17001:2;16991:7;;:12;;;;:::i;:::-;16976:27;;16930:73;17016:22;17041:21;17016:46;;17073:24;17084:12;17073:10;:24::i;:::-;17110:18;17131:41;17157:14;17131:21;:25;;:41;;;;:::i;:::-;17110:62;;17183:17;17203:51;17236:17;17203:28;17218:12;;17203:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;17183:71;;17289:10;;;;;;;;;;;17281:24;;17313:9;17281:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17267:60;;;;;17360:16;;;;;;;;;;;17352:30;;17391:21;17352:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17338:80;;;;;17452:1;17431:18;:22;;;;17479:1;17464:12;:16;;;;16683:805;;;;;;16657:831;:::o;1303:98::-;1361:7;1392:1;1388;:5;;;;:::i;:::-;1381:12;;1303:98;;;;:::o;1687:::-;1745:7;1776:1;1772;:5;;;;:::i;:::-;1765:12;;1687:98;;;;:::o;13339:125::-;;;;:::o;14087:144::-;;;;:::o;17497:553::-;17612:21;17650:1;17636:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17612:40;;17681:4;17663;17668:1;17663:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17707:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17697:4;17702:1;17697:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;17737:52;17754:4;17769:10;;;;;;;;;;;17782:6;17737:8;:52::i;:::-;17828:10;;;;;;;;;;;:61;;;17904:6;17925:1;17969:4;17996;18016:15;17828:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17541:509;17497:553;:::o;2332:98::-;2390:7;2421:1;2417;:5;;;;:::i;:::-;2410:12;;2332:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:329::-;5169:6;5218:2;5206:9;5197:7;5193:23;5189:32;5186:119;;;5224:79;;:::i;:::-;5186:119;5344:1;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5315:117;5110:329;;;;:::o;5445:86::-;5480:7;5520:4;5513:5;5509:16;5498:27;;5445:86;;;:::o;5537:112::-;5620:22;5636:5;5620:22;:::i;:::-;5615:3;5608:35;5537:112;;:::o;5655:214::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:67;5859:1;5848:9;5844:17;5835:6;5795:67;:::i;:::-;5655:214;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:152::-;7841:9;7874:37;7905:5;7874:37;:::i;:::-;7861:50;;7765:152;;;:::o;7923:183::-;8036:63;8093:5;8036:63;:::i;:::-;8031:3;8024:76;7923:183;;:::o;8112:274::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8282:97;8376:1;8365:9;8361:17;8352:6;8282:97;:::i;:::-;8112:274;;;;:::o;8392:118::-;8463:22;8479:5;8463:22;:::i;:::-;8456:5;8453:33;8443:61;;8500:1;8497;8490:12;8443:61;8392:118;:::o;8516:135::-;8560:5;8598:6;8585:20;8576:29;;8614:31;8639:5;8614:31;:::i;:::-;8516:135;;;;:::o;8657:77::-;8694:7;8723:5;8712:16;;8657:77;;;:::o;8740:122::-;8813:24;8831:5;8813:24;:::i;:::-;8806:5;8803:35;8793:63;;8852:1;8849;8842:12;8793:63;8740:122;:::o;8868:139::-;8914:5;8952:6;8939:20;8930:29;;8968:33;8995:5;8968:33;:::i;:::-;8868:139;;;;:::o;9013:615::-;9088:6;9096;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:51;9347:7;9338:6;9327:9;9323:22;9304:51;:::i;:::-;9294:61;;9250:115;9404:2;9430:53;9475:7;9466:6;9455:9;9451:22;9430:53;:::i;:::-;9420:63;;9375:118;9532:2;9558:53;9603:7;9594:6;9583:9;9579:22;9558:53;:::i;:::-;9548:63;;9503:118;9013:615;;;;;:::o;9634:474::-;9702:6;9710;9759:2;9747:9;9738:7;9734:23;9730:32;9727:119;;;9765:79;;:::i;:::-;9727:119;9885:1;9910:53;9955:7;9946:6;9935:9;9931:22;9910:53;:::i;:::-;9900:63;;9856:117;10012:2;10038:53;10083:7;10074:6;10063:9;10059:22;10038:53;:::i;:::-;10028:63;;9983:118;9634:474;;;;;:::o;10114:180::-;10162:77;10159:1;10152:88;10259:4;10256:1;10249:15;10283:4;10280:1;10273:15;10300:320;10344:6;10381:1;10375:4;10371:12;10361:22;;10428:1;10422:4;10418:12;10449:18;10439:81;;10505:4;10497:6;10493:17;10483:27;;10439:81;10567:2;10559:6;10556:14;10536:18;10533:38;10530:84;;10586:18;;:::i;:::-;10530:84;10351:269;10300:320;;;:::o;10626:179::-;10766:31;10762:1;10754:6;10750:14;10743:55;10626:179;:::o;10811:366::-;10953:3;10974:67;11038:2;11033:3;10974:67;:::i;:::-;10967:74;;11050:93;11139:3;11050:93;:::i;:::-;11168:2;11163:3;11159:12;11152:19;;10811:366;;;:::o;11183:419::-;11349:4;11387:2;11376:9;11372:18;11364:26;;11436:9;11430:4;11426:20;11422:1;11411:9;11407:17;11400:47;11464:131;11590:4;11464:131;:::i;:::-;11456:139;;11183:419;;;:::o;11608:163::-;11748:15;11744:1;11736:6;11732:14;11725:39;11608:163;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:180::-;12622:77;12619:1;12612:88;12719:4;12716:1;12709:15;12743:4;12740:1;12733:15;12760:410;12800:7;12823:20;12841:1;12823:20;:::i;:::-;12818:25;;12857:20;12875:1;12857:20;:::i;:::-;12852:25;;12912:1;12909;12905:9;12934:30;12952:11;12934:30;:::i;:::-;12923:41;;13113:1;13104:7;13100:15;13097:1;13094:22;13074:1;13067:9;13047:83;13024:139;;13143:18;;:::i;:::-;13024:139;12808:362;12760:410;;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:185;13402:1;13419:20;13437:1;13419:20;:::i;:::-;13414:25;;13453:20;13471:1;13453:20;:::i;:::-;13448:25;;13492:1;13482:35;;13497:18;;:::i;:::-;13482:35;13539:1;13536;13532:9;13527:14;;13362:185;;;;:::o;13553:240::-;13693:34;13689:1;13681:6;13677:14;13670:58;13762:23;13757:2;13749:6;13745:15;13738:48;13553:240;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:419::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14424:9;14418:4;14414:20;14410:1;14399:9;14395:17;14388:47;14452:131;14578:4;14452:131;:::i;:::-;14444:139;;14171:419;;;:::o;14596:239::-;14736:34;14732:1;14724:6;14720:14;14713:58;14805:22;14800:2;14792:6;14788:15;14781:47;14596:239;:::o;14841:366::-;14983:3;15004:67;15068:2;15063:3;15004:67;:::i;:::-;14997:74;;15080:93;15169:3;15080:93;:::i;:::-;15198:2;15193:3;15189:12;15182:19;;14841:366;;;:::o;15213:419::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15466:9;15460:4;15456:20;15452:1;15441:9;15437:17;15430:47;15494:131;15620:4;15494:131;:::i;:::-;15486:139;;15213:419;;;:::o;15638:191::-;15678:3;15697:20;15715:1;15697:20;:::i;:::-;15692:25;;15731:20;15749:1;15731:20;:::i;:::-;15726:25;;15774:1;15771;15767:9;15760:16;;15795:3;15792:1;15789:10;15786:36;;;15802:18;;:::i;:::-;15786:36;15638:191;;;;:::o;15835:227::-;15975:34;15971:1;15963:6;15959:14;15952:58;16044:10;16039:2;16031:6;16027:15;16020:35;15835:227;:::o;16068:366::-;16210:3;16231:67;16295:2;16290:3;16231:67;:::i;:::-;16224:74;;16307:93;16396:3;16307:93;:::i;:::-;16425:2;16420:3;16416:12;16409:19;;16068:366;;;:::o;16440:419::-;16606:4;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16440:419;;;:::o;16865:102::-;16907:8;16954:5;16951:1;16947:13;16926:34;;16865:102;;;:::o;16973:848::-;17034:5;17041:4;17065:6;17056:15;;17089:5;17080:14;;17103:712;17124:1;17114:8;17111:15;17103:712;;;17219:4;17214:3;17210:14;17204:4;17201:24;17198:50;;;17228:18;;:::i;:::-;17198:50;17278:1;17268:8;17264:16;17261:451;;;17693:4;17686:5;17682:16;17673:25;;17261:451;17743:4;17737;17733:15;17725:23;;17773:32;17796:8;17773:32;:::i;:::-;17761:44;;17103:712;;;16973:848;;;;;;;:::o;17827:1073::-;17881:5;18072:8;18062:40;;18093:1;18084:10;;18095:5;;18062:40;18121:4;18111:36;;18138:1;18129:10;;18140:5;;18111:36;18207:4;18255:1;18250:27;;;;18291:1;18286:191;;;;18200:277;;18250:27;18268:1;18259:10;;18270:5;;;18286:191;18331:3;18321:8;18318:17;18315:43;;;18338:18;;:::i;:::-;18315:43;18387:8;18384:1;18380:16;18371:25;;18422:3;18415:5;18412:14;18409:40;;;18429:18;;:::i;:::-;18409:40;18462:5;;;18200:277;;18586:2;18576:8;18573:16;18567:3;18561:4;18558:13;18554:36;18536:2;18526:8;18523:16;18518:2;18512:4;18509:12;18505:35;18489:111;18486:246;;;18642:8;18636:4;18632:19;18623:28;;18677:3;18670:5;18667:14;18664:40;;;18684:18;;:::i;:::-;18664:40;18717:5;;18486:246;18757:42;18795:3;18785:8;18779:4;18776:1;18757:42;:::i;:::-;18742:57;;;;18831:4;18826:3;18822:14;18815:5;18812:25;18809:51;;;18840:18;;:::i;:::-;18809:51;18889:4;18882:5;18878:16;18869:25;;17827:1073;;;;;;:::o;18906:281::-;18964:5;18988:23;19006:4;18988:23;:::i;:::-;18980:31;;19032:25;19048:8;19032:25;:::i;:::-;19020:37;;19076:104;19113:66;19103:8;19097:4;19076:104;:::i;:::-;19067:113;;18906:281;;;;:::o;19193:182::-;19333:34;19329:1;19321:6;19317:14;19310:58;19193:182;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:223::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:6;20382:2;20374:6;20370:15;20363:31;20178:223;:::o;20407:366::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:419::-;20945:4;20983:2;20972:9;20968:18;20960:26;;21032:9;21026:4;21022:20;21018:1;21007:9;21003:17;20996:47;21060:131;21186:4;21060:131;:::i;:::-;21052:139;;20779:419;;;:::o;21204:181::-;21344:33;21340:1;21332:6;21328:14;21321:57;21204:181;:::o;21391:366::-;21533:3;21554:67;21618:2;21613:3;21554:67;:::i;:::-;21547:74;;21630:93;21719:3;21630:93;:::i;:::-;21748:2;21743:3;21739:12;21732:19;;21391:366;;;:::o;21763:419::-;21929:4;21967:2;21956:9;21952:18;21944:26;;22016:9;22010:4;22006:20;22002:1;21991:9;21987:17;21980:47;22044:131;22170:4;22044:131;:::i;:::-;22036:139;;21763:419;;;:::o;22188:178::-;22328:30;22324:1;22316:6;22312:14;22305:54;22188:178;:::o;22372:366::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:419::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:170::-;23309:22;23305:1;23297:6;23293:14;23286:46;23169:170;:::o;23345:366::-;23487:3;23508:67;23572:2;23567:3;23508:67;:::i;:::-;23501:74;;23584:93;23673:3;23584:93;:::i;:::-;23702:2;23697:3;23693:12;23686:19;;23345:366;;;:::o;23717:419::-;23883:4;23921:2;23910:9;23906:18;23898:26;;23970:9;23964:4;23960:20;23956:1;23945:9;23941:17;23934:47;23998:131;24124:4;23998:131;:::i;:::-;23990:139;;23717:419;;;:::o;24142:118::-;24229:24;24247:5;24229:24;:::i;:::-;24224:3;24217:37;24142:118;;:::o;24266:664::-;24471:4;24509:3;24498:9;24494:19;24486:27;;24523:71;24591:1;24580:9;24576:17;24567:6;24523:71;:::i;:::-;24604:72;24672:2;24661:9;24657:18;24648:6;24604:72;:::i;:::-;24686;24754:2;24743:9;24739:18;24730:6;24686:72;:::i;:::-;24768;24836:2;24825:9;24821:18;24812:6;24768:72;:::i;:::-;24850:73;24918:3;24907:9;24903:19;24894:6;24850:73;:::i;:::-;24266:664;;;;;;;;:::o;24936:442::-;25085:4;25123:2;25112:9;25108:18;25100:26;;25136:71;25204:1;25193:9;25189:17;25180:6;25136:71;:::i;:::-;25217:72;25285:2;25274:9;25270:18;25261:6;25217:72;:::i;:::-;25299;25367:2;25356:9;25352:18;25343:6;25299:72;:::i;:::-;24936:442;;;;;;:::o;25384:148::-;25486:11;25523:3;25508:18;;25384:148;;;;:::o;25538:214::-;25678:66;25674:1;25666:6;25662:14;25655:90;25538:214;:::o;25758:400::-;25918:3;25939:84;26021:1;26016:3;25939:84;:::i;:::-;25932:91;;26032:93;26121:3;26032:93;:::i;:::-;26150:1;26145:3;26141:11;26134:18;;25758:400;;;:::o;26164:79::-;26203:7;26232:5;26221:16;;26164:79;;;:::o;26249:157::-;26354:45;26374:24;26392:5;26374:24;:::i;:::-;26354:45;:::i;:::-;26349:3;26342:58;26249:157;;:::o;26412:663::-;26653:3;26675:148;26819:3;26675:148;:::i;:::-;26668:155;;26833:75;26904:3;26895:6;26833:75;:::i;:::-;26933:2;26928:3;26924:12;26917:19;;26946:75;27017:3;27008:6;26946:75;:::i;:::-;27046:2;27041:3;27037:12;27030:19;;27066:3;27059:10;;26412:663;;;;;:::o;27081:545::-;27254:4;27292:3;27281:9;27277:19;27269:27;;27306:71;27374:1;27363:9;27359:17;27350:6;27306:71;:::i;:::-;27387:68;27451:2;27440:9;27436:18;27427:6;27387:68;:::i;:::-;27465:72;27533:2;27522:9;27518:18;27509:6;27465:72;:::i;:::-;27547;27615:2;27604:9;27600:18;27591:6;27547:72;:::i;:::-;27081:545;;;;;;;:::o;27632:167::-;27772:19;27768:1;27760:6;27756:14;27749:43;27632:167;:::o;27805:366::-;27947:3;27968:67;28032:2;28027:3;27968:67;:::i;:::-;27961:74;;28044:93;28133:3;28044:93;:::i;:::-;28162:2;28157:3;28153:12;28146:19;;27805:366;;;:::o;28177:419::-;28343:4;28381:2;28370:9;28366:18;28358:26;;28430:9;28424:4;28420:20;28416:1;28405:9;28401:17;28394:47;28458:131;28584:4;28458:131;:::i;:::-;28450:139;;28177:419;;;:::o;28602:167::-;28742:19;28738:1;28730:6;28726:14;28719:43;28602:167;:::o;28775:366::-;28917:3;28938:67;29002:2;28997:3;28938:67;:::i;:::-;28931:74;;29014:93;29103:3;29014:93;:::i;:::-;29132:2;29127:3;29123:12;29116:19;;28775:366;;;:::o;29147:419::-;29313:4;29351:2;29340:9;29336:18;29328:26;;29400:9;29394:4;29390:20;29386:1;29375:9;29371:17;29364:47;29428:131;29554:4;29428:131;:::i;:::-;29420:139;;29147:419;;;:::o;29572:180::-;29712:32;29708:1;29700:6;29696:14;29689:56;29572:180;:::o;29758:366::-;29900:3;29921:67;29985:2;29980:3;29921:67;:::i;:::-;29914:74;;29997:93;30086:3;29997:93;:::i;:::-;30115:2;30110:3;30106:12;30099:19;;29758:366;;;:::o;30130:419::-;30296:4;30334:2;30323:9;30319:18;30311:26;;30383:9;30377:4;30373:20;30369:1;30358:9;30354:17;30347:47;30411:131;30537:4;30411:131;:::i;:::-;30403:139;;30130:419;;;:::o;30555:182::-;30695:34;30691:1;30683:6;30679:14;30672:58;30555:182;:::o;30743:366::-;30885:3;30906:67;30970:2;30965:3;30906:67;:::i;:::-;30899:74;;30982:93;31071:3;30982:93;:::i;:::-;31100:2;31095:3;31091:12;31084:19;;30743:366;;;:::o;31115:419::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:177::-;31680:29;31676:1;31668:6;31664:14;31657:53;31540:177;:::o;31723:366::-;31865:3;31886:67;31950:2;31945:3;31886:67;:::i;:::-;31879:74;;31962:93;32051:3;31962:93;:::i;:::-;32080:2;32075:3;32071:12;32064:19;;31723:366;;;:::o;32095:419::-;32261:4;32299:2;32288:9;32284:18;32276:26;;32348:9;32342:4;32338:20;32334:1;32323:9;32319:17;32312:47;32376:131;32502:4;32376:131;:::i;:::-;32368:139;;32095:419;;;:::o;32520:175::-;32660:27;32656:1;32648:6;32644:14;32637:51;32520:175;:::o;32701:366::-;32843:3;32864:67;32928:2;32923:3;32864:67;:::i;:::-;32857:74;;32940:93;33029:3;32940:93;:::i;:::-;33058:2;33053:3;33049:12;33042:19;;32701:366;;;:::o;33073:419::-;33239:4;33277:2;33266:9;33262:18;33254:26;;33326:9;33320:4;33316:20;33312:1;33301:9;33297:17;33290:47;33354:131;33480:4;33354:131;:::i;:::-;33346:139;;33073:419;;;:::o;33498:175::-;33638:27;33634:1;33626:6;33622:14;33615:51;33498:175;:::o;33679:366::-;33821:3;33842:67;33906:2;33901:3;33842:67;:::i;:::-;33835:74;;33918:93;34007:3;33918:93;:::i;:::-;34036:2;34031:3;34027:12;34020:19;;33679:366;;;:::o;34051:419::-;34217:4;34255:2;34244:9;34240:18;34232:26;;34304:9;34298:4;34294:20;34290:1;34279:9;34275:17;34268:47;34332:131;34458:4;34332:131;:::i;:::-;34324:139;;34051:419;;;:::o;34476:173::-;34616:25;34612:1;34604:6;34600:14;34593:49;34476:173;:::o;34655:366::-;34797:3;34818:67;34882:2;34877:3;34818:67;:::i;:::-;34811:74;;34894:93;34983:3;34894:93;:::i;:::-;35012:2;35007:3;35003:12;34996:19;;34655:366;;;:::o;35027:419::-;35193:4;35231:2;35220:9;35216:18;35208:26;;35280:9;35274:4;35270:20;35266:1;35255:9;35251:17;35244:47;35308:131;35434:4;35308:131;:::i;:::-;35300:139;;35027:419;;;:::o;35452:172::-;35592:24;35588:1;35580:6;35576:14;35569:48;35452:172;:::o;35630:366::-;35772:3;35793:67;35857:2;35852:3;35793:67;:::i;:::-;35786:74;;35869:93;35958:3;35869:93;:::i;:::-;35987:2;35982:3;35978:12;35971:19;;35630:366;;;:::o;36002:419::-;36168:4;36206:2;36195:9;36191:18;36183:26;;36255:9;36249:4;36245:20;36241:1;36230:9;36226:17;36219:47;36283:131;36409:4;36283:131;:::i;:::-;36275:139;;36002:419;;;:::o;36427:225::-;36567:34;36563:1;36555:6;36551:14;36544:58;36636:8;36631:2;36623:6;36619:15;36612:33;36427:225;:::o;36658:366::-;36800:3;36821:67;36885:2;36880:3;36821:67;:::i;:::-;36814:74;;36897:93;36986:3;36897:93;:::i;:::-;37015:2;37010:3;37006:12;36999:19;;36658:366;;;:::o;37030:419::-;37196:4;37234:2;37223:9;37219:18;37211:26;;37283:9;37277:4;37273:20;37269:1;37258:9;37254:17;37247:47;37311:131;37437:4;37311:131;:::i;:::-;37303:139;;37030:419;;;:::o;37455:169::-;37595:21;37591:1;37583:6;37579:14;37572:45;37455:169;:::o;37630:366::-;37772:3;37793:67;37857:2;37852:3;37793:67;:::i;:::-;37786:74;;37869:93;37958:3;37869:93;:::i;:::-;37987:2;37982:3;37978:12;37971:19;;37630:366;;;:::o;38002:419::-;38168:4;38206:2;38195:9;38191:18;38183:26;;38255:9;38249:4;38245:20;38241:1;38230:9;38226:17;38219:47;38283:131;38409:4;38283:131;:::i;:::-;38275:139;;38002:419;;;:::o;38427:226::-;38567:34;38563:1;38555:6;38551:14;38544:58;38636:9;38631:2;38623:6;38619:15;38612:34;38427:226;:::o;38659:366::-;38801:3;38822:67;38886:2;38881:3;38822:67;:::i;:::-;38815:74;;38898:93;38987:3;38898:93;:::i;:::-;39016:2;39011:3;39007:12;39000:19;;38659:366;;;:::o;39031:419::-;39197:4;39235:2;39224:9;39220:18;39212:26;;39284:9;39278:4;39274:20;39270:1;39259:9;39255:17;39248:47;39312:131;39438:4;39312:131;:::i;:::-;39304:139;;39031:419;;;:::o;39456:194::-;39496:4;39516:20;39534:1;39516:20;:::i;:::-;39511:25;;39550:20;39568:1;39550:20;:::i;:::-;39545:25;;39594:1;39591;39587:9;39579:17;;39618:1;39612:4;39609:11;39606:37;;;39623:18;;:::i;:::-;39606:37;39456:194;;;;:::o;39656:179::-;39796:31;39792:1;39784:6;39780:14;39773:55;39656:179;:::o;39841:366::-;39983:3;40004:67;40068:2;40063:3;40004:67;:::i;:::-;39997:74;;40080:93;40169:3;40080:93;:::i;:::-;40198:2;40193:3;40189:12;40182:19;;39841:366;;;:::o;40213:419::-;40379:4;40417:2;40406:9;40402:18;40394:26;;40466:9;40460:4;40456:20;40452:1;40441:9;40437:17;40430:47;40494:131;40620:4;40494:131;:::i;:::-;40486:139;;40213:419;;;:::o;40638:177::-;40778:29;40774:1;40766:6;40762:14;40755:53;40638:177;:::o;40821:366::-;40963:3;40984:67;41048:2;41043:3;40984:67;:::i;:::-;40977:74;;41060:93;41149:3;41060:93;:::i;:::-;41178:2;41173:3;41169:12;41162:19;;40821:366;;;:::o;41193:419::-;41359:4;41397:2;41386:9;41382:18;41374:26;;41446:9;41440:4;41436:20;41432:1;41421:9;41417:17;41410:47;41474:131;41600:4;41474:131;:::i;:::-;41466:139;;41193:419;;;:::o;41618:182::-;41758:34;41754:1;41746:6;41742:14;41735:58;41618:182;:::o;41806:366::-;41948:3;41969:67;42033:2;42028:3;41969:67;:::i;:::-;41962:74;;42045:93;42134:3;42045:93;:::i;:::-;42163:2;42158:3;42154:12;42147:19;;41806:366;;;:::o;42178:419::-;42344:4;42382:2;42371:9;42367:18;42359:26;;42431:9;42425:4;42421:20;42417:1;42406:9;42402:17;42395:47;42459:131;42585:4;42459:131;:::i;:::-;42451:139;;42178:419;;;:::o;42603:147::-;42704:11;42741:3;42726:18;;42603:147;;;;:::o;42756:114::-;;:::o;42876:398::-;43035:3;43056:83;43137:1;43132:3;43056:83;:::i;:::-;43049:90;;43148:93;43237:3;43148:93;:::i;:::-;43266:1;43261:3;43257:11;43250:18;;42876:398;;;:::o;43280:379::-;43464:3;43486:147;43629:3;43486:147;:::i;:::-;43479:154;;43650:3;43643:10;;43280:379;;;:::o;43665:180::-;43713:77;43710:1;43703:88;43810:4;43807:1;43800:15;43834:4;43831:1;43824:15;43851:180;43899:77;43896:1;43889:88;43996:4;43993:1;43986:15;44020:4;44017:1;44010:15;44037:143;44094:5;44125:6;44119:13;44110:22;;44141:33;44168:5;44141:33;:::i;:::-;44037:143;;;;:::o;44186:351::-;44256:6;44305:2;44293:9;44284:7;44280:23;44276:32;44273:119;;;44311:79;;:::i;:::-;44273:119;44431:1;44456:64;44512:7;44503:6;44492:9;44488:22;44456:64;:::i;:::-;44446:74;;44402:128;44186:351;;;;:::o;44543:85::-;44588:7;44617:5;44606:16;;44543:85;;;:::o;44634:158::-;44692:9;44725:61;44743:42;44752:32;44778:5;44752:32;:::i;:::-;44743:42;:::i;:::-;44725:61;:::i;:::-;44712:74;;44634:158;;;:::o;44798:147::-;44893:45;44932:5;44893:45;:::i;:::-;44888:3;44881:58;44798:147;;:::o;44951:114::-;45018:6;45052:5;45046:12;45036:22;;44951:114;;;:::o;45071:184::-;45170:11;45204:6;45199:3;45192:19;45244:4;45239:3;45235:14;45220:29;;45071:184;;;;:::o;45261:132::-;45328:4;45351:3;45343:11;;45381:4;45376:3;45372:14;45364:22;;45261:132;;;:::o;45399:108::-;45476:24;45494:5;45476:24;:::i;:::-;45471:3;45464:37;45399:108;;:::o;45513:179::-;45582:10;45603:46;45645:3;45637:6;45603:46;:::i;:::-;45681:4;45676:3;45672:14;45658:28;;45513:179;;;;:::o;45698:113::-;45768:4;45800;45795:3;45791:14;45783:22;;45698:113;;;:::o;45847:732::-;45966:3;45995:54;46043:5;45995:54;:::i;:::-;46065:86;46144:6;46139:3;46065:86;:::i;:::-;46058:93;;46175:56;46225:5;46175:56;:::i;:::-;46254:7;46285:1;46270:284;46295:6;46292:1;46289:13;46270:284;;;46371:6;46365:13;46398:63;46457:3;46442:13;46398:63;:::i;:::-;46391:70;;46484:60;46537:6;46484:60;:::i;:::-;46474:70;;46330:224;46317:1;46314;46310:9;46305:14;;46270:284;;;46274:14;46570:3;46563:10;;45971:608;;;45847:732;;;;:::o;46585:831::-;46848:4;46886:3;46875:9;46871:19;46863:27;;46900:71;46968:1;46957:9;46953:17;46944:6;46900:71;:::i;:::-;46981:80;47057:2;47046:9;47042:18;47033:6;46981:80;:::i;:::-;47108:9;47102:4;47098:20;47093:2;47082:9;47078:18;47071:48;47136:108;47239:4;47230:6;47136:108;:::i;:::-;47128:116;;47254:72;47322:2;47311:9;47307:18;47298:6;47254:72;:::i;:::-;47336:73;47404:3;47393:9;47389:19;47380:6;47336:73;:::i;:::-;46585:831;;;;;;;;:::o

Swarm Source

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