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

Token

EtherMars (ETM)
 

Overview

Max Total Supply

1,000,000,000 ETM

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 ETM

Value
$0.00
0x1f4aeda8d2ce102d1a6eb6ddff886fd21ba195f4
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:
EtherMars

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-05
*/

/**
 * ETHERMARS - Opening a new universe, EtherMars Adventure, EtherMars Explore
 *
 * Telegram: https://t.me/EtherMars_ERC
 * Website: https://ethermars.space
 * Twitter: https://twitter.com/EtherMars_ERC
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.16;

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

library SafeMath {

    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 trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    unchecked {
        if (b > a) return (false, 0);
        return (true, 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 tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    unchecked {
        if (b == 0) return (false, 0);
        return (true, 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 add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

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

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

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

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

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

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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    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;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    string private constant _name = "EtherMars";
    string private constant _symbol = "ETM";
    uint8 private constant _decimals = 9;

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) public bots;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    event SwapAndLiquidity(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20(_name, _symbol, _decimals) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 10;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 40;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 10**_decimals;

        maxTransactionAmount = (totalSupply * 1) / 100;
        maxWallet = (totalSupply *  1) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0x5bc7B2A1Bd3F69aDdad8365b5F4a1eF198f4d4B1);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = !tradingActive;
        swapEnabled = tradingActive;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 10**_decimals,
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 10**_decimals,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**_decimals);
        maxTransactionAmount = newTxnNum * (10**_decimals);
    }

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

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        address oldAddress = marketingWallet;
        marketingWallet = newWallet;
        emit marketingWalletUpdated(newWallet, oldAddress);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

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

            require(!bots[from] && !bots[to], "Your wallet is blacklisted!");

            //when buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
            //when sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Sell transfer amount exceeds the maxTransactionAmount."
                );
            }

            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
        tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
        totalTokensToSwap /
        2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquidity(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquidity","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600981526020017f45746865724d61727300000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45544d000000000000000000000000000000000000000000000000000000000081525060098260039081620000c7919062000cec565b508160049081620000d9919062000cec565b5080600560006101000a81548160ff021916908360ff160217905550505050620001186200010c6200053360201b60201c565b6200053b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001448160016200060160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea919062000e3d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000278919062000e3d565b6040518363ffffffff1660e01b81526004016200029792919062000e80565b6020604051808303816000875af1158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000e3d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032560a05160016200060160201b60201c565b6200033a60a0516001620006eb60201b60201c565b6000600a9050600080602890506000806009600a6200035a91906200103d565b633b9aca006200036b91906200108e565b905060646001826200037e91906200108e565b6200038a919062001108565b6007819055506064600182620003a191906200108e565b620003ad919062001108565b600981905550612710600582620003c591906200108e565b620003d1919062001108565b60088190555084600c8190555083600d81905550600d54600c54620003f7919062001140565b600b8190555082600f8190555081601081905550601054600f546200041d919062001140565b600e81905550600e54601381905550735bc7b2a1bd3f69addad8365b5f4a1ef198f4d4b1600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004a3620004956200078c60201b60201c565b6001620007b660201b60201c565b620004b6306001620007b660201b60201c565b620004cb61dead6001620007b660201b60201c565b620004ed620004df6200078c60201b60201c565b60016200060160201b60201c565b620005003060016200060160201b60201c565b6200051561dead60016200060160201b60201c565b620005273382620008f060201b60201c565b505050505050620012d8565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006116200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006376200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068790620011dc565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007c66200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007ec6200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083c90620011dc565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e491906200121b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000962576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009599062001288565b60405180910390fd5b620009766000838362000a6860201b60201c565b80600260008282546200098a919062001140565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e1919062001140565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a489190620012bb565b60405180910390a362000a646000838362000a6d60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000af457607f821691505b60208210810362000b0a5762000b0962000aac565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b35565b62000b80868362000b35565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bcd62000bc762000bc18462000b98565b62000ba2565b62000b98565b9050919050565b6000819050919050565b62000be98362000bac565b62000c0162000bf88262000bd4565b84845462000b42565b825550505050565b600090565b62000c1862000c09565b62000c2581848462000bde565b505050565b5b8181101562000c4d5762000c4160008262000c0e565b60018101905062000c2b565b5050565b601f82111562000c9c5762000c668162000b10565b62000c718462000b25565b8101602085101562000c81578190505b62000c9962000c908562000b25565b83018262000c2a565b50505b505050565b600082821c905092915050565b600062000cc16000198460080262000ca1565b1980831691505092915050565b600062000cdc838362000cae565b9150826002028217905092915050565b62000cf78262000a72565b67ffffffffffffffff81111562000d135762000d1262000a7d565b5b62000d1f825462000adb565b62000d2c82828562000c51565b600060209050601f83116001811462000d64576000841562000d4f578287015190505b62000d5b858262000cce565b86555062000dcb565b601f19841662000d748662000b10565b60005b8281101562000d9e5784890151825560018201915060208501945060208101905062000d77565b8683101562000dbe578489015162000dba601f89168262000cae565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e058262000dd8565b9050919050565b62000e178162000df8565b811462000e2357600080fd5b50565b60008151905062000e378162000e0c565b92915050565b60006020828403121562000e565762000e5562000dd3565b5b600062000e668482850162000e26565b91505092915050565b62000e7a8162000df8565b82525050565b600060408201905062000e97600083018562000e6f565b62000ea6602083018462000e6f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f3b5780860481111562000f135762000f1262000ead565b5b600185161562000f235780820291505b808102905062000f338562000edc565b945062000ef3565b94509492505050565b60008262000f56576001905062001029565b8162000f66576000905062001029565b816001811462000f7f576002811462000f8a5762000fc0565b600191505062001029565b60ff84111562000f9f5762000f9e62000ead565b5b8360020a91508482111562000fb95762000fb862000ead565b5b5062001029565b5060208310610133831016604e8410600b841016171562000ffa5782820a90508381111562000ff45762000ff362000ead565b5b62001029565b62001009848484600162000ee9565b9250905081840481111562001023576200102262000ead565b5b81810290505b9392505050565b600060ff82169050919050565b60006200104a8262000b98565b9150620010578362001030565b9250620010867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f44565b905092915050565b60006200109b8262000b98565b9150620010a88362000b98565b9250828202620010b88162000b98565b91508282048414831517620010d257620010d162000ead565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011158262000b98565b9150620011228362000b98565b925082620011355762001134620010d9565b5b828204905092915050565b60006200114d8262000b98565b91506200115a8362000b98565b925082820190508082111562001175576200117462000ead565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011c46020836200117b565b9150620011d1826200118c565b602082019050919050565b60006020820190508181036000830152620011f781620011b5565b9050919050565b60008115159050919050565b6200121581620011fe565b82525050565b60006020820190506200123260008301846200120a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001270601f836200117b565b91506200127d8262001238565b602082019050919050565b60006020820190508181036000830152620012a38162001261565b9050919050565b620012b58162000b98565b82525050565b6000602082019050620012d26000830184620012aa565b92915050565b60805160a051614ad16200132860003960008181610dc401526114cb015260008181610ab401528181613124015281816132050152818161322c015281816132c801526132ef0152614ad16000f3fe6080604052600436106102295760003560e01c80638a8c523c11610123578063bea1cb27116100ab578063d85ba0631161006f578063d85ba06314610828578063dd62ed3e14610853578063e2f4560514610890578063f2fde38b146108bb578063f8b45b05146108e457610230565b8063bea1cb2714610731578063bfd792841461075a578063c024666814610797578063c8c8ebe4146107c0578063d257b34f146107eb57610230565b80639a7a23d6116100f25780639a7a23d61461063a578063a457c2d714610663578063a9059cbb146106a0578063aacebbe3146106dd578063bbc0c7421461070657610230565b80638a8c523c146105a45780638da5cb5b146105bb57806395d89b41146105e6578063961883991461061157610230565b8063401fc00f116101b15780636ddd1713116101755780636ddd1713146104d157806370a08231146104fc578063715018a6146105395780637571336a1461055057806375f0a8741461057957610230565b8063401fc00f146103ec57806349bd5a5e146104155780634fbee1931461044057806366ca9b831461047d5780636a486a8e146104a657610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c57806327c8f83514610359578063313ce5671461038457806339509351146103af57610230565b806302dbd8f81461023557806306fdde031461025e578063095ea7b3146102895780631694505e146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c600480360381019061025791906133de565b61090f565b005b34801561026a57600080fd5b50610273610a02565b60405161028091906134ae565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab919061352e565b610a94565b6040516102bd9190613589565b60405180910390f35b3480156102d257600080fd5b506102db610ab2565b6040516102e89190613603565b60405180910390f35b3480156102fd57600080fd5b50610306610ad6565b604051610313919061362d565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190613648565b610ae0565b6040516103509190613589565b60405180910390f35b34801561036557600080fd5b5061036e610bd8565b60405161037b91906136aa565b60405180910390f35b34801561039057600080fd5b50610399610bde565b6040516103a691906136e1565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061352e565b610bf5565b6040516103e39190613589565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e919061378d565b610ca1565b005b34801561042157600080fd5b5061042a610dc2565b60405161043791906136aa565b60405180910390f35b34801561044c57600080fd5b50610467600480360381019061046291906137ed565b610de6565b6040516104749190613589565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906133de565b610e3c565b005b3480156104b257600080fd5b506104bb610f26565b6040516104c8919061362d565b60405180910390f35b3480156104dd57600080fd5b506104e6610f2c565b6040516104f39190613589565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906137ed565b610f3f565b604051610530919061362d565b60405180910390f35b34801561054557600080fd5b5061054e610f87565b005b34801561055c57600080fd5b506105776004803603810190610572919061381a565b61100f565b005b34801561058557600080fd5b5061058e6110e6565b60405161059b91906136aa565b60405180910390f35b3480156105b057600080fd5b506105b961110c565b005b3480156105c757600080fd5b506105d06111dd565b6040516105dd91906136aa565b60405180910390f35b3480156105f257600080fd5b506105fb611207565b60405161060891906134ae565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906133de565b611299565b005b34801561064657600080fd5b50610661600480360381019061065c919061381a565b61144d565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061352e565b611565565b6040516106979190613589565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c2919061352e565b611650565b6040516106d49190613589565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff91906137ed565b61166e565b005b34801561071257600080fd5b5061071b61181f565b6040516107289190613589565b60405180910390f35b34801561073d57600080fd5b506107586004803603810190610753919061378d565b611832565b005b34801561076657600080fd5b50610781600480360381019061077c91906137ed565b611906565b60405161078e9190613589565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b9919061381a565b611926565b005b3480156107cc57600080fd5b506107d5611a4b565b6040516107e2919061362d565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d919061385a565b611a51565b60405161081f9190613589565b60405180910390f35b34801561083457600080fd5b5061083d611ba6565b60405161084a919061362d565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190613887565b611bac565b604051610887919061362d565b60405180910390f35b34801561089c57600080fd5b506108a5611c33565b6040516108b2919061362d565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd91906137ed565b611c39565b005b3480156108f057600080fd5b506108f9611d30565b604051610906919061362d565b60405180910390f35b610917611d36565b73ffffffffffffffffffffffffffffffffffffffff166109356111dd565b73ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613913565b60405180910390fd5b81600f8190555080601081905550601054600f546109a99190613962565b600e81905550600e54601381905550600f600e5411156109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906139e2565b60405180910390fd5b5050565b606060038054610a1190613a31565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d90613a31565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b6000610aa8610aa1611d36565b8484611d3e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610aed848484611f07565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b38611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf90613ad4565b60405180910390fd5b610bcc85610bc4611d36565b858403611d3e565b60019150509392505050565b61dead81565b6000600560009054906101000a900460ff16905090565b6000610c97610c02611d36565b848460016000610c10611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c929190613962565b611d3e565b6001905092915050565b610ca9611d36565b73ffffffffffffffffffffffffffffffffffffffff16610cc76111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613913565b60405180910390fd5b60005b83839050811015610dbc578160176000868685818110610d4357610d42613af4565b5b9050602002016020810190610d5891906137ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610db490613b23565b915050610d20565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e44611d36565b73ffffffffffffffffffffffffffffffffffffffff16610e626111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613913565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ed69190613962565b600b81905550600f600b541115610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906139e2565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f8f611d36565b73ffffffffffffffffffffffffffffffffffffffff16610fad6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90613913565b60405180910390fd5b61100d6000612a46565b565b611017611d36565b73ffffffffffffffffffffffffffffffffffffffff166110356111dd565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613913565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611114611d36565b73ffffffffffffffffffffffffffffffffffffffff166111326111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613913565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550600a60009054906101000a900460ff16600a60016101000a81548160ff021916908315150217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461121690613a31565b80601f016020809104026020016040519081016040528092919081815260200182805461124290613a31565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b6112a1611d36565b73ffffffffffffffffffffffffffffffffffffffff166112bf6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613913565b60405180910390fd5b6009600a6113239190613c9e565b6103e86005611330610ad6565b61133a9190613ce9565b6113449190613d5a565b61134e9190613d5a565b821015611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790613dfd565b60405180910390fd5b6009600a61139e9190613c9e565b6103e860056113ab610ad6565b6113b59190613ce9565b6113bf9190613d5a565b6113c99190613d5a565b81101561140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290613e8f565b60405180910390fd5b6009600a6114199190613c9e565b816114249190613ce9565b6009819055506009600a6114389190613c9e565b826114439190613ce9565b6007819055505050565b611455611d36565b73ffffffffffffffffffffffffffffffffffffffff166114736111dd565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613913565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90613f21565b60405180910390fd5b6115618282612b0c565b5050565b60008060016000611574611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613fb3565b60405180910390fd5b61164561163c611d36565b85858403611d3e565b600191505092915050565b600061166461165d611d36565b8484611f07565b6001905092915050565b611676611d36565b73ffffffffffffffffffffffffffffffffffffffff166116946111dd565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190613913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090614045565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b600a60009054906101000a900460ff1681565b61183a611d36565b73ffffffffffffffffffffffffffffffffffffffff166118586111dd565b73ffffffffffffffffffffffffffffffffffffffff16146118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613913565b60405180910390fd5b60005b83839050811015611900576118ed8484838181106118d2576118d1613af4565b5b90506020020160208101906118e791906137ed565b83611926565b80806118f890613b23565b9150506118b1565b50505050565b60176020528060005260406000206000915054906101000a900460ff1681565b61192e611d36565b73ffffffffffffffffffffffffffffffffffffffff1661194c6111dd565b73ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613913565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a3f9190613589565b60405180910390a25050565b60075481565b6000611a5b611d36565b73ffffffffffffffffffffffffffffffffffffffff16611a796111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690613913565b60405180910390fd5b620186a06001611add610ad6565b611ae79190613ce9565b611af19190613d5a565b821015611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a906140d7565b60405180910390fd5b6103e86005611b40610ad6565b611b4a9190613ce9565b611b549190613d5a565b821115611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90614169565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611c41611d36565b73ffffffffffffffffffffffffffffffffffffffff16611c5f6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b906141fb565b60405180910390fd5b611d2d81612a46565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da49061428d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e139061431f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611efa919061362d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d906143b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc90614443565b60405180910390fd5b60008103611ffe57611ff983836000612bad565b612a41565b6120066111dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561207457506120446111dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120ad5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120e7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121005750600560159054906101000a900460ff16155b156125c657600a60009054906101000a900460ff166121fa57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121ba5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f0906144af565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561229e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d49061451b565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123805750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612427576007548111156123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c1906145ad565b60405180910390fd5b6009546123d683610f3f565b826123e19190613962565b1115612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614619565b60405180910390fd5b6125c5565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124ca5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251957600754811115612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b906146ab565b60405180910390fd5b6125c4565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125c35760095461257683610f3f565b826125819190613962565b11156125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b990614619565b60405180910390fd5b5b5b5b5b60006125d130610f3f565b9050600060085482101590508080156125f65750600a60019054906101000a900460ff165b801561260f5750600560159054906101000a900460ff16155b80156126655750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126bb5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127115750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612755576001600560156101000a81548160ff021916908315150217905550612739612e2c565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061280b5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281557600090505b60008115612a2857601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561287857506000600e54115b15612912576128a56064612897600e548861303990919063ffffffff16565b61304f90919063ffffffff16565b9050600e54601054826128b89190613ce9565b6128c29190613d5a565b601260008282546128d39190613962565b92505081905550600e54600f54826128eb9190613ce9565b6128f59190613d5a565b601160008282546129069190613962565b92505081905550612a04565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561296d57506000600b54115b15612a035761299a606461298c600b548861303990919063ffffffff16565b61304f90919063ffffffff16565b9050600b54600d54826129ad9190613ce9565b6129b79190613d5a565b601260008282546129c89190613962565b92505081905550600b54600c54826129e09190613ce9565b6129ea9190613d5a565b601160008282546129fb9190613962565b925050819055505b5b6000811115612a1957612a18873083612bad565b5b8085612a2591906146cb565b94505b612a33878787612bad565b601354600e81905550505050505b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c13906143b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614443565b60405180910390fd5b612c96838383613065565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1390614771565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612daf9190613962565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e13919061362d565b60405180910390a3612e2684848461306a565b50505050565b6000612e3730610f3f565b90506000601154601254612e4b9190613962565b9050600080831480612e5d5750600082145b15612e6a57505050613037565b6014600854612e799190613ce9565b831115612e92576014600854612e8f9190613ce9565b92505b600060028360125486612ea59190613ce9565b612eaf9190613d5a565b612eb99190613d5a565b90506000612ed0828661306f90919063ffffffff16565b90506000479050612ee082613085565b6000612ef5824761306f90919063ffffffff16565b90506000612f2087612f126011548561303990919063ffffffff16565b61304f90919063ffffffff16565b905060008183612f3091906146cb565b905060006012819055506000601181905550600086118015612f525750600081115b15612f9f57612f6186826132c2565b7f34755123977fda4465c19ffa30709bc81ed728f17cf49014d33b243ae2d682fb8582601254604051612f9693929190614791565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fe5906147f9565b60006040518083038185875af1925050503d8060008114613022576040519150601f19603f3d011682016040523d82523d6000602084013e613027565b606091505b5050809750505050505050505050505b565b600081836130479190613ce9565b905092915050565b6000818361305d9190613d5a565b905092915050565b505050565b505050565b6000818361307d91906146cb565b905092915050565b6000600267ffffffffffffffff8111156130a2576130a161480e565b5b6040519080825280602002602001820160405280156130d05781602001602082028036833780820191505090505b50905030816000815181106130e8576130e7613af4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561318d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b19190614852565b816001815181106131c5576131c4613af4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061322a307f000000000000000000000000000000000000000000000000000000000000000084611d3e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161328c959493929190614978565b600060405180830381600087803b1580156132a657600080fd5b505af11580156132ba573d6000803e3d6000fd5b505050505050565b6132ed307f000000000000000000000000000000000000000000000000000000000000000084611d3e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613354969594939291906149d2565b60606040518083038185885af1158015613372573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133979190614a48565b5050505050565b600080fd5b600080fd5b6000819050919050565b6133bb816133a8565b81146133c657600080fd5b50565b6000813590506133d8816133b2565b92915050565b600080604083850312156133f5576133f461339e565b5b6000613403858286016133c9565b9250506020613414858286016133c9565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561345857808201518184015260208101905061343d565b60008484015250505050565b6000601f19601f8301169050919050565b60006134808261341e565b61348a8185613429565b935061349a81856020860161343a565b6134a381613464565b840191505092915050565b600060208201905081810360008301526134c88184613475565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134fb826134d0565b9050919050565b61350b816134f0565b811461351657600080fd5b50565b60008135905061352881613502565b92915050565b600080604083850312156135455761354461339e565b5b600061355385828601613519565b9250506020613564858286016133c9565b9150509250929050565b60008115159050919050565b6135838161356e565b82525050565b600060208201905061359e600083018461357a565b92915050565b6000819050919050565b60006135c96135c46135bf846134d0565b6135a4565b6134d0565b9050919050565b60006135db826135ae565b9050919050565b60006135ed826135d0565b9050919050565b6135fd816135e2565b82525050565b600060208201905061361860008301846135f4565b92915050565b613627816133a8565b82525050565b6000602082019050613642600083018461361e565b92915050565b6000806000606084860312156136615761366061339e565b5b600061366f86828701613519565b935050602061368086828701613519565b9250506040613691868287016133c9565b9150509250925092565b6136a4816134f0565b82525050565b60006020820190506136bf600083018461369b565b92915050565b600060ff82169050919050565b6136db816136c5565b82525050565b60006020820190506136f660008301846136d2565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613721576137206136fc565b5b8235905067ffffffffffffffff81111561373e5761373d613701565b5b60208301915083602082028301111561375a57613759613706565b5b9250929050565b61376a8161356e565b811461377557600080fd5b50565b60008135905061378781613761565b92915050565b6000806000604084860312156137a6576137a561339e565b5b600084013567ffffffffffffffff8111156137c4576137c36133a3565b5b6137d08682870161370b565b935093505060206137e386828701613778565b9150509250925092565b6000602082840312156138035761380261339e565b5b600061381184828501613519565b91505092915050565b600080604083850312156138315761383061339e565b5b600061383f85828601613519565b925050602061385085828601613778565b9150509250929050565b6000602082840312156138705761386f61339e565b5b600061387e848285016133c9565b91505092915050565b6000806040838503121561389e5761389d61339e565b5b60006138ac85828601613519565b92505060206138bd85828601613519565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138fd602083613429565b9150613908826138c7565b602082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061396d826133a8565b9150613978836133a8565b92508282019050808211156139905761398f613933565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006139cc601d83613429565b91506139d782613996565b602082019050919050565b600060208201905081810360008301526139fb816139bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a4957607f821691505b602082108103613a5c57613a5b613a02565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613abe602883613429565b9150613ac982613a62565b604082019050919050565b60006020820190508181036000830152613aed81613ab1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b2e826133a8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6057613b5f613933565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613bc257808604811115613b9e57613b9d613933565b5b6001851615613bad5780820291505b8081029050613bbb85613b6b565b9450613b82565b94509492505050565b600082613bdb5760019050613c97565b81613be95760009050613c97565b8160018114613bff5760028114613c0957613c38565b6001915050613c97565b60ff841115613c1b57613c1a613933565b5b8360020a915084821115613c3257613c31613933565b5b50613c97565b5060208310610133831016604e8410600b8410161715613c6d5782820a905083811115613c6857613c67613933565b5b613c97565b613c7a8484846001613b78565b92509050818404811115613c9157613c90613933565b5b81810290505b9392505050565b6000613ca9826133a8565b9150613cb4836136c5565b9250613ce17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613bcb565b905092915050565b6000613cf4826133a8565b9150613cff836133a8565b9250828202613d0d816133a8565b91508282048414831517613d2457613d23613933565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d65826133a8565b9150613d70836133a8565b925082613d8057613d7f613d2b565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613de7602183613429565b9150613df282613d8b565b604082019050919050565b60006020820190508181036000830152613e1681613dda565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613e79602483613429565b9150613e8482613e1d565b604082019050919050565b60006020820190508181036000830152613ea881613e6c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613f0b603983613429565b9150613f1682613eaf565b604082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f9d602583613429565b9150613fa882613f41565b604082019050919050565b60006020820190508181036000830152613fcc81613f90565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061402f602283613429565b915061403a82613fd3565b604082019050919050565b6000602082019050818103600083015261405e81614022565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006140c1603583613429565b91506140cc82614065565b604082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614153603483613429565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141e5602683613429565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614277602483613429565b91506142828261421b565b604082019050919050565b600060208201905081810360008301526142a68161426a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614309602283613429565b9150614314826142ad565b604082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061439b602583613429565b91506143a68261433f565b604082019050919050565b600060208201905081810360008301526143ca8161438e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061442d602383613429565b9150614438826143d1565b604082019050919050565b6000602082019050818103600083015261445c81614420565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614499601683613429565b91506144a482614463565b602082019050919050565b600060208201905081810360008301526144c88161448c565b9050919050565b7f596f75722077616c6c657420697320626c61636b6c6973746564210000000000600082015250565b6000614505601b83613429565b9150614510826144cf565b602082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614597603583613429565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614603601383613429565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614695603683613429565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b60006146d6826133a8565b91506146e1836133a8565b92508282039050818111156146f9576146f8613933565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061475b602683613429565b9150614766826146ff565b604082019050919050565b6000602082019050818103600083015261478a8161474e565b9050919050565b60006060820190506147a6600083018661361e565b6147b3602083018561361e565b6147c0604083018461361e565b949350505050565b600081905092915050565b50565b60006147e36000836147c8565b91506147ee826147d3565b600082019050919050565b6000614804826147d6565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061484c81613502565b92915050565b6000602082840312156148685761486761339e565b5b60006148768482850161483d565b91505092915050565b6000819050919050565b60006148a461489f61489a8461487f565b6135a4565b6133a8565b9050919050565b6148b481614889565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148ef816134f0565b82525050565b600061490183836148e6565b60208301905092915050565b6000602082019050919050565b6000614925826148ba565b61492f81856148c5565b935061493a836148d6565b8060005b8381101561496b57815161495288826148f5565b975061495d8361490d565b92505060018101905061493e565b5085935050505092915050565b600060a08201905061498d600083018861361e565b61499a60208301876148ab565b81810360408301526149ac818661491a565b90506149bb606083018561369b565b6149c8608083018461361e565b9695505050505050565b600060c0820190506149e7600083018961369b565b6149f4602083018861361e565b614a0160408301876148ab565b614a0e60608301866148ab565b614a1b608083018561369b565b614a2860a083018461361e565b979650505050505050565b600081519050614a42816133b2565b92915050565b600080600060608486031215614a6157614a6061339e565b5b6000614a6f86828701614a33565b9350506020614a8086828701614a33565b9250506040614a9186828701614a33565b915050925092509256fea2646970667358221220d4832bce8203789fb35dcf2838028f7be0194c1361d67e885bdaf047d001d4ce64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80638a8c523c11610123578063bea1cb27116100ab578063d85ba0631161006f578063d85ba06314610828578063dd62ed3e14610853578063e2f4560514610890578063f2fde38b146108bb578063f8b45b05146108e457610230565b8063bea1cb2714610731578063bfd792841461075a578063c024666814610797578063c8c8ebe4146107c0578063d257b34f146107eb57610230565b80639a7a23d6116100f25780639a7a23d61461063a578063a457c2d714610663578063a9059cbb146106a0578063aacebbe3146106dd578063bbc0c7421461070657610230565b80638a8c523c146105a45780638da5cb5b146105bb57806395d89b41146105e6578063961883991461061157610230565b8063401fc00f116101b15780636ddd1713116101755780636ddd1713146104d157806370a08231146104fc578063715018a6146105395780637571336a1461055057806375f0a8741461057957610230565b8063401fc00f146103ec57806349bd5a5e146104155780634fbee1931461044057806366ca9b831461047d5780636a486a8e146104a657610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c57806327c8f83514610359578063313ce5671461038457806339509351146103af57610230565b806302dbd8f81461023557806306fdde031461025e578063095ea7b3146102895780631694505e146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c600480360381019061025791906133de565b61090f565b005b34801561026a57600080fd5b50610273610a02565b60405161028091906134ae565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab919061352e565b610a94565b6040516102bd9190613589565b60405180910390f35b3480156102d257600080fd5b506102db610ab2565b6040516102e89190613603565b60405180910390f35b3480156102fd57600080fd5b50610306610ad6565b604051610313919061362d565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190613648565b610ae0565b6040516103509190613589565b60405180910390f35b34801561036557600080fd5b5061036e610bd8565b60405161037b91906136aa565b60405180910390f35b34801561039057600080fd5b50610399610bde565b6040516103a691906136e1565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061352e565b610bf5565b6040516103e39190613589565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e919061378d565b610ca1565b005b34801561042157600080fd5b5061042a610dc2565b60405161043791906136aa565b60405180910390f35b34801561044c57600080fd5b50610467600480360381019061046291906137ed565b610de6565b6040516104749190613589565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906133de565b610e3c565b005b3480156104b257600080fd5b506104bb610f26565b6040516104c8919061362d565b60405180910390f35b3480156104dd57600080fd5b506104e6610f2c565b6040516104f39190613589565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906137ed565b610f3f565b604051610530919061362d565b60405180910390f35b34801561054557600080fd5b5061054e610f87565b005b34801561055c57600080fd5b506105776004803603810190610572919061381a565b61100f565b005b34801561058557600080fd5b5061058e6110e6565b60405161059b91906136aa565b60405180910390f35b3480156105b057600080fd5b506105b961110c565b005b3480156105c757600080fd5b506105d06111dd565b6040516105dd91906136aa565b60405180910390f35b3480156105f257600080fd5b506105fb611207565b60405161060891906134ae565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906133de565b611299565b005b34801561064657600080fd5b50610661600480360381019061065c919061381a565b61144d565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061352e565b611565565b6040516106979190613589565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c2919061352e565b611650565b6040516106d49190613589565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff91906137ed565b61166e565b005b34801561071257600080fd5b5061071b61181f565b6040516107289190613589565b60405180910390f35b34801561073d57600080fd5b506107586004803603810190610753919061378d565b611832565b005b34801561076657600080fd5b50610781600480360381019061077c91906137ed565b611906565b60405161078e9190613589565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b9919061381a565b611926565b005b3480156107cc57600080fd5b506107d5611a4b565b6040516107e2919061362d565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d919061385a565b611a51565b60405161081f9190613589565b60405180910390f35b34801561083457600080fd5b5061083d611ba6565b60405161084a919061362d565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190613887565b611bac565b604051610887919061362d565b60405180910390f35b34801561089c57600080fd5b506108a5611c33565b6040516108b2919061362d565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd91906137ed565b611c39565b005b3480156108f057600080fd5b506108f9611d30565b604051610906919061362d565b60405180910390f35b610917611d36565b73ffffffffffffffffffffffffffffffffffffffff166109356111dd565b73ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613913565b60405180910390fd5b81600f8190555080601081905550601054600f546109a99190613962565b600e81905550600e54601381905550600f600e5411156109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906139e2565b60405180910390fd5b5050565b606060038054610a1190613a31565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d90613a31565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b6000610aa8610aa1611d36565b8484611d3e565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610aed848484611f07565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b38611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf90613ad4565b60405180910390fd5b610bcc85610bc4611d36565b858403611d3e565b60019150509392505050565b61dead81565b6000600560009054906101000a900460ff16905090565b6000610c97610c02611d36565b848460016000610c10611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c929190613962565b611d3e565b6001905092915050565b610ca9611d36565b73ffffffffffffffffffffffffffffffffffffffff16610cc76111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613913565b60405180910390fd5b60005b83839050811015610dbc578160176000868685818110610d4357610d42613af4565b5b9050602002016020810190610d5891906137ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610db490613b23565b915050610d20565b50505050565b7f000000000000000000000000bbae3df3dd187bcf0e328dbeddc2168b606d7f5081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e44611d36565b73ffffffffffffffffffffffffffffffffffffffff16610e626111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613913565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ed69190613962565b600b81905550600f600b541115610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906139e2565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f8f611d36565b73ffffffffffffffffffffffffffffffffffffffff16610fad6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90613913565b60405180910390fd5b61100d6000612a46565b565b611017611d36565b73ffffffffffffffffffffffffffffffffffffffff166110356111dd565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613913565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611114611d36565b73ffffffffffffffffffffffffffffffffffffffff166111326111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613913565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550600a60009054906101000a900460ff16600a60016101000a81548160ff021916908315150217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461121690613a31565b80601f016020809104026020016040519081016040528092919081815260200182805461124290613a31565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b6112a1611d36565b73ffffffffffffffffffffffffffffffffffffffff166112bf6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613913565b60405180910390fd5b6009600a6113239190613c9e565b6103e86005611330610ad6565b61133a9190613ce9565b6113449190613d5a565b61134e9190613d5a565b821015611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790613dfd565b60405180910390fd5b6009600a61139e9190613c9e565b6103e860056113ab610ad6565b6113b59190613ce9565b6113bf9190613d5a565b6113c99190613d5a565b81101561140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290613e8f565b60405180910390fd5b6009600a6114199190613c9e565b816114249190613ce9565b6009819055506009600a6114389190613c9e565b826114439190613ce9565b6007819055505050565b611455611d36565b73ffffffffffffffffffffffffffffffffffffffff166114736111dd565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613913565b60405180910390fd5b7f000000000000000000000000bbae3df3dd187bcf0e328dbeddc2168b606d7f5073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90613f21565b60405180910390fd5b6115618282612b0c565b5050565b60008060016000611574611d36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613fb3565b60405180910390fd5b61164561163c611d36565b85858403611d3e565b600191505092915050565b600061166461165d611d36565b8484611f07565b6001905092915050565b611676611d36565b73ffffffffffffffffffffffffffffffffffffffff166116946111dd565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190613913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090614045565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b600a60009054906101000a900460ff1681565b61183a611d36565b73ffffffffffffffffffffffffffffffffffffffff166118586111dd565b73ffffffffffffffffffffffffffffffffffffffff16146118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613913565b60405180910390fd5b60005b83839050811015611900576118ed8484838181106118d2576118d1613af4565b5b90506020020160208101906118e791906137ed565b83611926565b80806118f890613b23565b9150506118b1565b50505050565b60176020528060005260406000206000915054906101000a900460ff1681565b61192e611d36565b73ffffffffffffffffffffffffffffffffffffffff1661194c6111dd565b73ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613913565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a3f9190613589565b60405180910390a25050565b60075481565b6000611a5b611d36565b73ffffffffffffffffffffffffffffffffffffffff16611a796111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690613913565b60405180910390fd5b620186a06001611add610ad6565b611ae79190613ce9565b611af19190613d5a565b821015611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a906140d7565b60405180910390fd5b6103e86005611b40610ad6565b611b4a9190613ce9565b611b549190613d5a565b821115611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90614169565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611c41611d36565b73ffffffffffffffffffffffffffffffffffffffff16611c5f6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b906141fb565b60405180910390fd5b611d2d81612a46565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da49061428d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e139061431f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611efa919061362d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d906143b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc90614443565b60405180910390fd5b60008103611ffe57611ff983836000612bad565b612a41565b6120066111dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561207457506120446111dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120ad5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120e7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121005750600560159054906101000a900460ff16155b156125c657600a60009054906101000a900460ff166121fa57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121ba5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f0906144af565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561229e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d49061451b565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123805750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612427576007548111156123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c1906145ad565b60405180910390fd5b6009546123d683610f3f565b826123e19190613962565b1115612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614619565b60405180910390fd5b6125c5565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124ca5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251957600754811115612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b906146ab565b60405180910390fd5b6125c4565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125c35760095461257683610f3f565b826125819190613962565b11156125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b990614619565b60405180910390fd5b5b5b5b5b60006125d130610f3f565b9050600060085482101590508080156125f65750600a60019054906101000a900460ff165b801561260f5750600560159054906101000a900460ff16155b80156126655750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126bb5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127115750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612755576001600560156101000a81548160ff021916908315150217905550612739612e2c565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061280b5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281557600090505b60008115612a2857601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561287857506000600e54115b15612912576128a56064612897600e548861303990919063ffffffff16565b61304f90919063ffffffff16565b9050600e54601054826128b89190613ce9565b6128c29190613d5a565b601260008282546128d39190613962565b92505081905550600e54600f54826128eb9190613ce9565b6128f59190613d5a565b601160008282546129069190613962565b92505081905550612a04565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561296d57506000600b54115b15612a035761299a606461298c600b548861303990919063ffffffff16565b61304f90919063ffffffff16565b9050600b54600d54826129ad9190613ce9565b6129b79190613d5a565b601260008282546129c89190613962565b92505081905550600b54600c54826129e09190613ce9565b6129ea9190613d5a565b601160008282546129fb9190613962565b925050819055505b5b6000811115612a1957612a18873083612bad565b5b8085612a2591906146cb565b94505b612a33878787612bad565b601354600e81905550505050505b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c13906143b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614443565b60405180910390fd5b612c96838383613065565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1390614771565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612daf9190613962565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e13919061362d565b60405180910390a3612e2684848461306a565b50505050565b6000612e3730610f3f565b90506000601154601254612e4b9190613962565b9050600080831480612e5d5750600082145b15612e6a57505050613037565b6014600854612e799190613ce9565b831115612e92576014600854612e8f9190613ce9565b92505b600060028360125486612ea59190613ce9565b612eaf9190613d5a565b612eb99190613d5a565b90506000612ed0828661306f90919063ffffffff16565b90506000479050612ee082613085565b6000612ef5824761306f90919063ffffffff16565b90506000612f2087612f126011548561303990919063ffffffff16565b61304f90919063ffffffff16565b905060008183612f3091906146cb565b905060006012819055506000601181905550600086118015612f525750600081115b15612f9f57612f6186826132c2565b7f34755123977fda4465c19ffa30709bc81ed728f17cf49014d33b243ae2d682fb8582601254604051612f9693929190614791565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fe5906147f9565b60006040518083038185875af1925050503d8060008114613022576040519150601f19603f3d011682016040523d82523d6000602084013e613027565b606091505b5050809750505050505050505050505b565b600081836130479190613ce9565b905092915050565b6000818361305d9190613d5a565b905092915050565b505050565b505050565b6000818361307d91906146cb565b905092915050565b6000600267ffffffffffffffff8111156130a2576130a161480e565b5b6040519080825280602002602001820160405280156130d05781602001602082028036833780820191505090505b50905030816000815181106130e8576130e7613af4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561318d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b19190614852565b816001815181106131c5576131c4613af4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061322a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d3e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161328c959493929190614978565b600060405180830381600087803b1580156132a657600080fd5b505af11580156132ba573d6000803e3d6000fd5b505050505050565b6132ed307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d3e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613354969594939291906149d2565b60606040518083038185885af1158015613372573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133979190614a48565b5050505050565b600080fd5b600080fd5b6000819050919050565b6133bb816133a8565b81146133c657600080fd5b50565b6000813590506133d8816133b2565b92915050565b600080604083850312156133f5576133f461339e565b5b6000613403858286016133c9565b9250506020613414858286016133c9565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561345857808201518184015260208101905061343d565b60008484015250505050565b6000601f19601f8301169050919050565b60006134808261341e565b61348a8185613429565b935061349a81856020860161343a565b6134a381613464565b840191505092915050565b600060208201905081810360008301526134c88184613475565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134fb826134d0565b9050919050565b61350b816134f0565b811461351657600080fd5b50565b60008135905061352881613502565b92915050565b600080604083850312156135455761354461339e565b5b600061355385828601613519565b9250506020613564858286016133c9565b9150509250929050565b60008115159050919050565b6135838161356e565b82525050565b600060208201905061359e600083018461357a565b92915050565b6000819050919050565b60006135c96135c46135bf846134d0565b6135a4565b6134d0565b9050919050565b60006135db826135ae565b9050919050565b60006135ed826135d0565b9050919050565b6135fd816135e2565b82525050565b600060208201905061361860008301846135f4565b92915050565b613627816133a8565b82525050565b6000602082019050613642600083018461361e565b92915050565b6000806000606084860312156136615761366061339e565b5b600061366f86828701613519565b935050602061368086828701613519565b9250506040613691868287016133c9565b9150509250925092565b6136a4816134f0565b82525050565b60006020820190506136bf600083018461369b565b92915050565b600060ff82169050919050565b6136db816136c5565b82525050565b60006020820190506136f660008301846136d2565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613721576137206136fc565b5b8235905067ffffffffffffffff81111561373e5761373d613701565b5b60208301915083602082028301111561375a57613759613706565b5b9250929050565b61376a8161356e565b811461377557600080fd5b50565b60008135905061378781613761565b92915050565b6000806000604084860312156137a6576137a561339e565b5b600084013567ffffffffffffffff8111156137c4576137c36133a3565b5b6137d08682870161370b565b935093505060206137e386828701613778565b9150509250925092565b6000602082840312156138035761380261339e565b5b600061381184828501613519565b91505092915050565b600080604083850312156138315761383061339e565b5b600061383f85828601613519565b925050602061385085828601613778565b9150509250929050565b6000602082840312156138705761386f61339e565b5b600061387e848285016133c9565b91505092915050565b6000806040838503121561389e5761389d61339e565b5b60006138ac85828601613519565b92505060206138bd85828601613519565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138fd602083613429565b9150613908826138c7565b602082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061396d826133a8565b9150613978836133a8565b92508282019050808211156139905761398f613933565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006139cc601d83613429565b91506139d782613996565b602082019050919050565b600060208201905081810360008301526139fb816139bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a4957607f821691505b602082108103613a5c57613a5b613a02565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613abe602883613429565b9150613ac982613a62565b604082019050919050565b60006020820190508181036000830152613aed81613ab1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b2e826133a8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6057613b5f613933565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613bc257808604811115613b9e57613b9d613933565b5b6001851615613bad5780820291505b8081029050613bbb85613b6b565b9450613b82565b94509492505050565b600082613bdb5760019050613c97565b81613be95760009050613c97565b8160018114613bff5760028114613c0957613c38565b6001915050613c97565b60ff841115613c1b57613c1a613933565b5b8360020a915084821115613c3257613c31613933565b5b50613c97565b5060208310610133831016604e8410600b8410161715613c6d5782820a905083811115613c6857613c67613933565b5b613c97565b613c7a8484846001613b78565b92509050818404811115613c9157613c90613933565b5b81810290505b9392505050565b6000613ca9826133a8565b9150613cb4836136c5565b9250613ce17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613bcb565b905092915050565b6000613cf4826133a8565b9150613cff836133a8565b9250828202613d0d816133a8565b91508282048414831517613d2457613d23613933565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d65826133a8565b9150613d70836133a8565b925082613d8057613d7f613d2b565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613de7602183613429565b9150613df282613d8b565b604082019050919050565b60006020820190508181036000830152613e1681613dda565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613e79602483613429565b9150613e8482613e1d565b604082019050919050565b60006020820190508181036000830152613ea881613e6c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613f0b603983613429565b9150613f1682613eaf565b604082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f9d602583613429565b9150613fa882613f41565b604082019050919050565b60006020820190508181036000830152613fcc81613f90565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061402f602283613429565b915061403a82613fd3565b604082019050919050565b6000602082019050818103600083015261405e81614022565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006140c1603583613429565b91506140cc82614065565b604082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614153603483613429565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141e5602683613429565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614277602483613429565b91506142828261421b565b604082019050919050565b600060208201905081810360008301526142a68161426a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614309602283613429565b9150614314826142ad565b604082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061439b602583613429565b91506143a68261433f565b604082019050919050565b600060208201905081810360008301526143ca8161438e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061442d602383613429565b9150614438826143d1565b604082019050919050565b6000602082019050818103600083015261445c81614420565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614499601683613429565b91506144a482614463565b602082019050919050565b600060208201905081810360008301526144c88161448c565b9050919050565b7f596f75722077616c6c657420697320626c61636b6c6973746564210000000000600082015250565b6000614505601b83613429565b9150614510826144cf565b602082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614597603583613429565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614603601383613429565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614695603683613429565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b60006146d6826133a8565b91506146e1836133a8565b92508282039050818111156146f9576146f8613933565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061475b602683613429565b9150614766826146ff565b604082019050919050565b6000602082019050818103600083015261478a8161474e565b9050919050565b60006060820190506147a6600083018661361e565b6147b3602083018561361e565b6147c0604083018461361e565b949350505050565b600081905092915050565b50565b60006147e36000836147c8565b91506147ee826147d3565b600082019050919050565b6000614804826147d6565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061484c81613502565b92915050565b6000602082840312156148685761486761339e565b5b60006148768482850161483d565b91505092915050565b6000819050919050565b60006148a461489f61489a8461487f565b6135a4565b6133a8565b9050919050565b6148b481614889565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148ef816134f0565b82525050565b600061490183836148e6565b60208301905092915050565b6000602082019050919050565b6000614925826148ba565b61492f81856148c5565b935061493a836148d6565b8060005b8381101561496b57815161495288826148f5565b975061495d8361490d565b92505060018101905061493e565b5085935050505092915050565b600060a08201905061498d600083018861361e565b61499a60208301876148ab565b81810360408301526149ac818661491a565b90506149bb606083018561369b565b6149c8608083018461361e565b9695505050505050565b600060c0820190506149e7600083018961369b565b6149f4602083018861361e565b614a0160408301876148ab565b614a0e60608301866148ab565b614a1b608083018561369b565b614a2860a083018461361e565b979650505050505050565b600081519050614a42816133b2565b92915050565b600080600060608486031215614a6157614a6061339e565b5b6000614a6f86828701614a33565b9350506020614a8086828701614a33565b9250506040614a9186828701614a33565b915050925092509256fea2646970667358221220d4832bce8203789fb35dcf2838028f7be0194c1361d67e885bdaf047d001d4ce64736f6c63430008110033

Deployed Bytecode Sourcemap

14123:12981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19274:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2940:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3861:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14202:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3268:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4038:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14305:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3160:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4526:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20350:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14260:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21069:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18956:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14884:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14732:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3384:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;999:103;;;;;;;;;;;;;:::i;:::-;;18804:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14538:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17649:131;;;;;;;;;;;;;:::i;:::-;;776:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3048:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18260:536;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20059:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4749:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3519:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20561:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14692:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19827:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15312:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19637:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14577:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17788:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14772:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3702:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14619:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1110:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14659:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19274:355;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19393:13:::1;19374:16;:32;;;;19436:13;19417:16;:32;;;;19495:16;;19476;;:35;;;;:::i;:::-;19460:13;:51;;;;19536:13;;19522:11;:27;;;;19585:2;19568:13;;:19;;19560:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19274:355:::0;;:::o;2940:100::-;2994:13;3027:5;3020:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:100;:::o;3861:169::-;3944:4;3961:39;3970:12;:10;:12::i;:::-;3984:7;3993:6;3961:8;:39::i;:::-;4018:4;4011:11;;3861:169;;;;:::o;14202:51::-;;;:::o;3268:108::-;3329:7;3356:12;;3349:19;;3268:108;:::o;4038:480::-;4178:4;4195:36;4205:6;4213:9;4224:6;4195:9;:36::i;:::-;4244:24;4271:11;:19;4283:6;4271:19;;;;;;;;;;;;;;;:33;4291:12;:10;:12::i;:::-;4271:33;;;;;;;;;;;;;;;;4244:60;;4343:6;4323:16;:26;;4315:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4422:57;4431:6;4439:12;:10;:12::i;:::-;4472:6;4453:16;:25;4422:8;:57::i;:::-;4506:4;4499:11;;;4038:480;;;;;:::o;14305:53::-;14351:6;14305:53;:::o;3160:100::-;3218:5;3243:9;;;;;;;;;;;3236:16;;3160:100;:::o;4526:215::-;4614:4;4631:80;4640:12;:10;:12::i;:::-;4654:7;4700:10;4663:11;:25;4675:12;:10;:12::i;:::-;4663:25;;;;;;;;;;;;;;;:34;4689:7;4663:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4631:8;:80::i;:::-;4729:4;4722:11;;4526:215;;;;:::o;20350:203::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20450:9:::1;20445:101;20469:8;;:15;;20465:1;:19;20445:101;;;20526:8;20506:4;:17;20511:8;;20520:1;20511:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20506:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20486:3;;;;;:::i;:::-;;;;20445:101;;;;20350:203:::0;;;:::o;14260:38::-;;;:::o;21069:126::-;21135:4;21159:19;:28;21179:7;21159:28;;;;;;;;;;;;;;;;;;;;;;;;;21152:35;;21069:126;;;:::o;18956:310::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19073:13:::1;19055:15;:31;;;;19115:13;19097:15;:31;;;;19172:15;;19154;;:33;;;;:::i;:::-;19139:12;:48;;;;19222:2;19206:12;;:18;;19198:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18956:310:::0;;:::o;14884:28::-;;;;:::o;14732:31::-;;;;;;;;;;;;;:::o;3384:127::-;3458:7;3485:9;:18;3495:7;3485:18;;;;;;;;;;;;;;;;3478:25;;3384:127;;;:::o;999:103::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1064:30:::1;1091:1;1064:18;:30::i;:::-;999:103::o:0;18804:144::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18936:4:::1;18894:31;:39;18926:6;18894:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18804:144:::0;;:::o;14538:30::-;;;;;;;;;;;;;:::o;17649:131::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17721:13:::1;;;;;;;;;;;17720:14;17704:13;;:30;;;;;;;;;;;;;;;;;;17759:13;;;;;;;;;;;17745:11;;:27;;;;;;;;;;;;;;;;;;17649:131::o:0;776:87::-;822:7;849:6;;;;;;;;;;;842:13;;776:87;:::o;3048:104::-;3104:13;3137:7;3130:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3048:104;:::o;18260:536::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14498:1:::1;18437:2;:13;;;;:::i;:::-;18429:4;18424:1;18408:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18407:26;;;;:::i;:::-;18406:44;;;;:::i;:::-;18393:9;:57;;18371:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;14498:1;18594:2;:13;;;;:::i;:::-;18586:4;18581:1;18565:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18564:26;;;;:::i;:::-;18563:44;;;;:::i;:::-;18544:15;:63;;18522:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;14498:1;18713:2;:13;;;;:::i;:::-;18694:15;:33;;;;:::i;:::-;18682:9;:45;;;;14498:1;18774:2;:13;;;;:::i;:::-;18761:9;:27;;;;:::i;:::-;18738:20;:50;;;;18260:536:::0;;:::o;20059:283::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20182:13:::1;20174:21;;:4;:21;;::::0;20152:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20293:41;20322:4;20328:5;20293:28;:41::i;:::-;20059:283:::0;;:::o;4749:401::-;4842:4;4859:24;4886:11;:25;4898:12;:10;:12::i;:::-;4886:25;;;;;;;;;;;;;;;:34;4912:7;4886:34;;;;;;;;;;;;;;;;4859:61;;4959:15;4939:16;:35;;4931:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5044:67;5053:12;:10;:12::i;:::-;5067:7;5095:15;5076:16;:34;5044:8;:67::i;:::-;5138:4;5131:11;;;4749:401;;;;:::o;3519:175::-;3605:4;3622:42;3632:12;:10;:12::i;:::-;3646:9;3657:6;3622:9;:42::i;:::-;3682:4;3675:11;;3519:175;;;;:::o;20561:304::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20670:1:::1;20649:23;;:9;:23;;::::0;20641:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20722:18;20743:15;;;;;;;;;;;20722:36;;20787:9;20769:15;;:27;;;;;;;;;;;;;;;;;;20846:10;20812:45;;20835:9;20812:45;;;;;;;;;;;;20630:235;20561:304:::0;:::o;14692:33::-;;;;;;;;;;;;;:::o;19827:224::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19938:9:::1;19934:110;19957:8;;:15;;19953:1;:19;19934:110;;;19994:38;20010:8;;20019:1;20010:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20023:8;19994:15;:38::i;:::-;19974:3;;;;;:::i;:::-;;;;19934:110;;;;19827:224:::0;;;:::o;15312:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;19637:182::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19753:8:::1;19722:19;:28;19742:7;19722:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19793:7;19777:34;;;19802:8;19777:34;;;;;;:::i;:::-;;;;;;;;19637:182:::0;;:::o;14577:35::-;;;;:::o;17788:464::-;17869:4;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17942:6:::1;17937:1;17921:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17920:28;;;;:::i;:::-;17907:9;:41;;17885:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18097:4;18092:1;18076:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18075:26;;;;:::i;:::-;18062:9;:39;;18040:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18213:9;18192:18;:30;;;;18240:4;18233:11;;17788:464:::0;;;:::o;14772:27::-;;;;:::o;3702:151::-;3791:7;3818:11;:18;3830:5;3818:18;;;;;;;;;;;;;;;:27;3837:7;3818:27;;;;;;;;;;;;;;;;3811:34;;3702:151;;;;:::o;14619:33::-;;;;:::o;1110:201::-;922:12;:10;:12::i;:::-;911:23;;:7;:5;:7::i;:::-;:23;;;903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1219:1:::1;1199:22;;:8;:22;;::::0;1191:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1275:28;1294:8;1275:18;:28::i;:::-;1110:201:::0;:::o;14659:24::-;;;;:::o;322:98::-;375:7;402:10;395:17;;322:98;:::o;6294:380::-;6447:1;6430:19;;:5;:19;;;6422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6528:1;6509:21;;:7;:21;;;6501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6612:6;6582:11;:18;6594:5;6582:18;;;;;;;;;;;;;;;:27;6601:7;6582:27;;;;;;;;;;;;;;;:36;;;;6650:7;6634:32;;6643:5;6634:32;;;6659:6;6634:32;;;;;;:::i;:::-;;;;;;;;6294:380;;;:::o;21203:3551::-;21351:1;21335:18;;:4;:18;;;21327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21428:1;21414:16;;:2;:16;;;21406:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21497:1;21487:6;:11;21483:93;;21515:28;21531:4;21537:2;21541:1;21515:15;:28::i;:::-;21558:7;;21483:93;21614:7;:5;:7::i;:::-;21606:15;;:4;:15;;;;:45;;;;;21644:7;:5;:7::i;:::-;21638:13;;:2;:13;;;;21606:45;:78;;;;;21682:1;21668:16;;:2;:16;;;;21606:78;:116;;;;;21715:6;21701:21;;:2;:21;;;;21606:116;:142;;;;;21740:8;;;;;;;;;;;21739:9;21606:142;21588:1576;;;21780:13;;;;;;;;;;;21775:203;;21844:19;:25;21864:4;21844:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21873:19;:23;21893:2;21873:23;;;;;;;;;;;;;;;;;;;;;;;;;21844:52;21814:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;21775:203;22003:4;:10;22008:4;22003:10;;;;;;;;;;;;;;;;;;;;;;;;;22002:11;:24;;;;;22018:4;:8;22023:2;22018:8;;;;;;;;;;;;;;;;;;;;;;;;;22017:9;22002:24;21994:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:25;:31;22147:4;22121:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;22174:31;:35;22206:2;22174:35;;;;;;;;;;;;;;;;;;;;;;;;;22173:36;22121:88;22099:1054;;;22284:20;;22274:6;:30;;22244:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;22476:9;;22459:13;22469:2;22459:9;:13::i;:::-;22450:6;:22;;;;:::i;:::-;:35;;22420:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;22099:1054;;;22630:25;:29;22656:2;22630:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;22681:31;:37;22713:4;22681:37;;;;;;;;;;;;;;;;;;;;;;;;;22680:38;22630:88;22608:545;;;22793:20;;22783:6;:30;;22753:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;22608:545;;;22953:31;:35;22985:2;22953:35;;;;;;;;;;;;;;;;;;;;;;;;;22948:205;;23065:9;;23048:13;23058:2;23048:9;:13::i;:::-;23039:6;:22;;;;:::i;:::-;:35;;23009:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;22948:205;22608:545;22099:1054;21588:1576;23176:28;23207:24;23225:4;23207:9;:24::i;:::-;23176:55;;23244:12;23283:18;;23259:20;:42;;23244:57;;23332:7;:35;;;;;23356:11;;;;;;;;;;;23332:35;:61;;;;;23385:8;;;;;;;;;;;23384:9;23332:61;:110;;;;;23411:25;:31;23437:4;23411:31;;;;;;;;;;;;;;;;;;;;;;;;;23410:32;23332:110;:153;;;;;23460:19;:25;23480:4;23460:25;;;;;;;;;;;;;;;;;;;;;;;;;23459:26;23332:153;:194;;;;;23503:19;:23;23523:2;23503:23;;;;;;;;;;;;;;;;;;;;;;;;;23502:24;23332:194;23314:326;;;23564:4;23553:8;;:15;;;;;;;;;;;;;;;;;;23585:10;:8;:10::i;:::-;23623:5;23612:8;;:16;;;;;;;;;;;;;;;;;;23314:326;23652:12;23668:8;;;;;;;;;;;23667:9;23652:24;;23693:19;:25;23713:4;23693:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23722:19;:23;23742:2;23722:23;;;;;;;;;;;;;;;;;;;;;;;;;23693:52;23689:100;;;23772:5;23762:15;;23689:100;23801:12;23834:7;23830:831;;;23886:25;:29;23912:2;23886:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23935:1;23919:13;;:17;23886:50;23882:630;;;23964:34;23994:3;23964:25;23975:13;;23964:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23957:41;;24067:13;;24047:16;;24040:4;:23;;;;:::i;:::-;24039:41;;;;:::i;:::-;24017:18;;:63;;;;;;;:::i;:::-;;;;;;;;24149:13;;24129:16;;24122:4;:23;;;;:::i;:::-;24121:41;;;;:::i;:::-;24099:18;;:63;;;;;;;:::i;:::-;;;;;;;;23882:630;;;24224:25;:31;24250:4;24224:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24274:1;24259:12;;:16;24224:51;24220:292;;;24303:33;24332:3;24303:24;24314:12;;24303:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24296:40;;24404:12;;24385:15;;24378:4;:22;;;;:::i;:::-;24377:39;;;;:::i;:::-;24355:18;;:61;;;;;;;:::i;:::-;;;;;;;;24484:12;;24465:15;;24458:4;:22;;;;:::i;:::-;24457:39;;;;:::i;:::-;24435:18;;:61;;;;;;;:::i;:::-;;;;;;;;24220:292;23882:630;24539:1;24532:4;:8;24528:91;;;24561:42;24577:4;24591;24598;24561:15;:42::i;:::-;24528:91;24645:4;24635:14;;;;;:::i;:::-;;;23830:831;24673:33;24689:4;24695:2;24699:6;24673:15;:33::i;:::-;24733:11;;24717:13;:27;;;;21316:3438;;;;21203:3551;;;;:::o;1319:191::-;1393:16;1412:6;;;;;;;;;;;1393:25;;1438:8;1429:6;;:17;;;;;;;;;;;;;;;;;;1493:8;1462:40;;1483:8;1462:40;;;;;;;;;;;;1382:128;1319:191;:::o;20873:188::-;20990:5;20956:25;:31;20982:4;20956:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21047:5;21013:40;;21041:4;21013:40;;;;;;;;;;;;20873:188;;:::o;5158:721::-;5316:1;5298:20;;:6;:20;;;5290:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5400:1;5379:23;;:9;:23;;;5371:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5455:47;5476:6;5484:9;5495:6;5455:20;:47::i;:::-;5515:21;5539:9;:17;5549:6;5539:17;;;;;;;;;;;;;;;;5515:41;;5592:6;5575:13;:23;;5567:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5705:6;5689:13;:22;5669:9;:17;5679:6;5669:17;;;;;;;;;;;;;;;:42;;;;5753:6;5729:9;:20;5739:9;5729:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5794:9;5777:35;;5786:6;5777:35;;;5805:6;5777:35;;;;;;:::i;:::-;;;;;;;;5825:46;5845:6;5853:9;5864:6;5825:19;:46::i;:::-;5279:600;5158:721;;;:::o;25649:1452::-;25688:23;25714:24;25732:4;25714:9;:24::i;:::-;25688:50;;25749:25;25807:18;;25777;;:48;;;;:::i;:::-;25749:76;;25836:12;25884:1;25865:15;:20;:46;;;;25910:1;25889:17;:22;25865:46;25861:85;;;25928:7;;;;;25861:85;26001:2;25980:18;;:23;;;;:::i;:::-;25962:15;:41;25958:115;;;26059:2;26038:18;;:23;;;;:::i;:::-;26020:41;;25958:115;26085:23;26190:1;26161:17;26130:18;;26112:15;:36;;;;:::i;:::-;26111:67;;;;:::i;:::-;:80;;;;:::i;:::-;26085:106;;26202:26;26231:36;26251:15;26231;:19;;:36;;;;:::i;:::-;26202:65;;26280:25;26308:21;26280:49;;26342:36;26359:18;26342:16;:36::i;:::-;26391:18;26412:44;26438:17;26412:21;:25;;:44;;;;:::i;:::-;26391:65;;26469:23;26495:81;26548:17;26495:34;26510:18;;26495:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26469:107;;26589:23;26628:15;26615:10;:28;;;;:::i;:::-;26589:54;;26677:1;26656:18;:22;;;;26710:1;26689:18;:22;;;;26746:1;26728:15;:19;:42;;;;;26769:1;26751:15;:19;26728:42;26724:280;;;26787:46;26800:15;26817;26787:12;:46::i;:::-;26853:139;26888:18;26925:15;26959:18;;26853:139;;;;;;;;:::i;:::-;;;;;;;;26724:280;27038:15;;;;;;;;;;;27030:29;;27067:21;27030:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27016:77;;;;;25677:1424;;;;;;;;;25649:1452;:::o;8208:98::-;8266:7;8297:1;8293;:5;;;;:::i;:::-;8286:12;;8208:98;;;;:::o;8314:::-;8372:7;8403:1;8399;:5;;;;:::i;:::-;8392:12;;8314:98;;;;:::o;6682:125::-;;;;:::o;6815:124::-;;;;:::o;8102:98::-;8160:7;8191:1;8187;:5;;;;:::i;:::-;8180:12;;8102:98;;;;:::o;24762:503::-;24830:21;24868:1;24854:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24830:40;;24899:4;24881;24886:1;24881:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24925:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24915:4;24920:1;24915:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24960:62;24977:4;24992:15;25010:11;24960:8;:62::i;:::-;25061:15;:66;;;25142:11;25168:1;25184:4;25211;25231:15;25061:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24817:448;24762:503;:::o;25273:368::-;25356:62;25373:4;25388:15;25406:11;25356:8;:62::i;:::-;25431:15;:31;;;25470:9;25503:4;25523:11;25549:1;25565;14351:6;25607:15;25431:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25273:368;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:117::-;6772:1;6769;6762:12;6786:117;6895:1;6892;6885:12;6909:117;7018:1;7015;7008:12;7049:568;7122:8;7132:6;7182:3;7175:4;7167:6;7163:17;7159:27;7149:122;;7190:79;;:::i;:::-;7149:122;7303:6;7290:20;7280:30;;7333:18;7325:6;7322:30;7319:117;;;7355:79;;:::i;:::-;7319:117;7469:4;7461:6;7457:17;7445:29;;7523:3;7515:4;7507:6;7503:17;7493:8;7489:32;7486:41;7483:128;;;7530:79;;:::i;:::-;7483:128;7049:568;;;;;:::o;7623:116::-;7693:21;7708:5;7693:21;:::i;:::-;7686:5;7683:32;7673:60;;7729:1;7726;7719:12;7673:60;7623:116;:::o;7745:133::-;7788:5;7826:6;7813:20;7804:29;;7842:30;7866:5;7842:30;:::i;:::-;7745:133;;;;:::o;7884:698::-;7976:6;7984;7992;8041:2;8029:9;8020:7;8016:23;8012:32;8009:119;;;8047:79;;:::i;:::-;8009:119;8195:1;8184:9;8180:17;8167:31;8225:18;8217:6;8214:30;8211:117;;;8247:79;;:::i;:::-;8211:117;8360:80;8432:7;8423:6;8412:9;8408:22;8360:80;:::i;:::-;8342:98;;;;8138:312;8489:2;8515:50;8557:7;8548:6;8537:9;8533:22;8515:50;:::i;:::-;8505:60;;8460:115;7884:698;;;;;:::o;8588:329::-;8647:6;8696:2;8684:9;8675:7;8671:23;8667:32;8664:119;;;8702:79;;:::i;:::-;8664:119;8822:1;8847:53;8892:7;8883:6;8872:9;8868:22;8847:53;:::i;:::-;8837:63;;8793:117;8588:329;;;;:::o;8923:468::-;8988:6;8996;9045:2;9033:9;9024:7;9020:23;9016:32;9013:119;;;9051:79;;:::i;:::-;9013:119;9171:1;9196:53;9241:7;9232:6;9221:9;9217:22;9196:53;:::i;:::-;9186:63;;9142:117;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8923:468;;;;;:::o;9397:329::-;9456:6;9505:2;9493:9;9484:7;9480:23;9476:32;9473:119;;;9511:79;;:::i;:::-;9473:119;9631:1;9656:53;9701:7;9692:6;9681:9;9677:22;9656:53;:::i;:::-;9646:63;;9602:117;9397:329;;;;:::o;9732:474::-;9800:6;9808;9857:2;9845:9;9836:7;9832:23;9828:32;9825:119;;;9863:79;;:::i;:::-;9825:119;9983:1;10008:53;10053:7;10044:6;10033:9;10029:22;10008:53;:::i;:::-;9998:63;;9954:117;10110:2;10136:53;10181:7;10172:6;10161:9;10157:22;10136:53;:::i;:::-;10126:63;;10081:118;9732:474;;;;;:::o;10212:182::-;10352:34;10348:1;10340:6;10336:14;10329:58;10212:182;:::o;10400:366::-;10542:3;10563:67;10627:2;10622:3;10563:67;:::i;:::-;10556:74;;10639:93;10728:3;10639:93;:::i;:::-;10757:2;10752:3;10748:12;10741:19;;10400:366;;;:::o;10772:419::-;10938:4;10976:2;10965:9;10961:18;10953:26;;11025:9;11019:4;11015:20;11011:1;11000:9;10996:17;10989:47;11053:131;11179:4;11053:131;:::i;:::-;11045:139;;10772:419;;;:::o;11197:180::-;11245:77;11242:1;11235:88;11342:4;11339:1;11332:15;11366:4;11363:1;11356:15;11383:191;11423:3;11442:20;11460:1;11442:20;:::i;:::-;11437:25;;11476:20;11494:1;11476:20;:::i;:::-;11471:25;;11519:1;11516;11512:9;11505:16;;11540:3;11537:1;11534:10;11531:36;;;11547:18;;:::i;:::-;11531:36;11383:191;;;;:::o;11580:179::-;11720:31;11716:1;11708:6;11704:14;11697:55;11580:179;:::o;11765:366::-;11907:3;11928:67;11992:2;11987:3;11928:67;:::i;:::-;11921:74;;12004:93;12093:3;12004:93;:::i;:::-;12122:2;12117:3;12113:12;12106:19;;11765:366;;;:::o;12137:419::-;12303:4;12341:2;12330:9;12326:18;12318:26;;12390:9;12384:4;12380:20;12376:1;12365:9;12361:17;12354:47;12418:131;12544:4;12418:131;:::i;:::-;12410:139;;12137:419;;;:::o;12562:180::-;12610:77;12607:1;12600:88;12707:4;12704:1;12697:15;12731:4;12728:1;12721:15;12748:320;12792:6;12829:1;12823:4;12819:12;12809:22;;12876:1;12870:4;12866:12;12897:18;12887:81;;12953:4;12945:6;12941:17;12931:27;;12887:81;13015:2;13007:6;13004:14;12984:18;12981:38;12978:84;;13034:18;;:::i;:::-;12978:84;12799:269;12748:320;;;:::o;13074:227::-;13214:34;13210:1;13202:6;13198:14;13191:58;13283:10;13278:2;13270:6;13266:15;13259:35;13074:227;:::o;13307:366::-;13449:3;13470:67;13534:2;13529:3;13470:67;:::i;:::-;13463:74;;13546:93;13635:3;13546:93;:::i;:::-;13664:2;13659:3;13655:12;13648:19;;13307:366;;;:::o;13679:419::-;13845:4;13883:2;13872:9;13868:18;13860:26;;13932:9;13926:4;13922:20;13918:1;13907:9;13903:17;13896:47;13960:131;14086:4;13960:131;:::i;:::-;13952:139;;13679:419;;;:::o;14104:180::-;14152:77;14149:1;14142:88;14249:4;14246:1;14239:15;14273:4;14270:1;14263:15;14290:233;14329:3;14352:24;14370:5;14352:24;:::i;:::-;14343:33;;14398:66;14391:5;14388:77;14385:103;;14468:18;;:::i;:::-;14385:103;14515:1;14508:5;14504:13;14497:20;;14290:233;;;:::o;14529:102::-;14571:8;14618:5;14615:1;14611:13;14590:34;;14529:102;;;:::o;14637:848::-;14698:5;14705:4;14729:6;14720:15;;14753:5;14744:14;;14767:712;14788:1;14778:8;14775:15;14767:712;;;14883:4;14878:3;14874:14;14868:4;14865:24;14862:50;;;14892:18;;:::i;:::-;14862:50;14942:1;14932:8;14928:16;14925:451;;;15357:4;15350:5;15346:16;15337:25;;14925:451;15407:4;15401;15397:15;15389:23;;15437:32;15460:8;15437:32;:::i;:::-;15425:44;;14767:712;;;14637:848;;;;;;;:::o;15491:1073::-;15545:5;15736:8;15726:40;;15757:1;15748:10;;15759:5;;15726:40;15785:4;15775:36;;15802:1;15793:10;;15804:5;;15775:36;15871:4;15919:1;15914:27;;;;15955:1;15950:191;;;;15864:277;;15914:27;15932:1;15923:10;;15934:5;;;15950:191;15995:3;15985:8;15982:17;15979:43;;;16002:18;;:::i;:::-;15979:43;16051:8;16048:1;16044:16;16035:25;;16086:3;16079:5;16076:14;16073:40;;;16093:18;;:::i;:::-;16073:40;16126:5;;;15864:277;;16250:2;16240:8;16237:16;16231:3;16225:4;16222:13;16218:36;16200:2;16190:8;16187:16;16182:2;16176:4;16173:12;16169:35;16153:111;16150:246;;;16306:8;16300:4;16296:19;16287:28;;16341:3;16334:5;16331:14;16328:40;;;16348:18;;:::i;:::-;16328:40;16381:5;;16150:246;16421:42;16459:3;16449:8;16443:4;16440:1;16421:42;:::i;:::-;16406:57;;;;16495:4;16490:3;16486:14;16479:5;16476:25;16473:51;;;16504:18;;:::i;:::-;16473:51;16553:4;16546:5;16542:16;16533:25;;15491:1073;;;;;;:::o;16570:281::-;16628:5;16652:23;16670:4;16652:23;:::i;:::-;16644:31;;16696:25;16712:8;16696:25;:::i;:::-;16684:37;;16740:104;16777:66;16767:8;16761:4;16740:104;:::i;:::-;16731:113;;16570:281;;;;:::o;16857:410::-;16897:7;16920:20;16938:1;16920:20;:::i;:::-;16915:25;;16954:20;16972:1;16954:20;:::i;:::-;16949:25;;17009:1;17006;17002:9;17031:30;17049:11;17031:30;:::i;:::-;17020:41;;17210:1;17201:7;17197:15;17194:1;17191:22;17171:1;17164:9;17144:83;17121:139;;17240:18;;:::i;:::-;17121:139;16905:362;16857:410;;;;:::o;17273:180::-;17321:77;17318:1;17311:88;17418:4;17415:1;17408:15;17442:4;17439:1;17432:15;17459:185;17499:1;17516:20;17534:1;17516:20;:::i;:::-;17511:25;;17550:20;17568:1;17550:20;:::i;:::-;17545:25;;17589:1;17579:35;;17594:18;;:::i;:::-;17579:35;17636:1;17633;17629:9;17624:14;;17459:185;;;;:::o;17650:220::-;17790:34;17786:1;17778:6;17774:14;17767:58;17859:3;17854:2;17846:6;17842:15;17835:28;17650:220;:::o;17876:366::-;18018:3;18039:67;18103:2;18098:3;18039:67;:::i;:::-;18032:74;;18115:93;18204:3;18115:93;:::i;:::-;18233:2;18228:3;18224:12;18217:19;;17876:366;;;:::o;18248:419::-;18414:4;18452:2;18441:9;18437:18;18429:26;;18501:9;18495:4;18491:20;18487:1;18476:9;18472:17;18465:47;18529:131;18655:4;18529:131;:::i;:::-;18521:139;;18248:419;;;:::o;18673:223::-;18813:34;18809:1;18801:6;18797:14;18790:58;18882:6;18877:2;18869:6;18865:15;18858:31;18673:223;:::o;18902:366::-;19044:3;19065:67;19129:2;19124:3;19065:67;:::i;:::-;19058:74;;19141:93;19230:3;19141:93;:::i;:::-;19259:2;19254:3;19250:12;19243:19;;18902:366;;;:::o;19274:419::-;19440:4;19478:2;19467:9;19463:18;19455:26;;19527:9;19521:4;19517:20;19513:1;19502:9;19498:17;19491:47;19555:131;19681:4;19555:131;:::i;:::-;19547:139;;19274:419;;;:::o;19699:244::-;19839:34;19835:1;19827:6;19823:14;19816:58;19908:27;19903:2;19895:6;19891:15;19884:52;19699:244;:::o;19949:366::-;20091:3;20112:67;20176:2;20171:3;20112:67;:::i;:::-;20105:74;;20188:93;20277:3;20188:93;:::i;:::-;20306:2;20301:3;20297:12;20290:19;;19949:366;;;:::o;20321:419::-;20487:4;20525:2;20514:9;20510:18;20502:26;;20574:9;20568:4;20564:20;20560:1;20549:9;20545:17;20538:47;20602:131;20728:4;20602:131;:::i;:::-;20594:139;;20321:419;;;:::o;20746:224::-;20886:34;20882:1;20874:6;20870:14;20863:58;20955:7;20950:2;20942:6;20938:15;20931:32;20746:224;:::o;20976:366::-;21118:3;21139:67;21203:2;21198:3;21139:67;:::i;:::-;21132:74;;21215:93;21304:3;21215:93;:::i;:::-;21333:2;21328:3;21324:12;21317:19;;20976:366;;;:::o;21348:419::-;21514:4;21552:2;21541:9;21537:18;21529:26;;21601:9;21595:4;21591:20;21587:1;21576:9;21572:17;21565:47;21629:131;21755:4;21629:131;:::i;:::-;21621:139;;21348:419;;;:::o;21773:221::-;21913:34;21909:1;21901:6;21897:14;21890:58;21982:4;21977:2;21969:6;21965:15;21958:29;21773:221;:::o;22000:366::-;22142:3;22163:67;22227:2;22222:3;22163:67;:::i;:::-;22156:74;;22239:93;22328:3;22239:93;:::i;:::-;22357:2;22352:3;22348:12;22341:19;;22000:366;;;:::o;22372:419::-;22538:4;22576:2;22565:9;22561:18;22553:26;;22625:9;22619:4;22615:20;22611:1;22600:9;22596:17;22589:47;22653:131;22779:4;22653:131;:::i;:::-;22645:139;;22372:419;;;:::o;22797:240::-;22937:34;22933:1;22925:6;22921:14;22914:58;23006:23;23001:2;22993:6;22989:15;22982:48;22797:240;:::o;23043:366::-;23185:3;23206:67;23270:2;23265:3;23206:67;:::i;:::-;23199:74;;23282:93;23371:3;23282:93;:::i;:::-;23400:2;23395:3;23391:12;23384:19;;23043:366;;;:::o;23415:419::-;23581:4;23619:2;23608:9;23604:18;23596:26;;23668:9;23662:4;23658:20;23654:1;23643:9;23639:17;23632:47;23696:131;23822:4;23696:131;:::i;:::-;23688:139;;23415:419;;;:::o;23840:239::-;23980:34;23976:1;23968:6;23964:14;23957:58;24049:22;24044:2;24036:6;24032:15;24025:47;23840:239;:::o;24085:366::-;24227:3;24248:67;24312:2;24307:3;24248:67;:::i;:::-;24241:74;;24324:93;24413:3;24324:93;:::i;:::-;24442:2;24437:3;24433:12;24426:19;;24085:366;;;:::o;24457:419::-;24623:4;24661:2;24650:9;24646:18;24638:26;;24710:9;24704:4;24700:20;24696:1;24685:9;24681:17;24674:47;24738:131;24864:4;24738:131;:::i;:::-;24730:139;;24457:419;;;:::o;24882:225::-;25022:34;25018:1;25010:6;25006:14;24999:58;25091:8;25086:2;25078:6;25074:15;25067:33;24882:225;:::o;25113:366::-;25255:3;25276:67;25340:2;25335:3;25276:67;:::i;:::-;25269:74;;25352:93;25441:3;25352:93;:::i;:::-;25470:2;25465:3;25461:12;25454:19;;25113:366;;;:::o;25485:419::-;25651:4;25689:2;25678:9;25674:18;25666:26;;25738:9;25732:4;25728:20;25724:1;25713:9;25709:17;25702:47;25766:131;25892:4;25766:131;:::i;:::-;25758:139;;25485:419;;;:::o;25910:223::-;26050:34;26046:1;26038:6;26034:14;26027:58;26119:6;26114:2;26106:6;26102:15;26095:31;25910:223;:::o;26139:366::-;26281:3;26302:67;26366:2;26361:3;26302:67;:::i;:::-;26295:74;;26378:93;26467:3;26378:93;:::i;:::-;26496:2;26491:3;26487:12;26480:19;;26139:366;;;:::o;26511:419::-;26677:4;26715:2;26704:9;26700:18;26692:26;;26764:9;26758:4;26754:20;26750:1;26739:9;26735:17;26728:47;26792:131;26918:4;26792:131;:::i;:::-;26784:139;;26511:419;;;:::o;26936:221::-;27076:34;27072:1;27064:6;27060:14;27053:58;27145:4;27140:2;27132:6;27128:15;27121:29;26936:221;:::o;27163:366::-;27305:3;27326:67;27390:2;27385:3;27326:67;:::i;:::-;27319:74;;27402:93;27491:3;27402:93;:::i;:::-;27520:2;27515:3;27511:12;27504:19;;27163:366;;;:::o;27535:419::-;27701:4;27739:2;27728:9;27724:18;27716:26;;27788:9;27782:4;27778:20;27774:1;27763:9;27759:17;27752:47;27816:131;27942:4;27816:131;:::i;:::-;27808:139;;27535:419;;;:::o;27960:224::-;28100:34;28096:1;28088:6;28084:14;28077:58;28169:7;28164:2;28156:6;28152:15;28145:32;27960:224;:::o;28190:366::-;28332:3;28353:67;28417:2;28412:3;28353:67;:::i;:::-;28346:74;;28429:93;28518:3;28429:93;:::i;:::-;28547:2;28542:3;28538:12;28531:19;;28190:366;;;:::o;28562:419::-;28728:4;28766:2;28755:9;28751:18;28743:26;;28815:9;28809:4;28805:20;28801:1;28790:9;28786:17;28779:47;28843:131;28969:4;28843:131;:::i;:::-;28835:139;;28562:419;;;:::o;28987:222::-;29127:34;29123:1;29115:6;29111:14;29104:58;29196:5;29191:2;29183:6;29179:15;29172:30;28987:222;:::o;29215:366::-;29357:3;29378:67;29442:2;29437:3;29378:67;:::i;:::-;29371:74;;29454:93;29543:3;29454:93;:::i;:::-;29572:2;29567:3;29563:12;29556:19;;29215:366;;;:::o;29587:419::-;29753:4;29791:2;29780:9;29776:18;29768:26;;29840:9;29834:4;29830:20;29826:1;29815:9;29811:17;29804:47;29868:131;29994:4;29868:131;:::i;:::-;29860:139;;29587:419;;;:::o;30012:172::-;30152:24;30148:1;30140:6;30136:14;30129:48;30012:172;:::o;30190:366::-;30332:3;30353:67;30417:2;30412:3;30353:67;:::i;:::-;30346:74;;30429:93;30518:3;30429:93;:::i;:::-;30547:2;30542:3;30538:12;30531:19;;30190:366;;;:::o;30562:419::-;30728:4;30766:2;30755:9;30751:18;30743:26;;30815:9;30809:4;30805:20;30801:1;30790:9;30786:17;30779:47;30843:131;30969:4;30843:131;:::i;:::-;30835:139;;30562:419;;;:::o;30987:177::-;31127:29;31123:1;31115:6;31111:14;31104:53;30987:177;:::o;31170:366::-;31312:3;31333:67;31397:2;31392:3;31333:67;:::i;:::-;31326:74;;31409:93;31498:3;31409:93;:::i;:::-;31527:2;31522:3;31518:12;31511:19;;31170:366;;;:::o;31542:419::-;31708:4;31746:2;31735:9;31731:18;31723:26;;31795:9;31789:4;31785:20;31781:1;31770:9;31766:17;31759:47;31823:131;31949:4;31823:131;:::i;:::-;31815:139;;31542:419;;;:::o;31967:240::-;32107:34;32103:1;32095:6;32091:14;32084:58;32176:23;32171:2;32163:6;32159:15;32152:48;31967:240;:::o;32213:366::-;32355:3;32376:67;32440:2;32435:3;32376:67;:::i;:::-;32369:74;;32452:93;32541:3;32452:93;:::i;:::-;32570:2;32565:3;32561:12;32554:19;;32213:366;;;:::o;32585:419::-;32751:4;32789:2;32778:9;32774:18;32766:26;;32838:9;32832:4;32828:20;32824:1;32813:9;32809:17;32802:47;32866:131;32992:4;32866:131;:::i;:::-;32858:139;;32585:419;;;:::o;33010:169::-;33150:21;33146:1;33138:6;33134:14;33127:45;33010:169;:::o;33185:366::-;33327:3;33348:67;33412:2;33407:3;33348:67;:::i;:::-;33341:74;;33424:93;33513:3;33424:93;:::i;:::-;33542:2;33537:3;33533:12;33526:19;;33185:366;;;:::o;33557:419::-;33723:4;33761:2;33750:9;33746:18;33738:26;;33810:9;33804:4;33800:20;33796:1;33785:9;33781:17;33774:47;33838:131;33964:4;33838:131;:::i;:::-;33830:139;;33557:419;;;:::o;33982:241::-;34122:34;34118:1;34110:6;34106:14;34099:58;34191:24;34186:2;34178:6;34174:15;34167:49;33982:241;:::o;34229:366::-;34371:3;34392:67;34456:2;34451:3;34392:67;:::i;:::-;34385:74;;34468:93;34557:3;34468:93;:::i;:::-;34586:2;34581:3;34577:12;34570:19;;34229:366;;;:::o;34601:419::-;34767:4;34805:2;34794:9;34790:18;34782:26;;34854:9;34848:4;34844:20;34840:1;34829:9;34825:17;34818:47;34882:131;35008:4;34882:131;:::i;:::-;34874:139;;34601:419;;;:::o;35026:194::-;35066:4;35086:20;35104:1;35086:20;:::i;:::-;35081:25;;35120:20;35138:1;35120:20;:::i;:::-;35115:25;;35164:1;35161;35157:9;35149:17;;35188:1;35182:4;35179:11;35176:37;;;35193:18;;:::i;:::-;35176:37;35026:194;;;;:::o;35226:225::-;35366:34;35362:1;35354:6;35350:14;35343:58;35435:8;35430:2;35422:6;35418:15;35411:33;35226:225;:::o;35457:366::-;35599:3;35620:67;35684:2;35679:3;35620:67;:::i;:::-;35613:74;;35696:93;35785:3;35696:93;:::i;:::-;35814:2;35809:3;35805:12;35798:19;;35457:366;;;:::o;35829:419::-;35995:4;36033:2;36022:9;36018:18;36010:26;;36082:9;36076:4;36072:20;36068:1;36057:9;36053:17;36046:47;36110:131;36236:4;36110:131;:::i;:::-;36102:139;;35829:419;;;:::o;36254:442::-;36403:4;36441:2;36430:9;36426:18;36418:26;;36454:71;36522:1;36511:9;36507:17;36498:6;36454:71;:::i;:::-;36535:72;36603:2;36592:9;36588:18;36579:6;36535:72;:::i;:::-;36617;36685:2;36674:9;36670:18;36661:6;36617:72;:::i;:::-;36254:442;;;;;;:::o;36702:147::-;36803:11;36840:3;36825:18;;36702:147;;;;:::o;36855:114::-;;:::o;36975:398::-;37134:3;37155:83;37236:1;37231:3;37155:83;:::i;:::-;37148:90;;37247:93;37336:3;37247:93;:::i;:::-;37365:1;37360:3;37356:11;37349:18;;36975:398;;;:::o;37379:379::-;37563:3;37585:147;37728:3;37585:147;:::i;:::-;37578:154;;37749:3;37742:10;;37379:379;;;:::o;37764:180::-;37812:77;37809:1;37802:88;37909:4;37906:1;37899:15;37933:4;37930:1;37923:15;37950:143;38007:5;38038:6;38032:13;38023:22;;38054:33;38081:5;38054:33;:::i;:::-;37950:143;;;;:::o;38099:351::-;38169:6;38218:2;38206:9;38197:7;38193:23;38189:32;38186:119;;;38224:79;;:::i;:::-;38186:119;38344:1;38369:64;38425:7;38416:6;38405:9;38401:22;38369:64;:::i;:::-;38359:74;;38315:128;38099:351;;;;:::o;38456:85::-;38501:7;38530:5;38519:16;;38456:85;;;:::o;38547:158::-;38605:9;38638:61;38656:42;38665:32;38691:5;38665:32;:::i;:::-;38656:42;:::i;:::-;38638:61;:::i;:::-;38625:74;;38547:158;;;:::o;38711:147::-;38806:45;38845:5;38806:45;:::i;:::-;38801:3;38794:58;38711:147;;:::o;38864:114::-;38931:6;38965:5;38959:12;38949:22;;38864:114;;;:::o;38984:184::-;39083:11;39117:6;39112:3;39105:19;39157:4;39152:3;39148:14;39133:29;;38984:184;;;;:::o;39174:132::-;39241:4;39264:3;39256:11;;39294:4;39289:3;39285:14;39277:22;;39174:132;;;:::o;39312:108::-;39389:24;39407:5;39389:24;:::i;:::-;39384:3;39377:37;39312:108;;:::o;39426:179::-;39495:10;39516:46;39558:3;39550:6;39516:46;:::i;:::-;39594:4;39589:3;39585:14;39571:28;;39426:179;;;;:::o;39611:113::-;39681:4;39713;39708:3;39704:14;39696:22;;39611:113;;;:::o;39760:732::-;39879:3;39908:54;39956:5;39908:54;:::i;:::-;39978:86;40057:6;40052:3;39978:86;:::i;:::-;39971:93;;40088:56;40138:5;40088:56;:::i;:::-;40167:7;40198:1;40183:284;40208:6;40205:1;40202:13;40183:284;;;40284:6;40278:13;40311:63;40370:3;40355:13;40311:63;:::i;:::-;40304:70;;40397:60;40450:6;40397:60;:::i;:::-;40387:70;;40243:224;40230:1;40227;40223:9;40218:14;;40183:284;;;40187:14;40483:3;40476:10;;39884:608;;;39760:732;;;;:::o;40498:831::-;40761:4;40799:3;40788:9;40784:19;40776:27;;40813:71;40881:1;40870:9;40866:17;40857:6;40813:71;:::i;:::-;40894:80;40970:2;40959:9;40955:18;40946:6;40894:80;:::i;:::-;41021:9;41015:4;41011:20;41006:2;40995:9;40991:18;40984:48;41049:108;41152:4;41143:6;41049:108;:::i;:::-;41041:116;;41167:72;41235:2;41224:9;41220:18;41211:6;41167:72;:::i;:::-;41249:73;41317:3;41306:9;41302:19;41293:6;41249:73;:::i;:::-;40498:831;;;;;;;;:::o;41335:807::-;41584:4;41622:3;41611:9;41607:19;41599:27;;41636:71;41704:1;41693:9;41689:17;41680:6;41636:71;:::i;:::-;41717:72;41785:2;41774:9;41770:18;41761:6;41717:72;:::i;:::-;41799:80;41875:2;41864:9;41860:18;41851:6;41799:80;:::i;:::-;41889;41965:2;41954:9;41950:18;41941:6;41889:80;:::i;:::-;41979:73;42047:3;42036:9;42032:19;42023:6;41979:73;:::i;:::-;42062;42130:3;42119:9;42115:19;42106:6;42062:73;:::i;:::-;41335:807;;;;;;;;;:::o;42148:143::-;42205:5;42236:6;42230:13;42221:22;;42252:33;42279:5;42252:33;:::i;:::-;42148:143;;;;:::o;42297:663::-;42385:6;42393;42401;42450:2;42438:9;42429:7;42425:23;42421:32;42418:119;;;42456:79;;:::i;:::-;42418:119;42576:1;42601:64;42657:7;42648:6;42637:9;42633:22;42601:64;:::i;:::-;42591:74;;42547:128;42714:2;42740:64;42796:7;42787:6;42776:9;42772:22;42740:64;:::i;:::-;42730:74;;42685:129;42853:2;42879:64;42935:7;42926:6;42915:9;42911:22;42879:64;:::i;:::-;42869:74;;42824:129;42297:663;;;;;:::o

Swarm Source

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