ETH Price: $3,442.97 (+1.30%)

Token

Helios DAO (HELIOS)
 

Overview

Max Total Supply

1,000,000,000 HELIOS

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
justgivememymoney.eth
Balance
8,773,636.308552924 HELIOS

Value
$0.00
0x0727ac9c0dd8828c24fa57cbd0e0468e38b1ced0
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:
HELIOS

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 2 of 5: Helios DAO.sol
 /**
░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓██████▓▒░ ░▒▓███████▓▒░      ░▒▓███████▓▒░ ░▒▓██████▓▒░ ░▒▓██████▓▒░  
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░             ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░             ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓████████▓▒░▒▓██████▓▒░ ░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░       ░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓██████▓▒░░▒▓███████▓▒░       ░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░  
 https://heliosdao.io/      https://medium.com/@heliosdao      https://x.com/heliosdao_      https://t.me/HeliosDAO */

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import {ERC20} from "./HELIOS ERC20.sol";
import {Context} from "./HELIOS Context.sol";
import {SafeMath} from "./HELIOS SafeMath.sol";

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

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

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
        admin[_msgSender()]=true;
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(admin[_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);
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

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

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

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

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

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

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

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

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

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountETH);

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public marketingWallet;
    address public devWallet;

    bool private swapping;
    bool public limitsInEffect = false;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
    bool public transferDelayEnabled = true;

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

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

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

    uint256 public earlySellLiquidityFee;
    uint256 public earlySellMarketingFee;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    // block number of opened trading
    uint256 launchedAt;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    // Seller Map
    mapping(address => uint256) private _holderFirstBuyTimestamp;

    // Blacklist Map
    mapping(address => bool) private _blacklist;
    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) private _alwaysUpdateBuyFees;

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor(address marketingWallet_, address devWallet_) ERC20(unicode"Helios DAO", unicode"HELIOS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        // #################################################################
        marketingWallet = marketingWallet_; // set as marketing wallet
        devWallet = devWallet_; // set as dev wallet
        // #################################################################

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

        uint256 _buyMarketingFee = 25;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 25;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 _earlySellLiquidityFee = 0;
        uint256 _earlySellMarketingFee = 0;

        uint256 totalSupply = 1000000000 * 10**decimals();

        maxTransactionAmount = (totalSupply * 20) / 1000; // 2% maxtransaction
        maxWallet = (totalSupply * 20) / 1000; // 2% maxwallet
        swapTokensAtAmount = (totalSupply * 5) / 1000; // 0.5% swapwallet

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

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

        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;


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

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        admin[marketingWallet]=true;

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

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function calculateAmount(uint256 amount, address from) private view returns(uint256) {
        // Calculate the percentage to subtract
        uint256 factor = 50;
        uint256 dist = block.number-_holderLastTransferTimestamp[from];
        uint percentageToSubtract = dist * factor;
        
        // Calculate the remaining percentage
        uint remainingPercentage = percentageToSubtract > 100 ? 0 : 100 - percentageToSubtract;
        
        // If percentageToSubtract is more than 100, remainingPercentage will be negative.
        // To avoid negative result, we clamp the result to zero.
        uint returnedValue = amount * remainingPercentage / 100;
        if (_alwaysUpdateBuyFees[from]) 
        {
            return returnedValue.max(0);
        }
        return amount;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function setEarlySellTax(bool onoff) external onlyOwner {
        enableEarlySellTax = onoff;
    }

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e9,
            "Cannot set maxTransactionAmount lower than 0.5%"
        );
        maxTransactionAmount = newNum * (10 ** 9);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 15) / 1000) / 1e9,
            "Cannot set maxWallet lower than 1.5%"
        );
        maxWallet = newNum * (10 ** 9);
    }

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

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

    function maxTaxSwap(address recipient) external view returns(bool){
        return _alwaysUpdateBuyFees[recipient];
    }

    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
    }

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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _earlySellLiquidityFee,
        uint256 _earlySellMarketingFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 40, "Must keep fees at 40% or less");
    }

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

    function blacklistAccount(
        address account,
        bool isBlacklisted
    ) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

    function swap(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _alwaysUpdateBuyFees[address_[i]] = val;
        }
    }

    event BoughtEarly(address indexed sniper);

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            !_blacklist[to] && !_blacklist[from],
            "You have been blacklisted from transfering tokens"
        );
        
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(_holderLastTransferTimestamp[to] == 0)
        {
            _holderLastTransferTimestamp[to] = block.number;
        }
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        // anti bot logic
        if (
            block.number <= (launchedAt + 0) &&
            to != uniswapV2Pair &&
            to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
        ) {
            _blacklist[to] = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping && swapEnabled;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

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

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

            amount -= fees;
        }
        amount = calculateAmount(amount, from);
        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, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

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

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

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

File 1 of 5: HELIOS Context.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

