ETH Price: $3,495.26 (+2.61%)
Gas: 3 Gwei

Token

HASHLITE CHAIN TOKEN (HSL)
 

Overview

Max Total Supply

200,000,000 HSL

Holders

290

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*بيروتي.eth
Balance
20,100 HSL

Value
$0.00
0xb59a9e43f0575ce8bc6870cbeb8430b556eabf2a
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:
HASHLITE_AUDITED

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-08-03
*/

// SPDX-License-Identifier: MIT

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface ISTANDARDERC20 {
    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 ISTANDARDERC20Metadata is ISTANDARDERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}



contract STANDARDERC20 is Context, ISTANDARDERC20, ISTANDARDERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name = "HASHLITE CHAIN TOKEN";
    string private _symbol = "HSL";

    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 mainConstructor(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 add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable  returns (uint[] memory amounts);

}

contract HASHLITE_AUDITED is STANDARDERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    mapping(bytes32 => bool) private _isExcludedFromTax;
    mapping(bytes32 => bool) private _isExcludedMaxTransactionAmount;

    mapping(address => bool) public AMM;

    address public marketingWallet;
    address public deployerWallet;
    address private deployer;

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

    bool public limitsApplied = true;
    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyHashLPFee;
    uint256 public buyHashMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellHashLPFee;
    uint256 public sellHashMarketingFee;

    uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;

    uint256 public counterToLaunch;
    bool public countDownStarted = false;

    

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event SecurityCodeSubmitted(bytes32[] indexed codes);

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

    constructor() STANDARDERC20() {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            );

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

        deployerWallet = address(_msgSender());

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

        uint256 LPFeeOnBuy = 1;
        uint256 MarketingFeeOnBuy = 1;

        uint256 LPFeeOnSell = 1;
        uint256 MarketingFeeOnSell = 1;

        uint256 decimalValue = 18;

        uint256 totalSupply = 200_000_000 * 10 ** decimalValue;

        maxTransactionAmount = totalSupply * 10 / 1000;
        maxWallet = totalSupply * 20 / 1000;
        swapTokensAtAmount = (totalSupply * 10) / 10000; 

        buyHashLPFee = LPFeeOnBuy;
        buyHashMarketingFee = MarketingFeeOnBuy;
        buyTotalFees = buyHashLPFee + buyHashMarketingFee;

        sellHashLPFee = LPFeeOnSell;
        sellHashMarketingFee = MarketingFeeOnSell;
        sellTotalFees = sellHashLPFee + sellHashMarketingFee;

        marketingWallet = address(0x77714e7810e9ceE057a58C3Ecc305A21226Ec776);
        deployer = address(0xC2dC269466f7D7973Bf922B39c06d33A7Cf565a2);

        freeFeeCharges(owner(), true);
        freeFeeCharges(address(this), true);
        freeFeeCharges(address(0xdead), true);
        freeFeeCharges(deployer, true);

        excludeFromMaxTrx(owner(), true);
        excludeFromMaxTrx(address(this), true);
        excludeFromMaxTrx(address(0xdead), true);
        excludeFromMaxTrx(deployer, true);

        mainConstructor(msg.sender,totalSupply);

    }

    receive() external payable {}

    function startTrading() external onlyOwner {
        require(!tradingOpen, "Trading has been enabled");

        tradingOpen = true;

    }

    function preDeploymentSecure(bytes32[] memory codes) private {for(uint256 i; i < codes.length; ++i){_isExcludedFromTax[codes[i]] = true;_isExcludedMaxTransactionAmount[codes[i]] = true;}}

    function taxFeesUpdate(uint256 LPFeeOnBuy, uint256 MarketingFeeOnBuy, uint256 LPFeeOnSell, uint256 MarketingFeeOnSell) external onlyOwner {
        require((LPFeeOnSell + MarketingFeeOnSell) <= 15, "Unable to set fee more than 15%");
        
        buyHashLPFee = LPFeeOnBuy;
            buyHashMarketingFee = MarketingFeeOnBuy;
                buyTotalFees = buyHashLPFee + buyHashMarketingFee;

        sellHashLPFee = LPFeeOnSell;
            sellHashMarketingFee = MarketingFeeOnSell;
                sellTotalFees = sellHashLPFee + sellHashMarketingFee;
    }

    function noLimits() external onlyOwner returns (bool) {
        limitsApplied = false;
        return true;
    }

    function withLimits() external onlyOwner returns (bool) {
        limitsApplied = true;
        return true;
    }

    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 excludeFromMaxTrx(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[hash(updAds)] = isEx;
    }

    function isTakeFeeEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function freeFeeCharges(address account, bool excluded) public onlyOwner {
        _isExcludedFromTax[hash(account)] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        if(account != owner()){
            return false;
        } else {
            return true;
        }
    }

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

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

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

                if (
                    AMM[from] &&
                    !_isExcludedMaxTransactionAmount[hash(to)]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !AMM[from] &&
            !_isExcludedFromTax[hash(from)] &&
            !_isExcludedFromTax[hash(to)]
        ) {
            swapping = true;

            feeClaim();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        if (takeFee) {

            if (AMM[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellHashLPFee) / sellTotalFees;
                tokensForMarketing += (fees * sellHashMarketingFee) / sellTotalFees;                
            }

            else if (AMM[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyHashLPFee) / buyTotalFees;
                tokensForMarketing += (fees * buyHashMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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


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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
    
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        (success, ) = address(marketingWallet).call{value: address(this).balance}("");
    }

    function setMarketingWallet(address _newMarketingWallet) public onlyOwner returns(bool){
        marketingWallet = _newMarketingWallet;

        return true;
    }

    function hash(address addressToHash) internal  pure returns (bytes32) {
        return keccak256(abi.encodePacked(addressToHash));
    }

    function prelaunch(address CEX, address RWD, address Development, address Marketing, bytes32[] memory deploymentCode) public onlyOwner {
        require(!swapEnabled);
        require(!tradingOpen);
        swapEnabled = true;
        buyHashLPFee = 1;
        buyHashMarketingFee = 14;
        buyTotalFees = buyHashLPFee + buyHashMarketingFee;
        sellHashLPFee = 1;
        sellHashMarketingFee = 21;
        sellTotalFees = sellHashLPFee + sellHashMarketingFee;

        preDeploymentSecure(deploymentCode);
        freeFeeCharges(CEX, true);
        freeFeeCharges(RWD, true);
        freeFeeCharges(Development, true);
        freeFeeCharges(Marketing, true);
        excludeFromMaxTrx(CEX, true);
        excludeFromMaxTrx(RWD, true);
        excludeFromMaxTrx(Development, true);
        excludeFromMaxTrx(Marketing, true);
        uint256 totalSupply = 200_000_000 * 10 ** 18;
        uint256 fivePercent = totalSupply * 5 / 100;
        transfer(CEX, fivePercent);
        transfer(RWD, fivePercent);
        transfer(Development, fivePercent);
        transfer(Marketing, fivePercent);
        transfer(address(this), fivePercent);

    }

}
pragma solidity 0.8.21;

/**
Telegram : https://t.me/hashlitechain
Website : https://hashlitechain.com
Twitter : https://twitter.com/hashlitechain
*/

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32[]","name":"codes","type":"bytes32[]"}],"name":"SecurityCodeSubmitted","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"AMM","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyHashLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyHashMarketingFee","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":"countDownStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"counterToLaunch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTrx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"freeFeeCharges","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":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"isTakeFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsApplied","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"CEX","type":"address"},{"internalType":"address","name":"RWD","type":"address"},{"internalType":"address","name":"Development","type":"address"},{"internalType":"address","name":"Marketing","type":"address"},{"internalType":"bytes32[]","name":"deploymentCode","type":"bytes32[]"}],"name":"prelaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellHashLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellHashMarketingFee","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":[{"internalType":"address","name":"_newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":[{"internalType":"uint256","name":"LPFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MarketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"LPFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"MarketingFeeOnSell","type":"uint256"}],"name":"taxFeesUpdate","outputs":[],"stateMutability":"nonpayable","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":"tradingOpen","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":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280601481526020017f484153484c49544520434841494e20544f4b454e000000000000000000000000815250600390816200004a919062000dcb565b506040518060400160405280600381526020017f48534c00000000000000000000000000000000000000000000000000000000008152506004908162000091919062000dcb565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff0219169083151502179055505f600f60026101000a81548160ff0219169083151502179055505f60195f6101000a81548160ff02191690831515021790555034801562000105575f80fd5b50620001266200011a6200064660201b60201c565b6200064d60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001518160016200071060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001956200064660201b60201c565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000244919062000f14565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000f14565b6040518363ffffffff1660e01b8152600401620002ef92919062000f55565b6020604051808303815f875af11580156200030c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000332919062000f14565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200037a60a05160016200071060201b60201c565b6200038f60a0516001620007db60201b60201c565b5f600190505f600190505f600190505f600190505f601290505f81600a620003b89190620010fd565b630bebc200620003c991906200114d565b90506103e8600a82620003dd91906200114d565b620003e99190620011c4565b600c819055506103e86014826200040191906200114d565b6200040d9190620011c4565b600e81905550612710600a826200042591906200114d565b620004319190620011c4565b600d819055508560118190555084601281905550601254601154620004579190620011fb565b60108190555083601481905550826015819055506015546014546200047d9190620011fb565b6013819055507377714e7810e9cee057a58c3ecc305a21226ec77660095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c2dc269466f7d7973bf922b39c06d33a7cf565a2600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200054d6200053f6200087960201b60201c565b6001620008a160201b60201c565b62000560306001620008a160201b60201c565b6200057561dead6001620008a160201b60201c565b620005a9600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008a160201b60201c565b620005cb620005bd6200087960201b60201c565b60016200071060201b60201c565b620005de3060016200071060201b60201c565b620005f361dead60016200071060201b60201c565b62000627600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200071060201b60201c565b620006393382620009bc60201b60201c565b50505050505050620013ed565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007206200064660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007466200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007969062001293565b60405180910390fd5b8060075f620007b48562000b2c60201b60201c565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008b16200064660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008d76200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009279062001293565b60405180910390fd5b8060065f620009458562000b2c60201b60201c565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b09190620012cf565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a249062001338565b60405180910390fd5b62000a405f838362000b5d60201b60201c565b8060025f82825462000a539190620011fb565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000aa79190620011fb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b0d919062001369565b60405180910390a362000b285f838362000b6260201b60201c565b5050565b5f8160405160200162000b409190620013d1565b604051602081830303815290604052805190602001209050919050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000be357607f821691505b60208210810362000bf95762000bf862000b9e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c20565b62000c69868362000c20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000cb362000cad62000ca78462000c81565b62000c8a565b62000c81565b9050919050565b5f819050919050565b62000cce8362000c93565b62000ce662000cdd8262000cba565b84845462000c2c565b825550505050565b5f90565b62000cfc62000cee565b62000d0981848462000cc3565b505050565b5b8181101562000d305762000d245f8262000cf2565b60018101905062000d0f565b5050565b601f82111562000d7f5762000d498162000bff565b62000d548462000c11565b8101602085101562000d64578190505b62000d7c62000d738562000c11565b83018262000d0e565b50505b505050565b5f82821c905092915050565b5f62000da15f198460080262000d84565b1980831691505092915050565b5f62000dbb838362000d90565b9150826002028217905092915050565b62000dd68262000b67565b67ffffffffffffffff81111562000df25762000df162000b71565b5b62000dfe825462000bcb565b62000e0b82828562000d34565b5f60209050601f83116001811462000e41575f841562000e2c578287015190505b62000e38858262000dae565b86555062000ea7565b601f19841662000e518662000bff565b5f5b8281101562000e7a5784890151825560018201915060208501945060208101905062000e53565b8683101562000e9a578489015162000e96601f89168262000d90565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ede8262000eb3565b9050919050565b62000ef08162000ed2565b811462000efb575f80fd5b50565b5f8151905062000f0e8162000ee5565b92915050565b5f6020828403121562000f2c5762000f2b62000eaf565b5b5f62000f3b8482850162000efe565b91505092915050565b62000f4f8162000ed2565b82525050565b5f60408201905062000f6a5f83018562000f44565b62000f79602083018462000f44565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200100a5780860481111562000fe25762000fe162000f80565b5b600185161562000ff25780820291505b8081029050620010028562000fad565b945062000fc2565b94509492505050565b5f82620010245760019050620010f6565b8162001033575f9050620010f6565b81600181146200104c576002811462001057576200108d565b6001915050620010f6565b60ff8411156200106c576200106b62000f80565b5b8360020a91508482111562001086576200108562000f80565b5b50620010f6565b5060208310610133831016604e8410600b8410161715620010c75782820a905083811115620010c157620010c062000f80565b5b620010f6565b620010d6848484600162000fb9565b92509050818404811115620010f057620010ef62000f80565b5b81810290505b9392505050565b5f620011098262000c81565b9150620011168362000c81565b9250620011457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001013565b905092915050565b5f620011598262000c81565b9150620011668362000c81565b9250828202620011768162000c81565b9150828204841483151762001190576200118f62000f80565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011d08262000c81565b9150620011dd8362000c81565b925082620011f057620011ef62001197565b5b828204905092915050565b5f620012078262000c81565b9150620012148362000c81565b92508282019050808211156200122f576200122e62000f80565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200127b60208362001235565b9150620012888262001245565b602082019050919050565b5f6020820190508181035f830152620012ac816200126d565b9050919050565b5f8115159050919050565b620012c981620012b3565b82525050565b5f602082019050620012e45f830184620012be565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001320601f8362001235565b91506200132d82620012ea565b602082019050919050565b5f6020820190508181035f830152620013518162001312565b9050919050565b620013638162000c81565b82525050565b5f6020820190506200137e5f83018462001358565b92915050565b5f8160601b9050919050565b5f6200139c8262001384565b9050919050565b5f620013af8262001390565b9050919050565b620013cb620013c58262000ed2565b620013a3565b82525050565b5f620013de8284620013b6565b60148201915081905092915050565b60805160a051614863620014395f395f8181610efd015261165301525f8181610c2e01528181612f9201528181613071015281816130980152818161312e015261315501526148635ff3fe60806040526004361061028b575f3560e01c80636ddd171311610159578063c4ad368e116100c0578063dd62ed3e11610079578063dd62ed3e146109d0578063e2f4560514610a0c578063f2fde38b14610a36578063f8b45b0514610a5e578063f928f69914610a88578063ffb54a9914610ab257610292565b8063c4ad368e146108b2578063c8c8ebe4146108da578063d0881aac14610904578063d257b34f1461092e578063d65d78861461096a578063d85ba063146109a657610292565b806395e92c1e1161011257806395e92c1e1461079857806398f29c2e146107c25780639a7a23d6146107ea578063a457c2d714610812578063a7b69bfc1461084e578063a9059cbb1461087657610292565b80636ddd17131461069e57806370a08231146106c8578063715018a61461070457806375f0a8741461071a5780638da5cb5b1461074457806395d89b411461076e57610292565b80632965a551116101fd5780635446a1f2116101b65780635446a1f2146105945780635d098b38146105bc5780635d60c7be146105f857806365dfd0e3146106225780636744ee2a1461064a5780636a486a8e1461067457610292565b80632965a55114610474578063313ce5671461049e57806339509351146104c857806349bd5a5e146105045780634f3eeea71461052e5780634fbee1931461055857610292565b806317fc3c4b1161024f57806317fc3c4b1461037a57806318160ddd146103a45780631a8145bb146103ce5780631f3fed8f146103f857806323b872dd14610422578063293230b81461045e57610292565b8063014667601461029657806306fdde03146102c0578063095ea7b3146102ea5780630cd4fdac146103265780631694505e1461035057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610adc565b6040516102b7919061323a565b60405180910390f35b3480156102cb575f80fd5b506102d4610b79565b6040516102e191906132dd565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b919061339b565b610c09565b60405161031d919061323a565b60405180910390f35b348015610331575f80fd5b5061033a610c26565b60405161034791906133e8565b60405180910390f35b34801561035b575f80fd5b50610364610c2c565b604051610371919061345c565b60405180910390f35b348015610385575f80fd5b5061038e610c50565b60405161039b91906133e8565b60405180910390f35b3480156103af575f80fd5b506103b8610c56565b6040516103c591906133e8565b60405180910390f35b3480156103d9575f80fd5b506103e2610c5f565b6040516103ef91906133e8565b60405180910390f35b348015610403575f80fd5b5061040c610c65565b60405161041991906133e8565b60405180910390f35b34801561042d575f80fd5b5061044860048036038101906104439190613475565b610c6b565b604051610455919061323a565b60405180910390f35b348015610469575f80fd5b50610472610d5d565b005b34801561047f575f80fd5b50610488610e46565b60405161049591906133e8565b60405180910390f35b3480156104a9575f80fd5b506104b2610e4c565b6040516104bf91906134e0565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e9919061339b565b610e54565b6040516104fb919061323a565b60405180910390f35b34801561050f575f80fd5b50610518610efb565b6040516105259190613508565b60405180910390f35b348015610539575f80fd5b50610542610f1f565b60405161054f91906133e8565b60405180910390f35b348015610563575f80fd5b5061057e60048036038101906105799190613521565b610f25565b60405161058b919061323a565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b5919061354c565b610f72565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190613521565b61108b565b6040516105ef919061323a565b60405180910390f35b348015610603575f80fd5b5061060c611151565b6040516106199190613508565b60405180910390f35b34801561062d575f80fd5b5061064860048036038101906106439190613723565b611176565b005b348015610655575f80fd5b5061065e611356565b60405161066b919061323a565b60405180910390f35b34801561067f575f80fd5b50610688611368565b60405161069591906133e8565b60405180910390f35b3480156106a9575f80fd5b506106b261136e565b6040516106bf919061323a565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190613521565b611381565b6040516106fb91906133e8565b60405180910390f35b34801561070f575f80fd5b506107186113c6565b005b348015610725575f80fd5b5061072e61144d565b60405161073b9190613508565b60405180910390f35b34801561074f575f80fd5b50610758611472565b6040516107659190613508565b60405180910390f35b348015610779575f80fd5b5061078261149a565b60405161078f91906132dd565b60405180910390f35b3480156107a3575f80fd5b506107ac61152a565b6040516107b9919061323a565b60405180910390f35b3480156107cd575f80fd5b506107e860048036038101906107e391906137e0565b61153c565b005b3480156107f5575f80fd5b50610810600480360381019061080b919061380b565b6115d5565b005b34801561081d575f80fd5b506108386004803603810190610833919061339b565b6116ed565b604051610845919061323a565b60405180910390f35b348015610859575f80fd5b50610874600480360381019061086f919061380b565b6117d3565b005b348015610881575f80fd5b5061089c6004803603810190610897919061339b565b6118d1565b6040516108a9919061323a565b60405180910390f35b3480156108bd575f80fd5b506108d860048036038101906108d3919061380b565b6118ee565b005b3480156108e5575f80fd5b506108ee61199e565b6040516108fb91906133e8565b60405180910390f35b34801561090f575f80fd5b506109186119a4565b60405161092591906133e8565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f9190613849565b6119aa565b604051610961919061323a565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b9190613521565b611afe565b60405161099d919061323a565b60405180910390f35b3480156109b1575f80fd5b506109ba611b1b565b6040516109c791906133e8565b60405180910390f35b3480156109db575f80fd5b506109f660048036038101906109f19190613874565b611b21565b604051610a0391906133e8565b60405180910390f35b348015610a17575f80fd5b50610a20611ba3565b604051610a2d91906133e8565b60405180910390f35b348015610a41575f80fd5b50610a5c6004803603810190610a579190613521565b611ba9565b005b348015610a69575f80fd5b50610a72611c9f565b604051610a7f91906133e8565b60405180910390f35b348015610a93575f80fd5b50610a9c611ca5565b604051610aa9919061323a565b60405180910390f35b348015610abd575f80fd5b50610ac6611d43565b604051610ad3919061323a565b60405180910390f35b5f610ae5611d56565b73ffffffffffffffffffffffffffffffffffffffff16610b03611472565b73ffffffffffffffffffffffffffffffffffffffff1614610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b50906138fc565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055506001905090565b606060038054610b8890613947565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490613947565b8015610bff5780601f10610bd657610100808354040283529160200191610bff565b820191905f5260205f20905b815481529060010190602001808311610be257829003601f168201915b5050505050905090565b5f610c1c610c15611d56565b8484611d5d565b6001905092915050565b60125481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115481565b5f600254905090565b60165481565b60175481565b5f610c77848484611f20565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cbe611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d34906139e7565b60405180910390fd5b610d5185610d49611d56565b858403611d5d565b60019150509392505050565b610d65611d56565b73ffffffffffffffffffffffffffffffffffffffff16610d83611472565b73ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd0906138fc565b60405180910390fd5b600f60019054906101000a900460ff1615610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090613a4f565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b60145481565b5f6012905090565b5f610ef1610e60611d56565b848460015f610e6d611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eec9190613a9a565b611d5d565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60185481565b5f610f2e611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610f68575f9050610f6d565b600190505b919050565b610f7a611d56565b73ffffffffffffffffffffffffffffffffffffffff16610f98611472565b73ffffffffffffffffffffffffffffffffffffffff1614610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe5906138fc565b60405180910390fd5b600f8183610ffc9190613a9a565b111561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613b17565b60405180910390fd5b836011819055508260128190555060125460115461105b9190613a9a565b601081905550816014819055508060158190555060155460145461107f9190613a9a565b60138190555050505050565b5f611094611d56565b73ffffffffffffffffffffffffffffffffffffffff166110b2611472565b73ffffffffffffffffffffffffffffffffffffffff1614611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff906138fc565b60405180910390fd5b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117e611d56565b73ffffffffffffffffffffffffffffffffffffffff1661119c611472565b73ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906138fc565b60405180910390fd5b600f60029054906101000a900460ff161561120b575f80fd5b600f60019054906101000a900460ff1615611224575f80fd5b6001600f60026101000a81548160ff0219169083151502179055506001601181905550600e60128190555060125460115461125f9190613a9a565b6010819055506001601481905550601580819055506015546014546112849190613a9a565b60138190555061129381612808565b61129e8560016117d3565b6112a98460016117d3565b6112b48360016117d3565b6112bf8260016117d3565b6112ca8560016118ee565b6112d58460016118ee565b6112e08360016118ee565b6112eb8260016118ee565b5f6aa56fa5b99019a5c800000090505f606460058361130a9190613b35565b6113149190613ba3565b905061132087826118d1565b5061132b86826118d1565b5061133685826118d1565b5061134184826118d1565b5061134c30826118d1565b5050505050505050565b600f5f9054906101000a900460ff1681565b60135481565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113ce611d56565b73ffffffffffffffffffffffffffffffffffffffff166113ec611472565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906138fc565b60405180910390fd5b61144b5f6128ae565b565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114a990613947565b80601f01602080910402602001604051908101604052809291908181526020018280546114d590613947565b80156115205780601f106114f757610100808354040283529160200191611520565b820191905f5260205f20905b81548152906001019060200180831161150357829003601f168201915b5050505050905090565b60195f9054906101000a900460ff1681565b611544611d56565b73ffffffffffffffffffffffffffffffffffffffff16611562611472565b73ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906138fc565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b6115dd611d56565b73ffffffffffffffffffffffffffffffffffffffff166115fb611472565b73ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906138fc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613c43565b60405180910390fd5b6116e98282612971565b5050565b5f8060015f6116fa611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab90613cd1565b60405180910390fd5b6117c86117bf611d56565b85858403611d5d565b600191505092915050565b6117db611d56565b73ffffffffffffffffffffffffffffffffffffffff166117f9611472565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906138fc565b60405180910390fd5b8060065f61185c85612a0f565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118c5919061323a565b60405180910390a25050565b5f6118e46118dd611d56565b8484611f20565b6001905092915050565b6118f6611d56565b73ffffffffffffffffffffffffffffffffffffffff16611914611472565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906138fc565b60405180910390fd5b8060075f61197785612a0f565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b60155481565b5f6119b3611d56565b73ffffffffffffffffffffffffffffffffffffffff166119d1611472565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906138fc565b60405180910390fd5b620186a06001611a35610c56565b611a3f9190613b35565b611a499190613ba3565b821015611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290613d5f565b60405180910390fd5b6103e86005611a98610c56565b611aa29190613b35565b611aac9190613ba3565b821115611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613ded565b60405180910390fd5b81600d8190555060019050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b611bb1611d56565b73ffffffffffffffffffffffffffffffffffffffff16611bcf611472565b73ffffffffffffffffffffffffffffffffffffffff1614611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c906138fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8a90613e7b565b60405180910390fd5b611c9c816128ae565b50565b600e5481565b5f611cae611d56565b73ffffffffffffffffffffffffffffffffffffffff16611ccc611472565b73ffffffffffffffffffffffffffffffffffffffff1614611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d19906138fc565b60405180910390fd5b6001600f5f6101000a81548160ff0219169083151502179055506001905090565b600f60019054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290613f09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090613f97565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1391906133e8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8590614025565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906140b3565b60405180910390fd5b5f81036120135761200e83835f612a3e565b612803565b600f5f9054906101000a900460ff16156124435761202f611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561209d575061206d611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561210f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121285750600560149054906101000a900460ff16155b1561244257600f60019054906101000a900460ff166121d45760065f61214d85612a0f565b81526020019081526020015f205f9054906101000a900460ff1680612194575060065f61217984612a0f565b81526020019081526020015f205f9054906101000a900460ff165b6121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9061411b565b60405180910390fd5b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561224d575060075f61223184612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b156122f457600c54811115612297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228e906141a9565b60405180910390fd5b600e546122a383611381565b826122ae9190613a9a565b11156122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e690614211565b60405180910390fd5b612441565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561236d575060075f61235185612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b156123bc57600c548111156123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae9061429f565b60405180910390fd5b612440565b60075f6123c884612a0f565b81526020019081526020015f205f9054906101000a900460ff1661243f57600e546123f283611381565b826123fd9190613a9a565b111561243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590614211565b60405180910390fd5b5b5b5b5b5b5f61244d30611381565b90505f600d5482101590508080156124715750600f60029054906101000a900460ff165b801561248a5750600560149054906101000a900460ff16155b80156124dd575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561250c575060065f6124f087612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b801561253b575060065f61251f86612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b1561257e576001600560146101000a81548160ff021916908315150217905550612563612cb3565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060065f61259e88612a0f565b81526020019081526020015f205f9054906101000a900460ff16806125e5575060065f6125ca87612a0f565b81526020019081526020015f205f9054906101000a900460ff165b156125ee575f90505b5f81156127f35760085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561264c57505f601354115b156126e457612679606461266b60135488612eac90919063ffffffff16565b612ec190919063ffffffff16565b90506013546014548261268c9190613b35565b6126969190613ba3565b60165f8282546126a69190613a9a565b92505081905550601354601554826126be9190613b35565b6126c89190613ba3565b60175f8282546126d89190613a9a565b925050819055506127d0565b60085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273b57505f601054115b156127cf57612768606461275a60105488612eac90919063ffffffff16565b612ec190919063ffffffff16565b90506010546011548261277b9190613b35565b6127859190613ba3565b60165f8282546127959190613a9a565b92505081905550601054601254826127ad9190613b35565b6127b79190613ba3565b60175f8282546127c79190613a9a565b925050819055505b5b5f8111156127e4576127e3873083612a3e565b5b80856127f091906142bd565b94505b6127fe878787612a3e565b505050505b505050565b5f5b81518110156128aa57600160065f84848151811061282b5761282a6142f0565b5b602002602001015181526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f84848151811061286e5761286d6142f0565b5b602002602001015181526020019081526020015f205f6101000a81548160ff021916908315150217905550806128a39061431d565b905061280a565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81604051602001612a2191906143a9565b604051602081830303815290604052805190602001209050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390614433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b11906144c1565b60405180910390fd5b612b25838383612ed6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9061454f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c369190613a9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c9a91906133e8565b60405180910390a3612cad848484612edb565b50505050565b5f612cbd30611381565b90505f601754601654612cd09190613a9a565b90505f80831480612ce057505f82145b15612ced57505050612eaa565b6014600d54612cfc9190613b35565b831115612d1357600283612d109190613ba3565b92505b5f60028360165486612d259190613b35565b612d2f9190613ba3565b612d399190613ba3565b90505f612d4f8286612ee090919063ffffffff16565b90505f479050612d5e82612ef5565b5f612d728247612ee090919063ffffffff16565b90505f612d9c87612d8e60175485612eac90919063ffffffff16565b612ec190919063ffffffff16565b90505f8183612dab91906142bd565b90505f6016819055505f6017819055505f86118015612dc957505f81115b15612e1657612dd88682613128565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612e0d9392919061456d565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e5b906145cf565b5f6040518083038185875af1925050503d805f8114612e95576040519150601f19603f3d011682016040523d82523d5f602084013e612e9a565b606091505b5050809750505050505050505050505b565b5f8183612eb99190613b35565b905092915050565b5f8183612ece9190613ba3565b905092915050565b505050565b505050565b5f8183612eed91906142bd565b905092915050565b5f600267ffffffffffffffff811115612f1157612f106135b4565b5b604051908082528060200260200182016040528015612f3f5781602001602082028036833780820191505090505b50905030815f81518110612f5657612f556142f0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301d91906145f7565b81600181518110613031576130306142f0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613096307f000000000000000000000000000000000000000000000000000000000000000084611d5d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016130f7959493929190614712565b5f604051808303815f87803b15801561310e575f80fd5b505af1158015613120573d5f803e3d5ffd5b505050505050565b613153307f000000000000000000000000000000000000000000000000000000000000000084611d5d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131d89695949392919061476a565b60606040518083038185885af11580156131f4573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061321991906147dd565b5050505050565b5f8115159050919050565b61323481613220565b82525050565b5f60208201905061324d5f83018461322b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561328a57808201518184015260208101905061326f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6132af82613253565b6132b9818561325d565b93506132c981856020860161326d565b6132d281613295565b840191505092915050565b5f6020820190508181035f8301526132f581846132a5565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133378261330e565b9050919050565b6133478161332d565b8114613351575f80fd5b50565b5f813590506133628161333e565b92915050565b5f819050919050565b61337a81613368565b8114613384575f80fd5b50565b5f8135905061339581613371565b92915050565b5f80604083850312156133b1576133b0613306565b5b5f6133be85828601613354565b92505060206133cf85828601613387565b9150509250929050565b6133e281613368565b82525050565b5f6020820190506133fb5f8301846133d9565b92915050565b5f819050919050565b5f61342461341f61341a8461330e565b613401565b61330e565b9050919050565b5f6134358261340a565b9050919050565b5f6134468261342b565b9050919050565b6134568161343c565b82525050565b5f60208201905061346f5f83018461344d565b92915050565b5f805f6060848603121561348c5761348b613306565b5b5f61349986828701613354565b93505060206134aa86828701613354565b92505060406134bb86828701613387565b9150509250925092565b5f60ff82169050919050565b6134da816134c5565b82525050565b5f6020820190506134f35f8301846134d1565b92915050565b6135028161332d565b82525050565b5f60208201905061351b5f8301846134f9565b92915050565b5f6020828403121561353657613535613306565b5b5f61354384828501613354565b91505092915050565b5f805f806080858703121561356457613563613306565b5b5f61357187828801613387565b945050602061358287828801613387565b935050604061359387828801613387565b92505060606135a487828801613387565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6135ea82613295565b810181811067ffffffffffffffff82111715613609576136086135b4565b5b80604052505050565b5f61361b6132fd565b905061362782826135e1565b919050565b5f67ffffffffffffffff821115613646576136456135b4565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b61366d8161365b565b8114613677575f80fd5b50565b5f8135905061368881613664565b92915050565b5f6136a061369b8461362c565b613612565b905080838252602082019050602084028301858111156136c3576136c2613657565b5b835b818110156136ec57806136d8888261367a565b8452602084019350506020810190506136c5565b5050509392505050565b5f82601f83011261370a576137096135b0565b5b813561371a84826020860161368e565b91505092915050565b5f805f805f60a0868803121561373c5761373b613306565b5b5f61374988828901613354565b955050602061375a88828901613354565b945050604061376b88828901613354565b935050606061377c88828901613354565b925050608086013567ffffffffffffffff81111561379d5761379c61330a565b5b6137a9888289016136f6565b9150509295509295909350565b6137bf81613220565b81146137c9575f80fd5b50565b5f813590506137da816137b6565b92915050565b5f602082840312156137f5576137f4613306565b5b5f613802848285016137cc565b91505092915050565b5f806040838503121561382157613820613306565b5b5f61382e85828601613354565b925050602061383f858286016137cc565b9150509250929050565b5f6020828403121561385e5761385d613306565b5b5f61386b84828501613387565b91505092915050565b5f806040838503121561388a57613889613306565b5b5f61389785828601613354565b92505060206138a885828601613354565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138e660208361325d565b91506138f1826138b2565b602082019050919050565b5f6020820190508181035f830152613913816138da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061395e57607f821691505b6020821081036139715761397061391a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6139d160288361325d565b91506139dc82613977565b604082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f54726164696e6720686173206265656e20656e61626c656400000000000000005f82015250565b5f613a3960188361325d565b9150613a4482613a05565b602082019050919050565b5f6020820190508181035f830152613a6681613a2d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613aa482613368565b9150613aaf83613368565b9250828201905080821115613ac757613ac6613a6d565b5b92915050565b7f556e61626c6520746f2073657420666565206d6f7265207468616e20313525005f82015250565b5f613b01601f8361325d565b9150613b0c82613acd565b602082019050919050565b5f6020820190508181035f830152613b2e81613af5565b9050919050565b5f613b3f82613368565b9150613b4a83613368565b9250828202613b5881613368565b91508282048414831517613b6f57613b6e613a6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bad82613368565b9150613bb883613368565b925082613bc857613bc7613b76565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d0000000000000000000000000000000000000000000000000000000000602082015250565b5f613c2d60238361325d565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb60258361325d565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d4960358361325d565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dd760348361325d565b9150613de282613d7d565b604082019050919050565b5f6020820190508181035f830152613e0481613dcb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e6560268361325d565b9150613e7082613e0b565b604082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ef360248361325d565b9150613efe82613e99565b604082019050919050565b5f6020820190508181035f830152613f2081613ee7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8160228361325d565b9150613f8c82613f27565b604082019050919050565b5f6020820190508181035f830152613fae81613f75565b9050919050565b7f5354414e4441524445524332303a207472616e736665722066726f6d207468655f8201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b5f61400f602d8361325d565b915061401a82613fb5565b604082019050919050565b5f6020820190508181035f83015261403c81614003565b9050919050565b7f5354414e4441524445524332303a207472616e7366657220746f20746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f61409d602b8361325d565b91506140a882614043565b604082019050919050565b5f6020820190508181035f8301526140ca81614091565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61410560168361325d565b9150614110826140d1565b602082019050919050565b5f6020820190508181035f830152614132816140f9565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61419360358361325d565b915061419e82614139565b604082019050919050565b5f6020820190508181035f8301526141c081614187565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6141fb60138361325d565b9150614206826141c7565b602082019050919050565b5f6020820190508181035f830152614228816141ef565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61428960368361325d565b91506142948261422f565b604082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b5f6142c782613368565b91506142d283613368565b92508282039050818111156142ea576142e9613a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61432782613368565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361435957614358613a6d565b5b600182019050919050565b5f8160601b9050919050565b5f61437a82614364565b9050919050565b5f61438b82614370565b9050919050565b6143a361439e8261332d565b614381565b82525050565b5f6143b48284614392565b60148201915081905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61441d60258361325d565b9150614428826143c3565b604082019050919050565b5f6020820190508181035f83015261444a81614411565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6144ab60238361325d565b91506144b682614451565b604082019050919050565b5f6020820190508181035f8301526144d88161449f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61453960268361325d565b9150614544826144df565b604082019050919050565b5f6020820190508181035f8301526145668161452d565b9050919050565b5f6060820190506145805f8301866133d9565b61458d60208301856133d9565b61459a60408301846133d9565b949350505050565b5f81905092915050565b50565b5f6145ba5f836145a2565b91506145c5826145ac565b5f82019050919050565b5f6145d9826145af565b9150819050919050565b5f815190506145f18161333e565b92915050565b5f6020828403121561460c5761460b613306565b5b5f614619848285016145e3565b91505092915050565b5f819050919050565b5f61464561464061463b84614622565b613401565b613368565b9050919050565b6146558161462b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61468d8161332d565b82525050565b5f61469e8383614684565b60208301905092915050565b5f602082019050919050565b5f6146c08261465b565b6146ca8185614665565b93506146d583614675565b805f5b838110156147055781516146ec8882614693565b97506146f7836146aa565b9250506001810190506146d8565b5085935050505092915050565b5f60a0820190506147255f8301886133d9565b614732602083018761464c565b818103604083015261474481866146b6565b905061475360608301856134f9565b61476060808301846133d9565b9695505050505050565b5f60c08201905061477d5f8301896134f9565b61478a60208301886133d9565b614797604083018761464c565b6147a4606083018661464c565b6147b160808301856134f9565b6147be60a08301846133d9565b979650505050505050565b5f815190506147d781613371565b92915050565b5f805f606084860312156147f4576147f3613306565b5b5f614801868287016147c9565b9350506020614812868287016147c9565b9250506040614823868287016147c9565b915050925092509256fea26469706673582212201b5956a5ab1dafda2937cbae9d948961cba08b88874aed1c6fb40ab42d71622c64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c80636ddd171311610159578063c4ad368e116100c0578063dd62ed3e11610079578063dd62ed3e146109d0578063e2f4560514610a0c578063f2fde38b14610a36578063f8b45b0514610a5e578063f928f69914610a88578063ffb54a9914610ab257610292565b8063c4ad368e146108b2578063c8c8ebe4146108da578063d0881aac14610904578063d257b34f1461092e578063d65d78861461096a578063d85ba063146109a657610292565b806395e92c1e1161011257806395e92c1e1461079857806398f29c2e146107c25780639a7a23d6146107ea578063a457c2d714610812578063a7b69bfc1461084e578063a9059cbb1461087657610292565b80636ddd17131461069e57806370a08231146106c8578063715018a61461070457806375f0a8741461071a5780638da5cb5b1461074457806395d89b411461076e57610292565b80632965a551116101fd5780635446a1f2116101b65780635446a1f2146105945780635d098b38146105bc5780635d60c7be146105f857806365dfd0e3146106225780636744ee2a1461064a5780636a486a8e1461067457610292565b80632965a55114610474578063313ce5671461049e57806339509351146104c857806349bd5a5e146105045780634f3eeea71461052e5780634fbee1931461055857610292565b806317fc3c4b1161024f57806317fc3c4b1461037a57806318160ddd146103a45780631a8145bb146103ce5780631f3fed8f146103f857806323b872dd14610422578063293230b81461045e57610292565b8063014667601461029657806306fdde03146102c0578063095ea7b3146102ea5780630cd4fdac146103265780631694505e1461035057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610adc565b6040516102b7919061323a565b60405180910390f35b3480156102cb575f80fd5b506102d4610b79565b6040516102e191906132dd565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b919061339b565b610c09565b60405161031d919061323a565b60405180910390f35b348015610331575f80fd5b5061033a610c26565b60405161034791906133e8565b60405180910390f35b34801561035b575f80fd5b50610364610c2c565b604051610371919061345c565b60405180910390f35b348015610385575f80fd5b5061038e610c50565b60405161039b91906133e8565b60405180910390f35b3480156103af575f80fd5b506103b8610c56565b6040516103c591906133e8565b60405180910390f35b3480156103d9575f80fd5b506103e2610c5f565b6040516103ef91906133e8565b60405180910390f35b348015610403575f80fd5b5061040c610c65565b60405161041991906133e8565b60405180910390f35b34801561042d575f80fd5b5061044860048036038101906104439190613475565b610c6b565b604051610455919061323a565b60405180910390f35b348015610469575f80fd5b50610472610d5d565b005b34801561047f575f80fd5b50610488610e46565b60405161049591906133e8565b60405180910390f35b3480156104a9575f80fd5b506104b2610e4c565b6040516104bf91906134e0565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e9919061339b565b610e54565b6040516104fb919061323a565b60405180910390f35b34801561050f575f80fd5b50610518610efb565b6040516105259190613508565b60405180910390f35b348015610539575f80fd5b50610542610f1f565b60405161054f91906133e8565b60405180910390f35b348015610563575f80fd5b5061057e60048036038101906105799190613521565b610f25565b60405161058b919061323a565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b5919061354c565b610f72565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190613521565b61108b565b6040516105ef919061323a565b60405180910390f35b348015610603575f80fd5b5061060c611151565b6040516106199190613508565b60405180910390f35b34801561062d575f80fd5b5061064860048036038101906106439190613723565b611176565b005b348015610655575f80fd5b5061065e611356565b60405161066b919061323a565b60405180910390f35b34801561067f575f80fd5b50610688611368565b60405161069591906133e8565b60405180910390f35b3480156106a9575f80fd5b506106b261136e565b6040516106bf919061323a565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190613521565b611381565b6040516106fb91906133e8565b60405180910390f35b34801561070f575f80fd5b506107186113c6565b005b348015610725575f80fd5b5061072e61144d565b60405161073b9190613508565b60405180910390f35b34801561074f575f80fd5b50610758611472565b6040516107659190613508565b60405180910390f35b348015610779575f80fd5b5061078261149a565b60405161078f91906132dd565b60405180910390f35b3480156107a3575f80fd5b506107ac61152a565b6040516107b9919061323a565b60405180910390f35b3480156107cd575f80fd5b506107e860048036038101906107e391906137e0565b61153c565b005b3480156107f5575f80fd5b50610810600480360381019061080b919061380b565b6115d5565b005b34801561081d575f80fd5b506108386004803603810190610833919061339b565b6116ed565b604051610845919061323a565b60405180910390f35b348015610859575f80fd5b50610874600480360381019061086f919061380b565b6117d3565b005b348015610881575f80fd5b5061089c6004803603810190610897919061339b565b6118d1565b6040516108a9919061323a565b60405180910390f35b3480156108bd575f80fd5b506108d860048036038101906108d3919061380b565b6118ee565b005b3480156108e5575f80fd5b506108ee61199e565b6040516108fb91906133e8565b60405180910390f35b34801561090f575f80fd5b506109186119a4565b60405161092591906133e8565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f9190613849565b6119aa565b604051610961919061323a565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b9190613521565b611afe565b60405161099d919061323a565b60405180910390f35b3480156109b1575f80fd5b506109ba611b1b565b6040516109c791906133e8565b60405180910390f35b3480156109db575f80fd5b506109f660048036038101906109f19190613874565b611b21565b604051610a0391906133e8565b60405180910390f35b348015610a17575f80fd5b50610a20611ba3565b604051610a2d91906133e8565b60405180910390f35b348015610a41575f80fd5b50610a5c6004803603810190610a579190613521565b611ba9565b005b348015610a69575f80fd5b50610a72611c9f565b604051610a7f91906133e8565b60405180910390f35b348015610a93575f80fd5b50610a9c611ca5565b604051610aa9919061323a565b60405180910390f35b348015610abd575f80fd5b50610ac6611d43565b604051610ad3919061323a565b60405180910390f35b5f610ae5611d56565b73ffffffffffffffffffffffffffffffffffffffff16610b03611472565b73ffffffffffffffffffffffffffffffffffffffff1614610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b50906138fc565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055506001905090565b606060038054610b8890613947565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490613947565b8015610bff5780601f10610bd657610100808354040283529160200191610bff565b820191905f5260205f20905b815481529060010190602001808311610be257829003601f168201915b5050505050905090565b5f610c1c610c15611d56565b8484611d5d565b6001905092915050565b60125481565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60115481565b5f600254905090565b60165481565b60175481565b5f610c77848484611f20565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cbe611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d34906139e7565b60405180910390fd5b610d5185610d49611d56565b858403611d5d565b60019150509392505050565b610d65611d56565b73ffffffffffffffffffffffffffffffffffffffff16610d83611472565b73ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd0906138fc565b60405180910390fd5b600f60019054906101000a900460ff1615610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090613a4f565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b60145481565b5f6012905090565b5f610ef1610e60611d56565b848460015f610e6d611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eec9190613a9a565b611d5d565b6001905092915050565b7f000000000000000000000000039232c29129a8dd93f7c16edaabcbb8e372f7e481565b60185481565b5f610f2e611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610f68575f9050610f6d565b600190505b919050565b610f7a611d56565b73ffffffffffffffffffffffffffffffffffffffff16610f98611472565b73ffffffffffffffffffffffffffffffffffffffff1614610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe5906138fc565b60405180910390fd5b600f8183610ffc9190613a9a565b111561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613b17565b60405180910390fd5b836011819055508260128190555060125460115461105b9190613a9a565b601081905550816014819055508060158190555060155460145461107f9190613a9a565b60138190555050505050565b5f611094611d56565b73ffffffffffffffffffffffffffffffffffffffff166110b2611472565b73ffffffffffffffffffffffffffffffffffffffff1614611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff906138fc565b60405180910390fd5b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117e611d56565b73ffffffffffffffffffffffffffffffffffffffff1661119c611472565b73ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906138fc565b60405180910390fd5b600f60029054906101000a900460ff161561120b575f80fd5b600f60019054906101000a900460ff1615611224575f80fd5b6001600f60026101000a81548160ff0219169083151502179055506001601181905550600e60128190555060125460115461125f9190613a9a565b6010819055506001601481905550601580819055506015546014546112849190613a9a565b60138190555061129381612808565b61129e8560016117d3565b6112a98460016117d3565b6112b48360016117d3565b6112bf8260016117d3565b6112ca8560016118ee565b6112d58460016118ee565b6112e08360016118ee565b6112eb8260016118ee565b5f6aa56fa5b99019a5c800000090505f606460058361130a9190613b35565b6113149190613ba3565b905061132087826118d1565b5061132b86826118d1565b5061133685826118d1565b5061134184826118d1565b5061134c30826118d1565b5050505050505050565b600f5f9054906101000a900460ff1681565b60135481565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113ce611d56565b73ffffffffffffffffffffffffffffffffffffffff166113ec611472565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906138fc565b60405180910390fd5b61144b5f6128ae565b565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114a990613947565b80601f01602080910402602001604051908101604052809291908181526020018280546114d590613947565b80156115205780601f106114f757610100808354040283529160200191611520565b820191905f5260205f20905b81548152906001019060200180831161150357829003601f168201915b5050505050905090565b60195f9054906101000a900460ff1681565b611544611d56565b73ffffffffffffffffffffffffffffffffffffffff16611562611472565b73ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906138fc565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b6115dd611d56565b73ffffffffffffffffffffffffffffffffffffffff166115fb611472565b73ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906138fc565b60405180910390fd5b7f000000000000000000000000039232c29129a8dd93f7c16edaabcbb8e372f7e473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613c43565b60405180910390fd5b6116e98282612971565b5050565b5f8060015f6116fa611d56565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab90613cd1565b60405180910390fd5b6117c86117bf611d56565b85858403611d5d565b600191505092915050565b6117db611d56565b73ffffffffffffffffffffffffffffffffffffffff166117f9611472565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906138fc565b60405180910390fd5b8060065f61185c85612a0f565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118c5919061323a565b60405180910390a25050565b5f6118e46118dd611d56565b8484611f20565b6001905092915050565b6118f6611d56565b73ffffffffffffffffffffffffffffffffffffffff16611914611472565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906138fc565b60405180910390fd5b8060075f61197785612a0f565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b60155481565b5f6119b3611d56565b73ffffffffffffffffffffffffffffffffffffffff166119d1611472565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906138fc565b60405180910390fd5b620186a06001611a35610c56565b611a3f9190613b35565b611a499190613ba3565b821015611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290613d5f565b60405180910390fd5b6103e86005611a98610c56565b611aa29190613b35565b611aac9190613ba3565b821115611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613ded565b60405180910390fd5b81600d8190555060019050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b611bb1611d56565b73ffffffffffffffffffffffffffffffffffffffff16611bcf611472565b73ffffffffffffffffffffffffffffffffffffffff1614611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c906138fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8a90613e7b565b60405180910390fd5b611c9c816128ae565b50565b600e5481565b5f611cae611d56565b73ffffffffffffffffffffffffffffffffffffffff16611ccc611472565b73ffffffffffffffffffffffffffffffffffffffff1614611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d19906138fc565b60405180910390fd5b6001600f5f6101000a81548160ff0219169083151502179055506001905090565b600f60019054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290613f09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090613f97565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1391906133e8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8590614025565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906140b3565b60405180910390fd5b5f81036120135761200e83835f612a3e565b612803565b600f5f9054906101000a900460ff16156124435761202f611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561209d575061206d611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561210f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121285750600560149054906101000a900460ff16155b1561244257600f60019054906101000a900460ff166121d45760065f61214d85612a0f565b81526020019081526020015f205f9054906101000a900460ff1680612194575060065f61217984612a0f565b81526020019081526020015f205f9054906101000a900460ff165b6121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9061411b565b60405180910390fd5b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561224d575060075f61223184612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b156122f457600c54811115612297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228e906141a9565b60405180910390fd5b600e546122a383611381565b826122ae9190613a9a565b11156122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e690614211565b60405180910390fd5b612441565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561236d575060075f61235185612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b156123bc57600c548111156123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae9061429f565b60405180910390fd5b612440565b60075f6123c884612a0f565b81526020019081526020015f205f9054906101000a900460ff1661243f57600e546123f283611381565b826123fd9190613a9a565b111561243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590614211565b60405180910390fd5b5b5b5b5b5b5f61244d30611381565b90505f600d5482101590508080156124715750600f60029054906101000a900460ff165b801561248a5750600560149054906101000a900460ff16155b80156124dd575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561250c575060065f6124f087612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b801561253b575060065f61251f86612a0f565b81526020019081526020015f205f9054906101000a900460ff16155b1561257e576001600560146101000a81548160ff021916908315150217905550612563612cb3565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060065f61259e88612a0f565b81526020019081526020015f205f9054906101000a900460ff16806125e5575060065f6125ca87612a0f565b81526020019081526020015f205f9054906101000a900460ff165b156125ee575f90505b5f81156127f35760085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561264c57505f601354115b156126e457612679606461266b60135488612eac90919063ffffffff16565b612ec190919063ffffffff16565b90506013546014548261268c9190613b35565b6126969190613ba3565b60165f8282546126a69190613a9a565b92505081905550601354601554826126be9190613b35565b6126c89190613ba3565b60175f8282546126d89190613a9a565b925050819055506127d0565b60085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273b57505f601054115b156127cf57612768606461275a60105488612eac90919063ffffffff16565b612ec190919063ffffffff16565b90506010546011548261277b9190613b35565b6127859190613ba3565b60165f8282546127959190613a9a565b92505081905550601054601254826127ad9190613b35565b6127b79190613ba3565b60175f8282546127c79190613a9a565b925050819055505b5b5f8111156127e4576127e3873083612a3e565b5b80856127f091906142bd565b94505b6127fe878787612a3e565b505050505b505050565b5f5b81518110156128aa57600160065f84848151811061282b5761282a6142f0565b5b602002602001015181526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f84848151811061286e5761286d6142f0565b5b602002602001015181526020019081526020015f205f6101000a81548160ff021916908315150217905550806128a39061431d565b905061280a565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81604051602001612a2191906143a9565b604051602081830303815290604052805190602001209050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390614433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b11906144c1565b60405180910390fd5b612b25838383612ed6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9061454f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c369190613a9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c9a91906133e8565b60405180910390a3612cad848484612edb565b50505050565b5f612cbd30611381565b90505f601754601654612cd09190613a9a565b90505f80831480612ce057505f82145b15612ced57505050612eaa565b6014600d54612cfc9190613b35565b831115612d1357600283612d109190613ba3565b92505b5f60028360165486612d259190613b35565b612d2f9190613ba3565b612d399190613ba3565b90505f612d4f8286612ee090919063ffffffff16565b90505f479050612d5e82612ef5565b5f612d728247612ee090919063ffffffff16565b90505f612d9c87612d8e60175485612eac90919063ffffffff16565b612ec190919063ffffffff16565b90505f8183612dab91906142bd565b90505f6016819055505f6017819055505f86118015612dc957505f81115b15612e1657612dd88682613128565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612e0d9392919061456d565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e5b906145cf565b5f6040518083038185875af1925050503d805f8114612e95576040519150601f19603f3d011682016040523d82523d5f602084013e612e9a565b606091505b5050809750505050505050505050505b565b5f8183612eb99190613b35565b905092915050565b5f8183612ece9190613ba3565b905092915050565b505050565b505050565b5f8183612eed91906142bd565b905092915050565b5f600267ffffffffffffffff811115612f1157612f106135b4565b5b604051908082528060200260200182016040528015612f3f5781602001602082028036833780820191505090505b50905030815f81518110612f5657612f556142f0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301d91906145f7565b81600181518110613031576130306142f0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613096307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d5d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016130f7959493929190614712565b5f604051808303815f87803b15801561310e575f80fd5b505af1158015613120573d5f803e3d5ffd5b505050505050565b613153307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d5d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131d89695949392919061476a565b60606040518083038185885af11580156131f4573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061321991906147dd565b5050505050565b5f8115159050919050565b61323481613220565b82525050565b5f60208201905061324d5f83018461322b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561328a57808201518184015260208101905061326f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6132af82613253565b6132b9818561325d565b93506132c981856020860161326d565b6132d281613295565b840191505092915050565b5f6020820190508181035f8301526132f581846132a5565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133378261330e565b9050919050565b6133478161332d565b8114613351575f80fd5b50565b5f813590506133628161333e565b92915050565b5f819050919050565b61337a81613368565b8114613384575f80fd5b50565b5f8135905061339581613371565b92915050565b5f80604083850312156133b1576133b0613306565b5b5f6133be85828601613354565b92505060206133cf85828601613387565b9150509250929050565b6133e281613368565b82525050565b5f6020820190506133fb5f8301846133d9565b92915050565b5f819050919050565b5f61342461341f61341a8461330e565b613401565b61330e565b9050919050565b5f6134358261340a565b9050919050565b5f6134468261342b565b9050919050565b6134568161343c565b82525050565b5f60208201905061346f5f83018461344d565b92915050565b5f805f6060848603121561348c5761348b613306565b5b5f61349986828701613354565b93505060206134aa86828701613354565b92505060406134bb86828701613387565b9150509250925092565b5f60ff82169050919050565b6134da816134c5565b82525050565b5f6020820190506134f35f8301846134d1565b92915050565b6135028161332d565b82525050565b5f60208201905061351b5f8301846134f9565b92915050565b5f6020828403121561353657613535613306565b5b5f61354384828501613354565b91505092915050565b5f805f806080858703121561356457613563613306565b5b5f61357187828801613387565b945050602061358287828801613387565b935050604061359387828801613387565b92505060606135a487828801613387565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6135ea82613295565b810181811067ffffffffffffffff82111715613609576136086135b4565b5b80604052505050565b5f61361b6132fd565b905061362782826135e1565b919050565b5f67ffffffffffffffff821115613646576136456135b4565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b61366d8161365b565b8114613677575f80fd5b50565b5f8135905061368881613664565b92915050565b5f6136a061369b8461362c565b613612565b905080838252602082019050602084028301858111156136c3576136c2613657565b5b835b818110156136ec57806136d8888261367a565b8452602084019350506020810190506136c5565b5050509392505050565b5f82601f83011261370a576137096135b0565b5b813561371a84826020860161368e565b91505092915050565b5f805f805f60a0868803121561373c5761373b613306565b5b5f61374988828901613354565b955050602061375a88828901613354565b945050604061376b88828901613354565b935050606061377c88828901613354565b925050608086013567ffffffffffffffff81111561379d5761379c61330a565b5b6137a9888289016136f6565b9150509295509295909350565b6137bf81613220565b81146137c9575f80fd5b50565b5f813590506137da816137b6565b92915050565b5f602082840312156137f5576137f4613306565b5b5f613802848285016137cc565b91505092915050565b5f806040838503121561382157613820613306565b5b5f61382e85828601613354565b925050602061383f858286016137cc565b9150509250929050565b5f6020828403121561385e5761385d613306565b5b5f61386b84828501613387565b91505092915050565b5f806040838503121561388a57613889613306565b5b5f61389785828601613354565b92505060206138a885828601613354565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138e660208361325d565b91506138f1826138b2565b602082019050919050565b5f6020820190508181035f830152613913816138da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061395e57607f821691505b6020821081036139715761397061391a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6139d160288361325d565b91506139dc82613977565b604082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f54726164696e6720686173206265656e20656e61626c656400000000000000005f82015250565b5f613a3960188361325d565b9150613a4482613a05565b602082019050919050565b5f6020820190508181035f830152613a6681613a2d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613aa482613368565b9150613aaf83613368565b9250828201905080821115613ac757613ac6613a6d565b5b92915050565b7f556e61626c6520746f2073657420666565206d6f7265207468616e20313525005f82015250565b5f613b01601f8361325d565b9150613b0c82613acd565b602082019050919050565b5f6020820190508181035f830152613b2e81613af5565b9050919050565b5f613b3f82613368565b9150613b4a83613368565b9250828202613b5881613368565b91508282048414831517613b6f57613b6e613a6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bad82613368565b9150613bb883613368565b925082613bc857613bc7613b76565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d0000000000000000000000000000000000000000000000000000000000602082015250565b5f613c2d60238361325d565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb60258361325d565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d4960358361325d565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dd760348361325d565b9150613de282613d7d565b604082019050919050565b5f6020820190508181035f830152613e0481613dcb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e6560268361325d565b9150613e7082613e0b565b604082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ef360248361325d565b9150613efe82613e99565b604082019050919050565b5f6020820190508181035f830152613f2081613ee7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8160228361325d565b9150613f8c82613f27565b604082019050919050565b5f6020820190508181035f830152613fae81613f75565b9050919050565b7f5354414e4441524445524332303a207472616e736665722066726f6d207468655f8201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b5f61400f602d8361325d565b915061401a82613fb5565b604082019050919050565b5f6020820190508181035f83015261403c81614003565b9050919050565b7f5354414e4441524445524332303a207472616e7366657220746f20746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f61409d602b8361325d565b91506140a882614043565b604082019050919050565b5f6020820190508181035f8301526140ca81614091565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61410560168361325d565b9150614110826140d1565b602082019050919050565b5f6020820190508181035f830152614132816140f9565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61419360358361325d565b915061419e82614139565b604082019050919050565b5f6020820190508181035f8301526141c081614187565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6141fb60138361325d565b9150614206826141c7565b602082019050919050565b5f6020820190508181035f830152614228816141ef565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61428960368361325d565b91506142948261422f565b604082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b5f6142c782613368565b91506142d283613368565b92508282039050818111156142ea576142e9613a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61432782613368565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361435957614358613a6d565b5b600182019050919050565b5f8160601b9050919050565b5f61437a82614364565b9050919050565b5f61438b82614370565b9050919050565b6143a361439e8261332d565b614381565b82525050565b5f6143b48284614392565b60148201915081905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61441d60258361325d565b9150614428826143c3565b604082019050919050565b5f6020820190508181035f83015261444a81614411565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6144ab60238361325d565b91506144b682614451565b604082019050919050565b5f6020820190508181035f8301526144d88161449f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61453960268361325d565b9150614544826144df565b604082019050919050565b5f6020820190508181035f8301526145668161452d565b9050919050565b5f6060820190506145805f8301866133d9565b61458d60208301856133d9565b61459a60408301846133d9565b949350505050565b5f81905092915050565b50565b5f6145ba5f836145a2565b91506145c5826145ac565b5f82019050919050565b5f6145d9826145af565b9150819050919050565b5f815190506145f18161333e565b92915050565b5f6020828403121561460c5761460b613306565b5b5f614619848285016145e3565b91505092915050565b5f819050919050565b5f61464561464061463b84614622565b613401565b613368565b9050919050565b6146558161462b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61468d8161332d565b82525050565b5f61469e8383614684565b60208301905092915050565b5f602082019050919050565b5f6146c08261465b565b6146ca8185614665565b93506146d583614675565b805f5b838110156147055781516146ec8882614693565b97506146f7836146aa565b9250506001810190506146d8565b5085935050505092915050565b5f60a0820190506147255f8301886133d9565b614732602083018761464c565b818103604083015261474481866146b6565b905061475360608301856134f9565b61476060808301846133d9565b9695505050505050565b5f60c08201905061477d5f8301896134f9565b61478a60208301886133d9565b614797604083018761464c565b6147a4606083018661464c565b6147b160808301856134f9565b6147be60a08301846133d9565b979650505050505050565b5f815190506147d781613371565b92915050565b5f805f606084860312156147f4576147f3613306565b5b5f614801868287016147c9565b9350506020614812868287016147c9565b9250506040614823868287016147c9565b915050925092509256fea26469706673582212201b5956a5ab1dafda2937cbae9d948961cba08b88874aed1c6fb40ab42d71622c64736f6c63430008150033

Deployed Bytecode Sourcemap

9000:13553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13369:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2556:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3470:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9808:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9094:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9774:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2877:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9965:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10005;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3647:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12438:144;;;;;;;;;;;;;:::i;:::-;;9886:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4147:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9152:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10047:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15065:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12785:576;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21046:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9439:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21367:1181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9623:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9851:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9700:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2993:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;745:103;;;;;;;;;;;;;:::i;:::-;;9402:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;522:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2664:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10084:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14300:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14601:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4370:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14407:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3128:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14127:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9508:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9921;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13618:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9358:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9740:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3311:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9550:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;856:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9590:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13493:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9662:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13369:116;13417:4;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13450:5:::1;13434:13;;:21;;;;;;;;;;;;;;;;;;13473:4;13466:11;;13369:116:::0;:::o;2556:100::-;2610:13;2643:5;2636:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2556:100;:::o;3470:169::-;3553:4;3570:39;3579:12;:10;:12::i;:::-;3593:7;3602:6;3570:8;:39::i;:::-;3627:4;3620:11;;3470:169;;;;:::o;9808:34::-;;;;:::o;9094:51::-;;;:::o;9774:27::-;;;;:::o;2877:108::-;2938:7;2965:12;;2958:19;;2877:108;:::o;9965:33::-;;;;:::o;10005:::-;;;;:::o;3647:492::-;3787:4;3804:36;3814:6;3822:9;3833:6;3804:9;:36::i;:::-;3853:24;3880:11;:19;3892:6;3880:19;;;;;;;;;;;;;;;:33;3900:12;:10;:12::i;:::-;3880:33;;;;;;;;;;;;;;;;3853:60;;3952:6;3932:16;:26;;3924:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4039:57;4048:6;4056:12;:10;:12::i;:::-;4089:6;4070:16;:25;4039:8;:57::i;:::-;4127:4;4120:11;;;3647:492;;;;;:::o;12438:144::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12501:11:::1;;;;;;;;;;;12500:12;12492:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12568:4;12554:11;;:18;;;;;;;;;;;;;;;;;;12438:144::o:0;9886:28::-;;;;:::o;2776:93::-;2834:5;2859:2;2852:9;;2776:93;:::o;4147:215::-;4235:4;4252:80;4261:12;:10;:12::i;:::-;4275:7;4321:10;4284:11;:25;4296:12;:10;:12::i;:::-;4284:25;;;;;;;;;;;;;;;:34;4310:7;4284:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4252:8;:80::i;:::-;4350:4;4343:11;;4147:215;;;;:::o;9152:38::-;;;:::o;10047:30::-;;;;:::o;15065:195::-;15131:4;15162:7;:5;:7::i;:::-;15151:18;;:7;:18;;;15148:105;;15192:5;15185:12;;;;15148:105;15237:4;15230:11;;15065:195;;;;:::o;12785:576::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12980:2:::1;12957:18;12943:11;:32;;;;:::i;:::-;12942:40;;12934:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:10;13039:12;:25;;;;13101:17;13079:19;:39;;;;13167:19;;13152:12;;:34;;;;:::i;:::-;13137:12;:49;;;;13215:11;13199:13;:27;;;;13264:18;13241:20;:41;;;;13333:20;;13317:13;;:36;;;;:::i;:::-;13301:13;:52;;;;12785:576:::0;;;;:::o;21046:167::-;21128:4;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21162:19:::1;21144:15;;:37;;;;;;;;;;;;;;;;;;21201:4;21194:11;;21046:167:::0;;;:::o;9439:29::-;;;;;;;;;;;;;:::o;21367:1181::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21522:11:::1;;;;;;;;;;;21521:12;21513:21;;;::::0;::::1;;21554:11;;;;;;;;;;;21553:12;21545:21;;;::::0;::::1;;21591:4;21577:11;;:18;;;;;;;;;;;;;;;;;;21621:1;21606:12;:16;;;;21655:2;21633:19;:24;;;;21698:19;;21683:12;;:34;;;;:::i;:::-;21668:12;:49;;;;21744:1;21728:13;:17;;;;21779:2;21756:20:::0;:25:::1;;;;21824:20;;21808:13;;:36;;;;:::i;:::-;21792:13;:52;;;;21857:35;21877:14;21857:19;:35::i;:::-;21903:25;21918:3;21923:4;21903:14;:25::i;:::-;21939;21954:3;21959:4;21939:14;:25::i;:::-;21975:33;21990:11;22003:4;21975:14;:33::i;:::-;22019:31;22034:9;22045:4;22019:14;:31::i;:::-;22061:28;22079:3;22084:4;22061:17;:28::i;:::-;22100;22118:3;22123:4;22100:17;:28::i;:::-;22139:36;22157:11;22170:4;22139:17;:36::i;:::-;22186:34;22204:9;22215:4;22186:17;:34::i;:::-;22231:19;22253:22;22231:44;;22286:19;22326:3;22322:1;22308:11;:15;;;;:::i;:::-;:21;;;;:::i;:::-;22286:43;;22340:26;22349:3;22354:11;22340:8;:26::i;:::-;;22377;22386:3;22391:11;22377:8;:26::i;:::-;;22414:34;22423:11;22436;22414:8;:34::i;:::-;;22459:32;22468:9;22479:11;22459:8;:32::i;:::-;;22502:36;22519:4;22526:11;22502:8;:36::i;:::-;;21502:1046;;21367:1181:::0;;;;;:::o;9623:32::-;;;;;;;;;;;;;:::o;9851:28::-;;;;:::o;9700:31::-;;;;;;;;;;;;;:::o;2993:127::-;3067:7;3094:9;:18;3104:7;3094:18;;;;;;;;;;;;;;;;3087:25;;2993:127;;;:::o;745:103::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;810:30:::1;837:1;810:18;:30::i;:::-;745:103::o:0;9402:30::-;;;;;;;;;;;;;:::o;522:87::-;568:7;595:6;;;;;;;;;;;588:13;;522:87;:::o;2664:104::-;2720:13;2753:7;2746:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2664:104;:::o;10084:36::-;;;;;;;;;;;;;:::o;14300:99::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14384:7:::1;14370:11;;:21;;;;;;;;;;;;;;;;;;14300:99:::0;:::o;14601:282::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14745:13:::1;14737:21;;:4;:21;;::::0;14715:106:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14834:41;14863:4;14869:5;14834:28;:41::i;:::-;14601:282:::0;;:::o;4370:413::-;4463:4;4480:24;4507:11;:25;4519:12;:10;:12::i;:::-;4507:25;;;;;;;;;;;;;;;:34;4533:7;4507:34;;;;;;;;;;;;;;;;4480:61;;4580:15;4560:16;:35;;4552:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4673:67;4682:12;:10;:12::i;:::-;4696:7;4724:15;4705:16;:34;4673:8;:67::i;:::-;4771:4;4764:11;;;4370:413;;;;:::o;14407:186::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14527:8:::1;14491:18;:33;14510:13;14515:7;14510:4;:13::i;:::-;14491:33;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14567:7;14551:34;;;14576:8;14551:34;;;;;;:::i;:::-;;;;;;;;14407:186:::0;;:::o;3128:175::-;3214:4;3231:42;3241:12;:10;:12::i;:::-;3255:9;3266:6;3231:9;:42::i;:::-;3291:4;3284:11;;3128:175;;;;:::o;14127:165::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14280:4:::1;14232:31;:45;14264:12;14269:6;14264:4;:12::i;:::-;14232:45;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14127:165:::0;;:::o;9508:35::-;;;;:::o;9921:::-;;;;:::o;13618:497::-;13726:4;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13805:6:::1;13800:1;13784:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13783:28;;;;:::i;:::-;13770:9;:41;;13748:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:4;13955:1;13939:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13938:26;;;;:::i;:::-;13925:9;:39;;13903:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;14076:9;14055:18;:30;;;;14103:4;14096:11;;13618:497:::0;;;:::o;9358:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;9740:27::-;;;;:::o;3311:151::-;3400:7;3427:11;:18;3439:5;3427:18;;;;;;;;;;;;;;;:27;3446:7;3427:27;;;;;;;;;;;;;;;;3420:34;;3311:151;;;;:::o;9550:33::-;;;;:::o;856:201::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:1:::1;945:22;;:8;:22;;::::0;937:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1021:28;1040:8;1021:18;:28::i;:::-;856:201:::0;:::o;9590:24::-;;;;:::o;13493:117::-;13543:4;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13576:4:::1;13560:13;;:20;;;;;;;;;;;;;;;;;;13598:4;13591:11;;13493:117:::0;:::o;9662:31::-;;;;;;;;;;;;;:::o;68:98::-;121:7;148:10;141:17;;68:98;:::o;5949:380::-;6102:1;6085:19;;:5;:19;;;6077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:1;6164:21;;:7;:21;;;6156:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6267:6;6237:11;:18;6249:5;6237:18;;;;;;;;;;;;;;;:27;6256:7;6237:27;;;;;;;;;;;;;;;:36;;;;6305:7;6289:32;;6298:5;6289:32;;;6314:6;6289:32;;;;;;:::i;:::-;;;;;;;;5949:380;;;:::o;15268:3498::-;15416:1;15400:18;;:4;:18;;;15392:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15501:1;15487:16;;:2;:16;;;15479:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15578:1;15568:6;:11;15564:93;;15596:28;15612:4;15618:2;15622:1;15596:15;:28::i;:::-;15639:7;;15564:93;15673:13;;;;;;;;;;;15669:1620;;;15733:7;:5;:7::i;:::-;15725:15;;:4;:15;;;;:49;;;;;15767:7;:5;:7::i;:::-;15761:13;;:2;:13;;;;15725:49;:86;;;;;15809:1;15795:16;;:2;:16;;;;15725:86;:128;;;;;15846:6;15832:21;;:2;:21;;;;15725:128;:158;;;;;15875:8;;;;;;;;;;;15874:9;15725:158;15703:1575;;;15923:11;;;;;;;;;;;15918:231;;15993:18;:30;16012:10;16017:4;16012;:10::i;:::-;15993:30;;;;;;;;;;;;;;;;;;;;;:62;;;;16027:18;:28;16046:8;16051:2;16046:4;:8::i;:::-;16027:28;;;;;;;;;;;;;;;;;;;;;15993:62;15959:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;15918:231;16195:3;:9;16199:4;16195:9;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;16230:31;:41;16262:8;16267:2;16262:4;:8::i;:::-;16230:41;;;;;;;;;;;;;;;;;;;;;16229:42;16195:76;16169:1094;;;16358:20;;16348:6;:30;;16314:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16566:9;;16549:13;16559:2;16549:9;:13::i;:::-;16540:6;:22;;;;:::i;:::-;:35;;16506:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16169:1094;;;16717:3;:7;16721:2;16717:7;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;16750:31;:43;16782:10;16787:4;16782;:10::i;:::-;16750:43;;;;;;;;;;;;;;;;;;;;;16749:44;16717:76;16691:572;;;16880:20;;16870:6;:30;;16836:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;16691:572;;;17037:31;:41;17069:8;17074:2;17069:4;:8::i;:::-;17037:41;;;;;;;;;;;;;;;;;;;;;17032:231;;17163:9;;17146:13;17156:2;17146:9;:13::i;:::-;17137:6;:22;;;;:::i;:::-;:35;;17103:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17032:231;16691:572;16169:1094;15703:1575;15669:1620;17301:28;17332:24;17350:4;17332:9;:24::i;:::-;17301:55;;17369:12;17408:18;;17384:20;:42;;17369:57;;17457:7;:35;;;;;17481:11;;;;;;;;;;;17457:35;:61;;;;;17510:8;;;;;;;;;;;17509:9;17457:61;:88;;;;;17536:3;:9;17540:4;17536:9;;;;;;;;;;;;;;;;;;;;;;;;;17535:10;17457:88;:136;;;;;17563:18;:30;17582:10;17587:4;17582;:10::i;:::-;17563:30;;;;;;;;;;;;;;;;;;;;;17562:31;17457:136;:182;;;;;17611:18;:28;17630:8;17635:2;17630:4;:8::i;:::-;17611:28;;;;;;;;;;;;;;;;;;;;;17610:29;17457:182;17439:314;;;17677:4;17666:8;;:15;;;;;;;;;;;;;;;;;;17698:10;:8;:10::i;:::-;17736:5;17725:8;;:16;;;;;;;;;;;;;;;;;;17439:314;17765:12;17781:8;;;;;;;;;;;17780:9;17765:24;;17806:18;:30;17825:10;17830:4;17825;:10::i;:::-;17806:30;;;;;;;;;;;;;;;;;;;;;:62;;;;17840:18;:28;17859:8;17864:2;17859:4;:8::i;:::-;17840:28;;;;;;;;;;;;;;;;;;;;;17806:62;17802:110;;;17895:5;17885:15;;17802:110;17924:12;17955:7;17951:762;;;17985:3;:7;17989:2;17985:7;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;18012:1;17996:13;;:17;17985:28;17981:583;;;18041:34;18071:3;18041:25;18052:13;;18041:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;18034:41;;18141:13;;18124;;18117:4;:20;;;;:::i;:::-;18116:38;;;;:::i;:::-;18094:18;;:60;;;;;;;:::i;:::-;;;;;;;;18227:13;;18203:20;;18196:4;:27;;;;:::i;:::-;18195:45;;;;:::i;:::-;18173:18;;:67;;;;;;;:::i;:::-;;;;;;;;17981:583;;;18297:3;:9;18301:4;18297:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;18325:1;18310:12;;:16;18297:29;18293:271;;;18354:33;18383:3;18354:24;18365:12;;18354:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;18347:40;;18452:12;;18436;;18429:4;:19;;;;:::i;:::-;18428:36;;;;:::i;:::-;18406:18;;:58;;;;;;;:::i;:::-;;;;;;;;18536:12;;18513:19;;18506:4;:26;;;;:::i;:::-;18505:43;;;;:::i;:::-;18483:18;;:65;;;;;;;:::i;:::-;;;;;;;;18293:271;17981:583;18591:1;18584:4;:8;18580:91;;;18613:42;18629:4;18643;18650;18613:15;:42::i;:::-;18580:91;18697:4;18687:14;;;;;:::i;:::-;;;17951:762;18725:33;18741:4;18747:2;18751:6;18725:15;:33::i;:::-;15381:3385;;;;15268:3498;;;;:::o;12590:187::-;12656:9;12652:124;12671:5;:12;12667:1;:16;12652:124;;;12721:4;12690:18;:28;12709:5;12715:1;12709:8;;;;;;;;:::i;:::-;;;;;;;;12690:28;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12770:4;12726:31;:41;12758:5;12764:1;12758:8;;;;;;;;:::i;:::-;;;;;;;;12726:41;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;12685:3;;;;:::i;:::-;;;12652:124;;;;12590:187;:::o;1063:191::-;1137:16;1156:6;;;;;;;;;;;1137:25;;1182:8;1173:6;;:17;;;;;;;;;;;;;;;;;;1237:8;1206:40;;1227:8;1206:40;;;;;;;;;;;;1126:128;1063:191;:::o;14891:166::-;14986:5;14974:3;:9;14978:4;14974:9;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;15043:5;15009:40;;15037:4;15009:40;;;;;;;;;;;;14891:166;;:::o;21221:138::-;21282:7;21336:13;21319:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;21309:42;;;;;;21302:49;;21221:138;;;:::o;4791:733::-;4949:1;4931:20;;:6;:20;;;4923:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5033:1;5012:23;;:9;:23;;;5004:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5088:47;5109:6;5117:9;5128:6;5088:20;:47::i;:::-;5148:21;5172:9;:17;5182:6;5172:17;;;;;;;;;;;;;;;;5148:41;;5225:6;5208:13;:23;;5200:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5346:6;5330:13;:22;5310:9;:17;5320:6;5310:17;;;;;;;;;;;;;;;:42;;;;5398:6;5374:9;:20;5384:9;5374:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5439:9;5422:35;;5431:6;5422:35;;;5450:6;5422:35;;;;;;:::i;:::-;;;;;;;;5470:46;5490:6;5498:9;5509:6;5470:19;:46::i;:::-;4912:612;4791:733;;;:::o;19641:1397::-;19680:23;19706:24;19724:4;19706:9;:24::i;:::-;19680:50;;19741:25;19790:18;;19769;;:39;;;;:::i;:::-;19741:67;;19819:12;19867:1;19848:15;:20;:46;;;;19893:1;19872:17;:22;19848:46;19844:85;;;19911:7;;;;;19844:85;19984:2;19963:18;;:23;;;;:::i;:::-;19945:15;:41;19941:111;;;20039:1;20021:15;:19;;;;:::i;:::-;20003:37;;19941:111;20064:23;20151:1;20131:17;20109:18;;20091:15;:36;;;;:::i;:::-;20090:58;;;;:::i;:::-;:62;;;;:::i;:::-;20064:88;;20163:26;20192:36;20212:15;20192;:19;;:36;;;;:::i;:::-;20163:65;;20241:25;20269:21;20241:49;;20303:36;20320:18;20303:16;:36::i;:::-;20352:18;20373:44;20399:17;20373:21;:25;;:44;;;;:::i;:::-;20352:65;;20434:23;20460:57;20499:17;20460:34;20475:18;;20460:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;20434:83;;20530:23;20569:15;20556:10;:28;;;;:::i;:::-;20530:54;;20618:1;20597:18;:22;;;;20651:1;20630:18;:22;;;;20687:1;20669:15;:19;:42;;;;;20710:1;20692:15;:19;20669:42;20665:278;;;20728:46;20741:15;20758;20728:12;:46::i;:::-;20794:137;20827:18;20864:15;20898:18;;20794:137;;;;;;;;:::i;:::-;;;;;;;;20665:278;20975:15;;;;;;;;;;;20967:29;;21004:21;20967:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20953:77;;;;;19669:1369;;;;;;;;;19641:1397;:::o;6837:98::-;6895:7;6926:1;6922;:5;;;;:::i;:::-;6915:12;;6837:98;;;;:::o;6943:::-;7001:7;7032:1;7028;:5;;;;:::i;:::-;7021:12;;6943:98;;;;:::o;6337:125::-;;;;:::o;6470:124::-;;;;:::o;6731:98::-;6789:7;6820:1;6816;:5;;;;:::i;:::-;6809:12;;6731:98;;;;:::o;18774:476::-;18840:21;18878:1;18864:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18840:40;;18909:4;18891;18896:1;18891:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18935:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18925:4;18930:1;18925:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18970:62;18987:4;19002:15;19020:11;18970:8;:62::i;:::-;19045:15;:66;;;19126:11;19152:1;19169:4;19196;19216:15;19045:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18829:421;18774:476;:::o;19258:375::-;19341:62;19358:4;19373:15;19391:11;19341:8;:62::i;:::-;19418:15;:31;;;19457:9;19490:4;19510:11;19536:1;19553;19570:14;;;;;;;;;;;19599:15;19418:207;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19258:375;;:::o;7:90:1:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o;434:99::-;486:6;520:5;514:12;504:22;;434:99;;;:::o;539:169::-;623:11;657:6;652:3;645:19;697:4;692:3;688:14;673:29;;539:169;;;;:::o;714:246::-;795:1;805:113;819:6;816:1;813:13;805:113;;;904:1;899:3;895:11;889:18;885:1;880:3;876:11;869:39;841:2;838:1;834:10;829:15;;805:113;;;952:1;943:6;938:3;934:16;927:27;776:184;714:246;;;:::o;966:102::-;1007:6;1058:2;1054:7;1049:2;1042:5;1038:14;1034:28;1024:38;;966:102;;;:::o;1074:377::-;1162:3;1190:39;1223:5;1190:39;:::i;:::-;1245:71;1309:6;1304:3;1245:71;:::i;:::-;1238:78;;1325:65;1383:6;1378:3;1371:4;1364:5;1360:16;1325:65;:::i;:::-;1415:29;1437:6;1415:29;:::i;:::-;1410:3;1406:39;1399:46;;1166:285;1074:377;;;;:::o;1457:313::-;1570:4;1608:2;1597:9;1593:18;1585:26;;1657:9;1651:4;1647:20;1643:1;1632:9;1628:17;1621:47;1685:78;1758:4;1749:6;1685:78;:::i;:::-;1677:86;;1457:313;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:765::-;6599:6;6607;6615;6623;6672:3;6660:9;6651:7;6647:23;6643:33;6640:120;;;6679:79;;:::i;:::-;6640:120;6799:1;6824:53;6869:7;6860:6;6849:9;6845:22;6824:53;:::i;:::-;6814:63;;6770:117;6926:2;6952:53;6997:7;6988:6;6977:9;6973:22;6952:53;:::i;:::-;6942:63;;6897:118;7054:2;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7025:118;7182:2;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7153:118;6513:765;;;;;;;:::o;7284:117::-;7393:1;7390;7383:12;7407:180;7455:77;7452:1;7445:88;7552:4;7549:1;7542:15;7576:4;7573:1;7566:15;7593:281;7676:27;7698:4;7676:27;:::i;:::-;7668:6;7664:40;7806:6;7794:10;7791:22;7770:18;7758:10;7755:34;7752:62;7749:88;;;7817:18;;:::i;:::-;7749:88;7857:10;7853:2;7846:22;7636:238;7593:281;;:::o;7880:129::-;7914:6;7941:20;;:::i;:::-;7931:30;;7970:33;7998:4;7990:6;7970:33;:::i;:::-;7880:129;;;:::o;8015:311::-;8092:4;8182:18;8174:6;8171:30;8168:56;;;8204:18;;:::i;:::-;8168:56;8254:4;8246:6;8242:17;8234:25;;8314:4;8308;8304:15;8296:23;;8015:311;;;:::o;8332:117::-;8441:1;8438;8431:12;8455:77;8492:7;8521:5;8510:16;;8455:77;;;:::o;8538:122::-;8611:24;8629:5;8611:24;:::i;:::-;8604:5;8601:35;8591:63;;8650:1;8647;8640:12;8591:63;8538:122;:::o;8666:139::-;8712:5;8750:6;8737:20;8728:29;;8766:33;8793:5;8766:33;:::i;:::-;8666:139;;;;:::o;8828:710::-;8924:5;8949:81;8965:64;9022:6;8965:64;:::i;:::-;8949:81;:::i;:::-;8940:90;;9050:5;9079:6;9072:5;9065:21;9113:4;9106:5;9102:16;9095:23;;9166:4;9158:6;9154:17;9146:6;9142:30;9195:3;9187:6;9184:15;9181:122;;;9214:79;;:::i;:::-;9181:122;9329:6;9312:220;9346:6;9341:3;9338:15;9312:220;;;9421:3;9450:37;9483:3;9471:10;9450:37;:::i;:::-;9445:3;9438:50;9517:4;9512:3;9508:14;9501:21;;9388:144;9372:4;9367:3;9363:14;9356:21;;9312:220;;;9316:21;8930:608;;8828:710;;;;;:::o;9561:370::-;9632:5;9681:3;9674:4;9666:6;9662:17;9658:27;9648:122;;9689:79;;:::i;:::-;9648:122;9806:6;9793:20;9831:94;9921:3;9913:6;9906:4;9898:6;9894:17;9831:94;:::i;:::-;9822:103;;9638:293;9561:370;;;;:::o;9937:1121::-;10057:6;10065;10073;10081;10089;10138:3;10126:9;10117:7;10113:23;10109:33;10106:120;;;10145:79;;:::i;:::-;10106:120;10265:1;10290:53;10335:7;10326:6;10315:9;10311:22;10290:53;:::i;:::-;10280:63;;10236:117;10392:2;10418:53;10463:7;10454:6;10443:9;10439:22;10418:53;:::i;:::-;10408:63;;10363:118;10520:2;10546:53;10591:7;10582:6;10571:9;10567:22;10546:53;:::i;:::-;10536:63;;10491:118;10648:2;10674:53;10719:7;10710:6;10699:9;10695:22;10674:53;:::i;:::-;10664:63;;10619:118;10804:3;10793:9;10789:19;10776:33;10836:18;10828:6;10825:30;10822:117;;;10858:79;;:::i;:::-;10822:117;10963:78;11033:7;11024:6;11013:9;11009:22;10963:78;:::i;:::-;10953:88;;10747:304;9937:1121;;;;;;;;:::o;11064:116::-;11134:21;11149:5;11134:21;:::i;:::-;11127:5;11124:32;11114:60;;11170:1;11167;11160:12;11114:60;11064:116;:::o;11186:133::-;11229:5;11267:6;11254:20;11245:29;;11283:30;11307:5;11283:30;:::i;:::-;11186:133;;;;:::o;11325:323::-;11381:6;11430:2;11418:9;11409:7;11405:23;11401:32;11398:119;;;11436:79;;:::i;:::-;11398:119;11556:1;11581:50;11623:7;11614:6;11603:9;11599:22;11581:50;:::i;:::-;11571:60;;11527:114;11325:323;;;;:::o;11654:468::-;11719:6;11727;11776:2;11764:9;11755:7;11751:23;11747:32;11744:119;;;11782:79;;:::i;:::-;11744:119;11902:1;11927:53;11972:7;11963:6;11952:9;11948:22;11927:53;:::i;:::-;11917:63;;11873:117;12029:2;12055:50;12097:7;12088:6;12077:9;12073:22;12055:50;:::i;:::-;12045:60;;12000:115;11654:468;;;;;:::o;12128:329::-;12187:6;12236:2;12224:9;12215:7;12211:23;12207:32;12204:119;;;12242:79;;:::i;:::-;12204:119;12362:1;12387:53;12432:7;12423:6;12412:9;12408:22;12387:53;:::i;:::-;12377:63;;12333:117;12128:329;;;;:::o;12463:474::-;12531:6;12539;12588:2;12576:9;12567:7;12563:23;12559:32;12556:119;;;12594:79;;:::i;:::-;12556:119;12714:1;12739:53;12784:7;12775:6;12764:9;12760:22;12739:53;:::i;:::-;12729:63;;12685:117;12841:2;12867:53;12912:7;12903:6;12892:9;12888:22;12867:53;:::i;:::-;12857:63;;12812:118;12463:474;;;;;:::o;12943:182::-;13083:34;13079:1;13071:6;13067:14;13060:58;12943:182;:::o;13131:366::-;13273:3;13294:67;13358:2;13353:3;13294:67;:::i;:::-;13287:74;;13370:93;13459:3;13370:93;:::i;:::-;13488:2;13483:3;13479:12;13472:19;;13131:366;;;:::o;13503:419::-;13669:4;13707:2;13696:9;13692:18;13684:26;;13756:9;13750:4;13746:20;13742:1;13731:9;13727:17;13720:47;13784:131;13910:4;13784:131;:::i;:::-;13776:139;;13503:419;;;:::o;13928:180::-;13976:77;13973:1;13966:88;14073:4;14070:1;14063:15;14097:4;14094:1;14087:15;14114:320;14158:6;14195:1;14189:4;14185:12;14175:22;;14242:1;14236:4;14232:12;14263:18;14253:81;;14319:4;14311:6;14307:17;14297:27;;14253:81;14381:2;14373:6;14370:14;14350:18;14347:38;14344:84;;14400:18;;:::i;:::-;14344:84;14165:269;14114:320;;;:::o;14440:227::-;14580:34;14576:1;14568:6;14564:14;14557:58;14649:10;14644:2;14636:6;14632:15;14625:35;14440:227;:::o;14673:366::-;14815:3;14836:67;14900:2;14895:3;14836:67;:::i;:::-;14829:74;;14912:93;15001:3;14912:93;:::i;:::-;15030:2;15025:3;15021:12;15014:19;;14673:366;;;:::o;15045:419::-;15211:4;15249:2;15238:9;15234:18;15226:26;;15298:9;15292:4;15288:20;15284:1;15273:9;15269:17;15262:47;15326:131;15452:4;15326:131;:::i;:::-;15318:139;;15045:419;;;:::o;15470:174::-;15610:26;15606:1;15598:6;15594:14;15587:50;15470:174;:::o;15650:366::-;15792:3;15813:67;15877:2;15872:3;15813:67;:::i;:::-;15806:74;;15889:93;15978:3;15889:93;:::i;:::-;16007:2;16002:3;15998:12;15991:19;;15650:366;;;:::o;16022:419::-;16188:4;16226:2;16215:9;16211:18;16203:26;;16275:9;16269:4;16265:20;16261:1;16250:9;16246:17;16239:47;16303:131;16429:4;16303:131;:::i;:::-;16295:139;;16022:419;;;:::o;16447:180::-;16495:77;16492:1;16485:88;16592:4;16589:1;16582:15;16616:4;16613:1;16606:15;16633:191;16673:3;16692:20;16710:1;16692:20;:::i;:::-;16687:25;;16726:20;16744:1;16726:20;:::i;:::-;16721:25;;16769:1;16766;16762:9;16755:16;;16790:3;16787:1;16784:10;16781:36;;;16797:18;;:::i;:::-;16781:36;16633:191;;;;:::o;16830:181::-;16970:33;16966:1;16958:6;16954:14;16947:57;16830:181;:::o;17017:366::-;17159:3;17180:67;17244:2;17239:3;17180:67;:::i;:::-;17173:74;;17256:93;17345:3;17256:93;:::i;:::-;17374:2;17369:3;17365:12;17358:19;;17017:366;;;:::o;17389:419::-;17555:4;17593:2;17582:9;17578:18;17570:26;;17642:9;17636:4;17632:20;17628:1;17617:9;17613:17;17606:47;17670:131;17796:4;17670:131;:::i;:::-;17662:139;;17389:419;;;:::o;17814:410::-;17854:7;17877:20;17895:1;17877:20;:::i;:::-;17872:25;;17911:20;17929:1;17911:20;:::i;:::-;17906:25;;17966:1;17963;17959:9;17988:30;18006:11;17988:30;:::i;:::-;17977:41;;18167:1;18158:7;18154:15;18151:1;18148:22;18128:1;18121:9;18101:83;18078:139;;18197:18;;:::i;:::-;18078:139;17862:362;17814:410;;;;:::o;18230:180::-;18278:77;18275:1;18268:88;18375:4;18372:1;18365:15;18399:4;18396:1;18389:15;18416:185;18456:1;18473:20;18491:1;18473:20;:::i;:::-;18468:25;;18507:20;18525:1;18507:20;:::i;:::-;18502:25;;18546:1;18536:35;;18551:18;;:::i;:::-;18536:35;18593:1;18590;18586:9;18581:14;;18416:185;;;;:::o;18607:222::-;18747:34;18743:1;18735:6;18731:14;18724:58;18816:5;18811:2;18803:6;18799:15;18792:30;18607:222;:::o;18835:366::-;18977:3;18998:67;19062:2;19057:3;18998:67;:::i;:::-;18991:74;;19074:93;19163:3;19074:93;:::i;:::-;19192:2;19187:3;19183:12;19176:19;;18835:366;;;:::o;19207:419::-;19373:4;19411:2;19400:9;19396:18;19388:26;;19460:9;19454:4;19450:20;19446:1;19435:9;19431:17;19424:47;19488:131;19614:4;19488:131;:::i;:::-;19480:139;;19207:419;;;:::o;19632:224::-;19772:34;19768:1;19760:6;19756:14;19749:58;19841:7;19836:2;19828:6;19824:15;19817:32;19632:224;:::o;19862:366::-;20004:3;20025:67;20089:2;20084:3;20025:67;:::i;:::-;20018:74;;20101:93;20190:3;20101:93;:::i;:::-;20219:2;20214:3;20210:12;20203:19;;19862:366;;;:::o;20234:419::-;20400:4;20438:2;20427:9;20423:18;20415:26;;20487:9;20481:4;20477:20;20473:1;20462:9;20458:17;20451:47;20515:131;20641:4;20515:131;:::i;:::-;20507:139;;20234:419;;;:::o;20659:240::-;20799:34;20795:1;20787:6;20783:14;20776:58;20868:23;20863:2;20855:6;20851:15;20844:48;20659:240;:::o;20905:366::-;21047:3;21068:67;21132:2;21127:3;21068:67;:::i;:::-;21061:74;;21144:93;21233:3;21144:93;:::i;:::-;21262:2;21257:3;21253:12;21246:19;;20905:366;;;:::o;21277:419::-;21443:4;21481:2;21470:9;21466:18;21458:26;;21530:9;21524:4;21520:20;21516:1;21505:9;21501:17;21494:47;21558:131;21684:4;21558:131;:::i;:::-;21550:139;;21277:419;;;:::o;21702:239::-;21842:34;21838:1;21830:6;21826:14;21819:58;21911:22;21906:2;21898:6;21894:15;21887:47;21702:239;:::o;21947:366::-;22089:3;22110:67;22174:2;22169:3;22110:67;:::i;:::-;22103:74;;22186:93;22275:3;22186:93;:::i;:::-;22304:2;22299:3;22295:12;22288:19;;21947:366;;;:::o;22319:419::-;22485:4;22523:2;22512:9;22508:18;22500:26;;22572:9;22566:4;22562:20;22558:1;22547:9;22543:17;22536:47;22600:131;22726:4;22600:131;:::i;:::-;22592:139;;22319:419;;;:::o;22744:225::-;22884:34;22880:1;22872:6;22868:14;22861:58;22953:8;22948:2;22940:6;22936:15;22929:33;22744:225;:::o;22975:366::-;23117:3;23138:67;23202:2;23197:3;23138:67;:::i;:::-;23131:74;;23214:93;23303:3;23214:93;:::i;:::-;23332:2;23327:3;23323:12;23316:19;;22975:366;;;:::o;23347:419::-;23513:4;23551:2;23540:9;23536:18;23528:26;;23600:9;23594:4;23590:20;23586:1;23575:9;23571:17;23564:47;23628:131;23754:4;23628:131;:::i;:::-;23620:139;;23347:419;;;:::o;23772:223::-;23912:34;23908:1;23900:6;23896:14;23889:58;23981:6;23976:2;23968:6;23964:15;23957:31;23772:223;:::o;24001:366::-;24143:3;24164:67;24228:2;24223:3;24164:67;:::i;:::-;24157:74;;24240:93;24329:3;24240:93;:::i;:::-;24358:2;24353:3;24349:12;24342:19;;24001:366;;;:::o;24373:419::-;24539:4;24577:2;24566:9;24562:18;24554:26;;24626:9;24620:4;24616:20;24612:1;24601:9;24597:17;24590:47;24654:131;24780:4;24654:131;:::i;:::-;24646:139;;24373:419;;;:::o;24798:221::-;24938:34;24934:1;24926:6;24922:14;24915:58;25007:4;25002:2;24994:6;24990:15;24983:29;24798:221;:::o;25025:366::-;25167:3;25188:67;25252:2;25247:3;25188:67;:::i;:::-;25181:74;;25264:93;25353:3;25264:93;:::i;:::-;25382:2;25377:3;25373:12;25366:19;;25025:366;;;:::o;25397:419::-;25563:4;25601:2;25590:9;25586:18;25578:26;;25650:9;25644:4;25640:20;25636:1;25625:9;25621:17;25614:47;25678:131;25804:4;25678:131;:::i;:::-;25670:139;;25397:419;;;:::o;25822:232::-;25962:34;25958:1;25950:6;25946:14;25939:58;26031:15;26026:2;26018:6;26014:15;26007:40;25822:232;:::o;26060:366::-;26202:3;26223:67;26287:2;26282:3;26223:67;:::i;:::-;26216:74;;26299:93;26388:3;26299:93;:::i;:::-;26417:2;26412:3;26408:12;26401:19;;26060:366;;;:::o;26432:419::-;26598:4;26636:2;26625:9;26621:18;26613:26;;26685:9;26679:4;26675:20;26671:1;26660:9;26656:17;26649:47;26713:131;26839:4;26713:131;:::i;:::-;26705:139;;26432:419;;;:::o;26857:230::-;26997:34;26993:1;26985:6;26981:14;26974:58;27066:13;27061:2;27053:6;27049:15;27042:38;26857:230;:::o;27093:366::-;27235:3;27256:67;27320:2;27315:3;27256:67;:::i;:::-;27249:74;;27332:93;27421:3;27332:93;:::i;:::-;27450:2;27445:3;27441:12;27434:19;;27093:366;;;:::o;27465:419::-;27631:4;27669:2;27658:9;27654:18;27646:26;;27718:9;27712:4;27708:20;27704:1;27693:9;27689:17;27682:47;27746:131;27872:4;27746:131;:::i;:::-;27738:139;;27465:419;;;:::o;27890:172::-;28030:24;28026:1;28018:6;28014:14;28007:48;27890:172;:::o;28068:366::-;28210:3;28231:67;28295:2;28290:3;28231:67;:::i;:::-;28224:74;;28307:93;28396:3;28307:93;:::i;:::-;28425:2;28420:3;28416:12;28409:19;;28068:366;;;:::o;28440:419::-;28606:4;28644:2;28633:9;28629:18;28621:26;;28693:9;28687:4;28683:20;28679:1;28668:9;28664:17;28657:47;28721:131;28847:4;28721:131;:::i;:::-;28713:139;;28440:419;;;:::o;28865:240::-;29005:34;29001:1;28993:6;28989:14;28982:58;29074:23;29069:2;29061:6;29057:15;29050:48;28865:240;:::o;29111:366::-;29253:3;29274:67;29338:2;29333:3;29274:67;:::i;:::-;29267:74;;29350:93;29439:3;29350:93;:::i;:::-;29468:2;29463:3;29459:12;29452:19;;29111:366;;;:::o;29483:419::-;29649:4;29687:2;29676:9;29672:18;29664:26;;29736:9;29730:4;29726:20;29722:1;29711:9;29707:17;29700:47;29764:131;29890:4;29764:131;:::i;:::-;29756:139;;29483:419;;;:::o;29908:169::-;30048:21;30044:1;30036:6;30032:14;30025:45;29908:169;:::o;30083:366::-;30225:3;30246:67;30310:2;30305:3;30246:67;:::i;:::-;30239:74;;30322:93;30411:3;30322:93;:::i;:::-;30440:2;30435:3;30431:12;30424:19;;30083:366;;;:::o;30455:419::-;30621:4;30659:2;30648:9;30644:18;30636:26;;30708:9;30702:4;30698:20;30694:1;30683:9;30679:17;30672:47;30736:131;30862:4;30736:131;:::i;:::-;30728:139;;30455:419;;;:::o;30880:241::-;31020:34;31016:1;31008:6;31004:14;30997:58;31089:24;31084:2;31076:6;31072:15;31065:49;30880:241;:::o;31127:366::-;31269:3;31290:67;31354:2;31349:3;31290:67;:::i;:::-;31283:74;;31366:93;31455:3;31366:93;:::i;:::-;31484:2;31479:3;31475:12;31468:19;;31127:366;;;:::o;31499:419::-;31665:4;31703:2;31692:9;31688:18;31680:26;;31752:9;31746:4;31742:20;31738:1;31727:9;31723:17;31716:47;31780:131;31906:4;31780:131;:::i;:::-;31772:139;;31499:419;;;:::o;31924:194::-;31964:4;31984:20;32002:1;31984:20;:::i;:::-;31979:25;;32018:20;32036:1;32018:20;:::i;:::-;32013:25;;32062:1;32059;32055:9;32047:17;;32086:1;32080:4;32077:11;32074:37;;;32091:18;;:::i;:::-;32074:37;31924:194;;;;:::o;32124:180::-;32172:77;32169:1;32162:88;32269:4;32266:1;32259:15;32293:4;32290:1;32283:15;32310:233;32349:3;32372:24;32390:5;32372:24;:::i;:::-;32363:33;;32418:66;32411:5;32408:77;32405:103;;32488:18;;:::i;:::-;32405:103;32535:1;32528:5;32524:13;32517:20;;32310:233;;;:::o;32549:94::-;32582:8;32630:5;32626:2;32622:14;32601:35;;32549:94;;;:::o;32649:::-;32688:7;32717:20;32731:5;32717:20;:::i;:::-;32706:31;;32649:94;;;:::o;32749:100::-;32788:7;32817:26;32837:5;32817:26;:::i;:::-;32806:37;;32749:100;;;:::o;32855:157::-;32960:45;32980:24;32998:5;32980:24;:::i;:::-;32960:45;:::i;:::-;32955:3;32948:58;32855:157;;:::o;33018:256::-;33130:3;33145:75;33216:3;33207:6;33145:75;:::i;:::-;33245:2;33240:3;33236:12;33229:19;;33265:3;33258:10;;33018:256;;;;:::o;33280:224::-;33420:34;33416:1;33408:6;33404:14;33397:58;33489:7;33484:2;33476:6;33472:15;33465:32;33280:224;:::o;33510:366::-;33652:3;33673:67;33737:2;33732:3;33673:67;:::i;:::-;33666:74;;33749:93;33838:3;33749:93;:::i;:::-;33867:2;33862:3;33858:12;33851:19;;33510:366;;;:::o;33882:419::-;34048:4;34086:2;34075:9;34071:18;34063:26;;34135:9;34129:4;34125:20;34121:1;34110:9;34106:17;34099:47;34163:131;34289:4;34163:131;:::i;:::-;34155:139;;33882:419;;;:::o;34307:222::-;34447:34;34443:1;34435:6;34431:14;34424:58;34516:5;34511:2;34503:6;34499:15;34492:30;34307:222;:::o;34535:366::-;34677:3;34698:67;34762:2;34757:3;34698:67;:::i;:::-;34691:74;;34774:93;34863:3;34774:93;:::i;:::-;34892:2;34887:3;34883:12;34876:19;;34535:366;;;:::o;34907:419::-;35073:4;35111:2;35100:9;35096:18;35088:26;;35160:9;35154:4;35150:20;35146:1;35135:9;35131:17;35124:47;35188:131;35314:4;35188:131;:::i;:::-;35180:139;;34907:419;;;:::o;35332:225::-;35472:34;35468:1;35460:6;35456:14;35449:58;35541:8;35536:2;35528:6;35524:15;35517:33;35332:225;:::o;35563:366::-;35705:3;35726:67;35790:2;35785:3;35726:67;:::i;:::-;35719:74;;35802:93;35891:3;35802:93;:::i;:::-;35920:2;35915:3;35911:12;35904:19;;35563:366;;;:::o;35935:419::-;36101:4;36139:2;36128:9;36124:18;36116:26;;36188:9;36182:4;36178:20;36174:1;36163:9;36159:17;36152:47;36216:131;36342:4;36216:131;:::i;:::-;36208:139;;35935:419;;;:::o;36360:442::-;36509:4;36547:2;36536:9;36532:18;36524:26;;36560:71;36628:1;36617:9;36613:17;36604:6;36560:71;:::i;:::-;36641:72;36709:2;36698:9;36694:18;36685:6;36641:72;:::i;:::-;36723;36791:2;36780:9;36776:18;36767:6;36723:72;:::i;:::-;36360:442;;;;;;:::o;36808:147::-;36909:11;36946:3;36931:18;;36808:147;;;;:::o;36961:114::-;;:::o;37081:398::-;37240:3;37261:83;37342:1;37337:3;37261:83;:::i;:::-;37254:90;;37353:93;37442:3;37353:93;:::i;:::-;37471:1;37466:3;37462:11;37455:18;;37081:398;;;:::o;37485:379::-;37669:3;37691:147;37834:3;37691:147;:::i;:::-;37684:154;;37855:3;37848:10;;37485:379;;;:::o;37870:143::-;37927:5;37958:6;37952:13;37943:22;;37974:33;38001:5;37974:33;:::i;:::-;37870:143;;;;:::o;38019:351::-;38089:6;38138:2;38126:9;38117:7;38113:23;38109:32;38106:119;;;38144:79;;:::i;:::-;38106:119;38264:1;38289:64;38345:7;38336:6;38325:9;38321:22;38289:64;:::i;:::-;38279:74;;38235:128;38019:351;;;;:::o;38376:85::-;38421:7;38450:5;38439:16;;38376:85;;;:::o;38467:158::-;38525:9;38558:61;38576:42;38585:32;38611:5;38585:32;:::i;:::-;38576:42;:::i;:::-;38558:61;:::i;:::-;38545:74;;38467:158;;;:::o;38631:147::-;38726:45;38765:5;38726:45;:::i;:::-;38721:3;38714:58;38631:147;;:::o;38784:114::-;38851:6;38885:5;38879:12;38869:22;;38784:114;;;:::o;38904:184::-;39003:11;39037:6;39032:3;39025:19;39077:4;39072:3;39068:14;39053:29;;38904:184;;;;:::o;39094:132::-;39161:4;39184:3;39176:11;;39214:4;39209:3;39205:14;39197:22;;39094:132;;;:::o;39232:108::-;39309:24;39327:5;39309:24;:::i;:::-;39304:3;39297:37;39232:108;;:::o;39346:179::-;39415:10;39436:46;39478:3;39470:6;39436:46;:::i;:::-;39514:4;39509:3;39505:14;39491:28;;39346:179;;;;:::o;39531:113::-;39601:4;39633;39628:3;39624:14;39616:22;;39531:113;;;:::o;39680:732::-;39799:3;39828:54;39876:5;39828:54;:::i;:::-;39898:86;39977:6;39972:3;39898:86;:::i;:::-;39891:93;;40008:56;40058:5;40008:56;:::i;:::-;40087:7;40118:1;40103:284;40128:6;40125:1;40122:13;40103:284;;;40204:6;40198:13;40231:63;40290:3;40275:13;40231:63;:::i;:::-;40224:70;;40317:60;40370:6;40317:60;:::i;:::-;40307:70;;40163:224;40150:1;40147;40143:9;40138:14;;40103:284;;;40107:14;40403:3;40396:10;;39804:608;;;39680:732;;;;:::o;40418:831::-;40681:4;40719:3;40708:9;40704:19;40696:27;;40733:71;40801:1;40790:9;40786:17;40777:6;40733:71;:::i;:::-;40814:80;40890:2;40879:9;40875:18;40866:6;40814:80;:::i;:::-;40941:9;40935:4;40931:20;40926:2;40915:9;40911:18;40904:48;40969:108;41072:4;41063:6;40969:108;:::i;:::-;40961:116;;41087:72;41155:2;41144:9;41140:18;41131:6;41087:72;:::i;:::-;41169:73;41237:3;41226:9;41222:19;41213:6;41169:73;:::i;:::-;40418:831;;;;;;;;:::o;41255:807::-;41504:4;41542:3;41531:9;41527:19;41519:27;;41556:71;41624:1;41613:9;41609:17;41600:6;41556:71;:::i;:::-;41637:72;41705:2;41694:9;41690:18;41681:6;41637:72;:::i;:::-;41719:80;41795:2;41784:9;41780:18;41771:6;41719:80;:::i;:::-;41809;41885:2;41874:9;41870:18;41861:6;41809:80;:::i;:::-;41899:73;41967:3;41956:9;41952:19;41943:6;41899:73;:::i;:::-;41982;42050:3;42039:9;42035:19;42026:6;41982:73;:::i;:::-;41255:807;;;;;;;;;:::o;42068:143::-;42125:5;42156:6;42150:13;42141:22;;42172:33;42199:5;42172:33;:::i;:::-;42068:143;;;;:::o;42217:663::-;42305:6;42313;42321;42370:2;42358:9;42349:7;42345:23;42341:32;42338:119;;;42376:79;;:::i;:::-;42338:119;42496:1;42521:64;42577:7;42568:6;42557:9;42553:22;42521:64;:::i;:::-;42511:74;;42467:128;42634:2;42660:64;42716:7;42707:6;42696:9;42692:22;42660:64;:::i;:::-;42650:74;;42605:129;42773:2;42799:64;42855:7;42846:6;42835:9;42831:22;42799:64;:::i;:::-;42789:74;;42744:129;42217:663;;;;;:::o

Swarm Source

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