ETH Price: $2,418.89 (+0.71%)

Token

xaiMixer (MIXER)
 

Overview

Max Total Supply

1,000,000,000,000,000,000,000,000 MIXER

Holders

215

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
1,765,242,926,991,966,102,954 MIXER

Value
$0.00
0xb5cb30cdc4f70ecbf1d4aefab5cc23de40223f0f
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:
MIXER

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 
https://t.me/mixer_xAI
https://xaimixer.com/
https://twitter.com/xaiMixer

*/

//  SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;

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

}

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;

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

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

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

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

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

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

    function transfer(address 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 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;
    }
} 

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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface 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 MIXER is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;
    address public lpWallet;

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

    bool public limitsInEffect = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

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

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

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

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

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

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

    constructor() ERC20("xaiMixer", "MIXER") {
        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 = 20;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 40;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1_000_000 * 1e18;

        maxTransactionAmount = (totalSupply * 2) / 100;
        maxWallet = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

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

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0xC1BFC373264083cEEfDcBba4814217ccAbffce9A); 
        devWallet = address(0xC1BFC373264083cEEfDcBba4814217ccAbffce9A);
        lpWallet = msg.sender;

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

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

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    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 excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
         require((_marketingFee + _liquidityFee + _devFee) <= 20 ,"Buy fee cant be sent more than 20%");
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        require((_marketingFee + _liquidityFee + _devFee) <= 20 ,"Sell fee cant be sent more than 20%");
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //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 any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpWallet,
            block.timestamp
        );
    }

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

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

        // Halve the amount of liquidity tokens
        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 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                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":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"LimitsRemoved","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":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","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":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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"}]