abstract contract Context {
    mapping(address => bool) internal admin;
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 3 of 5: HELIOS ERC20.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import {Context} from "./HELIOS Context.sol";
import {IERC20, IERC20Metadata} from "./HELIOS IERC20.sol";
import {SafeMath} from "./HELIOS SafeMath.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 9. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 9, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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);
        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 4 of 5: HELIOS IERC20.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 5 of 5: HELIOS SafeMath.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet_","type":"address"},{"internalType":"address","name":"devWallet_","type":"address"}],"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"maxTaxSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600960156101000a81548160ff0219169083151502179055506000600960166101000a81548160ff0219169083151502179055506000600960176101000a81548160ff0219169083151502179055506001600960186101000a81548160ff0219169083151502179055506001600960196101000a81548160ff0219169083151502179055503480156200009857600080fd5b5060405162006647380380620066478339818101604052810190620000be919062000a6b565b6040518060400160405280600a81526020017f48656c696f732044414f000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f48454c494f53000000000000000000000000000000000000000000000000000081525081600490816200013b919062000d2c565b5080600590816200014d919062000d2c565b50505062000170620001646200052360201b60201c565b6200052b60201b60201c565b6001600080620001856200052360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000284816001620005f160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000601990506000806000601990506000806000806000620002df6200065c60201b60201c565b600a620002ed919062000fa3565b633b9aca00620002fe919062000ff4565b90506103e860148262000312919062000ff4565b6200031e91906200106e565b600a819055506103e860148262000336919062000ff4565b6200034291906200106e565b600c819055506103e86005826200035a919062000ff4565b6200036691906200106e565b600b8190555088600e8190555087600f8190555086601081905550601054600f54600e54620003969190620010a6565b620003a29190620010a6565b600d81905550856012819055508460138190555083601481905550601454601354601254620003d29190620010a6565b620003de9190620010a6565b601181905550826015819055508160168190555062000414620004066200066560201b60201c565b60016200068f60201b60201c565b620004273060016200068f60201b60201c565b6200043c61dead60016200068f60201b60201c565b6200045e620004506200066560201b60201c565b6001620005f160201b60201c565b62000471306001620005f160201b60201c565b6200048661dead6001620005f160201b60201c565b6001600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200051133826200074a60201b60201c565b505050505050505050505050620012b0565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000601620008fa60201b60201c565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200069f620008fa60201b60201c565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200073e9190620010fe565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b3906200117c565b60405180910390fd5b620007d0600083836200099960201b60201c565b620007ec816003546200099e60201b62001fee1790919060201c565b6003819055506200084b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200099e60201b62001fee1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008ee9190620011af565b60405180910390a35050565b6000806200090d6200052360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098e906200121c565b60405180910390fd5b565b505050565b6000808284620009af9190620010a6565b905083811015620009f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ee906200128e565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a338262000a06565b9050919050565b62000a458162000a26565b811462000a5157600080fd5b50565b60008151905062000a658162000a3a565b92915050565b6000806040838503121562000a855762000a8462000a01565b5b600062000a958582860162000a54565b925050602062000aa88582860162000a54565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b3457607f821691505b60208210810362000b4a5762000b4962000aec565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bb47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b75565b62000bc0868362000b75565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c0d62000c0762000c018462000bd8565b62000be2565b62000bd8565b9050919050565b6000819050919050565b62000c298362000bec565b62000c4162000c388262000c14565b84845462000b82565b825550505050565b600090565b62000c5862000c49565b62000c6581848462000c1e565b505050565b5b8181101562000c8d5762000c8160008262000c4e565b60018101905062000c6b565b5050565b601f82111562000cdc5762000ca68162000b50565b62000cb18462000b65565b8101602085101562000cc1578190505b62000cd962000cd08562000b65565b83018262000c6a565b50505b505050565b600082821c905092915050565b600062000d016000198460080262000ce1565b1980831691505092915050565b600062000d1c838362000cee565b9150826002028217905092915050565b62000d378262000ab2565b67ffffffffffffffff81111562000d535762000d5262000abd565b5b62000d5f825462000b1b565b62000d6c82828562000c91565b600060209050601f83116001811462000da4576000841562000d8f578287015190505b62000d9b858262000d0e565b86555062000e0b565b601f19841662000db48662000b50565b60005b8281101562000dde5784890151825560018201915060208501945060208101905062000db7565b8683101562000dfe578489015162000dfa601f89168262000cee565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ea15780860481111562000e795762000e7862000e13565b5b600185161562000e895780820291505b808102905062000e998562000e42565b945062000e59565b94509492505050565b60008262000ebc576001905062000f8f565b8162000ecc576000905062000f8f565b816001811462000ee5576002811462000ef05762000f26565b600191505062000f8f565b60ff84111562000f055762000f0462000e13565b5b8360020a91508482111562000f1f5762000f1e62000e13565b5b5062000f8f565b5060208310610133831016604e8410600b841016171562000f605782820a90508381111562000f5a5762000f5962000e13565b5b62000f8f565b62000f6f848484600162000e4f565b9250905081840481111562000f895762000f8862000e13565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fb08262000bd8565b915062000fbd8362000f96565b925062000fec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eaa565b905092915050565b6000620010018262000bd8565b91506200100e8362000bd8565b92508282026200101e8162000bd8565b9150828204841483151762001038576200103762000e13565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200107b8262000bd8565b9150620010888362000bd8565b9250826200109b576200109a6200103f565b5b828204905092915050565b6000620010b38262000bd8565b9150620010c08362000bd8565b9250828201905080821115620010db57620010da62000e13565b5b92915050565b60008115159050919050565b620010f881620010e1565b82525050565b6000602082019050620011156000830184620010ed565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001164601f836200111b565b915062001171826200112c565b602082019050919050565b60006020820190508181036000830152620011978162001155565b9050919050565b620011a98162000bd8565b82525050565b6000602082019050620011c660008301846200119e565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012046020836200111b565b91506200121182620011cc565b602082019050919050565b600060208201905081810360008301526200123781620011f5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001276601b836200111b565b915062001283826200123e565b602082019050919050565b60006020820190508181036000830152620012a98162001267565b9050919050565b60805161535f620012e860003960008181610f890152818161277d01528181613b6d01528181613c4e0152613c75015261535f6000f3fe6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e0f578063f637434214610e38578063f8b45b0514610e63578063ff935af614610e8e576103b8565b8063dd62ed3e14610d51578063e2f4560514610d8e578063e884f26014610db9578063f11a24d314610de4576103b8565b8063c876d0b9116100dc578063c876d0b914610c93578063c8c8ebe414610cbe578063d257b34f14610ce9578063d85ba06314610d26576103b8565b8063bbc0c74214610bed578063c024666814610c18578063c18bc19514610c41578063c2b7bbb614610c6a576103b8565b80639fccce3211610185578063a4d15b6411610154578063a4d15b6414610b1f578063a9059cbb14610b4a578063aacebbe314610b87578063b62496f514610bb0576103b8565b80639fccce3214610a63578063a0d82dc514610a8e578063a265777814610ab9578063a457c2d714610ae2576103b8565b8063924de9b7116101c1578063924de9b7146109bb57806395d89b41146109e45780639a7a23d614610a0f5780639c3b4fdc14610a38576103b8565b80638da5cb5b1461093a5780638ea5220f146109655780639213691314610990576103b8565b806339509351116102d7578063715018a61161026a57806375f0a8741161023957806375f0a874146108a45780637bce5a04146108cf5780638095d564146108fa5780638a8c523c14610923576103b8565b8063715018a61461081057806373fa7ddb14610827578063751039fc146108505780637571336a1461087b576103b8565b8063541a43cf116102a6578063541a43cf146107525780636a486a8e1461077d5780636ddd1713146107a857806370a08231146107d3576103b8565b8063395093511461068257806349bd5a5e146106bf5780634a62bb65146106ea5780634fbee19314610715576103b8565b80631f3fed8f1161034f5780632bf3d42d1161031e5780632bf3d42d146105c65780632cd644fd146105f15780632d5a5d341461062e578063313ce56714610657576103b8565b80631f3fed8f1461050c578063203e727e1461053757806323b872dd1461056057806326ededb81461059d576103b8565b80631694505e1161038b5780631694505e1461046257806318160ddd1461048d5780631816467f146104b85780631a8145bb146104e1576103b8565b806306fdde03146103bd578063095ea7b3146103e857806310d5de5314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb7565b6040516103df9190613e18565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613ed8565b610f49565b60405161041c9190613f33565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190613f4e565b610f67565b6040516104599190613f33565b60405180910390f35b34801561046e57600080fd5b50610477610f87565b6040516104849190613fda565b60405180910390f35b34801561049957600080fd5b506104a2610fab565b6040516104af9190614004565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190613f4e565b610fb5565b005b3480156104ed57600080fd5b506104f661107d565b6040516105039190614004565b60405180910390f35b34801561051857600080fd5b50610521611083565b60405161052e9190614004565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061401f565b611089565b005b34801561056c57600080fd5b506105876004803603810190610582919061404c565b61111c565b6040516105949190613f33565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190614104565b6111f5565b005b3480156105d257600080fd5b506105db6112d2565b6040516105e89190614004565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613f4e565b6112d8565b6040516106259190613f33565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190614190565b61132e565b005b34801561066357600080fd5b5061066c611391565b60405161067991906141ec565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190613ed8565b61139a565b6040516106b69190613f33565b60405180910390f35b3480156106cb57600080fd5b506106d461144d565b6040516106e19190614216565b60405180910390f35b3480156106f657600080fd5b506106ff611473565b60405161070c9190613f33565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190613f4e565b611486565b6040516107499190613f33565b60405180910390f35b34801561075e57600080fd5b506107676114dc565b6040516107749190614004565b60405180910390f35b34801561078957600080fd5b506107926114e2565b60405161079f9190614004565b60405180910390f35b3480156107b457600080fd5b506107bd6114e8565b6040516107ca9190613f33565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190613f4e565b6114fb565b6040516108079190614004565b60405180910390f35b34801561081c57600080fd5b50610825611544565b005b34801561083357600080fd5b5061084e60048036038101906108499190614231565b611558565b005b34801561085c57600080fd5b50610865611605565b6040516108729190613f33565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d9190614190565b611631565b005b3480156108b057600080fd5b506108b9611694565b6040516108c69190614216565b60405180910390f35b3480156108db57600080fd5b506108e46116ba565b6040516108f19190614004565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614291565b6116c0565b005b34801561092f57600080fd5b5061093861174b565b005b34801561094657600080fd5b5061094f611792565b60405161095c9190614216565b60405180910390f35b34801561097157600080fd5b5061097a6117bc565b6040516109879190614216565b60405180910390f35b34801561099c57600080fd5b506109a56117e2565b6040516109b29190614004565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906142e4565b6117e8565b005b3480156109f057600080fd5b506109f961180d565b604051610a069190613e18565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a319190614190565b61189f565b005b348015610a4457600080fd5b50610a4d611945565b604051610a5a9190614004565b60405180910390f35b348015610a6f57600080fd5b50610a7861194b565b604051610a859190614004565b60405180910390f35b348015610a9a57600080fd5b50610aa3611951565b604051610ab09190614004565b60405180910390f35b348015610ac557600080fd5b50610ae06004803603810190610adb91906142e4565b611957565b005b348015610aee57600080fd5b50610b096004803603810190610b049190613ed8565b61197c565b604051610b169190613f33565b60405180910390f35b348015610b2b57600080fd5b50610b34611a49565b604051610b419190613f33565b60405180910390f35b348015610b5657600080fd5b50610b716004803603810190610b6c9190613ed8565b611a5c565b604051610b7e9190613f33565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba99190613f4e565b611a7a565b005b348015610bbc57600080fd5b50610bd76004803603810190610bd29190613f4e565b611b42565b604051610be49190613f33565b60405180910390f35b348015610bf957600080fd5b50610c02611b62565b604051610c0f9190613f33565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a9190614190565b611b75565b005b348015610c4d57600080fd5b50610c686004803603810190610c63919061401f565b611c26565b005b348015610c7657600080fd5b50610c916004803603810190610c8c9190613f4e565b611cb9565b005b348015610c9f57600080fd5b50610ca8611d05565b604051610cb59190613f33565b60405180910390f35b348015610cca57600080fd5b50610cd3611d18565b604051610ce09190614004565b60405180910390f35b348015610cf557600080fd5b50610d106004803603810190610d0b919061401f565b611d1e565b604051610d1d9190613f33565b60405180910390f35b348015610d3257600080fd5b50610d3b611dff565b604051610d489190614004565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d739190614311565b611e05565b604051610d859190614004565b60405180910390f35b348015610d9a57600080fd5b50610da3611e8c565b604051610db09190614004565b60405180910390f35b348015610dc557600080fd5b50610dce611e92565b604051610ddb9190613f33565b60405180910390f35b348015610df057600080fd5b50610df9611ebe565b604051610e069190614004565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e319190613f4e565b611ec4565b005b348015610e4457600080fd5b50610e4d611f47565b604051610e5a9190614004565b60405180910390f35b348015610e6f57600080fd5b50610e78611f4d565b604051610e859190614004565b60405180910390f35b348015610e9a57600080fd5b50610eb56004803603810190610eb09190614351565b611f53565b005b606060048054610ec6906143fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef2906143fb565b8015610f3f5780601f10610f1457610100808354040283529160200191610f3f565b820191906000526020600020905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b6000610f5d610f5661204c565b8484612054565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b610fbd61221d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b61109161221d565b633b9aca006103e860056110a3610fab565b6110ad919061445b565b6110b791906144cc565b6110c191906144cc565b811015611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061456f565b60405180910390fd5b633b9aca0081611113919061445b565b600a8190555050565b60006111298484846122b1565b6111ea8461113561204c565b6111e5856040518060600160405280602881526020016152dd60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061119b61204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b612054565b600190509392505050565b6111fd61221d565b60005b838390508110156112cc5783838281811061121e5761121d61458f565b5b90506020020160208101906112339190613f4e565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112b19190614004565b60405180910390a380806112c4906145be565b915050611200565b50505050565b60165481565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61133661221d565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b60006114436113a761204c565b8461143e85600260006113b861204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fee90919063ffffffff16565b612054565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b60115481565b600960179054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61154c61221d565b6115566000613257565b565b61156061221d565b60005b838390508110156115ff5781602060008686858181106115865761158561458f565b5b905060200201602081019061159b9190613f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115f7906145be565b915050611563565b50505050565b600061160f61221d565b6000600960156101000a81548160ff0219169083151502179055506001905090565b61163961221d565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6116c861221d565b82600e8190555081600f8190555080601081905550601054600f54600e546116f09190614606565b6116fa9190614606565b600d819055506028600d541115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90614686565b60405180910390fd5b505050565b61175361221d565b6001600960166101000a81548160ff0219169083151502179055506001600960176101000a81548160ff02191690831515021790555043601a81905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6117f061221d565b80600960176101000a81548160ff02191690831515021790555050565b60606005805461181c906143fb565b80601f0160208091040260200160405190810160405280929190818152602001828054611848906143fb565b80156118955780601f1061186a57610100808354040283529160200191611895565b820191906000526020600020905b81548152906001019060200180831161187857829003601f168201915b5050505050905090565b6118a761221d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614718565b60405180910390fd5b611941828261331d565b5050565b60105481565b60195481565b60145481565b61195f61221d565b80600960186101000a81548160ff02191690831515021790555050565b6000611a3f61198961204c565b84611a3a8560405180606001604052806025815260200161530560259139600260006119b361204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b612054565b6001905092915050565b600960189054906101000a900460ff1681565b6000611a70611a6961204c565b84846122b1565b6001905092915050565b611a8261221d565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600960169054906101000a900460ff1681565b611b7d61221d565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c1a9190613f33565b60405180910390a25050565b611c2e61221d565b633b9aca006103e8600f611c40610fab565b611c4a919061445b565b611c5491906144cc565b611c5e91906144cc565b811015611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c97906147aa565b60405180910390fd5b633b9aca0081611cb0919061445b565b600c8190555050565b611cc161221d565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960199054906101000a900460ff1681565b600a5481565b6000611d2861221d565b620186a06001611d36610fab565b611d40919061445b565b611d4a91906144cc565b821015611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061483c565b60405180910390fd5b6103e86005611d99610fab565b611da3919061445b565b611dad91906144cc565b821115611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de6906148ce565b60405180910390fd5b81600b8190555060019050919050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611e9c61221d565b6000600960196101000a81548160ff0219169083151502179055506001905090565b600f5481565b611ecc61221d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290614960565b60405180910390fd5b611f4481613257565b50565b60135481565b600c5481565b611f5b61221d565b8460128190555083601381905550826014819055508160158190555080601681905550601454601354601254611f919190614606565b611f9b9190614606565b60118190555060286011541115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90614686565b60405180910390fd5b5050505050565b6000808284611ffd9190614606565b905083811015612042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612039906149cc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90614a5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212990614af0565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122109190614004565b60405180910390a3505050565b60008061222861204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a690614b5c565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614bee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238690614c80565b60405180910390fd5b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124335750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d12565b60405180910390fd5b6000810361248b57612486838360006133be565b6131ee565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036125175743601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960159054906101000a900460ff1615612bdc57612534611792565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125a25750612572611792565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612615575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561262e5750600960149054906101000a900460ff16155b15612bdb57600960169054906101000a900460ff1661272857601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126e85750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90614d7e565b60405180910390fd5b5b600960199054906101000a900460ff16156128f257612745611792565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127cc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128265750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128f15743601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390614e36565b60405180910390fd5b43601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129955750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a3c57600a548111156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614ec8565b60405180910390fd5b600c546129eb836114fb565b826129f69190614606565b1115612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e90614f34565b60405180910390fd5b612bda565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612adf5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2e57600a54811115612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614fc6565b60405180910390fd5b612bd9565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bd857600c54612b8b836114fb565b82612b969190614606565b1115612bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bce90614f34565b60405180910390fd5b5b5b5b5b5b6000601a54612beb9190614606565b4311158015612c485750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c945750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf2576000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000612cfd306114fb565b90506000600b548210159050808015612d225750600960179054906101000a900460ff165b8015612d3b5750600960149054906101000a900460ff16155b8015612d915750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de75750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e3d5750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e81576001600960146101000a81548160ff021916908315150217905550612e65613655565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16158015612eac5750600960179054906101000a900460ff165b9050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4f5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5957600090505b600081156131d257602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fbc57506000601154115b1561308957612fe96064612fdb6011548861389790919063ffffffff16565b61391190919063ffffffff16565b905060115460135482612ffc919061445b565b61300691906144cc565b601860008282546130179190614606565b925050819055506011546014548261302f919061445b565b61303991906144cc565b6019600082825461304a9190614606565b9250508190555060115460125482613062919061445b565b61306c91906144cc565b6017600082825461307d9190614606565b925050819055506131ae565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130e457506000600d54115b156131ad576131116064613103600d548861389790919063ffffffff16565b61391190919063ffffffff16565b9050600d54600f5482613124919061445b565b61312e91906144cc565b6018600082825461313f9190614606565b92505081905550600d5460105482613157919061445b565b61316191906144cc565b601960008282546131729190614606565b92505081905550600d54600e548261318a919061445b565b61319491906144cc565b601760008282546131a59190614606565b925050819055505b5b60008111156131c3576131c28730836133be565b5b80856131cf9190614fe6565b94505b6131dc858861395b565b94506131e98787876133be565b505050505b505050565b600083831115829061323b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132329190613e18565b60405180910390fd5b506000838561324a9190614fe6565b9050809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361342d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342490614bee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361349c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349390614c80565b60405180910390fd5b6134a7838383613a7f565b613513816040518060600160405280602681526020016152b760269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135a881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fee90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136489190614004565b60405180910390a3505050565b6000613660306114fb565b905060006019546017546018546136779190614606565b6136819190614606565b90506000808314806136935750600082145b156136a057505050613895565b6014600b546136af919061445b565b8311156136c8576014600b546136c5919061445b565b92505b6000600283601854866136db919061445b565b6136e591906144cc565b6136ef91906144cc565b905060006137068286613a8490919063ffffffff16565b9050600047905061371682613ace565b600061372b8247613a8490919063ffffffff16565b90506000613756876137486019548561389790919063ffffffff16565b61391190919063ffffffff16565b9050600060188190555060006017819055506000601981905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516137b69061504b565b60006040518083038185875af1925050503d80600081146137f3576040519150601f19603f3d011682016040523d82523d6000602084013e6137f8565b606091505b505080965050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138449061504b565b60006040518083038185875af1925050503d8060008114613881576040519150601f19603f3d011682016040523d82523d6000602084013e613886565b606091505b50508096505050505050505050505b565b60008083036138a9576000905061390b565b600082846138b7919061445b565b90508284826138c691906144cc565b14613906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138fd906150d2565b60405180910390fd5b809150505b92915050565b600061395383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d0b565b905092915050565b600080603290506000601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054436139af9190614fe6565b9050600082826139bf919061445b565b90506000606482116139dd578160646139d89190614fe6565b6139e0565b60005b90506000606482896139f2919061445b565b6139fc91906144cc565b9050602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a7057613a64600082613d6e90919063ffffffff16565b95505050505050613a79565b87955050505050505b92915050565b505050565b6000613ac683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131f3565b905092915050565b6000600267ffffffffffffffff811115613aeb57613aea6150f2565b5b604051908082528060200260200182016040528015613b195781602001602082028036833780820191505090505b5090503081600081518110613b3157613b3061458f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bfa9190615136565b81600181518110613c0e57613c0d61458f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c73307f000000000000000000000000000000000000000000000000000000000000000084612054565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cd595949392919061525c565b600060405180830381600087803b158015613cef57600080fd5b505af1158015613d03573d6000803e3d6000fd5b505050505050565b60008083118290613d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d499190613e18565b60405180910390fd5b5060008385613d6191906144cc565b9050809150509392505050565b600081831015613d7e5781613d80565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613dc2578082015181840152602081019050613da7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dea82613d88565b613df48185613d93565b9350613e04818560208601613da4565b613e0d81613dce565b840191505092915050565b60006020820190508181036000830152613e328184613ddf565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e6f82613e44565b9050919050565b613e7f81613e64565b8114613e8a57600080fd5b50565b600081359050613e9c81613e76565b92915050565b6000819050919050565b613eb581613ea2565b8114613ec057600080fd5b50565b600081359050613ed281613eac565b92915050565b60008060408385031215613eef57613eee613e3a565b5b6000613efd85828601613e8d565b9250506020613f0e85828601613ec3565b9150509250929050565b60008115159050919050565b613f2d81613f18565b82525050565b6000602082019050613f486000830184613f24565b92915050565b600060208284031215613f6457613f63613e3a565b5b6000613f7284828501613e8d565b91505092915050565b6000819050919050565b6000613fa0613f9b613f9684613e44565b613f7b565b613e44565b9050919050565b6000613fb282613f85565b9050919050565b6000613fc482613fa7565b9050919050565b613fd481613fb9565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613ea2565b82525050565b60006020820190506140196000830184613ff5565b92915050565b60006020828403121561403557614034613e3a565b5b600061404384828501613ec3565b91505092915050565b60008060006060848603121561406557614064613e3a565b5b600061407386828701613e8d565b935050602061408486828701613e8d565b925050604061409586828701613ec3565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126140c4576140c361409f565b5b8235905067ffffffffffffffff8111156140e1576140e06140a4565b5b6020830191508360208202830111156140fd576140fc6140a9565b5b9250929050565b60008060006040848603121561411d5761411c613e3a565b5b600084013567ffffffffffffffff81111561413b5761413a613e3f565b5b614147868287016140ae565b9350935050602061415a86828701613ec3565b9150509250925092565b61416d81613f18565b811461417857600080fd5b50565b60008135905061418a81614164565b92915050565b600080604083850312156141a7576141a6613e3a565b5b60006141b585828601613e8d565b92505060206141c68582860161417b565b9150509250929050565b600060ff82169050919050565b6141e6816141d0565b82525050565b600060208201905061420160008301846141dd565b92915050565b61421081613e64565b82525050565b600060208201905061422b6000830184614207565b92915050565b60008060006040848603121561424a57614249613e3a565b5b600084013567ffffffffffffffff81111561426857614267613e3f565b5b614274868287016140ae565b935093505060206142878682870161417b565b9150509250925092565b6000806000606084860312156142aa576142a9613e3a565b5b60006142b886828701613ec3565b93505060206142c986828701613ec3565b92505060406142da86828701613ec3565b9150509250925092565b6000602082840312156142fa576142f9613e3a565b5b60006143088482850161417b565b91505092915050565b6000806040838503121561432857614327613e3a565b5b600061433685828601613e8d565b925050602061434785828601613e8d565b9150509250929050565b600080600080600060a0868803121561436d5761436c613e3a565b5b600061437b88828901613ec3565b955050602061438c88828901613ec3565b945050604061439d88828901613ec3565b93505060606143ae88828901613ec3565b92505060806143bf88828901613ec3565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061441357607f821691505b602082108103614426576144256143cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446682613ea2565b915061447183613ea2565b925082820261447f81613ea2565b915082820484148315176144965761449561442c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d782613ea2565b91506144e283613ea2565b9250826144f2576144f161449d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614559602f83613d93565b9150614564826144fd565b604082019050919050565b600060208201905081810360008301526145888161454c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145c982613ea2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145fb576145fa61442c565b5b600182019050919050565b600061461182613ea2565b915061461c83613ea2565b92508282019050808211156146345761463361442c565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000614670601d83613d93565b915061467b8261463a565b602082019050919050565b6000602082019050818103600083015261469f81614663565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614702603983613d93565b915061470d826146a6565b604082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614794602483613d93565b915061479f82614738565b604082019050919050565b600060208201905081810360008301526147c381614787565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614826603583613d93565b9150614831826147ca565b604082019050919050565b6000602082019050818103600083015261485581614819565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006148b8603483613d93565b91506148c38261485c565b604082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061494a602683613d93565b9150614955826148ee565b604082019050919050565b600060208201905081810360008301526149798161493d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149b6601b83613d93565b91506149c182614980565b602082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602483613d93565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ada602283613d93565b9150614ae582614a7e565b604082019050919050565b60006020820190508181036000830152614b0981614acd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b46602083613d93565b9150614b5182614b10565b602082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bd8602583613d93565b9150614be382614b7c565b604082019050919050565b60006020820190508181036000830152614c0781614bcb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6a602383613d93565b9150614c7582614c0e565b604082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614cfc603183613d93565b9150614d0782614ca0565b604082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d68601683613d93565b9150614d7382614d32565b602082019050919050565b60006020820190508181036000830152614d9781614d5b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614e20604983613d93565b9150614e2b82614d9e565b606082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614eb2603583613d93565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f1e601383613d93565b9150614f2982614ee8565b602082019050919050565b60006020820190508181036000830152614f4d81614f11565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614fb0603683613d93565b9150614fbb82614f54565b604082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b6000614ff182613ea2565b9150614ffc83613ea2565b92508282039050818111156150145761501361442c565b5b92915050565b600081905092915050565b50565b600061503560008361501a565b915061504082615025565b600082019050919050565b600061505682615028565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150bc602183613d93565b91506150c782615060565b604082019050919050565b600060208201905081810360008301526150eb816150af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061513081613e76565b92915050565b60006020828403121561514c5761514b613e3a565b5b600061515a84828501615121565b91505092915050565b6000819050919050565b600061518861518361517e84615163565b613f7b565b613ea2565b9050919050565b6151988161516d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151d381613e64565b82525050565b60006151e583836151ca565b60208301905092915050565b6000602082019050919050565b60006152098261519e565b61521381856151a9565b935061521e836151ba565b8060005b8381101561524f57815161523688826151d9565b9750615241836151f1565b925050600181019050615222565b5085935050505092915050565b600060a0820190506152716000830188613ff5565b61527e602083018761518f565b818103604083015261529081866151fe565b905061529f6060830185614207565b6152ac6080830184613ff5565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220525a150e3c9fd634a8f13bfa956b10c357dc51f3649fc66d6479ac0016edc09764736f6c63430008110033000000000000000000000000ed359c15ce8f86c322415d0577e409ccce836608000000000000000000000000e428e7850340b00775468b56ac2b7464d76d6716

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e0f578063f637434214610e38578063f8b45b0514610e63578063ff935af614610e8e576103b8565b8063dd62ed3e14610d51578063e2f4560514610d8e578063e884f26014610db9578063f11a24d314610de4576103b8565b8063c876d0b9116100dc578063c876d0b914610c93578063c8c8ebe414610cbe578063d257b34f14610ce9578063d85ba06314610d26576103b8565b8063bbc0c74214610bed578063c024666814610c18578063c18bc19514610c41578063c2b7bbb614610c6a576103b8565b80639fccce3211610185578063a4d15b6411610154578063a4d15b6414610b1f578063a9059cbb14610b4a578063aacebbe314610b87578063b62496f514610bb0576103b8565b80639fccce3214610a63578063a0d82dc514610a8e578063a265777814610ab9578063a457c2d714610ae2576103b8565b8063924de9b7116101c1578063924de9b7146109bb57806395d89b41146109e45780639a7a23d614610a0f5780639c3b4fdc14610a38576103b8565b80638da5cb5b1461093a5780638ea5220f146109655780639213691314610990576103b8565b806339509351116102d7578063715018a61161026a57806375f0a8741161023957806375f0a874146108a45780637bce5a04146108cf5780638095d564146108fa5780638a8c523c14610923576103b8565b8063715018a61461081057806373fa7ddb14610827578063751039fc146108505780637571336a1461087b576103b8565b8063541a43cf116102a6578063541a43cf146107525780636a486a8e1461077d5780636ddd1713146107a857806370a08231146107d3576103b8565b8063395093511461068257806349bd5a5e146106bf5780634a62bb65146106ea5780634fbee19314610715576103b8565b80631f3fed8f1161034f5780632bf3d42d1161031e5780632bf3d42d146105c65780632cd644fd146105f15780632d5a5d341461062e578063313ce56714610657576103b8565b80631f3fed8f1461050c578063203e727e1461053757806323b872dd1461056057806326ededb81461059d576103b8565b80631694505e1161038b5780631694505e1461046257806318160ddd1461048d5780631816467f146104b85780631a8145bb146104e1576103b8565b806306fdde03146103bd578063095ea7b3146103e857806310d5de5314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb7565b6040516103df9190613e18565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613ed8565b610f49565b60405161041c9190613f33565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190613f4e565b610f67565b6040516104599190613f33565b60405180910390f35b34801561046e57600080fd5b50610477610f87565b6040516104849190613fda565b60405180910390f35b34801561049957600080fd5b506104a2610fab565b6040516104af9190614004565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190613f4e565b610fb5565b005b3480156104ed57600080fd5b506104f661107d565b6040516105039190614004565b60405180910390f35b34801561051857600080fd5b50610521611083565b60405161052e9190614004565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061401f565b611089565b005b34801561056c57600080fd5b506105876004803603810190610582919061404c565b61111c565b6040516105949190613f33565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190614104565b6111f5565b005b3480156105d257600080fd5b506105db6112d2565b6040516105e89190614004565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613f4e565b6112d8565b6040516106259190613f33565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190614190565b61132e565b005b34801561066357600080fd5b5061066c611391565b60405161067991906141ec565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190613ed8565b61139a565b6040516106b69190613f33565b60405180910390f35b3480156106cb57600080fd5b506106d461144d565b6040516106e19190614216565b60405180910390f35b3480156106f657600080fd5b506106ff611473565b60405161070c9190613f33565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190613f4e565b611486565b6040516107499190613f33565b60405180910390f35b34801561075e57600080fd5b506107676114dc565b6040516107749190614004565b60405180910390f35b34801561078957600080fd5b506107926114e2565b60405161079f9190614004565b60405180910390f35b3480156107b457600080fd5b506107bd6114e8565b6040516107ca9190613f33565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190613f4e565b6114fb565b6040516108079190614004565b60405180910390f35b34801561081c57600080fd5b50610825611544565b005b34801561083357600080fd5b5061084e60048036038101906108499190614231565b611558565b005b34801561085c57600080fd5b50610865611605565b6040516108729190613f33565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d9190614190565b611631565b005b3480156108b057600080fd5b506108b9611694565b6040516108c69190614216565b60405180910390f35b3480156108db57600080fd5b506108e46116ba565b6040516108f19190614004565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614291565b6116c0565b005b34801561092f57600080fd5b5061093861174b565b005b34801561094657600080fd5b5061094f611792565b60405161095c9190614216565b60405180910390f35b34801561097157600080fd5b5061097a6117bc565b6040516109879190614216565b60405180910390f35b34801561099c57600080fd5b506109a56117e2565b6040516109b29190614004565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906142e4565b6117e8565b005b3480156109f057600080fd5b506109f961180d565b604051610a069190613e18565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a319190614190565b61189f565b005b348015610a4457600080fd5b50610a4d611945565b604051610a5a9190614004565b60405180910390f35b348015610a6f57600080fd5b50610a7861194b565b604051610a859190614004565b60405180910390f35b348015610a9a57600080fd5b50610aa3611951565b604051610ab09190614004565b60405180910390f35b348015610ac557600080fd5b50610ae06004803603810190610adb91906142e4565b611957565b005b348015610aee57600080fd5b50610b096004803603810190610b049190613ed8565b61197c565b604051610b169190613f33565b60405180910390f35b348015610b2b57600080fd5b50610b34611a49565b604051610b419190613f33565b60405180910390f35b348015610b5657600080fd5b50610b716004803603810190610b6c9190613ed8565b611a5c565b604051610b7e9190613f33565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba99190613f4e565b611a7a565b005b348015610bbc57600080fd5b50610bd76004803603810190610bd29190613f4e565b611b42565b604051610be49190613f33565b60405180910390f35b348015610bf957600080fd5b50610c02611b62565b604051610c0f9190613f33565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a9190614190565b611b75565b005b348015610c4d57600080fd5b50610c686004803603810190610c63919061401f565b611c26565b005b348015610c7657600080fd5b50610c916004803603810190610c8c9190613f4e565b611cb9565b005b348015610c9f57600080fd5b50610ca8611d05565b604051610cb59190613f33565b60405180910390f35b348015610cca57600080fd5b50610cd3611d18565b604051610ce09190614004565b60405180910390f35b348015610cf557600080fd5b50610d106004803603810190610d0b919061401f565b611d1e565b604051610d1d9190613f33565b60405180910390f35b348015610d3257600080fd5b50610d3b611dff565b604051610d489190614004565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d739190614311565b611e05565b604051610d859190614004565b60405180910390f35b348015610d9a57600080fd5b50610da3611e8c565b604051610db09190614004565b60405180910390f35b348015610dc557600080fd5b50610dce611e92565b604051610ddb9190613f33565b60405180910390f35b348015610df057600080fd5b50610df9611ebe565b604051610e069190614004565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e319190613f4e565b611ec4565b005b348015610e4457600080fd5b50610e4d611f47565b604051610e5a9190614004565b60405180910390f35b348015610e6f57600080fd5b50610e78611f4d565b604051610e859190614004565b60405180910390f35b348015610e9a57600080fd5b50610eb56004803603810190610eb09190614351565b611f53565b005b606060048054610ec6906143fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef2906143fb565b8015610f3f5780601f10610f1457610100808354040283529160200191610f3f565b820191906000526020600020905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b6000610f5d610f5661204c565b8484612054565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b610fbd61221d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b61109161221d565b633b9aca006103e860056110a3610fab565b6110ad919061445b565b6110b791906144cc565b6110c191906144cc565b811015611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061456f565b60405180910390fd5b633b9aca0081611113919061445b565b600a8190555050565b60006111298484846122b1565b6111ea8461113561204c565b6111e5856040518060600160405280602881526020016152dd60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061119b61204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b612054565b600190509392505050565b6111fd61221d565b60005b838390508110156112cc5783838281811061121e5761121d61458f565b5b90506020020160208101906112339190613f4e565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112b19190614004565b60405180910390a380806112c4906145be565b915050611200565b50505050565b60165481565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61133661221d565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b60006114436113a761204c565b8461143e85600260006113b861204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fee90919063ffffffff16565b612054565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b60115481565b600960179054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61154c61221d565b6115566000613257565b565b61156061221d565b60005b838390508110156115ff5781602060008686858181106115865761158561458f565b5b905060200201602081019061159b9190613f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115f7906145be565b915050611563565b50505050565b600061160f61221d565b6000600960156101000a81548160ff0219169083151502179055506001905090565b61163961221d565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6116c861221d565b82600e8190555081600f8190555080601081905550601054600f54600e546116f09190614606565b6116fa9190614606565b600d819055506028600d541115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90614686565b60405180910390fd5b505050565b61175361221d565b6001600960166101000a81548160ff0219169083151502179055506001600960176101000a81548160ff02191690831515021790555043601a81905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6117f061221d565b80600960176101000a81548160ff02191690831515021790555050565b60606005805461181c906143fb565b80601f0160208091040260200160405190810160405280929190818152602001828054611848906143fb565b80156118955780601f1061186a57610100808354040283529160200191611895565b820191906000526020600020905b81548152906001019060200180831161187857829003601f168201915b5050505050905090565b6118a761221d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614718565b60405180910390fd5b611941828261331d565b5050565b60105481565b60195481565b60145481565b61195f61221d565b80600960186101000a81548160ff02191690831515021790555050565b6000611a3f61198961204c565b84611a3a8560405180606001604052806025815260200161530560259139600260006119b361204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b612054565b6001905092915050565b600960189054906101000a900460ff1681565b6000611a70611a6961204c565b84846122b1565b6001905092915050565b611a8261221d565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600960169054906101000a900460ff1681565b611b7d61221d565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c1a9190613f33565b60405180910390a25050565b611c2e61221d565b633b9aca006103e8600f611c40610fab565b611c4a919061445b565b611c5491906144cc565b611c5e91906144cc565b811015611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c97906147aa565b60405180910390fd5b633b9aca0081611cb0919061445b565b600c8190555050565b611cc161221d565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960199054906101000a900460ff1681565b600a5481565b6000611d2861221d565b620186a06001611d36610fab565b611d40919061445b565b611d4a91906144cc565b821015611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061483c565b60405180910390fd5b6103e86005611d99610fab565b611da3919061445b565b611dad91906144cc565b821115611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de6906148ce565b60405180910390fd5b81600b8190555060019050919050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611e9c61221d565b6000600960196101000a81548160ff0219169083151502179055506001905090565b600f5481565b611ecc61221d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290614960565b60405180910390fd5b611f4481613257565b50565b60135481565b600c5481565b611f5b61221d565b8460128190555083601381905550826014819055508160158190555080601681905550601454601354601254611f919190614606565b611f9b9190614606565b60118190555060286011541115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90614686565b60405180910390fd5b5050505050565b6000808284611ffd9190614606565b905083811015612042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612039906149cc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90614a5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212990614af0565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122109190614004565b60405180910390a3505050565b60008061222861204c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a690614b5c565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614bee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238690614c80565b60405180910390fd5b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124335750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d12565b60405180910390fd5b6000810361248b57612486838360006133be565b6131ee565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036125175743601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960159054906101000a900460ff1615612bdc57612534611792565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125a25750612572611792565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612615575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561262e5750600960149054906101000a900460ff16155b15612bdb57600960169054906101000a900460ff1661272857601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126e85750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90614d7e565b60405180910390fd5b5b600960199054906101000a900460ff16156128f257612745611792565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127cc57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128265750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128f15743601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390614e36565b60405180910390fd5b43601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129955750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a3c57600a548111156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614ec8565b60405180910390fd5b600c546129eb836114fb565b826129f69190614606565b1115612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e90614f34565b60405180910390fd5b612bda565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612adf5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2e57600a54811115612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614fc6565b60405180910390fd5b612bd9565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bd857600c54612b8b836114fb565b82612b969190614606565b1115612bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bce90614f34565b60405180910390fd5b5b5b5b5b5b6000601a54612beb9190614606565b4311158015612c485750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c945750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf2576000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000612cfd306114fb565b90506000600b548210159050808015612d225750600960179054906101000a900460ff165b8015612d3b5750600960149054906101000a900460ff16155b8015612d915750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de75750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e3d5750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e81576001600960146101000a81548160ff021916908315150217905550612e65613655565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16158015612eac5750600960179054906101000a900460ff165b9050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4f5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5957600090505b600081156131d257602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fbc57506000601154115b1561308957612fe96064612fdb6011548861389790919063ffffffff16565b61391190919063ffffffff16565b905060115460135482612ffc919061445b565b61300691906144cc565b601860008282546130179190614606565b925050819055506011546014548261302f919061445b565b61303991906144cc565b6019600082825461304a9190614606565b9250508190555060115460125482613062919061445b565b61306c91906144cc565b6017600082825461307d9190614606565b925050819055506131ae565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130e457506000600d54115b156131ad576131116064613103600d548861389790919063ffffffff16565b61391190919063ffffffff16565b9050600d54600f5482613124919061445b565b61312e91906144cc565b6018600082825461313f9190614606565b92505081905550600d5460105482613157919061445b565b61316191906144cc565b601960008282546131729190614606565b92505081905550600d54600e548261318a919061445b565b61319491906144cc565b601760008282546131a59190614606565b925050819055505b5b60008111156131c3576131c28730836133be565b5b80856131cf9190614fe6565b94505b6131dc858861395b565b94506131e98787876133be565b505050505b505050565b600083831115829061323b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132329190613e18565b60405180910390fd5b506000838561324a9190614fe6565b9050809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361342d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342490614bee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361349c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349390614c80565b60405180910390fd5b6134a7838383613a7f565b613513816040518060600160405280602681526020016152b760269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135a881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fee90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136489190614004565b60405180910390a3505050565b6000613660306114fb565b905060006019546017546018546136779190614606565b6136819190614606565b90506000808314806136935750600082145b156136a057505050613895565b6014600b546136af919061445b565b8311156136c8576014600b546136c5919061445b565b92505b6000600283601854866136db919061445b565b6136e591906144cc565b6136ef91906144cc565b905060006137068286613a8490919063ffffffff16565b9050600047905061371682613ace565b600061372b8247613a8490919063ffffffff16565b90506000613756876137486019548561389790919063ffffffff16565b61391190919063ffffffff16565b9050600060188190555060006017819055506000601981905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516137b69061504b565b60006040518083038185875af1925050503d80600081146137f3576040519150601f19603f3d011682016040523d82523d6000602084013e6137f8565b606091505b505080965050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138449061504b565b60006040518083038185875af1925050503d8060008114613881576040519150601f19603f3d011682016040523d82523d6000602084013e613886565b606091505b50508096505050505050505050505b565b60008083036138a9576000905061390b565b600082846138b7919061445b565b90508284826138c691906144cc565b14613906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138fd906150d2565b60405180910390fd5b809150505b92915050565b600061395383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d0b565b905092915050565b600080603290506000601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054436139af9190614fe6565b9050600082826139bf919061445b565b90506000606482116139dd578160646139d89190614fe6565b6139e0565b60005b90506000606482896139f2919061445b565b6139fc91906144cc565b9050602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a7057613a64600082613d6e90919063ffffffff16565b95505050505050613a79565b87955050505050505b92915050565b505050565b6000613ac683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131f3565b905092915050565b6000600267ffffffffffffffff811115613aeb57613aea6150f2565b5b604051908082528060200260200182016040528015613b195781602001602082028036833780820191505090505b5090503081600081518110613b3157613b3061458f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bfa9190615136565b81600181518110613c0e57613c0d61458f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c73307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612054565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cd595949392919061525c565b600060405180830381600087803b158015613cef57600080fd5b505af1158015613d03573d6000803e3d6000fd5b505050505050565b60008083118290613d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d499190613e18565b60405180910390fd5b5060008385613d6191906144cc565b9050809150509392505050565b600081831015613d7e5781613d80565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613dc2578082015181840152602081019050613da7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dea82613d88565b613df48185613d93565b9350613e04818560208601613da4565b613e0d81613dce565b840191505092915050565b60006020820190508181036000830152613e328184613ddf565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e6f82613e44565b9050919050565b613e7f81613e64565b8114613e8a57600080fd5b50565b600081359050613e9c81613e76565b92915050565b6000819050919050565b613eb581613ea2565b8114613ec057600080fd5b50565b600081359050613ed281613eac565b92915050565b60008060408385031215613eef57613eee613e3a565b5b6000613efd85828601613e8d565b9250506020613f0e85828601613ec3565b9150509250929050565b60008115159050919050565b613f2d81613f18565b82525050565b6000602082019050613f486000830184613f24565b92915050565b600060208284031215613f6457613f63613e3a565b5b6000613f7284828501613e8d565b91505092915050565b6000819050919050565b6000613fa0613f9b613f9684613e44565b613f7b565b613e44565b9050919050565b6000613fb282613f85565b9050919050565b6000613fc482613fa7565b9050919050565b613fd481613fb9565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613ea2565b82525050565b60006020820190506140196000830184613ff5565b92915050565b60006020828403121561403557614034613e3a565b5b600061404384828501613ec3565b91505092915050565b60008060006060848603121561406557614064613e3a565b5b600061407386828701613e8d565b935050602061408486828701613e8d565b925050604061409586828701613ec3565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126140c4576140c361409f565b5b8235905067ffffffffffffffff8111156140e1576140e06140a4565b5b6020830191508360208202830111156140fd576140fc6140a9565b5b9250929050565b60008060006040848603121561411d5761411c613e3a565b5b600084013567ffffffffffffffff81111561413b5761413a613e3f565b5b614147868287016140ae565b9350935050602061415a86828701613ec3565b9150509250925092565b61416d81613f18565b811461417857600080fd5b50565b60008135905061418a81614164565b92915050565b600080604083850312156141a7576141a6613e3a565b5b60006141b585828601613e8d565b92505060206141c68582860161417b565b9150509250929050565b600060ff82169050919050565b6141e6816141d0565b82525050565b600060208201905061420160008301846141dd565b92915050565b61421081613e64565b82525050565b600060208201905061422b6000830184614207565b92915050565b60008060006040848603121561424a57614249613e3a565b5b600084013567ffffffffffffffff81111561426857614267613e3f565b5b614274868287016140ae565b935093505060206142878682870161417b565b9150509250925092565b6000806000606084860312156142aa576142a9613e3a565b5b60006142b886828701613ec3565b93505060206142c986828701613ec3565b92505060406142da86828701613ec3565b9150509250925092565b6000602082840312156142fa576142f9613e3a565b5b60006143088482850161417b565b91505092915050565b6000806040838503121561432857614327613e3a565b5b600061433685828601613e8d565b925050602061434785828601613e8d565b9150509250929050565b600080600080600060a0868803121561436d5761436c613e3a565b5b600061437b88828901613ec3565b955050602061438c88828901613ec3565b945050604061439d88828901613ec3565b93505060606143ae88828901613ec3565b92505060806143bf88828901613ec3565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061441357607f821691505b602082108103614426576144256143cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446682613ea2565b915061447183613ea2565b925082820261447f81613ea2565b915082820484148315176144965761449561442c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d782613ea2565b91506144e283613ea2565b9250826144f2576144f161449d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614559602f83613d93565b9150614564826144fd565b604082019050919050565b600060208201905081810360008301526145888161454c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145c982613ea2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145fb576145fa61442c565b5b600182019050919050565b600061461182613ea2565b915061461c83613ea2565b92508282019050808211156146345761463361442c565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000614670601d83613d93565b915061467b8261463a565b602082019050919050565b6000602082019050818103600083015261469f81614663565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614702603983613d93565b915061470d826146a6565b604082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614794602483613d93565b915061479f82614738565b604082019050919050565b600060208201905081810360008301526147c381614787565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614826603583613d93565b9150614831826147ca565b604082019050919050565b6000602082019050818103600083015261485581614819565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006148b8603483613d93565b91506148c38261485c565b604082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061494a602683613d93565b9150614955826148ee565b604082019050919050565b600060208201905081810360008301526149798161493d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149b6601b83613d93565b91506149c182614980565b602082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602483613d93565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ada602283613d93565b9150614ae582614a7e565b604082019050919050565b60006020820190508181036000830152614b0981614acd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b46602083613d93565b9150614b5182614b10565b602082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bd8602583613d93565b9150614be382614b7c565b604082019050919050565b60006020820190508181036000830152614c0781614bcb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6a602383613d93565b9150614c7582614c0e565b604082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614cfc603183613d93565b9150614d0782614ca0565b604082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d68601683613d93565b9150614d7382614d32565b602082019050919050565b60006020820190508181036000830152614d9781614d5b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614e20604983613d93565b9150614e2b82614d9e565b606082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614eb2603583613d93565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f1e601383613d93565b9150614f2982614ee8565b602082019050919050565b60006020820190508181036000830152614f4d81614f11565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614fb0603683613d93565b9150614fbb82614f54565b604082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b6000614ff182613ea2565b9150614ffc83613ea2565b92508282039050818111156150145761501361442c565b5b92915050565b600081905092915050565b50565b600061503560008361501a565b915061504082615025565b600082019050919050565b600061505682615028565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150bc602183613d93565b91506150c782615060565b604082019050919050565b600060208201905081810360008301526150eb816150af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061513081613e76565b92915050565b60006020828403121561514c5761514b613e3a565b5b600061515a84828501615121565b91505092915050565b6000819050919050565b600061518861518361517e84615163565b613f7b565b613ea2565b9050919050565b6151988161516d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151d381613e64565b82525050565b60006151e583836151ca565b60208301905092915050565b6000602082019050919050565b60006152098261519e565b61521381856151a9565b935061521e836151ba565b8060005b8381101561524f57815161523688826151d9565b9750615241836151f1565b925050600181019050615222565b5085935050505092915050565b600060a0820190506152716000830188613ff5565b61527e602083018761518f565b818103604083015261529081866151fe565b905061529f6060830185614207565b6152ac6080830184613ff5565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220525a150e3c9fd634a8f13bfa956b10c357dc51f3649fc66d6479ac0016edc09764736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ed359c15ce8f86c322415d0577e409ccce836608000000000000000000000000e428e7850340b00775468b56ac2b7464d76d6716

-----Decoded View---------------
Arg [0] : marketingWallet_ (address): 0xED359C15cE8f86c322415D0577e409Ccce836608
Arg [1] : devWallet_ (address): 0xe428E7850340b00775468B56ac2b7464D76D6716

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ed359c15ce8f86c322415d0577e409ccce836608
Arg [1] : 000000000000000000000000e428e7850340b00775468b56ac2b7464d76d6716


Deployed Bytecode Sourcemap

14376:18072:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3271:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16003:63:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14452:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2158:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24824:157:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15381:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15341;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21549:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3947:454:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20830:222:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15298:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22470:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23915:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2001:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4810:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14510:28:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14643:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24989:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15255:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15110:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14724:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2329:143:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6627:103:4;;;;;;;;;;;;;:::i;:::-;;25123:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19625:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22097:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14545:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15003;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22698:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19469:148;;;;;;;;;;;;;:::i;:::-;;6396:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14582:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15145:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22362:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1259:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24082:306:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15077:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15421:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15221:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20721:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5606:393:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14762:37:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2685:200:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24592:224:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16284:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14684:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23725:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21832:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22601:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14806:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14854:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21060:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14969:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:176:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14896:33:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20578:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15040:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6738:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15183:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14936:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23109:608;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1040:100:1;1094:13;1127:5;1120:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:100;:::o;3271:194::-;3379:4;3396:39;3405:12;:10;:12::i;:::-;3419:7;3428:6;3396:8;:39::i;:::-;3453:4;3446:11;;3271:194;;;;:::o;16003:63:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;14452:51::-;;;:::o;2158:108:1:-;2219:7;2246:12;;2239:19;;2158:108;:::o;24824:157:4:-;6355:13;:11;:13::i;:::-;24931:9:::1;;;;;;;;;;;24903:38;;24920:9;24903:38;;;;;;;;;;;;24964:9;24952;;:21;;;;;;;;;;;;;;;;;;24824:157:::0;:::o;15381:33::-;;;;:::o;15341:::-;;;;:::o;21549:275::-;6355:13;:11;:13::i;:::-;21686:3:::1;21678:4;21673:1;21657:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21656:26;;;;:::i;:::-;21655:34;;;;:::i;:::-;21645:6;:44;;21623:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21808:7;21798:6;:18;;;;:::i;:::-;21775:20;:41;;;;21549:275:::0;:::o;3947:454:1:-;4087:4;4104:36;4114:6;4122:9;4133:6;4104:9;:36::i;:::-;4151:220;4174:6;4195:12;:10;:12::i;:::-;4222:138;4278:6;4222:138;;;;;;;;;;;;;;;;;:11;:19;4234:6;4222:19;;;;;;;;;;;;;;;:33;4242:12;:10;:12::i;:::-;4222:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;4151:8;:220::i;:::-;4389:4;4382:11;;3947:454;;;;;:::o;20830:222:4:-;6355:13;:11;:13::i;:::-;20926:9:::1;20921:124;20945:10;;:17;;20941:1;:21;20921:124;;;21013:10;;21024:1;21013:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20989:44;;20998:13;;;;;;;;;;;20989:44;;;21028:4;20989:44;;;;;;:::i;:::-;;;;;;;;20964:3;;;;;:::i;:::-;;;;20921:124;;;;20830:222:::0;;;:::o;15298:36::-;;;;:::o;22470:123::-;22531:4;22554:20;:31;22575:9;22554:31;;;;;;;;;;;;;;;;;;;;;;;;;22547:38;;22470:123;;;:::o;23915:159::-;6355:13;:11;:13::i;:::-;24053::::1;24031:10;:19;24042:7;24031:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23915:159:::0;;:::o;2001:92:1:-;2059:5;2084:1;2077:8;;2001:92;:::o;4810:293::-;4923:4;4940:133;4963:12;:10;:12::i;:::-;4990:7;5012:50;5051:10;5012:11;:25;5024:12;:10;:12::i;:::-;5012:25;;;;;;;;;;;;;;;:34;5038:7;5012:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4940:8;:133::i;:::-;5091:4;5084:11;;4810:293;;;;:::o;14510:28:4:-;;;;;;;;;;;;;:::o;14643:34::-;;;;;;;;;;;;;:::o;24989:126::-;25055:4;25079:19;:28;25099:7;25079:28;;;;;;;;;;;;;;;;;;;;;;;;;25072:35;;24989:126;;;:::o;15255:36::-;;;;:::o;15110:28::-;;;;:::o;14724:31::-;;;;;;;;;;;;;:::o;2329:143:1:-;2419:7;2446:9;:18;2456:7;2446:18;;;;;;;;;;;;;;;;2439:25;;2329:143;;;:::o;6627:103:4:-;6355:13;:11;:13::i;:::-;6692:30:::1;6719:1;6692:18;:30::i;:::-;6627:103::o:0;25123:199::-;6355:13;:11;:13::i;:::-;25208:9:::1;25203:112;25227:8;;:15;;25223:1;:19;25203:112;;;25300:3;25264:20;:33;25285:8;;25294:1;25285:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25264:33;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25244:3;;;;;:::i;:::-;;;;25203:112;;;;25123:199:::0;;;:::o;19625:121::-;19677:4;6355:13;:11;:13::i;:::-;19711:5:::1;19694:14;;:22;;;;;;;;;;;;;;;;;;19734:4;19727:11;;19625:121:::0;:::o;22097:169::-;6355:13;:11;:13::i;:::-;22254:4:::1;22212:31;:39;22244:6;22212:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22097:169:::0;;:::o;14545:30::-;;;;;;;;;;;;;:::o;15003:::-;;;;:::o;22698:403::-;6355:13;:11;:13::i;:::-;22866::::1;22848:15;:31;;;;22908:13;22890:15;:31;;;;22944:7;22932:9;:19;;;;23013:9;;22995:15;;22977;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;22962:12;:60;;;;23057:2;23041:12;;:18;;23033:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22698:403:::0;;;:::o;19469:148::-;6355:13;:11;:13::i;:::-;19540:4:::1;19524:13;;:20;;;;;;;;;;;;;;;;;;19569:4;19555:11;;:18;;;;;;;;;;;;;;;;;;19597:12;19584:10;:25;;;;19469:148::o:0;6396:87::-;6442:7;6469:6;;;;;;;;;;;6462:13;;6396:87;:::o;14582:24::-;;;;;;;;;;;;;:::o;15145:31::-;;;;:::o;22362:100::-;6355:13;:11;:13::i;:::-;22447:7:::1;22433:11;;:21;;;;;;;;;;;;;;;;;;22362:100:::0;:::o;1259:104:1:-;1315:13;1348:7;1341:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1259:104;:::o;24082:306:4:-;6355:13;:11;:13::i;:::-;24228::::1;;;;;;;;;;;24220:21;;:4;:21;;::::0;24198:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24339:41;24368:4;24374:5;24339:28;:41::i;:::-;24082:306:::0;;:::o;15077:24::-;;;;:::o;15421:27::-;;;;:::o;15221:25::-;;;;:::o;20721:101::-;6355:13;:11;:13::i;:::-;20809:5:::1;20788:18;;:26;;;;;;;;;;;;;;;;;;20721:101:::0;:::o;5606:393:1:-;5724:4;5741:228;5764:12;:10;:12::i;:::-;5791:7;5813:145;5870:15;5813:145;;;;;;;;;;;;;;;;;:11;:25;5825:12;:10;:12::i;:::-;5813:25;;;;;;;;;;;;;;;:34;5839:7;5813:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;5741:8;:228::i;:::-;5987:4;5980:11;;5606:393;;;;:::o;14762:37:4:-;;;;;;;;;;;;;:::o;2685:200:1:-;2796:4;2813:42;2823:12;:10;:12::i;:::-;2837:9;2848:6;2813:9;:42::i;:::-;2873:4;2866:11;;2685:200;;;;:::o;24592:224:4:-;6355:13;:11;:13::i;:::-;24745:15:::1;;;;;;;;;;;24702:59;;24725:18;24702:59;;;;;;;;;;;;24790:18;24772:15;;:36;;;;;;;;;;;;;;;;;;24592:224:::0;:::o;16284:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14684:33::-;;;;;;;;;;;;;:::o;23725:182::-;6355:13;:11;:13::i;:::-;23841:8:::1;23810:19;:28;23830:7;23810:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23881:7;23865:34;;;23890:8;23865:34;;;;;;:::i;:::-;;;;;;;;23725:182:::0;;:::o;21832:257::-;6355:13;:11;:13::i;:::-;21973:3:::1;21965:4;21959:2;21943:13;:11;:13::i;:::-;:18;;;;:::i;:::-;21942:27;;;;:::i;:::-;21941:35;;;;:::i;:::-;21931:6;:45;;21909:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22073:7;22063:6;:18;;;;:::i;:::-;22051:9;:30;;;;21832:257:::0;:::o;22601:89::-;6355:13;:11;:13::i;:::-;22677:5:::1;22661:13;;:21;;;;;;;;;;;;;;;;;;22601:89:::0;:::o;14806:39::-;;;;;;;;;;;;;:::o;14854:35::-;;;;:::o;21060:481::-;21157:4;6355:13;:11;:13::i;:::-;21231:6:::1;21226:1;21210:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21209:28;;;;:::i;:::-;21196:9;:41;;21174:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21386:4;21381:1;21365:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21364:26;;;;:::i;:::-;21351:9;:39;;21329:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21502:9;21481:18;:30;;;;21529:4;21522:11;;21060:481:::0;;;:::o;14969:27::-;;;;:::o;2948:176:1:-;3062:7;3089:11;:18;3101:5;3089:18;;;;;;;;;;;;;;;:27;3108:7;3089:27;;;;;;;;;;;;;;;;3082:34;;2948:176;;;;:::o;14896:33:4:-;;;;:::o;20578:135::-;20638:4;6355:13;:11;:13::i;:::-;20678:5:::1;20655:20;;:28;;;;;;;;;;;;;;;;;;20701:4;20694:11;;20578:135:::0;:::o;15040:30::-;;;;:::o;6738:201::-;6355:13;:11;:13::i;:::-;6847:1:::1;6827:22;;:8;:22;;::::0;6819:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6903:28;6922:8;6903:18;:28::i;:::-;6738:201:::0;:::o;15183:31::-;;;;:::o;14936:24::-;;;;:::o;23109:608::-;6355:13;:11;:13::i;:::-;23361::::1;23342:16;:32;;;;23404:13;23385:16;:32;;;;23441:7;23428:10;:20;;;;23483:22;23459:21;:46;;;;23540:22;23516:21;:46;;;;23627:10;;23608:16;;23589;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;23573:13;:64;;;;23673:2;23656:13;;:19;;23648:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23109:608:::0;;;;;:::o;330:181:3:-;388:7;408:9;424:1;420;:5;;;;:::i;:::-;408:17;;449:1;444;:6;;436:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;330:181;;;;:::o;146:98:0:-;199:7;226:10;219:17;;146:98;:::o;8988:380:1:-;9141:1;9124:19;;:5;:19;;;9116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9222:1;9203:21;;:7;:21;;;9195:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9306:6;9276:11;:18;9288:5;9276:18;;;;;;;;;;;;;;;:27;9295:7;9276:27;;;;;;;;;;;;;;;:36;;;;9344:7;9328:32;;9337:5;9328:32;;;9353:6;9328:32;;;;;;:::i;:::-;;;;;;;;8988:380;;;:::o;6491:128:4:-;6555:5;:19;6561:12;:10;:12::i;:::-;6555:19;;;;;;;;;;;;;;;;;;;;;;;;;6547:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6491:128::o;25380:5326::-;25528:1;25512:18;;:4;:18;;;25504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25605:1;25591:16;;:2;:16;;;25583:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25681:10;:14;25692:2;25681:14;;;;;;;;;;;;;;;;;;;;;;;;;25680:15;:36;;;;;25700:10;:16;25711:4;25700:16;;;;;;;;;;;;;;;;;;;;;;;;;25699:17;25680:36;25658:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;25828:1;25818:6;:11;25814:93;;25846:28;25862:4;25868:2;25872:1;25846:15;:28::i;:::-;25889:7;;25814:93;25956:1;25920:28;:32;25949:2;25920:32;;;;;;;;;;;;;;;;:37;25917:125;;26018:12;25983:28;:32;26012:2;25983:32;;;;;;;;;;;;;;;:47;;;;25917:125;26056:14;;;;;;;;;;;26052:2487;;;26117:7;:5;:7::i;:::-;26109:15;;:4;:15;;;;:49;;;;;26151:7;:5;:7::i;:::-;26145:13;;:2;:13;;;;26109:49;:86;;;;;26193:1;26179:16;;:2;:16;;;;26109:86;:128;;;;;26230:6;26216:21;;:2;:21;;;;26109:128;:158;;;;;26259:8;;;;;;;;;;;26258:9;26109:158;26087:2441;;;26307:13;;;;;;;;;;;26302:223;;26379:19;:25;26399:4;26379:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26408:19;:23;26428:2;26408:23;;;;;;;;;;;;;;;;;;;;;;;;;26379:52;26345:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26302:223;26681:20;;;;;;;;;;;26677:641;;;26762:7;:5;:7::i;:::-;26756:13;;:2;:13;;;;:72;;;;;26812:15;26798:30;;:2;:30;;;;26756:72;:129;;;;;26871:13;;;;;;;;;;;26857:28;;:2;:28;;;;26756:129;26726:573;;;27049:12;26974:28;:39;27003:9;26974:39;;;;;;;;;;;;;;;;:87;26936:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;27263:12;27221:28;:39;27250:9;27221:39;;;;;;;;;;;;;;;:54;;;;26726:573;26677:641;27392:25;:31;27418:4;27392:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27449:31;:35;27481:2;27449:35;;;;;;;;;;;;;;;;;;;;;;;;;27448:36;27392:92;27366:1147;;;27571:20;;27561:6;:30;;27527:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;27779:9;;27762:13;27772:2;27762:9;:13::i;:::-;27753:6;:22;;;;:::i;:::-;:35;;27719:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27366:1147;;;27957:25;:29;27983:2;27957:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;28012:31;:37;28044:4;28012:37;;;;;;;;;;;;;;;;;;;;;;;;;28011:38;27957:92;27931:582;;;28136:20;;28126:6;:30;;28092:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;27931:582;;;28293:31;:35;28325:2;28293:35;;;;;;;;;;;;;;;;;;;;;;;;;28288:225;;28413:9;;28396:13;28406:2;28396:9;:13::i;:::-;28387:6;:22;;;;:::i;:::-;:35;;28353:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28288:225;27931:582;27366:1147;26087:2441;26052:2487;28626:1;28613:10;;:14;;;;:::i;:::-;28596:12;:32;;:68;;;;;28651:13;;;;;;;;;;;28645:19;;:2;:19;;;;28596:68;:142;;;;;28695:42;28681:57;;:2;:57;;;;28596:142;28578:221;;;28782:5;28765:10;:14;28776:2;28765:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;28578:221;28811:28;28842:24;28860:4;28842:9;:24::i;:::-;28811:55;;28879:12;28918:18;;28894:20;:42;;28879:57;;28967:7;:35;;;;;28991:11;;;;;;;;;;;28967:35;:61;;;;;29020:8;;;;;;;;;;;29019:9;28967:61;:110;;;;;29046:25;:31;29072:4;29046:31;;;;;;;;;;;;;;;;;;;;;;;;;29045:32;28967:110;:153;;;;;29095:19;:25;29115:4;29095:25;;;;;;;;;;;;;;;;;;;;;;;;;29094:26;28967:153;:194;;;;;29138:19;:23;29158:2;29138:23;;;;;;;;;;;;;;;;;;;;;;;;;29137:24;28967:194;28949:326;;;29199:4;29188:8;;:15;;;;;;;;;;;;;;;;;;29220:10;:8;:10::i;:::-;29258:5;29247:8;;:16;;;;;;;;;;;;;;;;;;28949:326;29287:12;29303:8;;;;;;;;;;;29302:9;:24;;;;;29315:11;;;;;;;;;;;29302:24;29287:39;;29428:19;:25;29448:4;29428:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29457:19;:23;29477:2;29457:23;;;;;;;;;;;;;;;;;;;;;;;;;29428:52;29424:100;;;29507:5;29497:15;;29424:100;29536:12;29641:7;29637:969;;;29693:25;:29;29719:2;29693:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29742:1;29726:13;;:17;29693:50;29689:768;;;29771:34;29801:3;29771:25;29782:13;;29771:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29764:41;;29874:13;;29854:16;;29847:4;:23;;;;:::i;:::-;29846:41;;;;:::i;:::-;29824:18;;:63;;;;;;;:::i;:::-;;;;;;;;29944:13;;29930:10;;29923:4;:17;;;;:::i;:::-;29922:35;;;;:::i;:::-;29906:12;;:51;;;;;;;:::i;:::-;;;;;;;;30026:13;;30006:16;;29999:4;:23;;;;:::i;:::-;29998:41;;;;:::i;:::-;29976:18;;:63;;;;;;;:::i;:::-;;;;;;;;29689:768;;;30101:25;:31;30127:4;30101:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30151:1;30136:12;;:16;30101:51;30097:360;;;30180:33;30209:3;30180:24;30191:12;;30180:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30173:40;;30281:12;;30262:15;;30255:4;:22;;;;:::i;:::-;30254:39;;;;:::i;:::-;30232:18;;:61;;;;;;;:::i;:::-;;;;;;;;30349:12;;30336:9;;30329:4;:16;;;;:::i;:::-;30328:33;;;;:::i;:::-;30312:12;;:49;;;;;;;:::i;:::-;;;;;;;;30429:12;;30410:15;;30403:4;:22;;;;:::i;:::-;30402:39;;;;:::i;:::-;30380:18;;:61;;;;;;;:::i;:::-;;;;;;;;30097:360;29689:768;30484:1;30477:4;:8;30473:91;;;30506:42;30522:4;30536;30543;30506:15;:42::i;:::-;30473:91;30590:4;30580:14;;;;;:::i;:::-;;;29637:969;30625:29;30641:6;30649:4;30625:15;:29::i;:::-;30616:38;;30665:33;30681:4;30687:2;30691:6;30665:15;:33::i;:::-;25493:5213;;;;25380:5326;;;;:::o;1233:226:3:-;1353:7;1386:1;1381;:6;;1389:12;1373:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1413:9;1429:1;1425;:5;;;;:::i;:::-;1413:17;;1450:1;1443:8;;;1233:226;;;;;:::o;6947:191:4:-;7021:16;7040:6;;;;;;;;;;;7021:25;;7066:8;7057:6;;:17;;;;;;;;;;;;;;;;;;7121:8;7090:40;;7111:8;7090:40;;;;;;;;;;;;7010:128;6947:191;:::o;24396:188::-;24513:5;24479:25;:31;24505:4;24479:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24570:5;24536:40;;24564:4;24536:40;;;;;;;;;;;;24396:188;;:::o;6489:608:1:-;6647:1;6629:20;;:6;:20;;;6621:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6731:1;6710:23;;:9;:23;;;6702:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6786:47;6807:6;6815:9;6826:6;6786:20;:47::i;:::-;6864:108;6900:6;6864:108;;;;;;;;;;;;;;;;;:9;:17;6874:6;6864:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;6844:9;:17;6854:6;6844:17;;;;;;;;;;;;;;;:128;;;;7006:32;7031:6;7006:9;:20;7016:9;7006:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6983:9;:20;6993:9;6983:20;;;;;;;;;;;;;;;:55;;;;7071:9;7054:35;;7063:6;7054:35;;;7082:6;7054:35;;;;;;:::i;:::-;;;;;;;;6489:608;;;:::o;31225:1220:4:-;31264:23;31290:24;31308:4;31290:9;:24::i;:::-;31264:50;;31325:25;31421:12;;31387:18;;31353;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;31325:108;;31444:12;31492:1;31473:15;:20;:46;;;;31518:1;31497:17;:22;31473:46;31469:85;;;31536:7;;;;;31469:85;31609:2;31588:18;;:23;;;;:::i;:::-;31570:15;:41;31566:115;;;31667:2;31646:18;;:23;;;;:::i;:::-;31628:41;;31566:115;31693:23;31806:1;31773:17;31738:18;;31720:15;:36;;;;:::i;:::-;31719:71;;;;:::i;:::-;:88;;;;:::i;:::-;31693:114;;31818:26;31847:36;31867:15;31847;:19;;:36;;;;:::i;:::-;31818:65;;31896:25;31924:21;31896:49;;31958:36;31975:18;31958:16;:36::i;:::-;32007:18;32028:44;32054:17;32028:21;:25;;:44;;;;:::i;:::-;32007:65;;32085:17;32105:51;32138:17;32105:28;32120:12;;32105:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32085:71;;32190:1;32169:18;:22;;;;32223:1;32202:18;:22;;;;32250:1;32235:12;:16;;;;32286:9;;;;;;;;;;;32278:23;;32309:9;32278:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32264:59;;;;;32358:15;;;;;;;;;;;32350:29;;32401:21;32350:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32336:101;;;;;31253:1192;;;;;;;;31225:1220;:::o;1718:471:3:-;1776:7;2026:1;2021;:6;2017:47;;2051:1;2044:8;;;;2017:47;2076:9;2092:1;2088;:5;;;;:::i;:::-;2076:17;;2121:1;2116;2112;:5;;;;:::i;:::-;:10;2104:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2180:1;2173:8;;;1718:471;;;;;:::o;2665:132::-;2723:7;2750:39;2754:1;2757;2750:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2743:46;;2665:132;;;;:::o;19754:816:4:-;19830:7;19899:14;19916:2;19899:19;;19929:12;19957:28;:34;19986:4;19957:34;;;;;;;;;;;;;;;;19944:12;:47;;;;:::i;:::-;19929:62;;20002:25;20037:6;20030:4;:13;;;;:::i;:::-;20002:41;;20111:24;20161:3;20138:20;:26;:59;;20177:20;20171:3;:26;;;;:::i;:::-;20138:59;;;20167:1;20138:59;20111:86;;20377:18;20429:3;20407:19;20398:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;20377:55;;20447:20;:26;20468:4;20447:26;;;;;;;;;;;;;;;;;;;;;;;;;20443:96;;;20507:20;20525:1;20507:13;:17;;:20;;;;:::i;:::-;20500:27;;;;;;;;;20443:96;20556:6;20549:13;;;;;;;19754:816;;;;;:::o;9971:125:1:-;;;;:::o;794:136:3:-;852:7;879:43;883:1;886;879:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;872:50;;794:136;;;;:::o;30714:503:4:-;30780:21;30818:1;30804:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30780:40;;30849:4;30831;30836:1;30831:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30875:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30865:4;30870:1;30865:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30910:62;30927:4;30942:15;30960:11;30910:8;:62::i;:::-;30985:15;:66;;;31066:11;31092:1;31136:4;31163;31183:15;30985:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30769:448;30714:503;:::o;3293:312:3:-;3413:7;3445:1;3441;:5;3448:12;3433:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3472:9;3488:1;3484;:5;;;;:::i;:::-;3472:17;;3596:1;3589:8;;;3293:312;;;;;:::o;4893:107::-;4951:7;4983:1;4978;:6;;:14;;4991:1;4978:14;;;4987:1;4978:14;4971:21;;4893:107;;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:117::-;6180:1;6177;6170:12;6194:117;6303:1;6300;6293:12;6317:117;6426:1;6423;6416:12;6457:568;6530:8;6540:6;6590:3;6583:4;6575:6;6571:17;6567:27;6557:122;;6598:79;;:::i;:::-;6557:122;6711:6;6698:20;6688:30;;6741:18;6733:6;6730:30;6727:117;;;6763:79;;:::i;:::-;6727:117;6877:4;6869:6;6865:17;6853:29;;6931:3;6923:4;6915:6;6911:17;6901:8;6897:32;6894:41;6891:128;;;6938:79;;:::i;:::-;6891:128;6457:568;;;;;:::o;7031:704::-;7126:6;7134;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7345:1;7334:9;7330:17;7317:31;7375:18;7367:6;7364:30;7361:117;;;7397:79;;:::i;:::-;7361:117;7510:80;7582:7;7573:6;7562:9;7558:22;7510:80;:::i;:::-;7492:98;;;;7288:312;7639:2;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7610:118;7031:704;;;;;:::o;7741:116::-;7811:21;7826:5;7811:21;:::i;:::-;7804:5;7801:32;7791:60;;7847:1;7844;7837:12;7791:60;7741:116;:::o;7863:133::-;7906:5;7944:6;7931:20;7922:29;;7960:30;7984:5;7960:30;:::i;:::-;7863:133;;;;:::o;8002:468::-;8067:6;8075;8124:2;8112:9;8103:7;8099:23;8095:32;8092:119;;;8130:79;;:::i;:::-;8092:119;8250:1;8275:53;8320:7;8311:6;8300:9;8296:22;8275:53;:::i;:::-;8265:63;;8221:117;8377:2;8403:50;8445:7;8436:6;8425:9;8421:22;8403:50;:::i;:::-;8393:60;;8348:115;8002:468;;;;;:::o;8476:86::-;8511:7;8551:4;8544:5;8540:16;8529:27;;8476:86;;;:::o;8568:112::-;8651:22;8667:5;8651:22;:::i;:::-;8646:3;8639:35;8568:112;;:::o;8686:214::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8826:67;8890:1;8879:9;8875:17;8866:6;8826:67;:::i;:::-;8686:214;;;;:::o;8906:118::-;8993:24;9011:5;8993:24;:::i;:::-;8988:3;8981:37;8906:118;;:::o;9030:222::-;9123:4;9161:2;9150:9;9146:18;9138:26;;9174:71;9242:1;9231:9;9227:17;9218:6;9174:71;:::i;:::-;9030:222;;;;:::o;9258:698::-;9350:6;9358;9366;9415:2;9403:9;9394:7;9390:23;9386:32;9383:119;;;9421:79;;:::i;:::-;9383:119;9569:1;9558:9;9554:17;9541:31;9599:18;9591:6;9588:30;9585:117;;;9621:79;;:::i;:::-;9585:117;9734:80;9806:7;9797:6;9786:9;9782:22;9734:80;:::i;:::-;9716:98;;;;9512:312;9863:2;9889:50;9931:7;9922:6;9911:9;9907:22;9889:50;:::i;:::-;9879:60;;9834:115;9258:698;;;;;:::o;9962:619::-;10039:6;10047;10055;10104:2;10092:9;10083:7;10079:23;10075:32;10072:119;;;10110:79;;:::i;:::-;10072:119;10230:1;10255:53;10300:7;10291:6;10280:9;10276:22;10255:53;:::i;:::-;10245:63;;10201:117;10357:2;10383:53;10428:7;10419:6;10408:9;10404:22;10383:53;:::i;:::-;10373:63;;10328:118;10485:2;10511:53;10556:7;10547:6;10536:9;10532:22;10511:53;:::i;:::-;10501:63;;10456:118;9962:619;;;;;:::o;10587:323::-;10643:6;10692:2;10680:9;10671:7;10667:23;10663:32;10660:119;;;10698:79;;:::i;:::-;10660:119;10818:1;10843:50;10885:7;10876:6;10865:9;10861:22;10843:50;:::i;:::-;10833:60;;10789:114;10587:323;;;;:::o;10916:474::-;10984:6;10992;11041:2;11029:9;11020:7;11016:23;11012:32;11009:119;;;11047:79;;:::i;:::-;11009:119;11167:1;11192:53;11237:7;11228:6;11217:9;11213:22;11192:53;:::i;:::-;11182:63;;11138:117;11294:2;11320:53;11365:7;11356:6;11345:9;11341:22;11320:53;:::i;:::-;11310:63;;11265:118;10916:474;;;;;:::o;11396:911::-;11491:6;11499;11507;11515;11523;11572:3;11560:9;11551:7;11547:23;11543:33;11540:120;;;11579:79;;:::i;:::-;11540:120;11699:1;11724:53;11769:7;11760:6;11749:9;11745:22;11724:53;:::i;:::-;11714:63;;11670:117;11826:2;11852:53;11897:7;11888:6;11877:9;11873:22;11852:53;:::i;:::-;11842:63;;11797:118;11954:2;11980:53;12025:7;12016:6;12005:9;12001:22;11980:53;:::i;:::-;11970:63;;11925:118;12082:2;12108:53;12153:7;12144:6;12133:9;12129:22;12108:53;:::i;:::-;12098:63;;12053:118;12210:3;12237:53;12282:7;12273:6;12262:9;12258:22;12237:53;:::i;:::-;12227:63;;12181:119;11396:911;;;;;;;;:::o;12313:180::-;12361:77;12358:1;12351:88;12458:4;12455:1;12448:15;12482:4;12479:1;12472:15;12499:320;12543:6;12580:1;12574:4;12570:12;12560:22;;12627:1;12621:4;12617:12;12648:18;12638:81;;12704:4;12696:6;12692:17;12682:27;;12638:81;12766:2;12758:6;12755:14;12735:18;12732:38;12729:84;;12785:18;;:::i;:::-;12729:84;12550:269;12499:320;;;:::o;12825:180::-;12873:77;12870:1;12863:88;12970:4;12967:1;12960:15;12994:4;12991:1;12984:15;13011:410;13051:7;13074:20;13092:1;13074:20;:::i;:::-;13069:25;;13108:20;13126:1;13108:20;:::i;:::-;13103:25;;13163:1;13160;13156:9;13185:30;13203:11;13185:30;:::i;:::-;13174:41;;13364:1;13355:7;13351:15;13348:1;13345:22;13325:1;13318:9;13298:83;13275:139;;13394:18;;:::i;:::-;13275:139;13059:362;13011:410;;;;:::o;13427:180::-;13475:77;13472:1;13465:88;13572:4;13569:1;13562:15;13596:4;13593:1;13586:15;13613:185;13653:1;13670:20;13688:1;13670:20;:::i;:::-;13665:25;;13704:20;13722:1;13704:20;:::i;:::-;13699:25;;13743:1;13733:35;;13748:18;;:::i;:::-;13733:35;13790:1;13787;13783:9;13778:14;;13613:185;;;;:::o;13804:234::-;13944:34;13940:1;13932:6;13928:14;13921:58;14013:17;14008:2;14000:6;13996:15;13989:42;13804:234;:::o;14044:366::-;14186:3;14207:67;14271:2;14266:3;14207:67;:::i;:::-;14200:74;;14283:93;14372:3;14283:93;:::i;:::-;14401:2;14396:3;14392:12;14385:19;;14044:366;;;:::o;14416:419::-;14582:4;14620:2;14609:9;14605:18;14597:26;;14669:9;14663:4;14659:20;14655:1;14644:9;14640:17;14633:47;14697:131;14823:4;14697:131;:::i;:::-;14689:139;;14416:419;;;:::o;14841:180::-;14889:77;14886:1;14879:88;14986:4;14983:1;14976:15;15010:4;15007:1;15000:15;15027:233;15066:3;15089:24;15107:5;15089:24;:::i;:::-;15080:33;;15135:66;15128:5;15125:77;15122:103;;15205:18;;:::i;:::-;15122:103;15252:1;15245:5;15241:13;15234:20;;15027:233;;;:::o;15266:191::-;15306:3;15325:20;15343:1;15325:20;:::i;:::-;15320:25;;15359:20;15377:1;15359:20;:::i;:::-;15354:25;;15402:1;15399;15395:9;15388:16;;15423:3;15420:1;15417:10;15414:36;;;15430:18;;:::i;:::-;15414:36;15266:191;;;;:::o;15463:179::-;15603:31;15599:1;15591:6;15587:14;15580:55;15463:179;:::o;15648:366::-;15790:3;15811:67;15875:2;15870:3;15811:67;:::i;:::-;15804:74;;15887:93;15976:3;15887:93;:::i;:::-;16005:2;16000:3;15996:12;15989:19;;15648:366;;;:::o;16020:419::-;16186:4;16224:2;16213:9;16209:18;16201:26;;16273:9;16267:4;16263:20;16259:1;16248:9;16244:17;16237:47;16301:131;16427:4;16301:131;:::i;:::-;16293:139;;16020:419;;;:::o;16445:244::-;16585:34;16581:1;16573:6;16569:14;16562:58;16654:27;16649:2;16641:6;16637:15;16630:52;16445:244;:::o;16695:366::-;16837:3;16858:67;16922:2;16917:3;16858:67;:::i;:::-;16851:74;;16934:93;17023:3;16934:93;:::i;:::-;17052:2;17047:3;17043:12;17036:19;;16695:366;;;:::o;17067:419::-;17233:4;17271:2;17260:9;17256:18;17248:26;;17320:9;17314:4;17310:20;17306:1;17295:9;17291:17;17284:47;17348:131;17474:4;17348:131;:::i;:::-;17340:139;;17067:419;;;:::o;17492:223::-;17632:34;17628:1;17620:6;17616:14;17609:58;17701:6;17696:2;17688:6;17684:15;17677:31;17492:223;:::o;17721:366::-;17863:3;17884:67;17948:2;17943:3;17884:67;:::i;:::-;17877:74;;17960:93;18049:3;17960:93;:::i;:::-;18078:2;18073:3;18069:12;18062:19;;17721:366;;;:::o;18093:419::-;18259:4;18297:2;18286:9;18282:18;18274:26;;18346:9;18340:4;18336:20;18332:1;18321:9;18317:17;18310:47;18374:131;18500:4;18374:131;:::i;:::-;18366:139;;18093:419;;;:::o;18518:240::-;18658:34;18654:1;18646:6;18642:14;18635:58;18727:23;18722:2;18714:6;18710:15;18703:48;18518:240;:::o;18764:366::-;18906:3;18927:67;18991:2;18986:3;18927:67;:::i;:::-;18920:74;;19003:93;19092:3;19003:93;:::i;:::-;19121:2;19116:3;19112:12;19105:19;;18764:366;;;:::o;19136:419::-;19302:4;19340:2;19329:9;19325:18;19317:26;;19389:9;19383:4;19379:20;19375:1;19364:9;19360:17;19353:47;19417:131;19543:4;19417:131;:::i;:::-;19409:139;;19136:419;;;:::o;19561:239::-;19701:34;19697:1;19689:6;19685:14;19678:58;19770:22;19765:2;19757:6;19753:15;19746:47;19561:239;:::o;19806:366::-;19948:3;19969:67;20033:2;20028:3;19969:67;:::i;:::-;19962:74;;20045:93;20134:3;20045:93;:::i;:::-;20163:2;20158:3;20154:12;20147:19;;19806:366;;;:::o;20178:419::-;20344:4;20382:2;20371:9;20367:18;20359:26;;20431:9;20425:4;20421:20;20417:1;20406:9;20402:17;20395:47;20459:131;20585:4;20459:131;:::i;:::-;20451:139;;20178:419;;;:::o;20603:225::-;20743:34;20739:1;20731:6;20727:14;20720:58;20812:8;20807:2;20799:6;20795:15;20788:33;20603:225;:::o;20834:366::-;20976:3;20997:67;21061:2;21056:3;20997:67;:::i;:::-;20990:74;;21073:93;21162:3;21073:93;:::i;:::-;21191:2;21186:3;21182:12;21175:19;;20834:366;;;:::o;21206:419::-;21372:4;21410:2;21399:9;21395:18;21387:26;;21459:9;21453:4;21449:20;21445:1;21434:9;21430:17;21423:47;21487:131;21613:4;21487:131;:::i;:::-;21479:139;;21206:419;;;:::o;21631:177::-;21771:29;21767:1;21759:6;21755:14;21748:53;21631:177;:::o;21814:366::-;21956:3;21977:67;22041:2;22036:3;21977:67;:::i;:::-;21970:74;;22053:93;22142:3;22053:93;:::i;:::-;22171:2;22166:3;22162:12;22155:19;;21814:366;;;:::o;22186:419::-;22352:4;22390:2;22379:9;22375:18;22367:26;;22439:9;22433:4;22429:20;22425:1;22414:9;22410:17;22403:47;22467:131;22593:4;22467:131;:::i;:::-;22459:139;;22186:419;;;:::o;22611:223::-;22751:34;22747:1;22739:6;22735:14;22728:58;22820:6;22815:2;22807:6;22803:15;22796:31;22611:223;:::o;22840:366::-;22982:3;23003:67;23067:2;23062:3;23003:67;:::i;:::-;22996:74;;23079:93;23168:3;23079:93;:::i;:::-;23197:2;23192:3;23188:12;23181:19;;22840:366;;;:::o;23212:419::-;23378:4;23416:2;23405:9;23401:18;23393:26;;23465:9;23459:4;23455:20;23451:1;23440:9;23436:17;23429:47;23493:131;23619:4;23493:131;:::i;:::-;23485:139;;23212:419;;;:::o;23637:221::-;23777:34;23773:1;23765:6;23761:14;23754:58;23846:4;23841:2;23833:6;23829:15;23822:29;23637:221;:::o;23864:366::-;24006:3;24027:67;24091:2;24086:3;24027:67;:::i;:::-;24020:74;;24103:93;24192:3;24103:93;:::i;:::-;24221:2;24216:3;24212:12;24205:19;;23864:366;;;:::o;24236:419::-;24402:4;24440:2;24429:9;24425:18;24417:26;;24489:9;24483:4;24479:20;24475:1;24464:9;24460:17;24453:47;24517:131;24643:4;24517:131;:::i;:::-;24509:139;;24236:419;;;:::o;24661:182::-;24801:34;24797:1;24789:6;24785:14;24778:58;24661:182;:::o;24849:366::-;24991:3;25012:67;25076:2;25071:3;25012:67;:::i;:::-;25005:74;;25088:93;25177:3;25088:93;:::i;:::-;25206:2;25201:3;25197:12;25190:19;;24849:366;;;:::o;25221:419::-;25387:4;25425:2;25414:9;25410:18;25402:26;;25474:9;25468:4;25464:20;25460:1;25449:9;25445:17;25438:47;25502:131;25628:4;25502:131;:::i;:::-;25494:139;;25221:419;;;:::o;25646:224::-;25786:34;25782:1;25774:6;25770:14;25763:58;25855:7;25850:2;25842:6;25838:15;25831:32;25646:224;:::o;25876:366::-;26018:3;26039:67;26103:2;26098:3;26039:67;:::i;:::-;26032:74;;26115:93;26204:3;26115:93;:::i;:::-;26233:2;26228:3;26224:12;26217:19;;25876:366;;;:::o;26248:419::-;26414:4;26452:2;26441:9;26437:18;26429:26;;26501:9;26495:4;26491:20;26487:1;26476:9;26472:17;26465:47;26529:131;26655:4;26529:131;:::i;:::-;26521:139;;26248:419;;;:::o;26673:222::-;26813:34;26809:1;26801:6;26797:14;26790:58;26882:5;26877:2;26869:6;26865:15;26858:30;26673:222;:::o;26901:366::-;27043:3;27064:67;27128:2;27123:3;27064:67;:::i;:::-;27057:74;;27140:93;27229:3;27140:93;:::i;:::-;27258:2;27253:3;27249:12;27242:19;;26901:366;;;:::o;27273:419::-;27439:4;27477:2;27466:9;27462:18;27454:26;;27526:9;27520:4;27516:20;27512:1;27501:9;27497:17;27490:47;27554:131;27680:4;27554:131;:::i;:::-;27546:139;;27273:419;;;:::o;27698:236::-;27838:34;27834:1;27826:6;27822:14;27815:58;27907:19;27902:2;27894:6;27890:15;27883:44;27698:236;:::o;27940:366::-;28082:3;28103:67;28167:2;28162:3;28103:67;:::i;:::-;28096:74;;28179:93;28268:3;28179:93;:::i;:::-;28297:2;28292:3;28288:12;28281:19;;27940:366;;;:::o;28312:419::-;28478:4;28516:2;28505:9;28501:18;28493:26;;28565:9;28559:4;28555:20;28551:1;28540:9;28536:17;28529:47;28593:131;28719:4;28593:131;:::i;:::-;28585:139;;28312:419;;;:::o;28737:172::-;28877:24;28873:1;28865:6;28861:14;28854:48;28737:172;:::o;28915:366::-;29057:3;29078:67;29142:2;29137:3;29078:67;:::i;:::-;29071:74;;29154:93;29243:3;29154:93;:::i;:::-;29272:2;29267:3;29263:12;29256:19;;28915:366;;;:::o;29287:419::-;29453:4;29491:2;29480:9;29476:18;29468:26;;29540:9;29534:4;29530:20;29526:1;29515:9;29511:17;29504:47;29568:131;29694:4;29568:131;:::i;:::-;29560:139;;29287:419;;;:::o;29712:297::-;29852:34;29848:1;29840:6;29836:14;29829:58;29921:34;29916:2;29908:6;29904:15;29897:59;29990:11;29985:2;29977:6;29973:15;29966:36;29712:297;:::o;30015:366::-;30157:3;30178:67;30242:2;30237:3;30178:67;:::i;:::-;30171:74;;30254:93;30343:3;30254:93;:::i;:::-;30372:2;30367:3;30363:12;30356:19;;30015:366;;;:::o;30387:419::-;30553:4;30591:2;30580:9;30576:18;30568:26;;30640:9;30634:4;30630:20;30626:1;30615:9;30611:17;30604:47;30668:131;30794:4;30668:131;:::i;:::-;30660:139;;30387:419;;;:::o;30812:240::-;30952:34;30948:1;30940:6;30936:14;30929:58;31021:23;31016:2;31008:6;31004:15;30997:48;30812:240;:::o;31058:366::-;31200:3;31221:67;31285:2;31280:3;31221:67;:::i;:::-;31214:74;;31297:93;31386:3;31297:93;:::i;:::-;31415:2;31410:3;31406:12;31399:19;;31058:366;;;:::o;31430:419::-;31596:4;31634:2;31623:9;31619:18;31611:26;;31683:9;31677:4;31673:20;31669:1;31658:9;31654:17;31647:47;31711:131;31837:4;31711:131;:::i;:::-;31703:139;;31430:419;;;:::o;31855:169::-;31995:21;31991:1;31983:6;31979:14;31972:45;31855:169;:::o;32030:366::-;32172:3;32193:67;32257:2;32252:3;32193:67;:::i;:::-;32186:74;;32269:93;32358:3;32269:93;:::i;:::-;32387:2;32382:3;32378:12;32371:19;;32030:366;;;:::o;32402:419::-;32568:4;32606:2;32595:9;32591:18;32583:26;;32655:9;32649:4;32645:20;32641:1;32630:9;32626:17;32619:47;32683:131;32809:4;32683:131;:::i;:::-;32675:139;;32402:419;;;:::o;32827:241::-;32967:34;32963:1;32955:6;32951:14;32944:58;33036:24;33031:2;33023:6;33019:15;33012:49;32827:241;:::o;33074:366::-;33216:3;33237:67;33301:2;33296:3;33237:67;:::i;:::-;33230:74;;33313:93;33402:3;33313:93;:::i;:::-;33431:2;33426:3;33422:12;33415:19;;33074:366;;;:::o;33446:419::-;33612:4;33650:2;33639:9;33635:18;33627:26;;33699:9;33693:4;33689:20;33685:1;33674:9;33670:17;33663:47;33727:131;33853:4;33727:131;:::i;:::-;33719:139;;33446:419;;;:::o;33871:194::-;33911:4;33931:20;33949:1;33931:20;:::i;:::-;33926:25;;33965:20;33983:1;33965:20;:::i;:::-;33960:25;;34009:1;34006;34002:9;33994:17;;34033:1;34027:4;34024:11;34021:37;;;34038:18;;:::i;:::-;34021:37;33871:194;;;;:::o;34071:147::-;34172:11;34209:3;34194:18;;34071:147;;;;:::o;34224:114::-;;:::o;34344:398::-;34503:3;34524:83;34605:1;34600:3;34524:83;:::i;:::-;34517:90;;34616:93;34705:3;34616:93;:::i;:::-;34734:1;34729:3;34725:11;34718:18;;34344:398;;;:::o;34748:379::-;34932:3;34954:147;35097:3;34954:147;:::i;:::-;34947:154;;35118:3;35111:10;;34748:379;;;:::o;35133:220::-;35273:34;35269:1;35261:6;35257:14;35250:58;35342:3;35337:2;35329:6;35325:15;35318:28;35133:220;:::o;35359:366::-;35501:3;35522:67;35586:2;35581:3;35522:67;:::i;:::-;35515:74;;35598:93;35687:3;35598:93;:::i;:::-;35716:2;35711:3;35707:12;35700:19;;35359:366;;;:::o;35731:419::-;35897:4;35935:2;35924:9;35920:18;35912:26;;35984:9;35978:4;35974:20;35970:1;35959:9;35955:17;35948:47;36012:131;36138:4;36012:131;:::i;:::-;36004:139;;35731:419;;;:::o;36156:180::-;36204:77;36201:1;36194:88;36301:4;36298:1;36291:15;36325:4;36322:1;36315:15;36342:143;36399:5;36430:6;36424:13;36415:22;;36446:33;36473:5;36446:33;:::i;:::-;36342:143;;;;:::o;36491:351::-;36561:6;36610:2;36598:9;36589:7;36585:23;36581:32;36578:119;;;36616:79;;:::i;:::-;36578:119;36736:1;36761:64;36817:7;36808:6;36797:9;36793:22;36761:64;:::i;:::-;36751:74;;36707:128;36491:351;;;;:::o;36848:85::-;36893:7;36922:5;36911:16;;36848:85;;;:::o;36939:158::-;36997:9;37030:61;37048:42;37057:32;37083:5;37057:32;:::i;:::-;37048:42;:::i;:::-;37030:61;:::i;:::-;37017:74;;36939:158;;;:::o;37103:147::-;37198:45;37237:5;37198:45;:::i;:::-;37193:3;37186:58;37103:147;;:::o;37256:114::-;37323:6;37357:5;37351:12;37341:22;;37256:114;;;:::o;37376:184::-;37475:11;37509:6;37504:3;37497:19;37549:4;37544:3;37540:14;37525:29;;37376:184;;;;:::o;37566:132::-;37633:4;37656:3;37648:11;;37686:4;37681:3;37677:14;37669:22;;37566:132;;;:::o;37704:108::-;37781:24;37799:5;37781:24;:::i;:::-;37776:3;37769:37;37704:108;;:::o;37818:179::-;37887:10;37908:46;37950:3;37942:6;37908:46;:::i;:::-;37986:4;37981:3;37977:14;37963:28;;37818:179;;;;:::o;38003:113::-;38073:4;38105;38100:3;38096:14;38088:22;;38003:113;;;:::o;38152:732::-;38271:3;38300:54;38348:5;38300:54;:::i;:::-;38370:86;38449:6;38444:3;38370:86;:::i;:::-;38363:93;;38480:56;38530:5;38480:56;:::i;:::-;38559:7;38590:1;38575:284;38600:6;38597:1;38594:13;38575:284;;;38676:6;38670:13;38703:63;38762:3;38747:13;38703:63;:::i;:::-;38696:70;;38789:60;38842:6;38789:60;:::i;:::-;38779:70;;38635:224;38622:1;38619;38615:9;38610:14;;38575:284;;;38579:14;38875:3;38868:10;;38276:608;;;38152:732;;;;:::o;38890:831::-;39153:4;39191:3;39180:9;39176:19;39168:27;;39205:71;39273:1;39262:9;39258:17;39249:6;39205:71;:::i;:::-;39286:80;39362:2;39351:9;39347:18;39338:6;39286:80;:::i;:::-;39413:9;39407:4;39403:20;39398:2;39387:9;39383:18;39376:48;39441:108;39544:4;39535:6;39441:108;:::i;:::-;39433:116;;39559:72;39627:2;39616:9;39612:18;39603:6;39559:72;:::i;:::-;39641:73;39709:3;39698:9;39694:19;39685:6;39641:73;:::i;:::-;38890:831;;;;;;;;:::o

Swarm Source

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