60c06040526001600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555034801562000060575f80fd5b506040518060400160405280600881526020017f7861694d697865720000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d495845520000000000000000000000000000000000000000000000000000008152508160039081620000de919062000dbb565b508060049081620000f0919062000dbb565b50505062000113620001076200062f60201b60201c565b6200063660201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013e816001620006f960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000f04565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000248573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026e919062000f04565b6040518363ffffffff1660e01b81526004016200028d92919062000f45565b6020604051808303815f875af1158015620002aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000f04565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031860a0516001620006f960201b60201c565b6200032d60a0516001620007e060201b60201c565b5f601490505f805f602890505f805f69d3c21bcecceda1000000905060646002826200035a919062000f9d565b62000366919062001014565b60098190555060646002826200037d919062000f9d565b62000389919062001014565b600b81905550612710600582620003a1919062000f9d565b620003ad919062001014565b600a8190555086600e8190555085600f8190555084601081905550601054600f54600e54620003dd91906200104b565b620003e991906200104b565b600d819055508360128190555082601381905550816014819055506014546013546012546200041991906200104b565b6200042591906200104b565b60118190555073c1bfc373264083ceefdcbba4814217ccabffce9a60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c1bfc373264083ceefdcbba4814217ccabffce9a60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000535620005276200087e60201b60201c565b6001620008a660201b60201c565b62000548306001620008a660201b60201c565b6200055d61dead6001620008a660201b60201c565b6200059160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008a660201b60201c565b620005b3620005a56200087e60201b60201c565b6001620006f960201b60201c565b620005c6306001620006f960201b60201c565b620005db61dead6001620006f960201b60201c565b6200060f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006f960201b60201c565b620006213382620009dd60201b60201c565b5050505050505050620011d4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007096200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200072f6200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077f90620010e3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008b66200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008dc6200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092c90620010e3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d191906200111f565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a459062001188565b60405180910390fd5b62000a615f838362000b4d60201b60201c565b8060025f82825462000a7491906200104b565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000ac891906200104b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b2e9190620011b9565b60405180910390a362000b495f838362000b5260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bd357607f821691505b60208210810362000be95762000be862000b8e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c4d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c10565b62000c59868362000c10565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ca362000c9d62000c978462000c71565b62000c7a565b62000c71565b9050919050565b5f819050919050565b62000cbe8362000c83565b62000cd662000ccd8262000caa565b84845462000c1c565b825550505050565b5f90565b62000cec62000cde565b62000cf981848462000cb3565b505050565b5b8181101562000d205762000d145f8262000ce2565b60018101905062000cff565b5050565b601f82111562000d6f5762000d398162000bef565b62000d448462000c01565b8101602085101562000d54578190505b62000d6c62000d638562000c01565b83018262000cfe565b50505b505050565b5f82821c905092915050565b5f62000d915f198460080262000d74565b1980831691505092915050565b5f62000dab838362000d80565b9150826002028217905092915050565b62000dc68262000b57565b67ffffffffffffffff81111562000de25762000de162000b61565b5b62000dee825462000bbb565b62000dfb82828562000d24565b5f60209050601f83116001811462000e31575f841562000e1c578287015190505b62000e28858262000d9e565b86555062000e97565b601f19841662000e418662000bef565b5f5b8281101562000e6a5784890151825560018201915060208501945060208101905062000e43565b8683101562000e8a578489015162000e86601f89168262000d80565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ece8262000ea3565b9050919050565b62000ee08162000ec2565b811462000eeb575f80fd5b50565b5f8151905062000efe8162000ed5565b92915050565b5f6020828403121562000f1c5762000f1b62000e9f565b5b5f62000f2b8482850162000eee565b91505092915050565b62000f3f8162000ec2565b82525050565b5f60408201905062000f5a5f83018562000f34565b62000f69602083018462000f34565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000fa98262000c71565b915062000fb68362000c71565b925082820262000fc68162000c71565b9150828204841483151762000fe05762000fdf62000f70565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010208262000c71565b91506200102d8362000c71565b92508262001040576200103f62000fe7565b5b828204905092915050565b5f620010578262000c71565b9150620010648362000c71565b92508282019050808211156200107f576200107e62000f70565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620010cb60208362001085565b9150620010d88262001095565b602082019050919050565b5f6020820190508181035f830152620010fc81620010bd565b9050919050565b5f8115159050919050565b620011198162001103565b82525050565b5f602082019050620011345f8301846200110e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001170601f8362001085565b91506200117d826200113a565b602082019050919050565b5f6020820190508181035f830152620011a18162001162565b9050919050565b620011b38162000c71565b82525050565b5f602082019050620011ce5f830184620011a8565b92915050565b60805160a0516149b4620012205f395f8181611005015261171e01525f8181610ceb015281816134530152818161353201528181613559015281816135ef015261361601526149b45ff3fe608060405260043610610302575f3560e01c80638da5cb5b1161018f578063bbc0c742116100db578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610b7b578063f637434214610ba3578063f8b45b0514610bcd578063fbc10c5514610bf757610309565b8063dd62ed3e14610aeb578063e2f4560514610b27578063f11a24d314610b5157610309565b8063bbc0c742146109e1578063c024666814610a0b578063c17b5b8c14610a33578063c8c8ebe414610a5b578063d257b34f14610a85578063d85ba06314610ac157610309565b80639c3b4fdc11610148578063a457c2d711610122578063a457c2d714610905578063a9059cbb14610941578063aacebbe31461097d578063b62496f5146109a557610309565b80639c3b4fdc146108875780639fccce32146108b1578063a0d82dc5146108db57610309565b80638da5cb5b1461078f5780638ea5220f146107b957806392136913146107e3578063924de9b71461080d57806395d89b41146108355780639a7a23d61461085f57610309565b80634a62bb651161024e578063715018a61161020757806375f0a874116101e157806375f0a874146106fd5780637bce5a04146107275780638095d564146107515780638a8c523c1461077957610309565b8063715018a614610695578063751039fc146106ab5780637571336a146106d557610309565b80634a62bb65146105755780634fbee1931461059f5780636303516c146105db5780636a486a8e146106055780636ddd17131461062f57806370a082311461065957610309565b80631a8145bb116102bb57806327c8f8351161029557806327c8f835146104bb578063313ce567146104e5578063395093511461050f57806349bd5a5e1461054b57610309565b80631a8145bb1461042b5780631f3fed8f1461045557806323b872dd1461047f57610309565b806306fdde031461030d578063095ea7b31461033757806310d5de53146103735780631694505e146103af57806318160ddd146103d95780631816467f1461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1f565b60405161032e919061376b565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061381c565b610caf565b60405161036a9190613874565b60405180910390f35b34801561037e575f80fd5b506103996004803603810190610394919061388d565b610ccc565b6040516103a69190613874565b60405180910390f35b3480156103ba575f80fd5b506103c3610ce9565b6040516103d09190613913565b60405180910390f35b3480156103e4575f80fd5b506103ed610d0d565b6040516103fa919061393b565b60405180910390f35b34801561040e575f80fd5b506104296004803603810190610424919061388d565b610d16565b005b348015610436575f80fd5b5061043f610e50565b60405161044c919061393b565b60405180910390f35b348015610460575f80fd5b50610469610e56565b604051610476919061393b565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a09190613954565b610e5c565b6040516104b29190613874565b60405180910390f35b3480156104c6575f80fd5b506104cf610f4e565b6040516104dc91906139b3565b60405180910390f35b3480156104f0575f80fd5b506104f9610f54565b60405161050691906139e7565b60405180910390f35b34801561051a575f80fd5b506105356004803603810190610530919061381c565b610f5c565b6040516105429190613874565b60405180910390f35b348015610556575f80fd5b5061055f611003565b60405161056c91906139b3565b60405180910390f35b348015610580575f80fd5b50610589611027565b6040516105969190613874565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c0919061388d565b611039565b6040516105d29190613874565b60405180910390f35b3480156105e6575f80fd5b506105ef61108b565b6040516105fc91906139b3565b60405180910390f35b348015610610575f80fd5b506106196110b0565b604051610626919061393b565b60405180910390f35b34801561063a575f80fd5b506106436110b6565b6040516106509190613874565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a919061388d565b6110c9565b60405161068c919061393b565b60405180910390f35b3480156106a0575f80fd5b506106a961110e565b005b3480156106b6575f80fd5b506106bf611195565b6040516106cc9190613874565b60405180910390f35b3480156106e0575f80fd5b506106fb60048036038101906106f69190613a2a565b61125e565b005b348015610708575f80fd5b50610711611332565b60405161071e91906139b3565b60405180910390f35b348015610732575f80fd5b5061073b611357565b604051610748919061393b565b60405180910390f35b34801561075c575f80fd5b5061077760048036038101906107729190613a68565b61135d565b005b348015610784575f80fd5b5061078d611470565b005b34801561079a575f80fd5b506107a3611524565b6040516107b091906139b3565b60405180910390f35b3480156107c4575f80fd5b506107cd61154c565b6040516107da91906139b3565b60405180910390f35b3480156107ee575f80fd5b506107f7611571565b604051610804919061393b565b60405180910390f35b348015610818575f80fd5b50610833600480360381019061082e9190613ab8565b611577565b005b348015610840575f80fd5b50610849611610565b604051610856919061376b565b60405180910390f35b34801561086a575f80fd5b5061088560048036038101906108809190613a2a565b6116a0565b005b348015610892575f80fd5b5061089b6117b8565b6040516108a8919061393b565b60405180910390f35b3480156108bc575f80fd5b506108c56117be565b6040516108d2919061393b565b60405180910390f35b3480156108e6575f80fd5b506108ef6117c4565b6040516108fc919061393b565b60405180910390f35b348015610910575f80fd5b5061092b6004803603810190610926919061381c565b6117ca565b6040516109389190613874565b60405180910390f35b34801561094c575f80fd5b506109676004803603810190610962919061381c565b6118b0565b6040516109749190613874565b60405180910390f35b348015610988575f80fd5b506109a3600480360381019061099e919061388d565b6118cd565b005b3480156109b0575f80fd5b506109cb60048036038101906109c6919061388d565b611a07565b6040516109d89190613874565b60405180910390f35b3480156109ec575f80fd5b506109f5611a24565b604051610a029190613874565b60405180910390f35b348015610a16575f80fd5b50610a316004803603810190610a2c9190613a2a565b611a37565b005b348015610a3e575f80fd5b50610a596004803603810190610a549190613a68565b611b59565b005b348015610a66575f80fd5b50610a6f611c6c565b604051610a7c919061393b565b60405180910390f35b348015610a90575f80fd5b50610aab6004803603810190610aa69190613ae3565b611c72565b604051610ab89190613874565b60405180910390f35b348015610acc575f80fd5b50610ad5611dc6565b604051610ae2919061393b565b60405180910390f35b348015610af6575f80fd5b50610b116004803603810190610b0c9190613b0e565b611dcc565b604051610b1e919061393b565b60405180910390f35b348015610b32575f80fd5b50610b3b611e4e565b604051610b48919061393b565b60405180910390f35b348015610b5c575f80fd5b50610b65611e54565b604051610b72919061393b565b60405180910390f35b348015610b86575f80fd5b50610ba16004803603810190610b9c919061388d565b611e5a565b005b348015610bae575f80fd5b50610bb7611f50565b604051610bc4919061393b565b60405180910390f35b348015610bd8575f80fd5b50610be1611f56565b604051610bee919061393b565b60405180910390f35b348015610c02575f80fd5b50610c1d6004803603810190610c18919061388d565b611f5c565b005b606060038054610c2e90613b79565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5a90613b79565b8015610ca55780601f10610c7c57610100808354040283529160200191610ca5565b820191905f5260205f20905b815481529060010190602001808311610c8857829003601f168201915b5050505050905090565b5f610cc2610cbb612096565b848461209d565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610d1e612096565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611524565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613bf3565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b5f610e68848484612260565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610eaf612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613c81565b60405180910390fd5b610f4285610f3a612096565b85840361209d565b60019150509392505050565b61dead81565b5f6012905090565b5f610ff9610f68612096565b848460015f610f75612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff49190613ccc565b61209d565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611116612096565b73ffffffffffffffffffffffffffffffffffffffff16611134611524565b73ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190613bf3565b60405180910390fd5b6111935f612cf0565b565b5f61119e612096565b73ffffffffffffffffffffffffffffffffffffffff166111bc611524565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990613bf3565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b611266612096565b73ffffffffffffffffffffffffffffffffffffffff16611284611524565b73ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190613bf3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611365612096565b73ffffffffffffffffffffffffffffffffffffffff16611383611524565b73ffffffffffffffffffffffffffffffffffffffff16146113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613bf3565b60405180910390fd5b60148183856113e89190613ccc565b6113f29190613ccc565b1115611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90613d6f565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461145b9190613ccc565b6114659190613ccc565b600d81905550505050565b611478612096565b73ffffffffffffffffffffffffffffffffffffffff16611496611524565b73ffffffffffffffffffffffffffffffffffffffff16146114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613bf3565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61157f612096565b73ffffffffffffffffffffffffffffffffffffffff1661159d611524565b73ffffffffffffffffffffffffffffffffffffffff16146115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea90613bf3565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461161f90613b79565b80601f016020809104026020016040519081016040528092919081815260200182805461164b90613b79565b80156116965780601f1061166d57610100808354040283529160200191611696565b820191905f5260205f20905b81548152906001019060200180831161167957829003601f168201915b5050505050905090565b6116a8612096565b73ffffffffffffffffffffffffffffffffffffffff166116c6611524565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390613bf3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190613dfd565b60405180910390fd5b6117b48282612db3565b5050565b60105481565b60175481565b60145481565b5f8060015f6117d7612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188890613e8b565b60405180910390fd5b6118a561189c612096565b8585840361209d565b600191505092915050565b5f6118c36118bc612096565b8484612260565b6001905092915050565b6118d5612096565b73ffffffffffffffffffffffffffffffffffffffff166118f3611524565b73ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090613bf3565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611a3f612096565b73ffffffffffffffffffffffffffffffffffffffff16611a5d611524565b73ffffffffffffffffffffffffffffffffffffffff1614611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613bf3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b4d9190613874565b60405180910390a25050565b611b61612096565b73ffffffffffffffffffffffffffffffffffffffff16611b7f611524565b73ffffffffffffffffffffffffffffffffffffffff1614611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613bf3565b60405180910390fd5b6014818385611be49190613ccc565b611bee9190613ccc565b1115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613f19565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611c579190613ccc565b611c619190613ccc565b601181905550505050565b60095481565b5f611c7b612096565b73ffffffffffffffffffffffffffffffffffffffff16611c99611524565b73ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690613bf3565b60405180910390fd5b620186a06001611cfd610d0d565b611d079190613f37565b611d119190613fa5565b821015611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90614045565b60405180910390fd5b6103e86005611d60610d0d565b611d6a9190613f37565b611d749190613fa5565b821115611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad906140d3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b611e62612096565b73ffffffffffffffffffffffffffffffffffffffff16611e80611524565b73ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90613bf3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90614161565b60405180910390fd5b611f4d81612cf0565b50565b60135481565b600b5481565b611f64612096565b73ffffffffffffffffffffffffffffffffffffffff16611f82611524565b73ffffffffffffffffffffffffffffffffffffffff1614611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90613bf3565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906141ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121709061427d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612253919061393b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c59061430b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390614399565b60405180910390fd5b5f81036123535761234e83835f612e51565b612ceb565b600c5f9054906101000a900460ff16156128375761236f611524565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123dd57506123ad611524565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561241557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561244f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124685750600560149054906101000a900460ff16155b1561283657600c60019054906101000a900460ff1661255c5760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061251c575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614401565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125f9575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126a057600954811115612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a9061448f565b60405180910390fd5b600b5461264f836110c9565b8261265a9190613ccc565b111561269b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612692906144f7565b60405180910390fd5b612835565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273d575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278c57600954811115612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614585565b60405180910390fd5b612834565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661283357600b546127e6836110c9565b826127f19190613ccc565b1115612832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612829906144f7565b60405180910390fd5b5b5b5b5b5b5f612841306110c9565b90505f600a5482101590508080156128655750600c60029054906101000a900460ff165b801561287e5750600560149054906101000a900460ff16155b80156128d15750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612924575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612977575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129ba576001600560146101000a81548160ff02191690831515021790555061299f6130c6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a69575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a72575f90505b5f8115612cdb57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad057505f601154115b15612b9a57612afd6064612aef6011548861336d90919063ffffffff16565b61338290919063ffffffff16565b905060115460135482612b109190613f37565b612b1a9190613fa5565b60165f828254612b2a9190613ccc565b9250508190555060115460145482612b429190613f37565b612b4c9190613fa5565b60175f828254612b5c9190613ccc565b9250508190555060115460125482612b749190613f37565b612b7e9190613fa5565b60155f828254612b8e9190613ccc565b92505081905550612cb8565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bf157505f600d54115b15612cb757612c1e6064612c10600d548861336d90919063ffffffff16565b61338290919063ffffffff16565b9050600d54600f5482612c319190613f37565b612c3b9190613fa5565b60165f828254612c4b9190613ccc565b92505081905550600d5460105482612c639190613f37565b612c6d9190613fa5565b60175f828254612c7d9190613ccc565b92505081905550600d54600e5482612c959190613f37565b612c9f9190613fa5565b60155f828254612caf9190613ccc565b925050819055505b5b5f811115612ccc57612ccb873083612e51565b5b8085612cd891906145a3565b94505b612ce6878787612e51565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb69061430b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2490614399565b60405180910390fd5b612f38838383613397565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb290614646565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130499190613ccc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ad919061393b565b60405180910390a36130c084848461339c565b50505050565b5f6130d0306110c9565b90505f6017546015546016546130e69190613ccc565b6130f09190613ccc565b90505f8083148061310057505f82145b1561310d5750505061336b565b5f6002836016548661311f9190613f37565b6131299190613fa5565b6131339190613fa5565b90505f61314982866133a190919063ffffffff16565b90505f479050613158826133b6565b5f61316c82476133a190919063ffffffff16565b90505f613196876131886015548561336d90919063ffffffff16565b61338290919063ffffffff16565b90505f6131c0886131b26017548661336d90919063ffffffff16565b61338290919063ffffffff16565b90505f8183856131d091906145a3565b6131da91906145a3565b90505f6016819055505f6015819055505f60178190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161323690614691565b5f6040518083038185875af1925050503d805f8114613270576040519150601f19603f3d011682016040523d82523d5f602084013e613275565b606091505b5050809850505f8711801561328957505f81115b156132d65761329887826135e9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826016546040516132cd939291906146a5565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161331b90614691565b5f6040518083038185875af1925050503d805f8114613355576040519150601f19603f3d011682016040523d82523d5f602084013e61335a565b606091505b505080985050505050505050505050505b565b5f818361337a9190613f37565b905092915050565b5f818361338f9190613fa5565b905092915050565b505050565b505050565b5f81836133ae91906145a3565b905092915050565b5f600267ffffffffffffffff8111156133d2576133d16146da565b5b6040519080825280602002602001820160405280156134005781602001602082028036833780820191505090505b50905030815f8151811061341757613416614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134de9190614748565b816001815181106134f2576134f1614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613557307f00000000000000000000000000000000000000000000000000000000000000008461209d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135b8959493929190614863565b5f604051808303815f87803b1580156135cf575f80fd5b505af11580156135e1573d5f803e3d5ffd5b505050505050565b613614307f00000000000000000000000000000000000000000000000000000000000000008461209d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613699969594939291906148bb565b60606040518083038185885af11580156136b5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906136da919061492e565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137185780820151818401526020810190506136fd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61373d826136e1565b61374781856136eb565b93506137578185602086016136fb565b61376081613723565b840191505092915050565b5f6020820190508181035f8301526137838184613733565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137b88261378f565b9050919050565b6137c8816137ae565b81146137d2575f80fd5b50565b5f813590506137e3816137bf565b92915050565b5f819050919050565b6137fb816137e9565b8114613805575f80fd5b50565b5f81359050613816816137f2565b92915050565b5f80604083850312156138325761383161378b565b5b5f61383f858286016137d5565b925050602061385085828601613808565b9150509250929050565b5f8115159050919050565b61386e8161385a565b82525050565b5f6020820190506138875f830184613865565b92915050565b5f602082840312156138a2576138a161378b565b5b5f6138af848285016137d5565b91505092915050565b5f819050919050565b5f6138db6138d66138d18461378f565b6138b8565b61378f565b9050919050565b5f6138ec826138c1565b9050919050565b5f6138fd826138e2565b9050919050565b61390d816138f3565b82525050565b5f6020820190506139265f830184613904565b92915050565b613935816137e9565b82525050565b5f60208201905061394e5f83018461392c565b92915050565b5f805f6060848603121561396b5761396a61378b565b5b5f613978868287016137d5565b9350506020613989868287016137d5565b925050604061399a86828701613808565b9150509250925092565b6139ad816137ae565b82525050565b5f6020820190506139c65f8301846139a4565b92915050565b5f60ff82169050919050565b6139e1816139cc565b82525050565b5f6020820190506139fa5f8301846139d8565b92915050565b613a098161385a565b8114613a13575f80fd5b50565b5f81359050613a2481613a00565b92915050565b5f8060408385031215613a4057613a3f61378b565b5b5f613a4d858286016137d5565b9250506020613a5e85828601613a16565b9150509250929050565b5f805f60608486031215613a7f57613a7e61378b565b5b5f613a8c86828701613808565b9350506020613a9d86828701613808565b9250506040613aae86828701613808565b9150509250925092565b5f60208284031215613acd57613acc61378b565b5b5f613ada84828501613a16565b91505092915050565b5f60208284031215613af857613af761378b565b5b5f613b0584828501613808565b91505092915050565b5f8060408385031215613b2457613b2361378b565b5b5f613b31858286016137d5565b9250506020613b42858286016137d5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b9057607f821691505b602082108103613ba357613ba2613b4c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bdd6020836136eb565b9150613be882613ba9565b602082019050919050565b5f6020820190508181035f830152613c0a81613bd1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c6b6028836136eb565b9150613c7682613c11565b604082019050919050565b5f6020820190508181035f830152613c9881613c5f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613cd6826137e9565b9150613ce1836137e9565b9250828201905080821115613cf957613cf8613c9f565b5b92915050565b7f427579206665652063616e742062652073656e74206d6f7265207468616e20325f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d596022836136eb565b9150613d6482613cff565b604082019050919050565b5f6020820190508181035f830152613d8681613d4d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613de76039836136eb565b9150613df282613d8d565b604082019050919050565b5f6020820190508181035f830152613e1481613ddb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e756025836136eb565b9150613e8082613e1b565b604082019050919050565b5f6020820190508181035f830152613ea281613e69565b9050919050565b7f53656c6c206665652063616e742062652073656e74206d6f7265207468616e205f8201527f3230250000000000000000000000000000000000000000000000000000000000602082015250565b5f613f036023836136eb565b9150613f0e82613ea9565b604082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b5f613f41826137e9565b9150613f4c836137e9565b9250828202613f5a816137e9565b91508282048414831517613f7157613f70613c9f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613faf826137e9565b9150613fba836137e9565b925082613fca57613fc9613f78565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61402f6035836136eb565b915061403a82613fd5565b604082019050919050565b5f6020820190508181035f83015261405c81614023565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6140bd6034836136eb565b91506140c882614063565b604082019050919050565b5f6020820190508181035f8301526140ea816140b1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61414b6026836136eb565b9150614156826140f1565b604082019050919050565b5f6020820190508181035f8301526141788161413f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141d96024836136eb565b91506141e48261417f565b604082019050919050565b5f6020820190508181035f830152614206816141cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142676022836136eb565b91506142728261420d565b604082019050919050565b5f6020820190508181035f8301526142948161425b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142f56025836136eb565b91506143008261429b565b604082019050919050565b5f6020820190508181035f830152614322816142e9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143836023836136eb565b915061438e82614329565b604082019050919050565b5f6020820190508181035f8301526143b081614377565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143eb6016836136eb565b91506143f6826143b7565b602082019050919050565b5f6020820190508181035f830152614418816143df565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144796035836136eb565b91506144848261441f565b604082019050919050565b5f6020820190508181035f8301526144a68161446d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144e16013836136eb565b91506144ec826144ad565b602082019050919050565b5f6020820190508181035f83015261450e816144d5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61456f6036836136eb565b915061457a82614515565b604082019050919050565b5f6020820190508181035f83015261459c81614563565b9050919050565b5f6145ad826137e9565b91506145b8836137e9565b92508282039050818111156145d0576145cf613c9f565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146306026836136eb565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b5f81905092915050565b50565b5f61467c5f83614664565b91506146878261466e565b5f82019050919050565b5f61469b82614671565b9150819050919050565b5f6060820190506146b85f83018661392c565b6146c5602083018561392c565b6146d2604083018461392c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614742816137bf565b92915050565b5f6020828403121561475d5761475c61378b565b5b5f61476a84828501614734565b91505092915050565b5f819050919050565b5f61479661479161478c84614773565b6138b8565b6137e9565b9050919050565b6147a68161477c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147de816137ae565b82525050565b5f6147ef83836147d5565b60208301905092915050565b5f602082019050919050565b5f614811826147ac565b61481b81856147b6565b9350614826836147c6565b805f5b8381101561485657815161483d88826147e4565b9750614848836147fb565b925050600181019050614829565b5085935050505092915050565b5f60a0820190506148765f83018861392c565b614883602083018761479d565b81810360408301526148958186614807565b90506148a460608301856139a4565b6148b1608083018461392c565b9695505050505050565b5f60c0820190506148ce5f8301896139a4565b6148db602083018861392c565b6148e8604083018761479d565b6148f5606083018661479d565b61490260808301856139a4565b61490f60a083018461392c565b979650505050505050565b5f81519050614928816137f2565b92915050565b5f805f606084860312156149455761494461378b565b5b5f6149528682870161491a565b93505060206149638682870161491a565b92505060406149748682870161491a565b915050925092509256fea26469706673582212203e57c98533166b00c5aba78ba7b309b71019e656fea3b11d648e693317c9925c64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610302575f3560e01c80638da5cb5b1161018f578063bbc0c742116100db578063dd62ed3e11610094578063f2fde38b1161006e578063f2fde38b14610b7b578063f637434214610ba3578063f8b45b0514610bcd578063fbc10c5514610bf757610309565b8063dd62ed3e14610aeb578063e2f4560514610b27578063f11a24d314610b5157610309565b8063bbc0c742146109e1578063c024666814610a0b578063c17b5b8c14610a33578063c8c8ebe414610a5b578063d257b34f14610a85578063d85ba06314610ac157610309565b80639c3b4fdc11610148578063a457c2d711610122578063a457c2d714610905578063a9059cbb14610941578063aacebbe31461097d578063b62496f5146109a557610309565b80639c3b4fdc146108875780639fccce32146108b1578063a0d82dc5146108db57610309565b80638da5cb5b1461078f5780638ea5220f146107b957806392136913146107e3578063924de9b71461080d57806395d89b41146108355780639a7a23d61461085f57610309565b80634a62bb651161024e578063715018a61161020757806375f0a874116101e157806375f0a874146106fd5780637bce5a04146107275780638095d564146107515780638a8c523c1461077957610309565b8063715018a614610695578063751039fc146106ab5780637571336a146106d557610309565b80634a62bb65146105755780634fbee1931461059f5780636303516c146105db5780636a486a8e146106055780636ddd17131461062f57806370a082311461065957610309565b80631a8145bb116102bb57806327c8f8351161029557806327c8f835146104bb578063313ce567146104e5578063395093511461050f57806349bd5a5e1461054b57610309565b80631a8145bb1461042b5780631f3fed8f1461045557806323b872dd1461047f57610309565b806306fdde031461030d578063095ea7b31461033757806310d5de53146103735780631694505e146103af57806318160ddd146103d95780631816467f1461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1f565b60405161032e919061376b565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061381c565b610caf565b60405161036a9190613874565b60405180910390f35b34801561037e575f80fd5b506103996004803603810190610394919061388d565b610ccc565b6040516103a69190613874565b60405180910390f35b3480156103ba575f80fd5b506103c3610ce9565b6040516103d09190613913565b60405180910390f35b3480156103e4575f80fd5b506103ed610d0d565b6040516103fa919061393b565b60405180910390f35b34801561040e575f80fd5b506104296004803603810190610424919061388d565b610d16565b005b348015610436575f80fd5b5061043f610e50565b60405161044c919061393b565b60405180910390f35b348015610460575f80fd5b50610469610e56565b604051610476919061393b565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a09190613954565b610e5c565b6040516104b29190613874565b60405180910390f35b3480156104c6575f80fd5b506104cf610f4e565b6040516104dc91906139b3565b60405180910390f35b3480156104f0575f80fd5b506104f9610f54565b60405161050691906139e7565b60405180910390f35b34801561051a575f80fd5b506105356004803603810190610530919061381c565b610f5c565b6040516105429190613874565b60405180910390f35b348015610556575f80fd5b5061055f611003565b60405161056c91906139b3565b60405180910390f35b348015610580575f80fd5b50610589611027565b6040516105969190613874565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c0919061388d565b611039565b6040516105d29190613874565b60405180910390f35b3480156105e6575f80fd5b506105ef61108b565b6040516105fc91906139b3565b60405180910390f35b348015610610575f80fd5b506106196110b0565b604051610626919061393b565b60405180910390f35b34801561063a575f80fd5b506106436110b6565b6040516106509190613874565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a919061388d565b6110c9565b60405161068c919061393b565b60405180910390f35b3480156106a0575f80fd5b506106a961110e565b005b3480156106b6575f80fd5b506106bf611195565b6040516106cc9190613874565b60405180910390f35b3480156106e0575f80fd5b506106fb60048036038101906106f69190613a2a565b61125e565b005b348015610708575f80fd5b50610711611332565b60405161071e91906139b3565b60405180910390f35b348015610732575f80fd5b5061073b611357565b604051610748919061393b565b60405180910390f35b34801561075c575f80fd5b5061077760048036038101906107729190613a68565b61135d565b005b348015610784575f80fd5b5061078d611470565b005b34801561079a575f80fd5b506107a3611524565b6040516107b091906139b3565b60405180910390f35b3480156107c4575f80fd5b506107cd61154c565b6040516107da91906139b3565b60405180910390f35b3480156107ee575f80fd5b506107f7611571565b604051610804919061393b565b60405180910390f35b348015610818575f80fd5b50610833600480360381019061082e9190613ab8565b611577565b005b348015610840575f80fd5b50610849611610565b604051610856919061376b565b60405180910390f35b34801561086a575f80fd5b5061088560048036038101906108809190613a2a565b6116a0565b005b348015610892575f80fd5b5061089b6117b8565b6040516108a8919061393b565b60405180910390f35b3480156108bc575f80fd5b506108c56117be565b6040516108d2919061393b565b60405180910390f35b3480156108e6575f80fd5b506108ef6117c4565b6040516108fc919061393b565b60405180910390f35b348015610910575f80fd5b5061092b6004803603810190610926919061381c565b6117ca565b6040516109389190613874565b60405180910390f35b34801561094c575f80fd5b506109676004803603810190610962919061381c565b6118b0565b6040516109749190613874565b60405180910390f35b348015610988575f80fd5b506109a3600480360381019061099e919061388d565b6118cd565b005b3480156109b0575f80fd5b506109cb60048036038101906109c6919061388d565b611a07565b6040516109d89190613874565b60405180910390f35b3480156109ec575f80fd5b506109f5611a24565b604051610a029190613874565b60405180910390f35b348015610a16575f80fd5b50610a316004803603810190610a2c9190613a2a565b611a37565b005b348015610a3e575f80fd5b50610a596004803603810190610a549190613a68565b611b59565b005b348015610a66575f80fd5b50610a6f611c6c565b604051610a7c919061393b565b60405180910390f35b348015610a90575f80fd5b50610aab6004803603810190610aa69190613ae3565b611c72565b604051610ab89190613874565b60405180910390f35b348015610acc575f80fd5b50610ad5611dc6565b604051610ae2919061393b565b60405180910390f35b348015610af6575f80fd5b50610b116004803603810190610b0c9190613b0e565b611dcc565b604051610b1e919061393b565b60405180910390f35b348015610b32575f80fd5b50610b3b611e4e565b604051610b48919061393b565b60405180910390f35b348015610b5c575f80fd5b50610b65611e54565b604051610b72919061393b565b60405180910390f35b348015610b86575f80fd5b50610ba16004803603810190610b9c919061388d565b611e5a565b005b348015610bae575f80fd5b50610bb7611f50565b604051610bc4919061393b565b60405180910390f35b348015610bd8575f80fd5b50610be1611f56565b604051610bee919061393b565b60405180910390f35b348015610c02575f80fd5b50610c1d6004803603810190610c18919061388d565b611f5c565b005b606060038054610c2e90613b79565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5a90613b79565b8015610ca55780601f10610c7c57610100808354040283529160200191610ca5565b820191905f5260205f20905b815481529060010190602001808311610c8857829003601f168201915b5050505050905090565b5f610cc2610cbb612096565b848461209d565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610d1e612096565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611524565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613bf3565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b5f610e68848484612260565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610eaf612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613c81565b60405180910390fd5b610f4285610f3a612096565b85840361209d565b60019150509392505050565b61dead81565b5f6012905090565b5f610ff9610f68612096565b848460015f610f75612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff49190613ccc565b61209d565b6001905092915050565b7f00000000000000000000000064ce276d0498038db8e6d207dac6565c18d54e1281565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611116612096565b73ffffffffffffffffffffffffffffffffffffffff16611134611524565b73ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190613bf3565b60405180910390fd5b6111935f612cf0565b565b5f61119e612096565b73ffffffffffffffffffffffffffffffffffffffff166111bc611524565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990613bf3565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b611266612096565b73ffffffffffffffffffffffffffffffffffffffff16611284611524565b73ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190613bf3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611365612096565b73ffffffffffffffffffffffffffffffffffffffff16611383611524565b73ffffffffffffffffffffffffffffffffffffffff16146113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613bf3565b60405180910390fd5b60148183856113e89190613ccc565b6113f29190613ccc565b1115611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90613d6f565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461145b9190613ccc565b6114659190613ccc565b600d81905550505050565b611478612096565b73ffffffffffffffffffffffffffffffffffffffff16611496611524565b73ffffffffffffffffffffffffffffffffffffffff16146114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613bf3565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61157f612096565b73ffffffffffffffffffffffffffffffffffffffff1661159d611524565b73ffffffffffffffffffffffffffffffffffffffff16146115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea90613bf3565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461161f90613b79565b80601f016020809104026020016040519081016040528092919081815260200182805461164b90613b79565b80156116965780601f1061166d57610100808354040283529160200191611696565b820191905f5260205f20905b81548152906001019060200180831161167957829003601f168201915b5050505050905090565b6116a8612096565b73ffffffffffffffffffffffffffffffffffffffff166116c6611524565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390613bf3565b60405180910390fd5b7f00000000000000000000000064ce276d0498038db8e6d207dac6565c18d54e1273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190613dfd565b60405180910390fd5b6117b48282612db3565b5050565b60105481565b60175481565b60145481565b5f8060015f6117d7612096565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188890613e8b565b60405180910390fd5b6118a561189c612096565b8585840361209d565b600191505092915050565b5f6118c36118bc612096565b8484612260565b6001905092915050565b6118d5612096565b73ffffffffffffffffffffffffffffffffffffffff166118f3611524565b73ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090613bf3565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611a3f612096565b73ffffffffffffffffffffffffffffffffffffffff16611a5d611524565b73ffffffffffffffffffffffffffffffffffffffff1614611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613bf3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b4d9190613874565b60405180910390a25050565b611b61612096565b73ffffffffffffffffffffffffffffffffffffffff16611b7f611524565b73ffffffffffffffffffffffffffffffffffffffff1614611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613bf3565b60405180910390fd5b6014818385611be49190613ccc565b611bee9190613ccc565b1115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613f19565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611c579190613ccc565b611c619190613ccc565b601181905550505050565b60095481565b5f611c7b612096565b73ffffffffffffffffffffffffffffffffffffffff16611c99611524565b73ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690613bf3565b60405180910390fd5b620186a06001611cfd610d0d565b611d079190613f37565b611d119190613fa5565b821015611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90614045565b60405180910390fd5b6103e86005611d60610d0d565b611d6a9190613f37565b611d749190613fa5565b821115611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad906140d3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b611e62612096565b73ffffffffffffffffffffffffffffffffffffffff16611e80611524565b73ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90613bf3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90614161565b60405180910390fd5b611f4d81612cf0565b50565b60135481565b600b5481565b611f64612096565b73ffffffffffffffffffffffffffffffffffffffff16611f82611524565b73ffffffffffffffffffffffffffffffffffffffff1614611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90613bf3565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906141ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121709061427d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612253919061393b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c59061430b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390614399565b60405180910390fd5b5f81036123535761234e83835f612e51565b612ceb565b600c5f9054906101000a900460ff16156128375761236f611524565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123dd57506123ad611524565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561241557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561244f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124685750600560149054906101000a900460ff16155b1561283657600c60019054906101000a900460ff1661255c5760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061251c575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614401565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125f9575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126a057600954811115612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a9061448f565b60405180910390fd5b600b5461264f836110c9565b8261265a9190613ccc565b111561269b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612692906144f7565b60405180910390fd5b612835565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273d575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278c57600954811115612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614585565b60405180910390fd5b612834565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661283357600b546127e6836110c9565b826127f19190613ccc565b1115612832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612829906144f7565b60405180910390fd5b5b5b5b5b5b5f612841306110c9565b90505f600a5482101590508080156128655750600c60029054906101000a900460ff165b801561287e5750600560149054906101000a900460ff16155b80156128d15750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612924575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612977575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129ba576001600560146101000a81548160ff02191690831515021790555061299f6130c6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a69575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a72575f90505b5f8115612cdb57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad057505f601154115b15612b9a57612afd6064612aef6011548861336d90919063ffffffff16565b61338290919063ffffffff16565b905060115460135482612b109190613f37565b612b1a9190613fa5565b60165f828254612b2a9190613ccc565b9250508190555060115460145482612b429190613f37565b612b4c9190613fa5565b60175f828254612b5c9190613ccc565b9250508190555060115460125482612b749190613f37565b612b7e9190613fa5565b60155f828254612b8e9190613ccc565b92505081905550612cb8565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bf157505f600d54115b15612cb757612c1e6064612c10600d548861336d90919063ffffffff16565b61338290919063ffffffff16565b9050600d54600f5482612c319190613f37565b612c3b9190613fa5565b60165f828254612c4b9190613ccc565b92505081905550600d5460105482612c639190613f37565b612c6d9190613fa5565b60175f828254612c7d9190613ccc565b92505081905550600d54600e5482612c959190613f37565b612c9f9190613fa5565b60155f828254612caf9190613ccc565b925050819055505b5b5f811115612ccc57612ccb873083612e51565b5b8085612cd891906145a3565b94505b612ce6878787612e51565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb69061430b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2490614399565b60405180910390fd5b612f38838383613397565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb290614646565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130499190613ccc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ad919061393b565b60405180910390a36130c084848461339c565b50505050565b5f6130d0306110c9565b90505f6017546015546016546130e69190613ccc565b6130f09190613ccc565b90505f8083148061310057505f82145b1561310d5750505061336b565b5f6002836016548661311f9190613f37565b6131299190613fa5565b6131339190613fa5565b90505f61314982866133a190919063ffffffff16565b90505f479050613158826133b6565b5f61316c82476133a190919063ffffffff16565b90505f613196876131886015548561336d90919063ffffffff16565b61338290919063ffffffff16565b90505f6131c0886131b26017548661336d90919063ffffffff16565b61338290919063ffffffff16565b90505f8183856131d091906145a3565b6131da91906145a3565b90505f6016819055505f6015819055505f60178190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161323690614691565b5f6040518083038185875af1925050503d805f8114613270576040519150601f19603f3d011682016040523d82523d5f602084013e613275565b606091505b5050809850505f8711801561328957505f81115b156132d65761329887826135e9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826016546040516132cd939291906146a5565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161331b90614691565b5f6040518083038185875af1925050503d805f8114613355576040519150601f19603f3d011682016040523d82523d5f602084013e61335a565b606091505b505080985050505050505050505050505b565b5f818361337a9190613f37565b905092915050565b5f818361338f9190613fa5565b905092915050565b505050565b505050565b5f81836133ae91906145a3565b905092915050565b5f600267ffffffffffffffff8111156133d2576133d16146da565b5b6040519080825280602002602001820160405280156134005781602001602082028036833780820191505090505b50905030815f8151811061341757613416614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134de9190614748565b816001815181106134f2576134f1614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613557307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461209d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135b8959493929190614863565b5f604051808303815f87803b1580156135cf575f80fd5b505af11580156135e1573d5f803e3d5ffd5b505050505050565b613614307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461209d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613699969594939291906148bb565b60606040518083038185885af11580156136b5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906136da919061492e565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137185780820151818401526020810190506136fd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61373d826136e1565b61374781856136eb565b93506137578185602086016136fb565b61376081613723565b840191505092915050565b5f6020820190508181035f8301526137838184613733565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137b88261378f565b9050919050565b6137c8816137ae565b81146137d2575f80fd5b50565b5f813590506137e3816137bf565b92915050565b5f819050919050565b6137fb816137e9565b8114613805575f80fd5b50565b5f81359050613816816137f2565b92915050565b5f80604083850312156138325761383161378b565b5b5f61383f858286016137d5565b925050602061385085828601613808565b9150509250929050565b5f8115159050919050565b61386e8161385a565b82525050565b5f6020820190506138875f830184613865565b92915050565b5f602082840312156138a2576138a161378b565b5b5f6138af848285016137d5565b91505092915050565b5f819050919050565b5f6138db6138d66138d18461378f565b6138b8565b61378f565b9050919050565b5f6138ec826138c1565b9050919050565b5f6138fd826138e2565b9050919050565b61390d816138f3565b82525050565b5f6020820190506139265f830184613904565b92915050565b613935816137e9565b82525050565b5f60208201905061394e5f83018461392c565b92915050565b5f805f6060848603121561396b5761396a61378b565b5b5f613978868287016137d5565b9350506020613989868287016137d5565b925050604061399a86828701613808565b9150509250925092565b6139ad816137ae565b82525050565b5f6020820190506139c65f8301846139a4565b92915050565b5f60ff82169050919050565b6139e1816139cc565b82525050565b5f6020820190506139fa5f8301846139d8565b92915050565b613a098161385a565b8114613a13575f80fd5b50565b5f81359050613a2481613a00565b92915050565b5f8060408385031215613a4057613a3f61378b565b5b5f613a4d858286016137d5565b9250506020613a5e85828601613a16565b9150509250929050565b5f805f60608486031215613a7f57613a7e61378b565b5b5f613a8c86828701613808565b9350506020613a9d86828701613808565b9250506040613aae86828701613808565b9150509250925092565b5f60208284031215613acd57613acc61378b565b5b5f613ada84828501613a16565b91505092915050565b5f60208284031215613af857613af761378b565b5b5f613b0584828501613808565b91505092915050565b5f8060408385031215613b2457613b2361378b565b5b5f613b31858286016137d5565b9250506020613b42858286016137d5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b9057607f821691505b602082108103613ba357613ba2613b4c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bdd6020836136eb565b9150613be882613ba9565b602082019050919050565b5f6020820190508181035f830152613c0a81613bd1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c6b6028836136eb565b9150613c7682613c11565b604082019050919050565b5f6020820190508181035f830152613c9881613c5f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613cd6826137e9565b9150613ce1836137e9565b9250828201905080821115613cf957613cf8613c9f565b5b92915050565b7f427579206665652063616e742062652073656e74206d6f7265207468616e20325f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d596022836136eb565b9150613d6482613cff565b604082019050919050565b5f6020820190508181035f830152613d8681613d4d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613de76039836136eb565b9150613df282613d8d565b604082019050919050565b5f6020820190508181035f830152613e1481613ddb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e756025836136eb565b9150613e8082613e1b565b604082019050919050565b5f6020820190508181035f830152613ea281613e69565b9050919050565b7f53656c6c206665652063616e742062652073656e74206d6f7265207468616e205f8201527f3230250000000000000000000000000000000000000000000000000000000000602082015250565b5f613f036023836136eb565b9150613f0e82613ea9565b604082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b5f613f41826137e9565b9150613f4c836137e9565b9250828202613f5a816137e9565b91508282048414831517613f7157613f70613c9f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613faf826137e9565b9150613fba836137e9565b925082613fca57613fc9613f78565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61402f6035836136eb565b915061403a82613fd5565b604082019050919050565b5f6020820190508181035f83015261405c81614023565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6140bd6034836136eb565b91506140c882614063565b604082019050919050565b5f6020820190508181035f8301526140ea816140b1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61414b6026836136eb565b9150614156826140f1565b604082019050919050565b5f6020820190508181035f8301526141788161413f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141d96024836136eb565b91506141e48261417f565b604082019050919050565b5f6020820190508181035f830152614206816141cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142676022836136eb565b91506142728261420d565b604082019050919050565b5f6020820190508181035f8301526142948161425b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142f56025836136eb565b91506143008261429b565b604082019050919050565b5f6020820190508181035f830152614322816142e9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143836023836136eb565b915061438e82614329565b604082019050919050565b5f6020820190508181035f8301526143b081614377565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143eb6016836136eb565b91506143f6826143b7565b602082019050919050565b5f6020820190508181035f830152614418816143df565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144796035836136eb565b91506144848261441f565b604082019050919050565b5f6020820190508181035f8301526144a68161446d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144e16013836136eb565b91506144ec826144ad565b602082019050919050565b5f6020820190508181035f83015261450e816144d5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61456f6036836136eb565b915061457a82614515565b604082019050919050565b5f6020820190508181035f83015261459c81614563565b9050919050565b5f6145ad826137e9565b91506145b8836137e9565b92508282039050818111156145d0576145cf613c9f565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146306026836136eb565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b5f81905092915050565b50565b5f61467c5f83614664565b91506146878261466e565b5f82019050919050565b5f61469b82614671565b9150819050919050565b5f6060820190506146b85f83018661392c565b6146c5602083018561392c565b6146d2604083018461392c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614742816137bf565b92915050565b5f6020828403121561475d5761475c61378b565b5b5f61476a84828501614734565b91505092915050565b5f819050919050565b5f61479661479161478c84614773565b6138b8565b6137e9565b9050919050565b6147a68161477c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147de816137ae565b82525050565b5f6147ef83836147d5565b60208301905092915050565b5f602082019050919050565b5f614811826147ac565b61481b81856147b6565b9350614826836147c6565b805f5b8381101561485657815161483d88826147e4565b9750614848836147fb565b925050600181019050614829565b5085935050505092915050565b5f60a0820190506148765f83018861392c565b614883602083018761479d565b81810360408301526148958186614807565b90506148a460608301856139a4565b6148b1608083018461392c565b9695505050505050565b5f60c0820190506148ce5f8301896139a4565b6148db602083018861392c565b6148e8604083018761479d565b6148f5606083018661479d565b61490260808301856139a4565b61490f60a083018461392c565b979650505050505050565b5f81519050614928816137f2565b92915050565b5f805f606084860312156149455761494461378b565b5b5f6149528682870161491a565b93505060206149638682870161491a565b92505060406149748682870161491a565b915050925092509256fea26469706673582212203e57c98533166b00c5aba78ba7b309b71019e656fea3b11d648e693317c9925c64736f6c63430008150033

Deployed Bytecode Sourcemap

12272:14932:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2637:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3551:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13417:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12347:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2958:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20172:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13201:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13161;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3728:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12450:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2857:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4228:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12405:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12757:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20337:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12610:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13016:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12836:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3074:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;759:103;;;;;;;;;;;;;:::i;:::-;;17043:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17774:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12542:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12909;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18145:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16879:112;;;;;;;;;;;;;:::i;:::-;;536:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12579:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13051:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18037:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2745:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19235:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12983:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13241:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13127:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4451:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3209:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19743:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13638:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12797:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19045:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18591:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12642:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17265:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12875:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3392:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12684:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12946:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;870:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13089:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12724:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19982:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2637:100;2691:13;2724:5;2717:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2637:100;:::o;3551:169::-;3634:4;3651:39;3660:12;:10;:12::i;:::-;3674:7;3683:6;3651:8;:39::i;:::-;3708:4;3701:11;;3551:169;;;;:::o;13417:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12347:51::-;;;:::o;2958:108::-;3019:7;3046:12;;3039:19;;2958:108;:::o;20172:157::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20279:9:::1;;;;;;;;;;;20251:38;;20268:9;20251:38;;;;;;;;;;;;20312:9;20300;;:21;;;;;;;;;;;;;;;;;;20172:157:::0;:::o;13201:33::-;;;;:::o;13161:::-;;;;:::o;3728:492::-;3868:4;3885:36;3895:6;3903:9;3914:6;3885:9;:36::i;:::-;3934:24;3961:11;:19;3973:6;3961:19;;;;;;;;;;;;;;;:33;3981:12;:10;:12::i;:::-;3961:33;;;;;;;;;;;;;;;;3934:60;;4033:6;4013:16;:26;;4005:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4120:57;4129:6;4137:12;:10;:12::i;:::-;4170:6;4151:16;:25;4120:8;:57::i;:::-;4208:4;4201:11;;;3728:492;;;;;:::o;12450:53::-;12496:6;12450:53;:::o;2857:93::-;2915:5;2940:2;2933:9;;2857:93;:::o;4228:215::-;4316:4;4333:80;4342:12;:10;:12::i;:::-;4356:7;4402:10;4365:11;:25;4377:12;:10;:12::i;:::-;4365:25;;;;;;;;;;;;;;;:34;4391:7;4365:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4333:8;:80::i;:::-;4431:4;4424:11;;4228:215;;;;:::o;12405:38::-;;;:::o;12757:33::-;;;;;;;;;;;;;:::o;20337:126::-;20403:4;20427:19;:28;20447:7;20427:28;;;;;;;;;;;;;;;;;;;;;;;;;20420:35;;20337:126;;;:::o;12610:23::-;;;;;;;;;;;;;:::o;13016:28::-;;;;:::o;12836:30::-;;;;;;;;;;;;;:::o;3074:127::-;3148:7;3175:9;:18;3185:7;3175:18;;;;;;;;;;;;;;;;3168:25;;3074:127;;;:::o;759:103::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;824:30:::1;851:1;824:18;:30::i;:::-;759:103::o:0;17043:152::-;17095:4;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17129:5:::1;17112:14;;:22;;;;;;;;;;;;;;;;;;17150:15;;;;;;;;;;17183:4;17176:11;;17043:152:::0;:::o;17774:167::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17929:4:::1;17887:31;:39;17919:6;17887:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17774:167:::0;;:::o;12542:30::-;;;;;;;;;;;;;:::o;12909:::-;;;;:::o;18145:438::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18349:2:::1;18337:7;18321:13;18305;:29;;;;:::i;:::-;:39;;;;:::i;:::-;18304:47;;18296:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;18419:13;18401:15;:31;;;;18461:13;18443:15;:31;;;;18497:7;18485:9;:19;;;;18566:9;;18548:15;;18530;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;18515:12;:60;;;;18145:438:::0;;;:::o;16879:112::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16950:4:::1;16934:13;;:20;;;;;;;;;;;;;;;;;;16979:4;16965:11;;:18;;;;;;;;;;;;;;;;;;16879:112::o:0;536:87::-;582:7;609:6;;;;;;;;;;;602:13;;536:87;:::o;12579:24::-;;;;;;;;;;;;;:::o;13051:31::-;;;;:::o;18037:100::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18122:7:::1;18108:11;;:21;;;;;;;;;;;;;;;;;;18037:100:::0;:::o;2745:104::-;2801:13;2834:7;2827:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:104;:::o;19235:304::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19379:13:::1;19371:21;;:4;:21;;::::0;19349:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19490:41;19519:4;19525:5;19490:28;:41::i;:::-;19235:304:::0;;:::o;12983:24::-;;;;:::o;13241:27::-;;;;:::o;13127:25::-;;;;:::o;4451:413::-;4544:4;4561:24;4588:11;:25;4600:12;:10;:12::i;:::-;4588:25;;;;;;;;;;;;;;;:34;4614:7;4588:34;;;;;;;;;;;;;;;;4561:61;;4661:15;4641:16;:35;;4633:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4754:67;4763:12;:10;:12::i;:::-;4777:7;4805:15;4786:16;:34;4754:8;:67::i;:::-;4852:4;4845:11;;;4451:413;;;;:::o;3209:175::-;3295:4;3312:42;3322:12;:10;:12::i;:::-;3336:9;3347:6;3312:9;:42::i;:::-;3372:4;3365:11;;3209:175;;;;:::o;19743:231::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19903:15:::1;;;;;;;;;;;19860:59;;19883:18;19860:59;;;;;;;;;;;;19948:18;19930:15;;:36;;;;;;;;;;;;;;;;;;19743:231:::0;:::o;13638:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12797:32::-;;;;;;;;;;;;;:::o;19045:182::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19161:8:::1;19130:19;:28;19150:7;19130:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19201:7;19185:34;;;19210:8;19185:34;;;;;;:::i;:::-;;;;;;;;19045:182:::0;;:::o;18591:446::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18795:2:::1;18783:7;18767:13;18751;:29;;;;:::i;:::-;:39;;;;:::i;:::-;18750:47;;18742:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18867:13;18848:16;:32;;;;18910:13;18891:16;:32;;;;18947:7;18934:10;:20;;;;19019:10;;19000:16;;18981;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;18965:13;:64;;;;18591:446:::0;;;:::o;12642:35::-;;;;:::o;17265:497::-;17373:4;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17452:6:::1;17447:1;17431:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17430:28;;;;:::i;:::-;17417:9;:41;;17395:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17607:4;17602:1;17586:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17585:26;;;;:::i;:::-;17572:9;:39;;17550:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17723:9;17702:18;:30;;;;17750:4;17743:11;;17265:497:::0;;;:::o;12875:27::-;;;;:::o;3392:151::-;3481:7;3508:11;:18;3520:5;3508:18;;;;;;;;;;;;;;;:27;3527:7;3508:27;;;;;;;;;;;;;;;;3501:34;;3392:151;;;;:::o;12684:33::-;;;;:::o;12946:30::-;;;;:::o;870:201::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;979:1:::1;959:22;;:8;:22;;::::0;951:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1035:28;1054:8;1035:18;:28::i;:::-;870:201:::0;:::o;13089:31::-;;;;:::o;12724:24::-;;;;:::o;19982:182::-;682:12;:10;:12::i;:::-;671:23;;:7;:5;:7::i;:::-;:23;;;663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20114:8:::1;;;;;;;;;;;20085:38;;20101:11;20085:38;;;;;;;;;;;;20145:11;20134:8;;:22;;;;;;;;;;;;;;;;;;19982:182:::0;:::o;189:98::-;242:7;269:10;262:17;;189:98;:::o;6020:380::-;6173:1;6156:19;;:5;:19;;;6148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6254:1;6235:21;;:7;:21;;;6227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:6;6308:11;:18;6320:5;6308:18;;;;;;;;;;;;;;;:27;6327:7;6308:27;;;;;;;;;;;;;;;:36;;;;6376:7;6360:32;;6369:5;6360:32;;;6385:6;6360:32;;;;;;:::i;:::-;;;;;;;;6020:380;;;:::o;20521:3924::-;20669:1;20653:18;;:4;:18;;;20645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20746:1;20732:16;;:2;:16;;;20724:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20815:1;20805:6;:11;20801:93;;20833:28;20849:4;20855:2;20859:1;20833:15;:28::i;:::-;20876:7;;20801:93;20910:14;;;;;;;;;;;20906:1694;;;20971:7;:5;:7::i;:::-;20963:15;;:4;:15;;;;:49;;;;;21005:7;:5;:7::i;:::-;20999:13;;:2;:13;;;;20963:49;:86;;;;;21047:1;21033:16;;:2;:16;;;;20963:86;:128;;;;;21084:6;21070:21;;:2;:21;;;;20963:128;:158;;;;;21113:8;;;;;;;;;;;21112:9;20963:158;20941:1648;;;21161:13;;;;;;;;;;;21156:223;;21233:19;:25;21253:4;21233:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21262:19;:23;21282:2;21262:23;;;;;;;;;;;;;;;;;;;;;;;;;21233:52;21199:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21156:223;21453:25;:31;21479:4;21453:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21510:31;:35;21542:2;21510:35;;;;;;;;;;;;;;;;;;;;;;;;;21509:36;21453:92;21427:1147;;;21632:20;;21622:6;:30;;21588:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21840:9;;21823:13;21833:2;21823:9;:13::i;:::-;21814:6;:22;;;;:::i;:::-;:35;;21780:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21427:1147;;;22018:25;:29;22044:2;22018:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22073:31;:37;22105:4;22073:37;;;;;;;;;;;;;;;;;;;;;;;;;22072:38;22018:92;21992:582;;;22197:20;;22187:6;:30;;22153:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21992:582;;;22354:31;:35;22386:2;22354:35;;;;;;;;;;;;;;;;;;;;;;;;;22349:225;;22474:9;;22457:13;22467:2;22457:9;:13::i;:::-;22448:6;:22;;;;:::i;:::-;:35;;22414:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22349:225;21992:582;21427:1147;20941:1648;20906:1694;22612:28;22643:24;22661:4;22643:9;:24::i;:::-;22612:55;;22680:12;22719:18;;22695:20;:42;;22680:57;;22768:7;:35;;;;;22792:11;;;;;;;;;;;22768:35;:61;;;;;22821:8;;;;;;;;;;;22820:9;22768:61;:110;;;;;22847:25;:31;22873:4;22847:31;;;;;;;;;;;;;;;;;;;;;;;;;22846:32;22768:110;:153;;;;;22896:19;:25;22916:4;22896:25;;;;;;;;;;;;;;;;;;;;;;;;;22895:26;22768:153;:194;;;;;22939:19;:23;22959:2;22939:23;;;;;;;;;;;;;;;;;;;;;;;;;22938:24;22768:194;22750:326;;;23000:4;22989:8;;:15;;;;;;;;;;;;;;;;;;23021:10;:8;:10::i;:::-;23059:5;23048:8;;:16;;;;;;;;;;;;;;;;;;22750:326;23088:12;23104:8;;;;;;;;;;;23103:9;23088:24;;23214:19;:25;23234:4;23214:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23243:19;:23;23263:2;23243:23;;;;;;;;;;;;;;;;;;;;;;;;;23214:52;23210:100;;;23293:5;23283:15;;23210:100;23322:12;23427:7;23423:969;;;23479:25;:29;23505:2;23479:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23528:1;23512:13;;:17;23479:50;23475:768;;;23557:34;23587:3;23557:25;23568:13;;23557:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23550:41;;23660:13;;23640:16;;23633:4;:23;;;;:::i;:::-;23632:41;;;;:::i;:::-;23610:18;;:63;;;;;;;:::i;:::-;;;;;;;;23730:13;;23716:10;;23709:4;:17;;;;:::i;:::-;23708:35;;;;:::i;:::-;23692:12;;:51;;;;;;;:::i;:::-;;;;;;;;23812:13;;23792:16;;23785:4;:23;;;;:::i;:::-;23784:41;;;;:::i;:::-;23762:18;;:63;;;;;;;:::i;:::-;;;;;;;;23475:768;;;23887:25;:31;23913:4;23887:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23937:1;23922:12;;:16;23887:51;23883:360;;;23966:33;23995:3;23966:24;23977:12;;23966:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23959:40;;24067:12;;24048:15;;24041:4;:22;;;;:::i;:::-;24040:39;;;;:::i;:::-;24018:18;;:61;;;;;;;:::i;:::-;;;;;;;;24135:12;;24122:9;;24115:4;:16;;;;:::i;:::-;24114:33;;;;:::i;:::-;24098:12;;:49;;;;;;;:::i;:::-;;;;;;;;24215:12;;24196:15;;24189:4;:22;;;;:::i;:::-;24188:39;;;;:::i;:::-;24166:18;;:61;;;;;;;:::i;:::-;;;;;;;;23883:360;23475:768;24270:1;24263:4;:8;24259:91;;;24292:42;24308:4;24322;24329;24292:15;:42::i;:::-;24259:91;24376:4;24366:14;;;;;:::i;:::-;;;23423:969;24404:33;24420:4;24426:2;24430:6;24404:15;:33::i;:::-;20634:3811;;;;20521:3924;;;;:::o;1079:191::-;1153:16;1172:6;;;;;;;;;;;1153:25;;1198:8;1189:6;;:17;;;;;;;;;;;;;;;;;;1253:8;1222:40;;1243:8;1222:40;;;;;;;;;;;;1142:128;1079:191;:::o;19547:188::-;19664:5;19630:25;:31;19656:4;19630:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19721:5;19687:40;;19715:4;19687:40;;;;;;;;;;;;19547:188;;:::o;4872:733::-;5030:1;5012:20;;:6;:20;;;5004:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5114:1;5093:23;;:9;:23;;;5085:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5169:47;5190:6;5198:9;5209:6;5169:20;:47::i;:::-;5229:21;5253:9;:17;5263:6;5253:17;;;;;;;;;;;;;;;;5229:41;;5306:6;5289:13;:23;;5281:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5427:6;5411:13;:22;5391:9;:17;5401:6;5391:17;;;;;;;;;;;;;;;:42;;;;5479:6;5455:9;:20;5465:9;5455:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5520:9;5503:35;;5512:6;5503:35;;;5531:6;5503:35;;;;;;:::i;:::-;;;;;;;;5551:46;5571:6;5579:9;5590:6;5551:19;:46::i;:::-;4993:612;4872:733;;;:::o;25572:1629::-;25611:23;25637:24;25655:4;25637:9;:24::i;:::-;25611:50;;25672:25;25768:12;;25734:18;;25700;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;25672:108;;25791:12;25839:1;25820:15;:20;:46;;;;25865:1;25844:17;:22;25820:46;25816:85;;;25883:7;;;;;25816:85;25962:23;26075:1;26042:17;26007:18;;25989:15;:36;;;;:::i;:::-;25988:71;;;;:::i;:::-;:88;;;;:::i;:::-;25962:114;;26087:26;26116:36;26136:15;26116;:19;;:36;;;;:::i;:::-;26087:65;;26165:25;26193:21;26165:49;;26227:36;26244:18;26227:16;:36::i;:::-;26276:18;26297:44;26323:17;26297:21;:25;;:44;;;;:::i;:::-;26276:65;;26354:23;26380:81;26433:17;26380:34;26395:18;;26380:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26354:107;;26472:17;26492:51;26525:17;26492:28;26507:12;;26492:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;26472:71;;26556:23;26613:9;26595:15;26582:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;26556:66;;26656:1;26635:18;:22;;;;26689:1;26668:18;:22;;;;26716:1;26701:12;:16;;;;26752:9;;;;;;;;;;;26744:23;;26775:9;26744:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26730:59;;;;;26824:1;26806:15;:19;:42;;;;;26847:1;26829:15;:19;26806:42;26802:278;;;26865:46;26878:15;26895;26865:12;:46::i;:::-;26931:137;26964:18;27001:15;27035:18;;26931:137;;;;;;;;:::i;:::-;;;;;;;;26802:278;27114:15;;;;;;;;;;;27106:29;;27157:21;27106:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27092:101;;;;;25600:1601;;;;;;;;;;25572:1629;:::o;6804:98::-;6862:7;6893:1;6889;:5;;;;:::i;:::-;6882:12;;6804:98;;;;:::o;6910:::-;6968:7;6999:1;6995;:5;;;;:::i;:::-;6988:12;;6910:98;;;;:::o;6408:125::-;;;;:::o;6541:124::-;;;;:::o;6698:98::-;6756:7;6787:1;6783;:5;;;;:::i;:::-;6776:12;;6698:98;;;;:::o;24453:589::-;24579:21;24617:1;24603:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24579:40;;24648:4;24630;24635:1;24630:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24674:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24664:4;24669:1;24664:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24709:62;24726:4;24741:15;24759:11;24709:8;:62::i;:::-;24810:15;:66;;;24891:11;24917:1;24961:4;24988;25008:15;24810:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24508:534;24453:589;:::o;25050:514::-;25198:62;25215:4;25230:15;25248:11;25198:8;:62::i;:::-;25303:15;:31;;;25342:9;25375:4;25395:11;25421:1;25464;25507:8;;;;;;;;;;;25530:15;25303:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25050:514;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:619::-;7330:6;7338;7346;7395:2;7383:9;7374:7;7370:23;7366:32;7363:119;;;7401:79;;:::i;:::-;7363:119;7521:1;7546:53;7591:7;7582:6;7571:9;7567:22;7546:53;:::i;:::-;7536:63;;7492:117;7648:2;7674:53;7719:7;7710:6;7699:9;7695:22;7674:53;:::i;:::-;7664:63;;7619:118;7776:2;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7747:118;7253:619;;;;;:::o;7878:323::-;7934:6;7983:2;7971:9;7962:7;7958:23;7954:32;7951:119;;;7989:79;;:::i;:::-;7951:119;8109:1;8134:50;8176:7;8167:6;8156:9;8152:22;8134:50;:::i;:::-;8124:60;;8080:114;7878:323;;;;:::o;8207:329::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:474::-;8610:6;8618;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8764:117;8920:2;8946:53;8991:7;8982:6;8971:9;8967:22;8946:53;:::i;:::-;8936:63;;8891:118;8542:474;;;;;:::o;9022:180::-;9070:77;9067:1;9060:88;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9208:320;9252:6;9289:1;9283:4;9279:12;9269:22;;9336:1;9330:4;9326:12;9357:18;9347:81;;9413:4;9405:6;9401:17;9391:27;;9347:81;9475:2;9467:6;9464:14;9444:18;9441:38;9438:84;;9494:18;;:::i;:::-;9438:84;9259:269;9208:320;;;:::o;9534:182::-;9674:34;9670:1;9662:6;9658:14;9651:58;9534:182;:::o;9722:366::-;9864:3;9885:67;9949:2;9944:3;9885:67;:::i;:::-;9878:74;;9961:93;10050:3;9961:93;:::i;:::-;10079:2;10074:3;10070:12;10063:19;;9722:366;;;:::o;10094:419::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10347:9;10341:4;10337:20;10333:1;10322:9;10318:17;10311:47;10375:131;10501:4;10375:131;:::i;:::-;10367:139;;10094:419;;;:::o;10519:227::-;10659:34;10655:1;10647:6;10643:14;10636:58;10728:10;10723:2;10715:6;10711:15;10704:35;10519:227;:::o;10752:366::-;10894:3;10915:67;10979:2;10974:3;10915:67;:::i;:::-;10908:74;;10991:93;11080:3;10991:93;:::i;:::-;11109:2;11104:3;11100:12;11093:19;;10752:366;;;:::o;11124:419::-;11290:4;11328:2;11317:9;11313:18;11305:26;;11377:9;11371:4;11367:20;11363:1;11352:9;11348:17;11341:47;11405:131;11531:4;11405:131;:::i;:::-;11397:139;;11124:419;;;:::o;11549:180::-;11597:77;11594:1;11587:88;11694:4;11691:1;11684:15;11718:4;11715:1;11708:15;11735:191;11775:3;11794:20;11812:1;11794:20;:::i;:::-;11789:25;;11828:20;11846:1;11828:20;:::i;:::-;11823:25;;11871:1;11868;11864:9;11857:16;;11892:3;11889:1;11886:10;11883:36;;;11899:18;;:::i;:::-;11883:36;11735:191;;;;:::o;11932:221::-;12072:34;12068:1;12060:6;12056:14;12049:58;12141:4;12136:2;12128:6;12124:15;12117:29;11932:221;:::o;12159:366::-;12301:3;12322:67;12386:2;12381:3;12322:67;:::i;:::-;12315:74;;12398:93;12487:3;12398:93;:::i;:::-;12516:2;12511:3;12507:12;12500:19;;12159:366;;;:::o;12531:419::-;12697:4;12735:2;12724:9;12720:18;12712:26;;12784:9;12778:4;12774:20;12770:1;12759:9;12755:17;12748:47;12812:131;12938:4;12812:131;:::i;:::-;12804:139;;12531:419;;;:::o;12956:244::-;13096:34;13092:1;13084:6;13080:14;13073:58;13165:27;13160:2;13152:6;13148:15;13141:52;12956:244;:::o;13206:366::-;13348:3;13369:67;13433:2;13428:3;13369:67;:::i;:::-;13362:74;;13445:93;13534:3;13445:93;:::i;:::-;13563:2;13558:3;13554:12;13547:19;;13206:366;;;:::o;13578:419::-;13744:4;13782:2;13771:9;13767:18;13759:26;;13831:9;13825:4;13821:20;13817:1;13806:9;13802:17;13795:47;13859:131;13985:4;13859:131;:::i;:::-;13851:139;;13578:419;;;:::o;14003:224::-;14143:34;14139:1;14131:6;14127:14;14120:58;14212:7;14207:2;14199:6;14195:15;14188:32;14003:224;:::o;14233:366::-;14375:3;14396:67;14460:2;14455:3;14396:67;:::i;:::-;14389:74;;14472:93;14561:3;14472:93;:::i;:::-;14590:2;14585:3;14581:12;14574:19;;14233:366;;;:::o;14605:419::-;14771:4;14809:2;14798:9;14794:18;14786:26;;14858:9;14852:4;14848:20;14844:1;14833:9;14829:17;14822:47;14886:131;15012:4;14886:131;:::i;:::-;14878:139;;14605:419;;;:::o;15030:222::-;15170:34;15166:1;15158:6;15154:14;15147:58;15239:5;15234:2;15226:6;15222:15;15215:30;15030:222;:::o;15258:366::-;15400:3;15421:67;15485:2;15480:3;15421:67;:::i;:::-;15414:74;;15497:93;15586:3;15497:93;:::i;:::-;15615:2;15610:3;15606:12;15599:19;;15258:366;;;:::o;15630:419::-;15796:4;15834:2;15823:9;15819:18;15811:26;;15883:9;15877:4;15873:20;15869:1;15858:9;15854:17;15847:47;15911:131;16037:4;15911:131;:::i;:::-;15903:139;;15630:419;;;:::o;16055:410::-;16095:7;16118:20;16136:1;16118:20;:::i;:::-;16113:25;;16152:20;16170:1;16152:20;:::i;:::-;16147:25;;16207:1;16204;16200:9;16229:30;16247:11;16229:30;:::i;:::-;16218:41;;16408:1;16399:7;16395:15;16392:1;16389:22;16369:1;16362:9;16342:83;16319:139;;16438:18;;:::i;:::-;16319:139;16103:362;16055:410;;;;:::o;16471:180::-;16519:77;16516:1;16509:88;16616:4;16613:1;16606:15;16640:4;16637:1;16630:15;16657:185;16697:1;16714:20;16732:1;16714:20;:::i;:::-;16709:25;;16748:20;16766:1;16748:20;:::i;:::-;16743:25;;16787:1;16777:35;;16792:18;;:::i;:::-;16777:35;16834:1;16831;16827:9;16822:14;;16657:185;;;;:::o;16848:240::-;16988:34;16984:1;16976:6;16972:14;16965:58;17057:23;17052:2;17044:6;17040:15;17033:48;16848:240;:::o;17094:366::-;17236:3;17257:67;17321:2;17316:3;17257:67;:::i;:::-;17250:74;;17333:93;17422:3;17333:93;:::i;:::-;17451:2;17446:3;17442:12;17435:19;;17094:366;;;:::o;17466:419::-;17632:4;17670:2;17659:9;17655:18;17647:26;;17719:9;17713:4;17709:20;17705:1;17694:9;17690:17;17683:47;17747:131;17873:4;17747:131;:::i;:::-;17739:139;;17466:419;;;:::o;17891:239::-;18031:34;18027:1;18019:6;18015:14;18008:58;18100:22;18095:2;18087:6;18083:15;18076:47;17891:239;:::o;18136:366::-;18278:3;18299:67;18363:2;18358:3;18299:67;:::i;:::-;18292:74;;18375:93;18464:3;18375:93;:::i;:::-;18493:2;18488:3;18484:12;18477:19;;18136:366;;;:::o;18508:419::-;18674:4;18712:2;18701:9;18697:18;18689:26;;18761:9;18755:4;18751:20;18747:1;18736:9;18732:17;18725:47;18789:131;18915:4;18789:131;:::i;:::-;18781:139;;18508:419;;;:::o;18933:225::-;19073:34;19069:1;19061:6;19057:14;19050:58;19142:8;19137:2;19129:6;19125:15;19118:33;18933:225;:::o;19164:366::-;19306:3;19327:67;19391:2;19386:3;19327:67;:::i;:::-;19320:74;;19403:93;19492:3;19403:93;:::i;:::-;19521:2;19516:3;19512:12;19505:19;;19164:366;;;:::o;19536:419::-;19702:4;19740:2;19729:9;19725:18;19717:26;;19789:9;19783:4;19779:20;19775:1;19764:9;19760:17;19753:47;19817:131;19943:4;19817:131;:::i;:::-;19809:139;;19536:419;;;:::o;19961:223::-;20101:34;20097:1;20089:6;20085:14;20078:58;20170:6;20165:2;20157:6;20153:15;20146:31;19961:223;:::o;20190:366::-;20332:3;20353:67;20417:2;20412:3;20353:67;:::i;:::-;20346:74;;20429:93;20518:3;20429:93;:::i;:::-;20547:2;20542:3;20538:12;20531:19;;20190:366;;;:::o;20562:419::-;20728:4;20766:2;20755:9;20751:18;20743:26;;20815:9;20809:4;20805:20;20801:1;20790:9;20786:17;20779:47;20843:131;20969:4;20843:131;:::i;:::-;20835:139;;20562:419;;;:::o;20987:221::-;21127:34;21123:1;21115:6;21111:14;21104:58;21196:4;21191:2;21183:6;21179:15;21172:29;20987:221;:::o;21214:366::-;21356:3;21377:67;21441:2;21436:3;21377:67;:::i;:::-;21370:74;;21453:93;21542:3;21453:93;:::i;:::-;21571:2;21566:3;21562:12;21555:19;;21214:366;;;:::o;21586:419::-;21752:4;21790:2;21779:9;21775:18;21767:26;;21839:9;21833:4;21829:20;21825:1;21814:9;21810:17;21803:47;21867:131;21993:4;21867:131;:::i;:::-;21859:139;;21586:419;;;:::o;22011:224::-;22151:34;22147:1;22139:6;22135:14;22128:58;22220:7;22215:2;22207:6;22203:15;22196:32;22011:224;:::o;22241:366::-;22383:3;22404:67;22468:2;22463:3;22404:67;:::i;:::-;22397:74;;22480:93;22569:3;22480:93;:::i;:::-;22598:2;22593:3;22589:12;22582:19;;22241:366;;;:::o;22613:419::-;22779:4;22817:2;22806:9;22802:18;22794:26;;22866:9;22860:4;22856:20;22852:1;22841:9;22837:17;22830:47;22894:131;23020:4;22894:131;:::i;:::-;22886:139;;22613:419;;;:::o;23038:222::-;23178:34;23174:1;23166:6;23162:14;23155:58;23247:5;23242:2;23234:6;23230:15;23223:30;23038:222;:::o;23266:366::-;23408:3;23429:67;23493:2;23488:3;23429:67;:::i;:::-;23422:74;;23505:93;23594:3;23505:93;:::i;:::-;23623:2;23618:3;23614:12;23607:19;;23266:366;;;:::o;23638:419::-;23804:4;23842:2;23831:9;23827:18;23819:26;;23891:9;23885:4;23881:20;23877:1;23866:9;23862:17;23855:47;23919:131;24045:4;23919:131;:::i;:::-;23911:139;;23638:419;;;:::o;24063:172::-;24203:24;24199:1;24191:6;24187:14;24180:48;24063:172;:::o;24241:366::-;24383:3;24404:67;24468:2;24463:3;24404:67;:::i;:::-;24397:74;;24480:93;24569:3;24480:93;:::i;:::-;24598:2;24593:3;24589:12;24582:19;;24241:366;;;:::o;24613:419::-;24779:4;24817:2;24806:9;24802:18;24794:26;;24866:9;24860:4;24856:20;24852:1;24841:9;24837:17;24830:47;24894:131;25020:4;24894:131;:::i;:::-;24886:139;;24613:419;;;:::o;25038:240::-;25178:34;25174:1;25166:6;25162:14;25155:58;25247:23;25242:2;25234:6;25230:15;25223:48;25038:240;:::o;25284:366::-;25426:3;25447:67;25511:2;25506:3;25447:67;:::i;:::-;25440:74;;25523:93;25612:3;25523:93;:::i;:::-;25641:2;25636:3;25632:12;25625:19;;25284:366;;;:::o;25656:419::-;25822:4;25860:2;25849:9;25845:18;25837:26;;25909:9;25903:4;25899:20;25895:1;25884:9;25880:17;25873:47;25937:131;26063:4;25937:131;:::i;:::-;25929:139;;25656:419;;;:::o;26081:169::-;26221:21;26217:1;26209:6;26205:14;26198:45;26081:169;:::o;26256:366::-;26398:3;26419:67;26483:2;26478:3;26419:67;:::i;:::-;26412:74;;26495:93;26584:3;26495:93;:::i;:::-;26613:2;26608:3;26604:12;26597:19;;26256:366;;;:::o;26628:419::-;26794:4;26832:2;26821:9;26817:18;26809:26;;26881:9;26875:4;26871:20;26867:1;26856:9;26852:17;26845:47;26909:131;27035:4;26909:131;:::i;:::-;26901:139;;26628:419;;;:::o;27053:241::-;27193:34;27189:1;27181:6;27177:14;27170:58;27262:24;27257:2;27249:6;27245:15;27238:49;27053:241;:::o;27300:366::-;27442:3;27463:67;27527:2;27522:3;27463:67;:::i;:::-;27456:74;;27539:93;27628:3;27539:93;:::i;:::-;27657:2;27652:3;27648:12;27641:19;;27300:366;;;:::o;27672:419::-;27838:4;27876:2;27865:9;27861:18;27853:26;;27925:9;27919:4;27915:20;27911:1;27900:9;27896:17;27889:47;27953:131;28079:4;27953:131;:::i;:::-;27945:139;;27672:419;;;:::o;28097:194::-;28137:4;28157:20;28175:1;28157:20;:::i;:::-;28152:25;;28191:20;28209:1;28191:20;:::i;:::-;28186:25;;28235:1;28232;28228:9;28220:17;;28259:1;28253:4;28250:11;28247:37;;;28264:18;;:::i;:::-;28247:37;28097:194;;;;:::o;28297:225::-;28437:34;28433:1;28425:6;28421:14;28414:58;28506:8;28501:2;28493:6;28489:15;28482:33;28297:225;:::o;28528:366::-;28670:3;28691:67;28755:2;28750:3;28691:67;:::i;:::-;28684:74;;28767:93;28856:3;28767:93;:::i;:::-;28885:2;28880:3;28876:12;28869:19;;28528:366;;;:::o;28900:419::-;29066:4;29104:2;29093:9;29089:18;29081:26;;29153:9;29147:4;29143:20;29139:1;29128:9;29124:17;29117:47;29181:131;29307:4;29181:131;:::i;:::-;29173:139;;28900:419;;;:::o;29325:147::-;29426:11;29463:3;29448:18;;29325:147;;;;:::o;29478:114::-;;:::o;29598:398::-;29757:3;29778:83;29859:1;29854:3;29778:83;:::i;:::-;29771:90;;29870:93;29959:3;29870:93;:::i;:::-;29988:1;29983:3;29979:11;29972:18;;29598:398;;;:::o;30002:379::-;30186:3;30208:147;30351:3;30208:147;:::i;:::-;30201:154;;30372:3;30365:10;;30002:379;;;:::o;30387:442::-;30536:4;30574:2;30563:9;30559:18;30551:26;;30587:71;30655:1;30644:9;30640:17;30631:6;30587:71;:::i;:::-;30668:72;30736:2;30725:9;30721:18;30712:6;30668:72;:::i;:::-;30750;30818:2;30807:9;30803:18;30794:6;30750:72;:::i;:::-;30387:442;;;;;;:::o;30835:180::-;30883:77;30880:1;30873:88;30980:4;30977:1;30970:15;31004:4;31001:1;30994:15;31021:180;31069:77;31066:1;31059:88;31166:4;31163:1;31156:15;31190:4;31187:1;31180:15;31207:143;31264:5;31295:6;31289:13;31280:22;;31311:33;31338:5;31311:33;:::i;:::-;31207:143;;;;:::o;31356:351::-;31426:6;31475:2;31463:9;31454:7;31450:23;31446:32;31443:119;;;31481:79;;:::i;:::-;31443:119;31601:1;31626:64;31682:7;31673:6;31662:9;31658:22;31626:64;:::i;:::-;31616:74;;31572:128;31356:351;;;;:::o;31713:85::-;31758:7;31787:5;31776:16;;31713:85;;;:::o;31804:158::-;31862:9;31895:61;31913:42;31922:32;31948:5;31922:32;:::i;:::-;31913:42;:::i;:::-;31895:61;:::i;:::-;31882:74;;31804:158;;;:::o;31968:147::-;32063:45;32102:5;32063:45;:::i;:::-;32058:3;32051:58;31968:147;;:::o;32121:114::-;32188:6;32222:5;32216:12;32206:22;;32121:114;;;:::o;32241:184::-;32340:11;32374:6;32369:3;32362:19;32414:4;32409:3;32405:14;32390:29;;32241:184;;;;:::o;32431:132::-;32498:4;32521:3;32513:11;;32551:4;32546:3;32542:14;32534:22;;32431:132;;;:::o;32569:108::-;32646:24;32664:5;32646:24;:::i;:::-;32641:3;32634:37;32569:108;;:::o;32683:179::-;32752:10;32773:46;32815:3;32807:6;32773:46;:::i;:::-;32851:4;32846:3;32842:14;32828:28;;32683:179;;;;:::o;32868:113::-;32938:4;32970;32965:3;32961:14;32953:22;;32868:113;;;:::o;33017:732::-;33136:3;33165:54;33213:5;33165:54;:::i;:::-;33235:86;33314:6;33309:3;33235:86;:::i;:::-;33228:93;;33345:56;33395:5;33345:56;:::i;:::-;33424:7;33455:1;33440:284;33465:6;33462:1;33459:13;33440:284;;;33541:6;33535:13;33568:63;33627:3;33612:13;33568:63;:::i;:::-;33561:70;;33654:60;33707:6;33654:60;:::i;:::-;33644:70;;33500:224;33487:1;33484;33480:9;33475:14;;33440:284;;;33444:14;33740:3;33733:10;;33141:608;;;33017:732;;;;:::o;33755:831::-;34018:4;34056:3;34045:9;34041:19;34033:27;;34070:71;34138:1;34127:9;34123:17;34114:6;34070:71;:::i;:::-;34151:80;34227:2;34216:9;34212:18;34203:6;34151:80;:::i;:::-;34278:9;34272:4;34268:20;34263:2;34252:9;34248:18;34241:48;34306:108;34409:4;34400:6;34306:108;:::i;:::-;34298:116;;34424:72;34492:2;34481:9;34477:18;34468:6;34424:72;:::i;:::-;34506:73;34574:3;34563:9;34559:19;34550:6;34506:73;:::i;:::-;33755:831;;;;;;;;:::o;34592:807::-;34841:4;34879:3;34868:9;34864:19;34856:27;;34893:71;34961:1;34950:9;34946:17;34937:6;34893:71;:::i;:::-;34974:72;35042:2;35031:9;35027:18;35018:6;34974:72;:::i;:::-;35056:80;35132:2;35121:9;35117:18;35108:6;35056:80;:::i;:::-;35146;35222:2;35211:9;35207:18;35198:6;35146:80;:::i;:::-;35236:73;35304:3;35293:9;35289:19;35280:6;35236:73;:::i;:::-;35319;35387:3;35376:9;35372:19;35363:6;35319:73;:::i;:::-;34592:807;;;;;;;;;:::o;35405:143::-;35462:5;35493:6;35487:13;35478:22;;35509:33;35536:5;35509:33;:::i;:::-;35405:143;;;;:::o;35554:663::-;35642:6;35650;35658;35707:2;35695:9;35686:7;35682:23;35678:32;35675:119;;;35713:79;;:::i;:::-;35675:119;35833:1;35858:64;35914:7;35905:6;35894:9;35890:22;35858:64;:::i;:::-;35848:74;;35804:128;35971:2;35997:64;36053:7;36044:6;36033:9;36029:22;35997:64;:::i;:::-;35987:74;;35942:129;36110:2;36136:64;36192:7;36183:6;36172:9;36168:22;36136:64;:::i;:::-;36126:74;;36081:129;35554:663;;;;;:::o

Swarm Source

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