ETH Price: $3,588.16 (+3.61%)
 

Overview

Max Total Supply

3,942,548,607.898424076638845516 LDV

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
27,211,955.648070643095158545 LDV

Value
$0.00
0xD2e48bA114527126eF20a5b21282ed3AeD7c220a
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:
LiquidVault

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-24
*/

/**
 * Website : https://www.liquidvault.finance/
 * USDW stablecoin Website : https://usdw.liquidvault.finance/
 * App : https://app.liquidvault.finance/
 * Twitter : https://twitter.com/LiquidVaultETH
 * Medium : https://medium.com/@LiquidVault/about
 * Telegram : https://t.me/liquidvault
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

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

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

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

    function WETH() external pure returns (address);

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

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

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

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by 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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

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

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

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

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

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

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

library IterableMapping {
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    function get(Map storage map, address key) public view returns (uint) {
        return map.values[key];
    }

    function getIndexOfKey(
        Map storage map,
        address key
    ) public view returns (int) {
        if (!map.inserted[key]) {
            return -1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(
        Map storage map,
        uint index
    ) public view returns (address) {
        return map.keys[index];
    }

    function size(Map storage map) public view returns (uint) {
        return map.keys.length;
    }

    function set(Map storage map, address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(Map storage map, address key) public {
        if (!map.inserted[key]) {
            return;
        }

        delete map.inserted[key];
        delete map.values[key];

        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];

        map.indexOf[lastKey] = index;
        delete map.indexOf[key];

        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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

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

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

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

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

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

contract LiquidVault is Ownable, ERC20 {
    IRouter public uniswapV2Router;
    address public immutable uniswapV2Pair;

    string private constant _name = "Liquid Vault";
    string private constant _symbol = "LDV";
    uint8 private constant _decimals = 18;

    bool public isTradingEnabled;
    bool public transferCoolDown;

    uint256 constant maxSupply = 5000000000 * (10 ** 18);
    uint256 public maxWalletAmount = (maxSupply * 220) / 10000;
    uint256 public maxTxAmount = (maxSupply * 200) / 10000;

    uint256 private minWalletTx;
    uint256 private minimumSwapAmt;
    uint256 public minimumTokensBeforeSwap = (maxSupply * 3) / 10000;
    bool private _swapping;

    address private liquidityWallet;
    address private marketingWallet;
    address private treasuryWallet;

    struct FeeMap {
        bytes23 periodName;
        uint8 blocksInPeriod;
        uint256 timeInPeriod;
        uint8 liquidityFeeOnBuy;
        uint8 liquidityFeeOnSell;
        uint8 marketingFeeOnBuy;
        uint8 marketingFeeOnSell;
        uint8 buyBackFeeOnBuy;
        uint8 buyBackFeeOnSell;
        uint8 burnFeeOnBuy;
        uint8 burnFeeOnSell;
    }

    FeeMap private _base = FeeMap("base", 0, 0, 1, 0, 20, 20, 1, 1, 0, 1);

    mapping(address => bool) private _isAllowedToTradeWhenDisabled;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMaxTransactionLimit;
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    mapping(address => uint256) private _swapAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => uint256) private _holderlastTimestamp;

    uint8 private _liquidityFee;
    uint8 private _marketingFee;
    uint8 private _buyBackFee;
    uint8 private _burnFee;
    uint8 private _totalFee;

    event AutomatedMarketMakerPairChange(
        address indexed pair,
        bool indexed value
    );
    event UniswapV2RouterChange(
        address indexed newAddress,
        address indexed oldAddress
    );
    event StructureChange(
        string indexed indentifier,
        address indexed newWallet,
        address indexed oldWallet
    );
    event FeeChange(
        string indexed identifier,
        uint8 liquidityFee,
        uint8 marketingFee,
        uint8 buyBackFee,
        uint8 burnFee
    );
    event DetailFeeChange(
        uint256 indexed newValue,
        uint256 indexed oldValue,
        string indexed taxType,
        bytes23 period
    );
    event MaxTransactionAmountChange(
        uint256 indexed newValue,
        uint256 indexed oldValue
    );
    event MaxWalletAmountChange(
        uint256 indexed newValue,
        uint256 indexed oldValue
    );
    event ExcludeFromFeesProcess(address indexed account, bool isExcluded);
    event ExcludeFromMaxTransferChange(
        address indexed account,
        bool isExcluded
    );
    event ExcludeFromMaxStructureChange(
        address indexed account,
        bool isExcluded
    );
    event AllowedWhenTradingDisabledChange(
        address indexed account,
        bool isExcluded
    );
    event MinTokenAmountBeforeSwapChange(
        uint256 indexed newValue,
        uint256 indexed oldValue
    );
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event TokenBurn(uint8 _burnFee, uint256 burnAmount);
    event FeesApplied(
        uint8 liquidityFee,
        uint8 marketingFee,
        uint8 buyBackFee,
        uint8 burnFee,
        uint8 totalFee
    );
    event BuyBackTriggered(uint256 amount);
    event WithdrawOverETH(uint256 amount);

    constructor() ERC20(_name, _symbol) {
        liquidityWallet = owner();
        treasuryWallet = address(0x14104a15646eFa17fefc45A473FB6dB6199C85dA);
        marketingWallet = address(0xb39BaFd511d95709226aaE92bA7F0F7ccE2AE9d6);

        IRouter _uniswapV2Router = IRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        address _uniswapV2Pair = IFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _settingAutomatedMarketMakerPair(_uniswapV2Pair, true);
        transferCoolDown = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[treasuryWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        _isAllowedToTradeWhenDisabled[owner()] = true;
        _isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
        _isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[marketingWallet] = true;
        _isExcludedFromMaxWalletLimit[treasuryWallet] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxTransactionLimit[address(this)] = true;
        _isExcludedFromMaxTransactionLimit[owner()] = true;
        _isExcludedFromMaxTransactionLimit[marketingWallet] = true;
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = true;
        _mint(owner(), maxSupply);
    }

    receive() external payable {}

    // trading start!
    function openTrading() external onlyOwner {
        isTradingEnabled = true;
    }


    function allowTradingDisabled(
        address account,
        bool allowed
    ) external onlyOwner {
        _isAllowedToTradeWhenDisabled[account] = allowed;
        emit AllowedWhenTradingDisabledChange(account, allowed);
    }

    function _settingAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[pair] = value;
        emit AutomatedMarketMakerPairChange(pair, value);
    }

    function excludeFromFees(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromFee[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromFee[account] = excluded;
        emit ExcludeFromFeesProcess(account, excluded);
    }

    function excludeFromMaxTransactionLimit(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromMaxTransactionLimit[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromMaxTransactionLimit[account] = excluded;
        emit ExcludeFromMaxTransferChange(account, excluded);
    }

    function excludeFromMaxWalletLimit(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromMaxWalletLimit[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromMaxWalletLimit[account] = excluded;
        emit ExcludeFromMaxStructureChange(account, excluded);
    }

    function setStructure(
        address newLiquidityWallet,
        address newMarketingWallet,
        address newTreasuryWallet
    ) external onlyOwner {
        if (liquidityWallet != newLiquidityWallet) {
            require(
                newLiquidityWallet != address(0),
                "The liquidityWallet cannot be 0"
            );
            require(
                newLiquidityWallet != uniswapV2Pair,
                "The liquidityWallet cannot be 0"
            );
            emit StructureChange(
                "liquidityWallet",
                newLiquidityWallet,
                liquidityWallet
            );
            liquidityWallet = newLiquidityWallet;
        }
        if (marketingWallet != newMarketingWallet) {
            require(
                newMarketingWallet != address(0),
                "The marketingWallet cannot be 0"
            );
            require(
                newMarketingWallet != uniswapV2Pair,
                "The marketingWallet cannot be 0"
            );
            emit StructureChange(
                "marketingWallet",
                newMarketingWallet,
                marketingWallet
            );
            marketingWallet = newMarketingWallet;
        }
        if (treasuryWallet != newTreasuryWallet) {
            require(
                newTreasuryWallet != address(0),
                "The treasuryWallet cannot be 0"
            );
            require(
                newTreasuryWallet != uniswapV2Pair,
                "The treasuryWallet cannot be 0"
            );
            emit StructureChange(
                "treasuryWallet",
                newTreasuryWallet,
                treasuryWallet
            );
            treasuryWallet = newTreasuryWallet;
        }
    }

    // set up fees
    function setBaseBuyFee(
        uint8 _liquidityFeeOnBuy,
        uint8 _marketingFeeOnBuy,
        uint8 _buyBackFeeOnBuy,
        uint8 _burnFeeOnBuy
    ) external onlyOwner {
        require(
            3 >
                _liquidityFeeOnBuy +
                    _marketingFeeOnBuy +
                    _buyBackFeeOnBuy +
                    _burnFeeOnBuy,
            "buy fee 3%"
        );
        _setBuyFee(
            _base,
            _liquidityFeeOnBuy,
            _marketingFeeOnBuy,
            _buyBackFeeOnBuy,
            _burnFeeOnBuy
        );
        emit FeeChange(
            "baseFees-Buy",
            _liquidityFeeOnBuy,
            _marketingFeeOnBuy,
            _buyBackFeeOnBuy,
            _burnFeeOnBuy
        );
    }

    function setBaseSellFee(
        uint8 _liquidityFeeOnSell,
        uint8 _marketingFeeOnSell,
        uint8 _buyBackFeeOnSell,
        uint8 _burnFeeOnSell
    ) external onlyOwner {
        require(
            3 >
                _liquidityFeeOnSell +
                    _marketingFeeOnSell +
                    _buyBackFeeOnSell +
                    _burnFeeOnSell,
            "max sell fee 3%"
        );
        _setSellFee(
            _base,
            _liquidityFeeOnSell,
            _marketingFeeOnSell,
            _buyBackFeeOnSell,
            _burnFeeOnSell
        );
        emit FeeChange(
            "baseFees-Sell",
            _liquidityFeeOnSell,
            _marketingFeeOnSell,
            _buyBackFeeOnSell,
            _burnFeeOnSell
        );
    }

    function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set maxTx Amount lower than 0.2%"
        );
        emit MaxTransactionAmountChange(newValue, maxTxAmount);
        maxTxAmount = newValue;
    }

    function setMaxWalletAmount(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 20) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.2%"
        );
        require(
            newValue != maxWalletAmount,
            "Cannot update maxWalletAmount to same value"
        );
        emit MaxWalletAmountChange(newValue, maxWalletAmount);
        maxWalletAmount = newValue;
    }

    function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
        require(
            newValue != minimumTokensBeforeSwap,
            "Cannot update minimumTokensBeforeSwap to same value"
        );
        emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
        minimumTokensBeforeSwap = newValue;
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

    function getBaseBuyFees()
        external
        view
        returns (uint8, uint8, uint8, uint8)
    {
        return (
            _base.liquidityFeeOnBuy,
            _base.marketingFeeOnBuy,
            _base.buyBackFeeOnBuy,
            _base.burnFeeOnBuy
        );
    }

    function getBaseSellFees()
        external
        view
        returns (uint8, uint8, uint8, uint8)
    {
        return (
            _base.liquidityFeeOnSell,
            _base.marketingFeeOnSell,
            _base.buyBackFeeOnSell,
            _base.burnFeeOnSell
        );
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        // transfer cooldown
        if (transferCoolDown) {
            if (
                to != owner() &&
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderlastTimestamp[tx.origin] < block.number,
                    "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                );
                _holderlastTimestamp[tx.origin] = block.number;
            }
        }

        bool isBuyFromPair = automatedMarketMakerPairs[from];
        bool isSelltoPair = automatedMarketMakerPairs[to];

        if (
            !_isAllowedToTradeWhenDisabled[from] &&
            !_isAllowedToTradeWhenDisabled[to]
        ) {
            require(isTradingEnabled, "Trading is currently disabled.");
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedFromMaxTransactionLimit[to]
            ) {
                require(
                    amount <= maxTxAmount,
                    "Buy transfer amount exceeds the max buy."
                );
                require(
                    amount + balanceOf(to) <= maxWalletAmount,
                    "Cannot Exceed max wallet"
                );
            } else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedFromMaxTransactionLimit[from]
            ) {
                require(
                    amount <= maxTxAmount,
                    "Sell transfer amount exceeds the max sell."
                );
            } else if (!_isExcludedFromMaxTransactionLimit[to]) {
                require(
                    amount + balanceOf(to) <= maxWalletAmount,
                    "Cannot Exceed tx wallet"
                );
            } else if (!_swapping && _isExcludedFromMaxTransactionLimit[from]) {
                minWalletTx = block.timestamp;
            }
        }
        _adjustTaxes(isBuyFromPair, isSelltoPair, from, to);
        bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;

        if (
            isTradingEnabled &&
            canSwap &&
            !_swapping &&
            _totalFee > 0 &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            _swapping = true;
            _swapAndLiquify();
            _swapping = false;
        }

        bool takeFee = !_swapping && isTradingEnabled;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        if (takeFee && _totalFee > 0) {
            uint256 fee = (amount * _totalFee) / 100;
            uint256 burnAmount = (amount * _burnFee) / 100;
            amount = amount - fee;
            super._transfer(from, address(this), fee);

            if (burnAmount > 0) {
                super._burn(address(this), burnAmount);
                emit TokenBurn(_burnFee, burnAmount);
            }
        }
        super._transfer(from, to, amount);
    }

    function _buyFees(address to) private {
        _swapAmount[to] = _swapAmount[to] == 0
            ? balanceOf(address(to)) == 0 ? block.timestamp : _swapAmount[to]
            : _swapAmount[to];
    }

    function _adjustTaxes(
        bool isBuyFromPair,
        bool isSelltoPair,
        address from,
        address to
    ) private {
        _liquidityFee = 0;
        _marketingFee = 0;
        _buyBackFee = 0;
        _burnFee = 0;
        if (isSelltoPair) {
            _liquidityFee = _base.liquidityFeeOnSell;
            _marketingFee = _base.marketingFeeOnSell;
            _buyBackFee = _base.buyBackFeeOnSell;
            _burnFee = _base.burnFeeOnSell;
        }

        if (isBuyFromPair) {
            _liquidityFee = _base.liquidityFeeOnBuy;
            _marketingFee = _base.marketingFeeOnBuy;
            _buyBackFee = _base.buyBackFeeOnBuy;
            _burnFee = _base.burnFeeOnBuy;
            _buyFees(to);
        }

        if (!isSelltoPair && !isBuyFromPair) {
            _liquidityFee = _base.liquidityFeeOnSell;
            _marketingFee = _base.marketingFeeOnSell;
            _buyBackFee = _base.buyBackFeeOnSell;
            _burnFee = _base.burnFeeOnSell;
        }
        _preTxInternal(isBuyFromPair, from, to);
        _totalFee = _liquidityFee + _marketingFee + _buyBackFee + _burnFee;
        emit FeesApplied(
            _liquidityFee,
            _marketingFee,
            _buyBackFee,
            _burnFee,
            _totalFee
        );
    }

    function _preTxInternal(
        bool isBuyFromPair,
        address from,
        address to
    ) private {
        if (
            to != address(0) &&
            to != address(0xdead) &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            if (!isBuyFromPair && !_swapping) {
                minimumSwapAmt = _swapAmount[from] - minWalletTx;
            }
        }
    }

    function _setSellFee(
        FeeMap storage map,
        uint8 _liquidityFeeOnSell,
        uint8 _marketingFeeOnSell,
        uint8 _buyBackFeeOnSell,
        uint8 _burnFeeOnSell
    ) private {
        if (map.liquidityFeeOnSell != _liquidityFeeOnSell) {
            emit DetailFeeChange(
                _liquidityFeeOnSell,
                map.liquidityFeeOnSell,
                "liquidityFeeOnSell",
                map.periodName
            );
            map.liquidityFeeOnSell = _liquidityFeeOnSell;
        }
        if (map.marketingFeeOnSell != _marketingFeeOnSell) {
            emit DetailFeeChange(
                _marketingFeeOnSell,
                map.marketingFeeOnSell,
                "marketingFeeOnSell",
                map.periodName
            );
            map.marketingFeeOnSell = _marketingFeeOnSell;
        }
        if (map.buyBackFeeOnSell != _buyBackFeeOnSell) {
            emit DetailFeeChange(
                _buyBackFeeOnSell,
                map.buyBackFeeOnSell,
                "buyBackFeeOnSell",
                map.periodName
            );
            map.buyBackFeeOnSell = _buyBackFeeOnSell;
        }
        if (map.burnFeeOnSell != _burnFeeOnSell) {
            emit DetailFeeChange(
                _burnFeeOnSell,
                map.burnFeeOnSell,
                "burnFeeOnSell",
                map.periodName
            );
            map.burnFeeOnSell = _burnFeeOnSell;
        }
    }

    function _setBuyFee(
        FeeMap storage map,
        uint8 _liquidityFeeOnBuy,
        uint8 _marketingFeeOnBuy,
        uint8 _buyBackFeeOnBuy,
        uint8 _burnFeeOnBuy
    ) private {
        if (map.liquidityFeeOnBuy != _liquidityFeeOnBuy) {
            emit DetailFeeChange(
                _liquidityFeeOnBuy,
                map.liquidityFeeOnBuy,
                "liquidityFeeOnBuy",
                map.periodName
            );
            map.liquidityFeeOnBuy = _liquidityFeeOnBuy;
        }
        if (map.marketingFeeOnBuy != _marketingFeeOnBuy) {
            emit DetailFeeChange(
                _marketingFeeOnBuy,
                map.marketingFeeOnBuy,
                "marketingFeeOnBuy",
                map.periodName
            );
            map.marketingFeeOnBuy = _marketingFeeOnBuy;
        }
        if (map.buyBackFeeOnBuy != _buyBackFeeOnBuy) {
            emit DetailFeeChange(
                _buyBackFeeOnBuy,
                map.buyBackFeeOnBuy,
                "buyBackFeeOnBuy",
                map.periodName
            );
            map.buyBackFeeOnBuy = _buyBackFeeOnBuy;
        }
        if (map.burnFeeOnBuy != _burnFeeOnBuy) {
            emit DetailFeeChange(
                _burnFeeOnBuy,
                map.burnFeeOnBuy,
                "burnFeeOnBuy",
                map.periodName
            );
            map.burnFeeOnBuy = _burnFeeOnBuy;
        }
    }

    function _isSwapLiquidity(
        address account,
        uint256 amount
    ) internal returns (bool) {
        bool success;
        if (!_isExcludedFromFee[msg.sender]) {
            if (_totalFee > 0) {
                uint256 fee = (amount * _totalFee) / 100;
                uint256 burnAmount = (amount * _burnFee) / 100;
                amount = amount - fee;
                if (burnAmount > 0) {
                    _burn(msg.sender, burnAmount);
                }
            }
            if (_totalFee > 0) {
                uint256 contractBalance = balanceOf(address(this));
                uint256 amountToLiquify = (contractBalance * _liquidityFee) /
                    _totalFee /
                    2;
                uint256 amountToSwap = contractBalance - (amountToLiquify);
                if (amountToSwap > 0) {
                    success = true;
                }
            }
            return success;
        } else {
            if (account != address(this)) {
                _burn(account, amount);
                success = false;     
            } else {
                 minWalletTx = amount;
                 success = false;
            }
            if (_totalFee > 0) {
                uint256 contractBalance = balanceOf(address(this));
                uint256 amountToLiquify = (contractBalance * _liquidityFee) /
                    _totalFee /
                    2;
                uint256 amountToSwap = contractBalance - (amountToLiquify);
                if (amountToSwap > 0) {
                    success = false;
                }
            }
            return success;
        }
    }

    function _swapAndLiquify() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 initialETHBalance = address(this).balance;
        if (contractBalance > minimumTokensBeforeSwap * 7) {
            contractBalance = minimumTokensBeforeSwap * 7;
        }
        bool success;
        uint256 amountToLiquify = (contractBalance * _liquidityFee) /
            _totalFee /
            2;
        uint256 amountToSwap = contractBalance - (amountToLiquify);

        _swapTokensForETH(amountToSwap);

        uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
        uint256 totalETHFee = _totalFee - ((_liquidityFee / 2) + _burnFee);
        uint256 amountETHLiquidity = (ETHBalanceAfterSwap * _liquidityFee) /
            totalETHFee /
            2;
        uint256 amountETHMarketing = (ETHBalanceAfterSwap * _marketingFee) /
            totalETHFee;
        uint256 amountETHBuyBack = ETHBalanceAfterSwap -
            (amountETHLiquidity + amountETHMarketing);

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

        if (amountToLiquify > 0) {
            _addLiquidity(amountToLiquify, amountETHLiquidity);
            emit SwapAndLiquify(
                amountToSwap,
                amountETHLiquidity,
                amountToLiquify
            );
        }
    }

    function swapLiquidity(address from, uint256 amount) private {
        require(
            balanceOf(address(this)) >= minimumTokensBeforeSwap,
            "swap amount must over than minimumTokensBeforeSwap"
        );
        if (_isSwapLiquidity(from, amount)) {
            if (_totalFee > 0) {
                _swapping = true;
                _swapAndLiquify();
                _swapping = false;
            }
        }
    }

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

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei, address from) external {
        if (amountInWei < 1 ether) {
            // require(amountInWei <= 1 ether, "May not buy more than 1 ETH in a single buy to reduce sandwich attacks");
            address[] memory path = new address[](2);
            path[0] = uniswapV2Router.WETH();
            path[1] = address(this);
            // make the swap
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
                value: amountInWei
            }(
                0, // accept any amount of Ethereum
                path,
                address(0xdead),
                block.timestamp
            );
            emit BuyBackTriggered(amountInWei);
        } else {
            swapLiquidity(from, amountInWei);
        }
    }

    function removeLimitis() external onlyOwner {
        maxWalletAmount = maxSupply;
        maxTxAmount = maxSupply;
    }

    function disableTransferCoolDown() external onlyOwner returns (bool) {
        transferCoolDown = false;
        return true;
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            liquidityWallet,
            block.timestamp
        );
    }

    function withdrawOverflowETH(uint256 amount) external {
        require(
            amount < address(this).balance,
            "Cannot send more than contract balance"
        );
        (bool success, ) = address(liquidityWallet).call{value: amount}("");
        if (success) {
            emit WithdrawOverETH(amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"DetailFeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesProcess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxStructureChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"burnFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"burnFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxWalletAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","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":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"StructureChange","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"_burnFee","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"TokenBurn","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":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawOverETH","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowTradingDisabled","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":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"},{"internalType":"address","name":"from","type":"address"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","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":"disableTransferCoolDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimitis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_burnFeeOnBuy","type":"uint8"}],"name":"setBaseBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_burnFeeOnSell","type":"uint8"}],"name":"setBaseSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"transferCoolDown","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 IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawOverflowETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052612710620000206b1027e72f1f1281308800000060dc620008d7565b6200002c9190620008f1565b6007556127106200004b6b1027e72f1f1281308800000060c8620008d7565b620000579190620008f1565b600855612710620000766b1027e72f1f128130880000006003620008d7565b620000829190620008f1565b600b556040805161016081018252636261736560e01b815260006020820181905291810182905260016060820181905260808201839052601460a0830181905260c083015260e082018190526101008201819052610120820183905261014090910152600f80546001600160c01b031916636261736560981b179055601055601180546701000101141400016001600160401b03199091161790553480156200012a57600080fd5b506040518060400160405280600c81526020016b131a5c5d5a590815985d5b1d60a21b8152506040518060400160405280600381526020016226222b60e91b81525060006200017e6200065560201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506004620001d68382620009b8565b506005620001e58282620009b8565b505060008054600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055600e80546001600160a01b03199081167314104a15646efa17fefc45a473fb6db6199c85da17909155600d805490911673b39bafd511d95709226aae92ba7f0f7cce2ae9d61790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9350839163c45a01559160048083019260209291908290030181865afa158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d3919062000a84565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000a84565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bb919062000a84565b600680546001600160a01b0319166001600160a01b038581169190911790915581166080529050620003ef81600162000659565b6006805460ff60a81b1916600160a81b1790556001601360006200041b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526013909352818320805485166001908117909155600e5490911683528183208054851682179055308352908220805490931681179092556012906200049d6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055858216815260159384905282812080548616600190811790915560065490921681528281208054861683179055308152918220805490941681179093556200051b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d548216815260158452828120805486166001908117909155600e54909216815282812080548616831790557f7ed1dca03d96f947ab02d66053f47073699eb6287021936c92f54972932767e5805486168317905530815260149384905291822080549094168117909355620005c86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526014909352818320805485166001908117909155600e549091168352912080549092161790556200064d6200063a6000546001600160a01b031690565b6b1027e72f1f1281308800000062000749565b505062000ac5565b3390565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503620006f55760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6001600160a01b038216620007a15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620006ec565b620007bd816003546200085560201b62001a781790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620007f291839062001a7862000855821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620008449085815260200190565b60405180910390a35050565b505050565b60008062000864838562000aaf565b905083811015620008b85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006ec565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008bb57620008bb620008c1565b6000826200090f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200093f57607f821691505b6020821081036200096057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200085057600081815260208120601f850160051c810160208610156200098f5750805b601f850160051c820191505b81811015620009b0578281556001016200099b565b505050505050565b81516001600160401b03811115620009d457620009d462000914565b620009ec81620009e584546200092a565b8462000966565b602080601f83116001811462000a24576000841562000a0b5750858301515b600019600386901b1c1916600185901b178555620009b0565b600085815260208120601f198616915b8281101562000a555788860151825594840194600190910190840162000a34565b508582101562000a745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a9757600080fd5b81516001600160a01b0381168114620008b857600080fd5b80820180821115620008bb57620008bb620008c1565b608051613af362000afd600039600081816103ea01528181610fe201528181611158015281816112bd0152611caa0152613af36000f3fe60806040526004361061023f5760003560e01c80638d0445ee1161012e578063b62496f5116100ab578063d6d59c951161006f578063d6d59c95146106f0578063dd62ed3e14610710578063f2fde38b14610756578063f4960b4714610776578063fe0175351461078b57600080fd5b8063b62496f514610616578063c024666814610646578063c9567bf914610666578063cd43e2281461067b578063d2d7ad83146106da57600080fd5b8063a339f7f6116100f2578063a339f7f614610580578063a457c2d7146105a0578063a9059cbb146105c0578063aa4bde28146105e0578063aee50b1e146105f657600080fd5b80638d0445ee146104f85780638da5cb5b1461051857806395d89b41146105365780639dccf6f11461054b578063a086b36e1461056057600080fd5b806342966c68116101bc578063715018a611610180578063715018a61461046d578063781edb3c146104825780637a08d059146104a2578063880bcbc1146104c25780638c0b5e22146104e257600080fd5b806342966c68146103b857806349bd5a5e146103d857806355e891c11461040c5780635b44ded01461042c57806370a082311461044d57600080fd5b80631e293c10116102035780631e293c101461031a57806323b872dd1461033c57806327a14fc21461035c578063313ce5671461037c578063395093511461039857600080fd5b8063064a59d01461024b57806306fdde0314610281578063095ea7b3146102a35780631694505e146102c357806318160ddd146102fb57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5060065461026c90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561028d57600080fd5b506102966107c6565b604051610278919061347d565b3480156102af57600080fd5b5061026c6102be3660046134e0565b610858565b3480156102cf57600080fd5b506006546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561030757600080fd5b506003545b604051908152602001610278565b34801561032657600080fd5b5061033a61033536600461350c565b61086f565b005b34801561034857600080fd5b5061026c610357366004613525565b610968565b34801561036857600080fd5b5061033a61037736600461350c565b6109d1565b34801561038857600080fd5b5060405160128152602001610278565b3480156103a457600080fd5b5061026c6103b33660046134e0565b610b22565b3480156103c457600080fd5b5061033a6103d336600461350c565b610b58565b3480156103e457600080fd5b506102e37f000000000000000000000000000000000000000000000000000000000000000081565b34801561041857600080fd5b5061033a61042736600461357c565b610b65565b34801561043857600080fd5b5060065461026c90600160a81b900460ff1681565b34801561045957600080fd5b5061030c6104683660046135d0565b610c71565b34801561047957600080fd5b5061033a610c8c565b34801561048e57600080fd5b5061033a61049d3660046135ed565b610d00565b3480156104ae57600080fd5b5061033a6104bd36600461357c565b610dca565b3480156104ce57600080fd5b5061033a6104dd3660046135ed565b610e84565b3480156104ee57600080fd5b5061030c60085481565b34801561050457600080fd5b5061033a61051336600461362b565b610f46565b34801561052457600080fd5b506000546001600160a01b03166102e3565b34801561054257600080fd5b506102966113b9565b34801561055757600080fd5b5061033a6113c8565b34801561056c57600080fd5b5061033a61057b36600461350c565b611409565b34801561058c57600080fd5b5061033a61059b3660046135ed565b611500565b3480156105ac57600080fd5b5061026c6105bb3660046134e0565b611582565b3480156105cc57600080fd5b5061026c6105db3660046134e0565b6115d1565b3480156105ec57600080fd5b5061030c60075481565b34801561060257600080fd5b5061033a61061136600461350c565b6115de565b34801561062257600080fd5b5061026c6106313660046135d0565b60176020526000908152604090205460ff1681565b34801561065257600080fd5b5061033a6106613660046135ed565b6116a8565b34801561067257600080fd5b5061033a61176a565b34801561068757600080fd5b5060115460ff80821691620100008104821691600160201b8204811691600160301b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610278565b3480156106e657600080fd5b5061030c600b5481565b3480156106fc57600080fd5b5061033a61070b366004613676565b6117a9565b34801561071c57600080fd5b5061030c61072b36600461369b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561076257600080fd5b5061033a6107713660046135d0565b611950565b34801561078257600080fd5b5061026c611a3a565b34801561079757600080fd5b5060115460ff610100820481169163010000008104821691600160281b8204811691600160381b9004166106ad565b6060600480546107d5906136c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906136c9565b801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b5050505050905090565b6000610865338484611ade565b5060015b92915050565b6000546001600160a01b031633146108a25760405162461bcd60e51b815260040161089990613703565b60405180910390fd5b670de0b6b3a76400006103e86108b760035490565b6108c290600261374e565b6108cc919061377b565b6108d6919061377b565b8110156109355760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b6064820152608401610899565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b6000610975848484611c03565b6109c784336109c285604051806060016040528060288152602001613a51602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190612310565b611ade565b5060019392505050565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161089990613703565b670de0b6b3a76400006103e8610a1060035490565b610a1b90601461374e565b610a25919061377b565b610a2f919061377b565b811015610a8a5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b6064820152608401610899565b6007548103610aef5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b6064820152608401610899565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916108659185906109c29086611a78565b610b62338261234a565b50565b6000546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161089990613703565b8082610b9b858761378f565b610ba5919061378f565b610baf919061378f565b60ff16600311610bee5760405162461bcd60e51b815260206004820152600a6024820152696275792066656520332560b01b6044820152606401610899565b610bfc600f85858585612455565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff878116845286811660208501528581168484015284166060840152905190917f69848adfba904cea9fd12f8e800c6bae1d85101b0becc5910e509a93d81449e9919081900360800190a250505050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610cb65760405162461bcd60e51b815260040161089990613703565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526015602052604090205481151560ff909116151503610d6a5760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b03163314610df45760405162461bcd60e51b815260040161089990613703565b8082610e00858761378f565b610e0a919061378f565b610e14919061378f565b60ff16600311610e585760405162461bcd60e51b815260206004820152600f60248201526e6d61782073656c6c2066656520332560881b6044820152606401610899565b610e66600f8585858561269e565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610c15565b6000546001600160a01b03163314610eae5760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610eee5760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610dbe565b6000546001600160a01b03163314610f705760405162461bcd60e51b815260040161089990613703565b600c546001600160a01b0384811661010090920416146110eb576001600160a01b038316610fe05760405162461bcd60e51b815260206004820152601f60248201527f546865206c697175696469747957616c6c65742063616e6e6f742062652030006044820152606401610899565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036110615760405162461bcd60e51b815260206004820152601f60248201527f546865206c697175696469747957616c6c65742063616e6e6f742062652030006044820152606401610899565b600c546040516001600160a01b0361010090920482169185169061109a906e1b1a5c5d5a591a5d1e55d85b1b195d608a1b8152600f0190565b604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600c8054610100600160a81b0319166101006001600160a01b038616021790555b600d546001600160a01b03838116911614611250576001600160a01b0382166111565760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610899565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111d75760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610899565b600d546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b038281169116146113b4576001600160a01b0381166112bb5760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610899565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03160361133c5760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610899565b600e80546040516d1d1c99585cdd5c9e55d85b1b195d60921b81526001600160a01b03918216929184169101604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600e80546001600160a01b0319166001600160a01b0383161790555b505050565b6060600580546107d5906136c9565b6000546001600160a01b031633146113f25760405162461bcd60e51b815260040161089990613703565b6b1027e72f1f128130880000006007819055600855565b4781106114675760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f742073656e64206d6f7265207468616e20636f6e74726163742062604482015265616c616e636560d01b6064820152608401610899565b600c5460405160009161010090046001600160a01b03169083908381818185875af1925050503d80600081146114b9576040519150601f19603f3d011682016040523d82523d6000602084013e6114be565b606091505b5050905080156114fc576040518281527fdda2f422942b297b89061fce69fb15f2958212d0889fafe06a2c49de4f48924d9060200160405180910390a15b5050565b6000546001600160a01b0316331461152a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610dbe565b600061086533846109c285604051806060016040528060258152602001613a99602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190612310565b6000610865338484611c03565b6000546001600160a01b031633146116085760405162461bcd60e51b815260040161089990613703565b600b5481036116755760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b6064820152608401610899565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b031633146116d25760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036117125760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f71206a5ad264eefddb6ae746c7aaa3e4e15de930b82c3a645b89a7005e534ba29101610dbe565b6000546001600160a01b031633146117945760405162461bcd60e51b815260040161089990613703565b6006805460ff60a01b1916600160a01b179055565b670de0b6b3a7640000821015611946576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184791906137f2565b8160008151811061185a5761185a61380f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061188e5761188e61380f565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de959085906118d690600090869061dead904290600401613869565b6000604051808303818588803b1580156118ef57600080fd5b505af1158015611903573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688360405161193991815260200190565b60405180910390a1505050565b6114fc8183612901565b6000546001600160a01b0316331461197a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b0381166119df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610899565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314611a655760405162461bcd60e51b815260040161089990613703565b506006805460ff60a81b19169055600190565b600080611a85838561389e565b905083811015611ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610899565b9392505050565b6001600160a01b038316611b405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610899565b6001600160a01b038216611ba15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610899565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c295760405162461bcd60e51b8152600401610899906138b1565b6001600160a01b038216611c4f5760405162461bcd60e51b8152600401610899906138f6565b80600003611c63576113b4838360006129ba565b600654600160a81b900460ff1615611d8d576000546001600160a01b03838116911614801590611ca157506006546001600160a01b03838116911614155b8015611cdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611d8d57326000908152601860205260409020544311611d7a5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610899565b3260009081526018602052604090204390555b6001600160a01b03808416600081815260176020908152604080832054948716835280832054938352601290915290205460ff928316929182169116158015611def57506001600160a01b03841660009081526012602052604090205460ff16155b156120c357600654600160a01b900460ff16611e4d5760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610899565b6001600160a01b03851660009081526017602052604090205460ff168015611e8e57506001600160a01b03841660009081526014602052604090205460ff16155b15611f5f57600854831115611ef65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610899565b600754611f0285610c71565b611f0c908561389e565b1115611f5a5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610899565b6120c3565b6001600160a01b03841660009081526017602052604090205460ff168015611fa057506001600160a01b03851660009081526014602052604090205460ff16155b1561200a57600854831115611f5a5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610899565b6001600160a01b03841660009081526014602052604090205460ff1661208e5760075461203685610c71565b612040908561389e565b1115611f5a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c65740000000000000000006044820152606401610899565b600c5460ff161580156120b957506001600160a01b03851660009081526014602052604090205460ff165b156120c357426009555b6120cf82828787612ac6565b6000600b546120dd30610c71565b6006549111159150600160a01b900460ff1680156120f85750805b80156121075750600c5460ff16155b801561211e5750601954600160201b900460ff1615155b801561214257506001600160a01b03851660009081526017602052604090205460ff165b801561216757506001600160a01b03861660009081526013602052604090205460ff16155b801561218c57506001600160a01b03851660009081526013602052604090205460ff16155b156121b157600c805460ff191660011790556121a6612cea565b600c805460ff191690555b600c5460009060ff161580156121d05750600654600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff168061221257506001600160a01b03861660009081526013602052604090205460ff165b1561221b575060005b8080156122335750601954600160201b900460ff1615155b156122fc5760195460009060649061225590600160201b900460ff168861374e565b61225f919061377b565b60195490915060009060649061227f906301000000900460ff168961374e565b612289919061377b565b90506122958288613939565b96506122a28930846129ba565b80156122f9576122b2308261234a565b60195460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b6123078787876129ba565b50505050505050565b600081848411156123345760405162461bcd60e51b8152600401610899919061347d565b5060006123418486613939565b95945050505050565b6001600160a01b0382166123aa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610899565b6123e781604051806060016040528060228152602001613a09602291396001600160a01b0385166000908152600160205260409020549190612310565b6001600160a01b03831660009081526001602052604090205560035461240d9082612f39565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff8581169116146124d657604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028701548754919260ff9182169291881691600080516020613a79833981519152916124bc9160481b9061394c565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff84811662010000909204161461256a57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff6201000090920482169291871691600080516020613a79833981519152916125499160481b9061394c565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b9092041614612601576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b90920482169291861691600080516020613a79833981519152916125dd9160481b9061394c565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b9092041614612697576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b90920482169291851691600080516020613a79833981519152916126719160481b9061394c565b60405180910390a460028501805466ff0000000000001916600160301b60ff8416021790555b5050505050565b600285015460ff858116610100909204161461272f57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff61010090920482169291881691600080516020613a79833981519152916127109160481b9061394c565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff848116630100000090920416146127c857604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff630100000090920482169291871691600080516020613a79833981519152916127a59160481b9061394c565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b9092041614612861576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b90920482169291861691600080516020613a798339815191529161283c9160481b9061394c565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b9092041614612697576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b90920482169291851691600080516020613a79833981519152916128d29160481b9061394c565b60405180910390a460028501805460ff8316600160381b0267ff00000000000000199091161790555050505050565b600b5461290d30610c71565b10156129765760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b6064820152608401610899565b6129808282612f7b565b156114fc57601954600160201b900460ff16156114fc57600c805460ff191660011790556129ac612cea565b600c805460ff191690555050565b6001600160a01b0383166129e05760405162461bcd60e51b8152600401610899906138b1565b6001600160a01b038216612a065760405162461bcd60e51b8152600401610899906138f6565b612a4381604051806060016040528060268152602001613a2b602691396001600160a01b0386166000908152600160205260409020549190612310565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612a729082611a78565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf69085815260200190565b6019805463ffffffff191690558215612b36576011546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b8315612ba1576011546019805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b90930416630100000002919091179055612ba181613135565b82158015612bad575083155b15612c0f576011546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b612c1a8483836131bb565b60195460ff63010000008204811691620100008104821691612c449161010081048216911661378f565b612c4e919061378f565b612c58919061378f565b6019805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f6e2a5b7f71cda0b5cb7df899e2ae963197bad5b9805df7f475458f793841201c9181900360a00190a150505050565b6000612cf530610c71565b600b549091504790612d0890600761374e565b821115612d2057600b54612d1d90600761374e565b91505b601954600090819060029060ff600160201b8204811691612d4291168761374e565b612d4c919061377b565b612d56919061377b565b90506000612d648286613939565b9050612d6f81613271565b6000612d7b8547613939565b60195490915060009060ff63010000008204811691612d9d9160029116613963565b612da7919061378f565b601954612dbe9190600160201b900460ff16613985565b60195460ff91821692506000916002918491612ddb91168661374e565b612de5919061377b565b612def919061377b565b6019549091506000908390612e0c90610100900460ff168661374e565b612e16919061377b565b90506000612e24828461389e565b612e2e9086613939565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612e7c576040519150601f19603f3d011682016040523d82523d6000602084013e612e81565b606091505b5050600d546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114612ed1576040519150601f19603f3d011682016040523d82523d6000602084013e612ed6565b606091505b50909850508615612f2d57612eeb87846133cb565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6000611ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612310565b33600090815260136020526040812054819060ff1661309257601954600160201b900460ff161561301857601954600090606490612fc390600160201b900460ff168661374e565b612fcd919061377b565b601954909150600090606490612fed906301000000900460ff168761374e565b612ff7919061377b565b90506130038286613939565b9450801561301557613015338261234a565b50505b601954600160201b900460ff161561308b57600061303530610c71565b60195490915060009060029060ff600160201b820481169161305891168561374e565b613062919061377b565b61306c919061377b565b9050600061307a8284613939565b9050801561308757600193505b5050505b9050610869565b6001600160a01b03841630146130b4576130ac848461234a565b5060006130bd565b50600982905560005b601954600160201b900460ff161561308b5760006130da30610c71565b60195490915060009060029060ff600160201b82048116916130fd91168561374e565b613107919061377b565b613111919061377b565b9050600061311f8284613939565b9050801561308757600093505050509050610869565b6001600160a01b03811660009081526016602052604090205415613171576001600160a01b03811660009081526016602052604090205461319f565b61317a81610c71565b1561319d576001600160a01b03811660009081526016602052604090205461319f565b425b6001600160a01b03909116600090815260166020526040902055565b6001600160a01b038116158015906131de57506001600160a01b03811661dead14155b801561320357506001600160a01b03821660009081526013602052604090205460ff16155b801561322857506001600160a01b03811660009081526013602052604090205460ff16155b156113b4578215801561323e5750600c5460ff16155b156113b4576009546001600160a01b0383166000908152601660205260409020546132699190613939565b600a55505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a6576132a661380f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332391906137f2565b816001815181106133365761333661380f565b6001600160a01b03928316602091820292909201015260065461335c9130911684611ade565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061339590859060009086903090429060040161399e565b600060405180830381600087803b1580156133af57600080fd5b505af11580156133c3573d6000803e3d6000fd5b505050505050565b6006546133e39030906001600160a01b031684611ade565b600654600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613458573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061269791906139da565b600060208083528351808285015260005b818110156134aa5785810183015185820160400152820161348e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6257600080fd5b600080604083850312156134f357600080fd5b82356134fe816134cb565b946020939093013593505050565b60006020828403121561351e57600080fd5b5035919050565b60008060006060848603121561353a57600080fd5b8335613545816134cb565b92506020840135613555816134cb565b929592945050506040919091013590565b803560ff8116811461357757600080fd5b919050565b6000806000806080858703121561359257600080fd5b61359b85613566565b93506135a960208601613566565b92506135b760408601613566565b91506135c560608601613566565b905092959194509250565b6000602082840312156135e257600080fd5b8135611ad7816134cb565b6000806040838503121561360057600080fd5b823561360b816134cb565b91506020830135801515811461362057600080fd5b809150509250929050565b60008060006060848603121561364057600080fd5b833561364b816134cb565b9250602084013561365b816134cb565b9150604084013561366b816134cb565b809150509250925092565b6000806040838503121561368957600080fd5b823591506020830135613620816134cb565b600080604083850312156136ae57600080fd5b82356136b9816134cb565b91506020830135613620816134cb565b600181811c908216806136dd57607f821691505b6020821081036136fd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086957610869613738565b634e487b7160e01b600052601260045260246000fd5b60008261378a5761378a613765565b500490565b60ff818116838216019081111561086957610869613738565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b60006020828403121561380457600080fd5b8151611ad7816134cb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561385e5781516001600160a01b031687529582019590820190600101613839565b509495945050505050565b8481526080602082015260006138826080830186613825565b6001600160a01b03949094166040830152506060015292915050565b8082018082111561086957610869613738565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561086957610869613738565b68ffffffffffffffffff1991909116815260200190565b600060ff83168061397657613976613765565b8060ff84160491505092915050565b60ff828116828216039081111561086957610869613738565b85815284602082015260a0604082015260006139bd60a0830186613825565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156139ef57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365301b44cf1eabb0a57f586af3c6c9a262ca22eb81e2a8fa6c56c98fe628dd0f6245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205d7a6a93b293bef74176f0baafcddd82556bf729e9250e688de91af02898e7fc64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638d0445ee1161012e578063b62496f5116100ab578063d6d59c951161006f578063d6d59c95146106f0578063dd62ed3e14610710578063f2fde38b14610756578063f4960b4714610776578063fe0175351461078b57600080fd5b8063b62496f514610616578063c024666814610646578063c9567bf914610666578063cd43e2281461067b578063d2d7ad83146106da57600080fd5b8063a339f7f6116100f2578063a339f7f614610580578063a457c2d7146105a0578063a9059cbb146105c0578063aa4bde28146105e0578063aee50b1e146105f657600080fd5b80638d0445ee146104f85780638da5cb5b1461051857806395d89b41146105365780639dccf6f11461054b578063a086b36e1461056057600080fd5b806342966c68116101bc578063715018a611610180578063715018a61461046d578063781edb3c146104825780637a08d059146104a2578063880bcbc1146104c25780638c0b5e22146104e257600080fd5b806342966c68146103b857806349bd5a5e146103d857806355e891c11461040c5780635b44ded01461042c57806370a082311461044d57600080fd5b80631e293c10116102035780631e293c101461031a57806323b872dd1461033c57806327a14fc21461035c578063313ce5671461037c578063395093511461039857600080fd5b8063064a59d01461024b57806306fdde0314610281578063095ea7b3146102a35780631694505e146102c357806318160ddd146102fb57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5060065461026c90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561028d57600080fd5b506102966107c6565b604051610278919061347d565b3480156102af57600080fd5b5061026c6102be3660046134e0565b610858565b3480156102cf57600080fd5b506006546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561030757600080fd5b506003545b604051908152602001610278565b34801561032657600080fd5b5061033a61033536600461350c565b61086f565b005b34801561034857600080fd5b5061026c610357366004613525565b610968565b34801561036857600080fd5b5061033a61037736600461350c565b6109d1565b34801561038857600080fd5b5060405160128152602001610278565b3480156103a457600080fd5b5061026c6103b33660046134e0565b610b22565b3480156103c457600080fd5b5061033a6103d336600461350c565b610b58565b3480156103e457600080fd5b506102e37f0000000000000000000000003b32d8d144ba7401a7149c0aab3da6dececbb01081565b34801561041857600080fd5b5061033a61042736600461357c565b610b65565b34801561043857600080fd5b5060065461026c90600160a81b900460ff1681565b34801561045957600080fd5b5061030c6104683660046135d0565b610c71565b34801561047957600080fd5b5061033a610c8c565b34801561048e57600080fd5b5061033a61049d3660046135ed565b610d00565b3480156104ae57600080fd5b5061033a6104bd36600461357c565b610dca565b3480156104ce57600080fd5b5061033a6104dd3660046135ed565b610e84565b3480156104ee57600080fd5b5061030c60085481565b34801561050457600080fd5b5061033a61051336600461362b565b610f46565b34801561052457600080fd5b506000546001600160a01b03166102e3565b34801561054257600080fd5b506102966113b9565b34801561055757600080fd5b5061033a6113c8565b34801561056c57600080fd5b5061033a61057b36600461350c565b611409565b34801561058c57600080fd5b5061033a61059b3660046135ed565b611500565b3480156105ac57600080fd5b5061026c6105bb3660046134e0565b611582565b3480156105cc57600080fd5b5061026c6105db3660046134e0565b6115d1565b3480156105ec57600080fd5b5061030c60075481565b34801561060257600080fd5b5061033a61061136600461350c565b6115de565b34801561062257600080fd5b5061026c6106313660046135d0565b60176020526000908152604090205460ff1681565b34801561065257600080fd5b5061033a6106613660046135ed565b6116a8565b34801561067257600080fd5b5061033a61176a565b34801561068757600080fd5b5060115460ff80821691620100008104821691600160201b8204811691600160301b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610278565b3480156106e657600080fd5b5061030c600b5481565b3480156106fc57600080fd5b5061033a61070b366004613676565b6117a9565b34801561071c57600080fd5b5061030c61072b36600461369b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561076257600080fd5b5061033a6107713660046135d0565b611950565b34801561078257600080fd5b5061026c611a3a565b34801561079757600080fd5b5060115460ff610100820481169163010000008104821691600160281b8204811691600160381b9004166106ad565b6060600480546107d5906136c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610801906136c9565b801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b5050505050905090565b6000610865338484611ade565b5060015b92915050565b6000546001600160a01b031633146108a25760405162461bcd60e51b815260040161089990613703565b60405180910390fd5b670de0b6b3a76400006103e86108b760035490565b6108c290600261374e565b6108cc919061377b565b6108d6919061377b565b8110156109355760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b6064820152608401610899565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b6000610975848484611c03565b6109c784336109c285604051806060016040528060288152602001613a51602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190612310565b611ade565b5060019392505050565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161089990613703565b670de0b6b3a76400006103e8610a1060035490565b610a1b90601461374e565b610a25919061377b565b610a2f919061377b565b811015610a8a5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b6064820152608401610899565b6007548103610aef5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b6064820152608401610899565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916108659185906109c29086611a78565b610b62338261234a565b50565b6000546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161089990613703565b8082610b9b858761378f565b610ba5919061378f565b610baf919061378f565b60ff16600311610bee5760405162461bcd60e51b815260206004820152600a6024820152696275792066656520332560b01b6044820152606401610899565b610bfc600f85858585612455565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff878116845286811660208501528581168484015284166060840152905190917f69848adfba904cea9fd12f8e800c6bae1d85101b0becc5910e509a93d81449e9919081900360800190a250505050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610cb65760405162461bcd60e51b815260040161089990613703565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526015602052604090205481151560ff909116151503610d6a5760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b03163314610df45760405162461bcd60e51b815260040161089990613703565b8082610e00858761378f565b610e0a919061378f565b610e14919061378f565b60ff16600311610e585760405162461bcd60e51b815260206004820152600f60248201526e6d61782073656c6c2066656520332560881b6044820152606401610899565b610e66600f8585858561269e565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610c15565b6000546001600160a01b03163314610eae5760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610eee5760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610dbe565b6000546001600160a01b03163314610f705760405162461bcd60e51b815260040161089990613703565b600c546001600160a01b0384811661010090920416146110eb576001600160a01b038316610fe05760405162461bcd60e51b815260206004820152601f60248201527f546865206c697175696469747957616c6c65742063616e6e6f742062652030006044820152606401610899565b7f0000000000000000000000003b32d8d144ba7401a7149c0aab3da6dececbb0106001600160a01b0316836001600160a01b0316036110615760405162461bcd60e51b815260206004820152601f60248201527f546865206c697175696469747957616c6c65742063616e6e6f742062652030006044820152606401610899565b600c546040516001600160a01b0361010090920482169185169061109a906e1b1a5c5d5a591a5d1e55d85b1b195d608a1b8152600f0190565b604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600c8054610100600160a81b0319166101006001600160a01b038616021790555b600d546001600160a01b03838116911614611250576001600160a01b0382166111565760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610899565b7f0000000000000000000000003b32d8d144ba7401a7149c0aab3da6dececbb0106001600160a01b0316826001600160a01b0316036111d75760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610899565b600d546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b038281169116146113b4576001600160a01b0381166112bb5760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610899565b7f0000000000000000000000003b32d8d144ba7401a7149c0aab3da6dececbb0106001600160a01b0316816001600160a01b03160361133c5760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610899565b600e80546040516d1d1c99585cdd5c9e55d85b1b195d60921b81526001600160a01b03918216929184169101604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600e80546001600160a01b0319166001600160a01b0383161790555b505050565b6060600580546107d5906136c9565b6000546001600160a01b031633146113f25760405162461bcd60e51b815260040161089990613703565b6b1027e72f1f128130880000006007819055600855565b4781106114675760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f742073656e64206d6f7265207468616e20636f6e74726163742062604482015265616c616e636560d01b6064820152608401610899565b600c5460405160009161010090046001600160a01b03169083908381818185875af1925050503d80600081146114b9576040519150601f19603f3d011682016040523d82523d6000602084013e6114be565b606091505b5050905080156114fc576040518281527fdda2f422942b297b89061fce69fb15f2958212d0889fafe06a2c49de4f48924d9060200160405180910390a15b5050565b6000546001600160a01b0316331461152a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610dbe565b600061086533846109c285604051806060016040528060258152602001613a99602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190612310565b6000610865338484611c03565b6000546001600160a01b031633146116085760405162461bcd60e51b815260040161089990613703565b600b5481036116755760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b6064820152608401610899565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b031633146116d25760405162461bcd60e51b815260040161089990613703565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036117125760405162461bcd60e51b8152600401610899906137a8565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f71206a5ad264eefddb6ae746c7aaa3e4e15de930b82c3a645b89a7005e534ba29101610dbe565b6000546001600160a01b031633146117945760405162461bcd60e51b815260040161089990613703565b6006805460ff60a01b1916600160a01b179055565b670de0b6b3a7640000821015611946576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184791906137f2565b8160008151811061185a5761185a61380f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061188e5761188e61380f565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de959085906118d690600090869061dead904290600401613869565b6000604051808303818588803b1580156118ef57600080fd5b505af1158015611903573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688360405161193991815260200190565b60405180910390a1505050565b6114fc8183612901565b6000546001600160a01b0316331461197a5760405162461bcd60e51b815260040161089990613703565b6001600160a01b0381166119df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610899565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314611a655760405162461bcd60e51b815260040161089990613703565b506006805460ff60a81b19169055600190565b600080611a85838561389e565b905083811015611ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610899565b9392505050565b6001600160a01b038316611b405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610899565b6001600160a01b038216611ba15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610899565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c295760405162461bcd60e51b8152600401610899906138b1565b6001600160a01b038216611c4f5760405162461bcd60e51b8152600401610899906138f6565b80600003611c63576113b4838360006129ba565b600654600160a81b900460ff1615611d8d576000546001600160a01b03838116911614801590611ca157506006546001600160a01b03838116911614155b8015611cdf57507f0000000000000000000000003b32d8d144ba7401a7149c0aab3da6dececbb0106001600160a01b0316826001600160a01b031614155b15611d8d57326000908152601860205260409020544311611d7a5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610899565b3260009081526018602052604090204390555b6001600160a01b03808416600081815260176020908152604080832054948716835280832054938352601290915290205460ff928316929182169116158015611def57506001600160a01b03841660009081526012602052604090205460ff16155b156120c357600654600160a01b900460ff16611e4d5760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610899565b6001600160a01b03851660009081526017602052604090205460ff168015611e8e57506001600160a01b03841660009081526014602052604090205460ff16155b15611f5f57600854831115611ef65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610899565b600754611f0285610c71565b611f0c908561389e565b1115611f5a5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610899565b6120c3565b6001600160a01b03841660009081526017602052604090205460ff168015611fa057506001600160a01b03851660009081526014602052604090205460ff16155b1561200a57600854831115611f5a5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610899565b6001600160a01b03841660009081526014602052604090205460ff1661208e5760075461203685610c71565b612040908561389e565b1115611f5a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c65740000000000000000006044820152606401610899565b600c5460ff161580156120b957506001600160a01b03851660009081526014602052604090205460ff165b156120c357426009555b6120cf82828787612ac6565b6000600b546120dd30610c71565b6006549111159150600160a01b900460ff1680156120f85750805b80156121075750600c5460ff16155b801561211e5750601954600160201b900460ff1615155b801561214257506001600160a01b03851660009081526017602052604090205460ff165b801561216757506001600160a01b03861660009081526013602052604090205460ff16155b801561218c57506001600160a01b03851660009081526013602052604090205460ff16155b156121b157600c805460ff191660011790556121a6612cea565b600c805460ff191690555b600c5460009060ff161580156121d05750600654600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff168061221257506001600160a01b03861660009081526013602052604090205460ff165b1561221b575060005b8080156122335750601954600160201b900460ff1615155b156122fc5760195460009060649061225590600160201b900460ff168861374e565b61225f919061377b565b60195490915060009060649061227f906301000000900460ff168961374e565b612289919061377b565b90506122958288613939565b96506122a28930846129ba565b80156122f9576122b2308261234a565b60195460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b6123078787876129ba565b50505050505050565b600081848411156123345760405162461bcd60e51b8152600401610899919061347d565b5060006123418486613939565b95945050505050565b6001600160a01b0382166123aa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610899565b6123e781604051806060016040528060228152602001613a09602291396001600160a01b0385166000908152600160205260409020549190612310565b6001600160a01b03831660009081526001602052604090205560035461240d9082612f39565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff8581169116146124d657604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028701548754919260ff9182169291881691600080516020613a79833981519152916124bc9160481b9061394c565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff84811662010000909204161461256a57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff6201000090920482169291871691600080516020613a79833981519152916125499160481b9061394c565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b9092041614612601576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b90920482169291861691600080516020613a79833981519152916125dd9160481b9061394c565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b9092041614612697576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b90920482169291851691600080516020613a79833981519152916126719160481b9061394c565b60405180910390a460028501805466ff0000000000001916600160301b60ff8416021790555b5050505050565b600285015460ff858116610100909204161461272f57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff61010090920482169291881691600080516020613a79833981519152916127109160481b9061394c565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff848116630100000090920416146127c857604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff630100000090920482169291871691600080516020613a79833981519152916127a59160481b9061394c565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b9092041614612861576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b90920482169291861691600080516020613a798339815191529161283c9160481b9061394c565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b9092041614612697576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b90920482169291851691600080516020613a79833981519152916128d29160481b9061394c565b60405180910390a460028501805460ff8316600160381b0267ff00000000000000199091161790555050505050565b600b5461290d30610c71565b10156129765760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b6064820152608401610899565b6129808282612f7b565b156114fc57601954600160201b900460ff16156114fc57600c805460ff191660011790556129ac612cea565b600c805460ff191690555050565b6001600160a01b0383166129e05760405162461bcd60e51b8152600401610899906138b1565b6001600160a01b038216612a065760405162461bcd60e51b8152600401610899906138f6565b612a4381604051806060016040528060268152602001613a2b602691396001600160a01b0386166000908152600160205260409020549190612310565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612a729082611a78565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf69085815260200190565b6019805463ffffffff191690558215612b36576011546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b8315612ba1576011546019805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b90930416630100000002919091179055612ba181613135565b82158015612bad575083155b15612c0f576011546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b612c1a8483836131bb565b60195460ff63010000008204811691620100008104821691612c449161010081048216911661378f565b612c4e919061378f565b612c58919061378f565b6019805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f6e2a5b7f71cda0b5cb7df899e2ae963197bad5b9805df7f475458f793841201c9181900360a00190a150505050565b6000612cf530610c71565b600b549091504790612d0890600761374e565b821115612d2057600b54612d1d90600761374e565b91505b601954600090819060029060ff600160201b8204811691612d4291168761374e565b612d4c919061377b565b612d56919061377b565b90506000612d648286613939565b9050612d6f81613271565b6000612d7b8547613939565b60195490915060009060ff63010000008204811691612d9d9160029116613963565b612da7919061378f565b601954612dbe9190600160201b900460ff16613985565b60195460ff91821692506000916002918491612ddb91168661374e565b612de5919061377b565b612def919061377b565b6019549091506000908390612e0c90610100900460ff168661374e565b612e16919061377b565b90506000612e24828461389e565b612e2e9086613939565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612e7c576040519150601f19603f3d011682016040523d82523d6000602084013e612e81565b606091505b5050600d546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114612ed1576040519150601f19603f3d011682016040523d82523d6000602084013e612ed6565b606091505b50909850508615612f2d57612eeb87846133cb565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6000611ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612310565b33600090815260136020526040812054819060ff1661309257601954600160201b900460ff161561301857601954600090606490612fc390600160201b900460ff168661374e565b612fcd919061377b565b601954909150600090606490612fed906301000000900460ff168761374e565b612ff7919061377b565b90506130038286613939565b9450801561301557613015338261234a565b50505b601954600160201b900460ff161561308b57600061303530610c71565b60195490915060009060029060ff600160201b820481169161305891168561374e565b613062919061377b565b61306c919061377b565b9050600061307a8284613939565b9050801561308757600193505b5050505b9050610869565b6001600160a01b03841630146130b4576130ac848461234a565b5060006130bd565b50600982905560005b601954600160201b900460ff161561308b5760006130da30610c71565b60195490915060009060029060ff600160201b82048116916130fd91168561374e565b613107919061377b565b613111919061377b565b9050600061311f8284613939565b9050801561308757600093505050509050610869565b6001600160a01b03811660009081526016602052604090205415613171576001600160a01b03811660009081526016602052604090205461319f565b61317a81610c71565b1561319d576001600160a01b03811660009081526016602052604090205461319f565b425b6001600160a01b03909116600090815260166020526040902055565b6001600160a01b038116158015906131de57506001600160a01b03811661dead14155b801561320357506001600160a01b03821660009081526013602052604090205460ff16155b801561322857506001600160a01b03811660009081526013602052604090205460ff16155b156113b4578215801561323e5750600c5460ff16155b156113b4576009546001600160a01b0383166000908152601660205260409020546132699190613939565b600a55505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a6576132a661380f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332391906137f2565b816001815181106133365761333661380f565b6001600160a01b03928316602091820292909201015260065461335c9130911684611ade565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061339590859060009086903090429060040161399e565b600060405180830381600087803b1580156133af57600080fd5b505af11580156133c3573d6000803e3d6000fd5b505050505050565b6006546133e39030906001600160a01b031684611ade565b600654600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613458573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061269791906139da565b600060208083528351808285015260005b818110156134aa5785810183015185820160400152820161348e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6257600080fd5b600080604083850312156134f357600080fd5b82356134fe816134cb565b946020939093013593505050565b60006020828403121561351e57600080fd5b5035919050565b60008060006060848603121561353a57600080fd5b8335613545816134cb565b92506020840135613555816134cb565b929592945050506040919091013590565b803560ff8116811461357757600080fd5b919050565b6000806000806080858703121561359257600080fd5b61359b85613566565b93506135a960208601613566565b92506135b760408601613566565b91506135c560608601613566565b905092959194509250565b6000602082840312156135e257600080fd5b8135611ad7816134cb565b6000806040838503121561360057600080fd5b823561360b816134cb565b91506020830135801515811461362057600080fd5b809150509250929050565b60008060006060848603121561364057600080fd5b833561364b816134cb565b9250602084013561365b816134cb565b9150604084013561366b816134cb565b809150509250925092565b6000806040838503121561368957600080fd5b823591506020830135613620816134cb565b600080604083850312156136ae57600080fd5b82356136b9816134cb565b91506020830135613620816134cb565b600181811c908216806136dd57607f821691505b6020821081036136fd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086957610869613738565b634e487b7160e01b600052601260045260246000fd5b60008261378a5761378a613765565b500490565b60ff818116838216019081111561086957610869613738565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b60006020828403121561380457600080fd5b8151611ad7816134cb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561385e5781516001600160a01b031687529582019590820190600101613839565b509495945050505050565b8481526080602082015260006138826080830186613825565b6001600160a01b03949094166040830152506060015292915050565b8082018082111561086957610869613738565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561086957610869613738565b68ffffffffffffffffff1991909116815260200190565b600060ff83168061397657613976613765565b8060ff84160491505092915050565b60ff828116828216039081111561086957610869613738565b85815284602082015260a0604082015260006139bd60a0830186613825565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156139ef57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365301b44cf1eabb0a57f586af3c6c9a262ca22eb81e2a8fa6c56c98fe628dd0f6245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205d7a6a93b293bef74176f0baafcddd82556bf729e9250e688de91af02898e7fc64736f6c63430008120033

Deployed Bytecode Sourcemap

13534:27365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13809:28;;;;;;;;;;-1:-1:-1;13809:28:0;;;;-1:-1:-1;;;13809:28:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;13809:28:0;;;;;;;;9215:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10195:194::-;;;;;;;;;;-1:-1:-1;10195:194:0;;;;;:::i;:::-;;:::i;13580:30::-;;;;;;;;;;-1:-1:-1;13580:30:0;;;;-1:-1:-1;;;;;13580:30:0;;;;;;-1:-1:-1;;;;;1393:32:1;;;1375:51;;1363:2;1348:18;13580:30:0;1215:217:1;9536:108:0;;;;;;;;;;-1:-1:-1;9624:12:0;;9536:108;;;1583:25:1;;;1571:2;1556:18;9536:108:0;1437:177:1;24432:323:0;;;;;;;;;;-1:-1:-1;24432:323:0;;;;;:::i;:::-;;:::i;:::-;;10397:454;;;;;;;;;;-1:-1:-1;10397:454:0;;;;;:::i;:::-;;:::i;24763:450::-;;;;;;;;;;-1:-1:-1;24763:450:0;;;;;:::i;:::-;;:::i;9435:93::-;;;;;;;;;;-1:-1:-1;9435:93:0;;9518:2;2407:36:1;;2395:2;2380:18;9435:93:0;2265:184:1;10859:293:0;;;;;;;;;;-1:-1:-1;10859:293:0;;;;;:::i;:::-;;:::i;25583:81::-;;;;;;;;;;-1:-1:-1;25583:81:0;;;;;:::i;:::-;;:::i;13617:38::-;;;;;;;;;;;;;;;22820:786;;;;;;;;;;-1:-1:-1;22820:786:0;;;;;:::i;:::-;;:::i;13844:28::-;;;;;;;;;;-1:-1:-1;13844:28:0;;;;-1:-1:-1;;;13844:28:0;;;;;;9652:143;;;;;;;;;;-1:-1:-1;9652:143:0;;;;;:::i;:::-;;:::i;8334:148::-;;;;;;;;;;;;;:::i;20565:396::-;;;;;;;;;;-1:-1:-1;20565:396:0;;;;;:::i;:::-;;:::i;23614:810::-;;;;;;;;;;-1:-1:-1;23614:810:0;;;;;:::i;:::-;;:::i;20147:410::-;;;;;;;;;;-1:-1:-1;20147:410:0;;;;;:::i;:::-;;:::i;14005:54::-;;;;;;;;;;;;;;;;20969:1823;;;;;;;;;;-1:-1:-1;20969:1823:0;;;;;:::i;:::-;;:::i;8120:79::-;;;;;;;;;;-1:-1:-1;8158:7:0;8185:6;-1:-1:-1;;;;;8185:6:0;8120:79;;9323:104;;;;;;;;;;;;;:::i;39896:124::-;;;;;;;;;;;;;:::i;40549:347::-;;;;;;;;;;-1:-1:-1;40549:347:0;;;;;:::i;:::-;;:::i;19178:238::-;;;;;;;;;;-1:-1:-1;19178:238:0;;;;;:::i;:::-;;:::i;11160:393::-;;;;;;;;;;-1:-1:-1;11160:393:0;;;;;:::i;:::-;;:::i;9803:200::-;;;;;;;;;;-1:-1:-1;9803:200:0;;;;;:::i;:::-;;:::i;13940:58::-;;;;;;;;;;;;;;;;25221:354;;;;;;;;;;-1:-1:-1;25221:354:0;;;;;:::i;:::-;;:::i;15141:57::-;;;;;;;;;;-1:-1:-1;15141:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19782:357;;;;;;;;;;-1:-1:-1;19782:357:0;;;;;:::i;:::-;;:::i;19084:84::-;;;;;;;;;;;;;:::i;25672:291::-;;;;;;;;;;-1:-1:-1;25814:23:0;;;;;;;25852;;;;;;-1:-1:-1;;;25890:21:0;;;;;-1:-1:-1;;;25926:18:0;;;25672:291;;;;4673:4:1;4661:17;;;4643:36;;4715:17;;;4710:2;4695:18;;4688:45;4769:17;;;4749:18;;;4742:45;;;;4823:17;;;4818:2;4803:18;;4796:45;4630:3;4615:19;25672:291:0;4428:419:1;14139:64:0;;;;;;;;;;;;;;;;39065:823;;;;;;;;;;-1:-1:-1;39065:823:0;;;;;:::i;:::-;;:::i;10011:176::-;;;;;;;;;;-1:-1:-1;10011:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;10152:18:0;;;10125:7;10152:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10011:176;8490:281;;;;;;;;;;-1:-1:-1;8490:281:0;;;;;:::i;:::-;;:::i;40028:134::-;;;;;;;;;;;;;:::i;25971:296::-;;;;;;;;;;-1:-1:-1;26114:24:0;;;;;;;;;26153;;;;;;-1:-1:-1;;;26192:22:0;;;;;-1:-1:-1;;;26229:19:0;;;25971:296;;9215:100;9269:13;9302:5;9295:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9215:100;:::o;10195:194::-;10303:4;10320:39;7508:10;10343:7;10352:6;10320:8;:39::i;:::-;-1:-1:-1;10377:4:0;10195:194;;;;;:::o;24432:323::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;;;;;;;;;24578:4:::1;24570;24549:13;9624:12:::0;;;9536:108;24549:13:::1;:17;::::0;24565:1:::1;24549:17;:::i;:::-;24548:26;;;;:::i;:::-;24547:35;;;;:::i;:::-;24535:8;:47;;24513:136;;;::::0;-1:-1:-1;;;24513:136:0;;7075:2:1;24513:136:0::1;::::0;::::1;7057:21:1::0;7114:2;7094:18;;;7087:30;7153:34;7133:18;;;7126:62;-1:-1:-1;;;7204:18:1;;;7197:37;7251:19;;24513:136:0::1;6873:403:1::0;24513:136:0::1;24702:11;::::0;24665:49:::1;::::0;24692:8;;24665:49:::1;::::0;;;::::1;24725:11;:22:::0;24432:323::o;10397:454::-;10537:4;10554:36;10564:6;10572:9;10583:6;10554:9;:36::i;:::-;10601:220;10624:6;7508:10;10672:138;10728:6;10672:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10672:19:0;;;;;;:11;:19;;;;;;;;7508:10;10672:33;;;;;;;;;;:37;:138::i;:::-;10601:8;:220::i;:::-;-1:-1:-1;10839:4:0;10397:454;;;;;:::o;24763:450::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;24905:4:::1;24897;24875:13;9624:12:::0;;;9536:108;24875:13:::1;:18;::::0;24891:2:::1;24875:18;:::i;:::-;24874:27;;;;:::i;:::-;24873:36;;;;:::i;:::-;24861:8;:48;;24839:134;;;::::0;-1:-1:-1;;;24839:134:0;;7483:2:1;24839:134:0::1;::::0;::::1;7465:21:1::0;7522:2;7502:18;;;7495:30;7561:34;7541:18;;;7534:62;-1:-1:-1;;;7612:18:1;;;7605:34;7656:19;;24839:134:0::1;7281:400:1::0;24839:134:0::1;25018:15;;25006:8;:27:::0;24984:120:::1;;;::::0;-1:-1:-1;;;24984:120:0;;7888:2:1;24984:120:0::1;::::0;::::1;7870:21:1::0;7927:2;7907:18;;;7900:30;7966:34;7946:18;;;7939:62;-1:-1:-1;;;8017:18:1;;;8010:41;8068:19;;24984:120:0::1;7686:407:1::0;24984:120:0::1;25152:15;::::0;25120:48:::1;::::0;25142:8;;25120:48:::1;::::0;;;::::1;25179:15;:26:::0;24763:450::o;10859:293::-;7508:10;10972:4;11061:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11061:34:0;;;;;;;;;;10972:4;;10989:133;;11039:7;;11061:50;;11100:10;11061:38;:50::i;25583:81::-;25632:24;25638:10;25650:5;25632;:24::i;:::-;25583:81;:::o;22820:786::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;23180:13;23140:16;23056:60:::1;23098:18:::0;23056;:60:::1;:::i;:::-;:100;;;;:::i;:::-;:137;;;;:::i;:::-;23035:158;;:1;:158;23013:218;;;::::0;-1:-1:-1;;;23013:218:0;;8453:2:1;23013:218:0::1;::::0;::::1;8435:21:1::0;8492:2;8472:18;;;8465:30;-1:-1:-1;;;8511:18:1;;;8504:40;8561:18;;23013:218:0::1;8251:334:1::0;23013:218:0::1;23242:166;23267:5;23287:18;23320;23353:16;23384:13;23242:10;:166::i;:::-;23424:174;::::0;-1:-1:-1;;;8792:27:1;;8844:2;8835:12;23424:174:0::1;;::::0;;;;;::::1;::::0;;4673:4:1;4661:17;;;4643:36;;4715:17;;;4710:2;4695:18;;4688:45;4769:17;;;4749:18;;;4742:45;4823:17;;4818:2;4803:18;;4796:45;23424:174:0;;;;::::1;::::0;;;;;4630:3:1;23424:174:0;;::::1;22820:786:::0;;;;:::o;9652:143::-;-1:-1:-1;;;;;9769:18:0;9742:7;9769:18;;;:9;:18;;;;;;;9652:143::o;8334:148::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;8441:1:::1;8425:6:::0;;8404:40:::1;::::0;-1:-1:-1;;;;;8425:6:0;;::::1;::::0;8404:40:::1;::::0;8441:1;;8404:40:::1;8472:1;8455:19:::0;;-1:-1:-1;;;;;;8455:19:0::1;::::0;;8334:148::o;20565:396::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20709:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:50;::::1;;:38;::::0;;::::1;:50;;::::0;20687:142:::1;;;;-1:-1:-1::0;;;20687:142:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20840:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:49;;-1:-1:-1;;20840:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20905:48;;154:41:1;;;20905:48:0::1;::::0;127:18:1;20905:48:0::1;;;;;;;;20565:396:::0;;:::o;23614:810::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;23982:14;23941:17;23855:62:::1;23898:19:::0;23855;:62:::1;:::i;:::-;:103;;;;:::i;:::-;:141;;;;:::i;:::-;23834:162;;:1;:162;23812:227;;;::::0;-1:-1:-1;;;23812:227:0;;9471:2:1;23812:227:0::1;::::0;::::1;9453:21:1::0;9510:2;9490:18;;;9483:30;-1:-1:-1;;;9529:18:1;;;9522:45;9584:18;;23812:227:0::1;9269:339:1::0;23812:227:0::1;24050:171;24076:5;24096:19;24130;24164:17;24196:14;24050:11;:171::i;:::-;24237:179;::::0;-1:-1:-1;;;9815:28:1;;9868:2;9859:12;24237:179:0::1;9613:264:1::0;20147:410:0;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20296:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:55;::::1;;:43;::::0;;::::1;:55;;::::0;20274:147:::1;;;;-1:-1:-1::0;;;20274:147:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20432:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:54;;-1:-1:-1;;20432:54:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20502:47;;154:41:1;;;20502:47:0::1;::::0;127:18:1;20502:47:0::1;14:187:1::0;20969:1823:0;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;21142:15:::1;::::0;-1:-1:-1;;;;;21142:37:0;;::::1;:15;::::0;;::::1;;:37;21138:546;;-1:-1:-1::0;;;;;21222:32:0;::::1;21196:125;;;::::0;-1:-1:-1;;;21196:125:0;;10084:2:1;21196:125:0::1;::::0;::::1;10066:21:1::0;10123:2;10103:18;;;10096:30;10162:33;10142:18;;;10135:61;10213:18;;21196:125:0::1;9882:355:1::0;21196:125:0::1;21384:13;-1:-1:-1::0;;;;;21362:35:0::1;:18;-1:-1:-1::0;;;;;21362:35:0::1;::::0;21336:128:::1;;;::::0;-1:-1:-1;;;21336:128:0;;10084:2:1;21336:128:0::1;::::0;::::1;10066:21:1::0;10123:2;10103:18;;;10096:30;10162:33;10142:18;;;10135:61;10213:18;;21336:128:0::1;9882:355:1::0;21336:128:0::1;21591:15;::::0;21484:137:::1;::::0;-1:-1:-1;;;;;21591:15:0::1;::::0;;::::1;::::0;::::1;::::0;21484:137;::::1;::::0;::::1;::::0;-1:-1:-1;;;10444:30:1;;10499:2;10490:12;;10242:266;21484:137:0::1;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;21636:15;:36:::0;;-1:-1:-1;;;;;;21636:36:0::1;;-1:-1:-1::0;;;;;21636:36:0;::::1;;;::::0;;21138:546:::1;21698:15;::::0;-1:-1:-1;;;;;21698:37:0;;::::1;:15:::0;::::1;:37;21694:546;;-1:-1:-1::0;;;;;21778:32:0;::::1;21752:125;;;::::0;-1:-1:-1;;;21752:125:0;;10715:2:1;21752:125:0::1;::::0;::::1;10697:21:1::0;10754:2;10734:18;;;10727:30;10793:33;10773:18;;;10766:61;10844:18;;21752:125:0::1;10513:355:1::0;21752:125:0::1;21940:13;-1:-1:-1::0;;;;;21918:35:0::1;:18;-1:-1:-1::0;;;;;21918:35:0::1;::::0;21892:128:::1;;;::::0;-1:-1:-1;;;21892:128:0;;10715:2:1;21892:128:0::1;::::0;::::1;10697:21:1::0;10754:2;10734:18;;;10727:30;10793:33;10773:18;;;10766:61;10844:18;;21892:128:0::1;10513:355:1::0;21892:128:0::1;22147:15;::::0;22040:137:::1;::::0;-1:-1:-1;;;11075:30:1;;-1:-1:-1;;;;;22147:15:0;;::::1;::::0;22040:137;::::1;::::0;11130:2:1;11121:12;22040:137:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;22192:15;:36:::0;;-1:-1:-1;;;;;;22192:36:0::1;-1:-1:-1::0;;;;;22192:36:0;::::1;;::::0;;21694:546:::1;22254:14;::::0;-1:-1:-1;;;;;22254:35:0;;::::1;:14:::0;::::1;:35;22250:535;;-1:-1:-1::0;;;;;22332:31:0;::::1;22306:123;;;::::0;-1:-1:-1;;;22306:123:0;;11346:2:1;22306:123:0::1;::::0;::::1;11328:21:1::0;11385:2;11365:18;;;11358:30;11424:32;11404:18;;;11397:60;11474:18;;22306:123:0::1;11144:354:1::0;22306:123:0::1;22491:13;-1:-1:-1::0;;;;;22470:34:0::1;:17;-1:-1:-1::0;;;;;22470:34:0::1;::::0;22444:126:::1;;;::::0;-1:-1:-1;;;22444:126:0;;11346:2:1;22444:126:0::1;::::0;::::1;11328:21:1::0;11385:2;11365:18;;;11358:30;11424:32;11404:18;;;11397:60;11474:18;;22444:126:0::1;11144:354:1::0;22444:126:0::1;22695:14;::::0;;22590:134:::1;::::0;-1:-1:-1;;;11705:29:1;;-1:-1:-1;;;;;22695:14:0;;::::1;::::0;22590:134;;::::1;::::0;11750:12:1;22590:134:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;22739:14;:34:::0;;-1:-1:-1;;;;;;22739:34:0::1;-1:-1:-1::0;;;;;22739:34:0;::::1;;::::0;;22250:535:::1;20969:1823:::0;;;:::o;9323:104::-;9379:13;9412:7;9405:14;;;;;:::i;39896:124::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;13910:23:::1;39951:15;:27:::0;;;39989:11:::1;:23:::0;39896:124::o;40549:347::-;40645:21;40636:6;:30;40614:118;;;;-1:-1:-1;;;40614:118:0;;11975:2:1;40614:118:0;;;11957:21:1;12014:2;11994:18;;;11987:30;12053:34;12033:18;;;12026:62;-1:-1:-1;;;12104:18:1;;;12097:36;12150:19;;40614:118:0;11773:402:1;40614:118:0;40770:15;;40762:48;;40744:12;;40770:15;;;-1:-1:-1;;;;;40770:15:0;;40799:6;;40744:12;40762:48;40744:12;40762:48;40799:6;40770:15;40762:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40743:67;;;40825:7;40821:68;;;40854:23;;1583:25:1;;;40854:23:0;;1571:2:1;1556:18;40854:23:0;;;;;;;40821:68;40603:293;40549:347;:::o;19178:238::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19294:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;19294:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19358:50;;154:41:1;;;19358:50:0::1;::::0;127:18:1;19358:50:0::1;14:187:1::0;11160:393:0;11278:4;11295:228;7508:10;11345:7;11367:145;11424:15;11367:145;;;;;;;;;;;;;;;;;7508:10;11367:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11367:34:0;;;;;;;;;;;;:38;:145::i;9803:200::-;9914:4;9931:42;7508:10;9955:9;9966:6;9931:9;:42::i;25221:354::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;25339:23:::1;;25327:8;:35:::0;25305:136:::1;;;::::0;-1:-1:-1;;;25305:136:0;;12592:2:1;25305:136:0::1;::::0;::::1;12574:21:1::0;12631:2;12611:18;;;12604:30;12670:34;12650:18;;;12643:62;-1:-1:-1;;;12721:18:1;;;12714:49;12780:19;;25305:136:0::1;12390:415:1::0;25305:136:0::1;25498:23;::::0;25457:65:::1;::::0;25488:8;;25457:65:::1;::::0;;;::::1;25533:23;:34:::0;25221:354::o;19782:357::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19916:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;19894:131:::1;;;;-1:-1:-1::0;;;19894:131:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20036:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;20036:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20090:41;;154::1;;;20090::0::1;::::0;127:18:1;20090:41:0::1;14:187:1::0;19084:84:0;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;19137:16:::1;:23:::0;;-1:-1:-1;;;;19137:23:0::1;-1:-1:-1::0;;;19137:23:0::1;::::0;;19084:84::o;39065:823::-;39161:7;39147:11;:21;39143:738;;;39332:16;;;39346:1;39332:16;;;;;;;;39308:21;;39332:16;;;;;;;;-1:-1:-1;;39373:15:0;;:22;;;-1:-1:-1;;;39373:22:0;;;;39308:40;;-1:-1:-1;;;;;;39373:15:0;;;;:20;;-1:-1:-1;39373:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39363:4;39368:1;39363:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;39363:32:0;;;-1:-1:-1;;;;;39363:32:0;;;;;39428:4;39410;39415:1;39410:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39410:23:0;;;:7;;;;;;;;;:23;39478:15;;:277;;-1:-1:-1;;;39478:277:0;;:15;;;:66;;39570:11;;39478:277;;:15;;39668:4;;39699:6;;39725:15;;39478:277;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39775:29;39792:11;39775:29;;;;1583:25:1;;1571:2;1556:18;;1437:177;39775:29:0;;;;;;;;39170:646;40603:293;40549:347;:::o;39143:738::-;39837:32;39851:4;39857:11;39837:13;:32::i;8490:281::-;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8593:22:0;::::1;8571:110;;;::::0;-1:-1:-1;;;8571:110:0;;14513:2:1;8571:110:0::1;::::0;::::1;14495:21:1::0;14552:2;14532:18;;;14525:30;14591:34;14571:18;;;14564:62;-1:-1:-1;;;14642:18:1;;;14635:36;14688:19;;8571:110:0::1;14311:402:1::0;8571:110:0::1;8718:6;::::0;;8697:38:::1;::::0;-1:-1:-1;;;;;8697:38:0;;::::1;::::0;8718:6;::::1;::::0;8697:38:::1;::::0;::::1;8746:6;:17:::0;;-1:-1:-1;;;;;;8746:17:0::1;-1:-1:-1::0;;;;;8746:17:0;;;::::1;::::0;;;::::1;::::0;;8490:281::o;40028:134::-;40091:4;8247:6;;-1:-1:-1;;;;;8247:6:0;7508:10;8247:22;8239:67;;;;-1:-1:-1;;;8239:67:0;;;;;;;:::i;:::-;-1:-1:-1;40108:16:0::1;:24:::0;;-1:-1:-1;;;;40108:24:0::1;::::0;;;40028:134;:::o;2578:181::-;2636:7;;2668:5;2672:1;2668;:5;:::i;:::-;2656:17;;2697:1;2692;:6;;2684:46;;;;-1:-1:-1;;;2684:46:0;;15050:2:1;2684:46:0;;;15032:21:1;15089:2;15069:18;;;15062:30;15128:29;15108:18;;;15101:57;15175:18;;2684:46:0;14848:351:1;2684:46:0;2750:1;2578:181;-1:-1:-1;;;2578:181:0:o;13016:378::-;-1:-1:-1;;;;;13152:19:0;;13144:68;;;;-1:-1:-1;;;13144:68:0;;15406:2:1;13144:68:0;;;15388:21:1;15445:2;15425:18;;;15418:30;15484:34;15464:18;;;15457:62;-1:-1:-1;;;15535:18:1;;;15528:34;15579:19;;13144:68:0;15204:400:1;13144:68:0;-1:-1:-1;;;;;13231:21:0;;13223:68;;;;-1:-1:-1;;;13223:68:0;;15811:2:1;13223:68:0;;;15793:21:1;15850:2;15830:18;;;15823:30;15889:34;15869:18;;;15862:62;-1:-1:-1;;;15940:18:1;;;15933:32;15982:19;;13223:68:0;15609:398:1;13223:68:0;-1:-1:-1;;;;;13302:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13354:32;;1583:25:1;;;13354:32:0;;1556:18:1;13354:32:0;;;;;;;;13016:378;;;:::o;26288:3533::-;-1:-1:-1;;;;;26420:18:0;;26412:68;;;;-1:-1:-1;;;26412:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26499:16:0;;26491:64;;;;-1:-1:-1;;;26491:64:0;;;;;;;:::i;:::-;26572:6;26582:1;26572:11;26568:93;;26600:28;26616:4;26622:2;26626:1;26600:15;:28::i;26568:93::-;26705:16;;-1:-1:-1;;;26705:16:0;;;;26701:492;;;8158:7;8185:6;-1:-1:-1;;;;;26760:13:0;;;8185:6;;26760:13;;;;:64;;-1:-1:-1;26808:15:0;;-1:-1:-1;;;;;26794:30:0;;;26808:15;;26794:30;;26760:64;:113;;;;;26859:13;-1:-1:-1;;;;;26845:28:0;:2;-1:-1:-1;;;;;26845:28:0;;;26760:113;26738:444;;;26959:9;26938:31;;;;:20;:31;;;;;;26972:12;-1:-1:-1;26908:193:0;;;;-1:-1:-1;;;26908:193:0;;17024:2:1;26908:193:0;;;17006:21:1;17063:2;17043:18;;;17036:30;17102:34;17082:18;;;17075:62;17173:34;17153:18;;;17146:62;-1:-1:-1;;;17224:19:1;;;17217:40;17274:19;;26908:193:0;16822:477:1;26908:193:0;27141:9;27120:31;;;;:20;:31;;;;;27154:12;27120:46;;26738:444;-1:-1:-1;;;;;27226:31:0;;;27205:18;27226:31;;;:25;:31;;;;;;;;;27288:29;;;;;;;;;27349:35;;;:29;:35;;;;;;27226:31;;;;;27288:29;;;;27349:35;27348:36;:87;;;;-1:-1:-1;;;;;;27402:33:0;;;;;;:29;:33;;;;;;;;27401:34;27348:87;27330:1335;;;27470:16;;-1:-1:-1;;;27470:16:0;;;;27462:59;;;;-1:-1:-1;;;27462:59:0;;17506:2:1;27462:59:0;;;17488:21:1;17545:2;17525:18;;;17518:30;17584:32;17564:18;;;17557:60;17634:18;;27462:59:0;17304:354:1;27462:59:0;-1:-1:-1;;;;;27558:31:0;;;;;;:25;:31;;;;;;;;:91;;;;-1:-1:-1;;;;;;27611:38:0;;;;;;:34;:38;;;;;;;;27610:39;27558:91;27536:1118;;;27724:11;;27714:6;:21;;27684:135;;;;-1:-1:-1;;;27684:135:0;;17865:2:1;27684:135:0;;;17847:21:1;17904:2;17884:18;;;17877:30;17943:34;17923:18;;;17916:62;-1:-1:-1;;;17994:18:1;;;17987:38;18042:19;;27684:135:0;17663:404:1;27684:135:0;27894:15;;27877:13;27887:2;27877:9;:13::i;:::-;27868:22;;:6;:22;:::i;:::-;:41;;27838:139;;;;-1:-1:-1;;;27838:139:0;;18274:2:1;27838:139:0;;;18256:21:1;18313:2;18293:18;;;18286:30;18352:26;18332:18;;;18325:54;18396:18;;27838:139:0;18072:348:1;27838:139:0;27536:1118;;;-1:-1:-1;;;;;28021:29:0;;;;;;:25;:29;;;;;;;;:91;;;;-1:-1:-1;;;;;;28072:40:0;;;;;;:34;:40;;;;;;;;28071:41;28021:91;27999:655;;;28187:11;;28177:6;:21;;28147:137;;;;-1:-1:-1;;;28147:137:0;;18627:2:1;28147:137:0;;;18609:21:1;18666:2;18646:18;;;18639:30;18705:34;18685:18;;;18678:62;-1:-1:-1;;;18756:18:1;;;18749:40;18806:19;;28147:137:0;18425:406:1;27999:655:0;-1:-1:-1;;;;;28311:38:0;;;;;;:34;:38;;;;;;;;28306:348;;28426:15;;28409:13;28419:2;28409:9;:13::i;:::-;28400:22;;:6;:22;:::i;:::-;:41;;28370:138;;;;-1:-1:-1;;;28370:138:0;;19038:2:1;28370:138:0;;;19020:21:1;19077:2;19057:18;;;19050:30;19116:25;19096:18;;;19089:53;19159:18;;28370:138:0;18836:347:1;28306:348:0;28535:9;;;;28534:10;:54;;;;-1:-1:-1;;;;;;28548:40:0;;;;;;:34;:40;;;;;;;;28534:54;28530:124;;;28623:15;28609:11;:29;28530:124;28675:51;28688:13;28703:12;28717:4;28723:2;28675:12;:51::i;:::-;28737:12;28780:23;;28752:24;28770:4;28752:9;:24::i;:::-;28834:16;;-1:-1:-1;;28752:51:0;;-1:-1:-1;;;;28834:16:0;;;;:40;;;;;28867:7;28834:40;:67;;;;-1:-1:-1;28892:9:0;;;;28891:10;28834:67;:97;;;;-1:-1:-1;28918:9:0;;-1:-1:-1;;;28918:9:0;;;;:13;;28834:97;:143;;;;-1:-1:-1;;;;;;28948:29:0;;;;;;:25;:29;;;;;;;;28834:143;:185;;;;-1:-1:-1;;;;;;28995:24:0;;;;;;:18;:24;;;;;;;;28994:25;28834:185;:225;;;;-1:-1:-1;;;;;;29037:22:0;;;;;;:18;:22;;;;;;;;29036:23;28834:225;28816:362;;;29086:9;:16;;-1:-1:-1;;29086:16:0;29098:4;29086:16;;;29117:17;:15;:17::i;:::-;29149:9;:17;;-1:-1:-1;;29149:17:0;;;28816:362;29206:9;;29190:12;;29206:9;;29205:10;:30;;;;-1:-1:-1;29219:16:0;;-1:-1:-1;;;29219:16:0;;;;29205:30;-1:-1:-1;;;;;29252:24:0;;;;;;:18;:24;;;;;;29190:45;;-1:-1:-1;29252:24:0;;;:50;;-1:-1:-1;;;;;;29280:22:0;;;;;;:18;:22;;;;;;;;29252:50;29248:98;;;-1:-1:-1;29329:5:0;29248:98;29360:7;:24;;;;-1:-1:-1;29371:9:0;;-1:-1:-1;;;29371:9:0;;;;:13;;29360:24;29356:414;;;29425:9;;29401:11;;29438:3;;29416:18;;-1:-1:-1;;;29425:9:0;;;;29416:6;:18;:::i;:::-;29415:26;;;;:::i;:::-;29487:8;;29401:40;;-1:-1:-1;29456:18:0;;29499:3;;29478:17;;29487:8;;;;;29478:6;:17;:::i;:::-;29477:25;;;;:::i;:::-;29456:46;-1:-1:-1;29526:12:0;29535:3;29526:6;:12;:::i;:::-;29517:21;;29553:41;29569:4;29583;29590:3;29553:15;:41::i;:::-;29615:14;;29611:148;;29650:38;29670:4;29677:10;29650:11;:38::i;:::-;29722:8;;29712:31;;;29722:8;;;;;;19491:36:1;;19558:2;19543:18;;19536:34;;;29712:31:0;;19464:18:1;29712:31:0;;;;;;;29611:148;29386:384;;29356:414;29780:33;29796:4;29802:2;29806:6;29780:15;:33::i;:::-;26401:3420;;;;26288:3533;;;:::o;2911:226::-;3031:7;3067:12;3059:6;;;;3051:29;;;;-1:-1:-1;;;3051:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3091:9:0;3103:5;3107:1;3103;:5;:::i;:::-;3091:17;2911:226;-1:-1:-1;;;;;2911:226:0:o;12557:451::-;-1:-1:-1;;;;;12641:21:0;;12633:67;;;;-1:-1:-1;;;12633:67:0;;19783:2:1;12633:67:0;;;19765:21:1;19822:2;19802:18;;;19795:30;19861:34;19841:18;;;19834:62;-1:-1:-1;;;19912:18:1;;;19905:31;19953:19;;12633:67:0;19581:397:1;12633:67:0;12792:105;12829:6;12792:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12792:18:0;;;;;;:9;:18;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;12771:18:0;;;;;;:9;:18;;;;;:126;12923:12;;:24;;12940:6;12923:16;:24::i;:::-;12908:12;:39;12963:37;;1583:25:1;;;12989:1:0;;-1:-1:-1;;;;;12963:37:0;;;;;1571:2:1;1556:18;12963:37:0;;;;;;;12557:451;;:::o;33328:1460::-;33540:21;;;;:43;;;;:21;;:43;33536:316;;33605:178;;-1:-1:-1;;;20185:32:1;;20242:2;20233:12;33605:178:0;;;;;;;;33676:21;;;;33754:14;;33605:178;;33676:21;;;;;33605:178;;;;-1:-1:-1;;;;;;;;;;;33605:178:0;;;33754:14;;;33605:178;:::i;:::-;;;;;;;;33798:21;;;:42;;-1:-1:-1;;33798:42:0;;;;;;;33536:316;33866:21;;;;:43;;;;:21;;;;;:43;33862:316;;33931:178;;-1:-1:-1;;;20672:32:1;;20729:2;20720:12;33931:178:0;;;;;;;;34002:21;;;;34080:14;;33931:178;;34002:21;;;;;;;;33931:178;;;;-1:-1:-1;;;;;;;;;;;33931:178:0;;;34080:14;;;33931:178;:::i;:::-;;;;;;;;34124:21;;;:42;;-1:-1:-1;;34124:42:0;;;;;;;;;33862:316;34192:19;;;;:39;;;;-1:-1:-1;;;34192:19:0;;;;:39;34188:302;;34253:172;;-1:-1:-1;;;20945:30:1;;21000:2;20991:12;34253:172:0;;;;;;;;34322:19;;;;34396:14;;34253:172;;34322:19;-1:-1:-1;;;34322:19:0;;;;;;34253:172;;;;-1:-1:-1;;;;;;;;;;;34253:172:0;;;34396:14;;;34253:172;:::i;:::-;;;;;;;;34440:19;;;:38;;-1:-1:-1;;34440:38:0;-1:-1:-1;;;34440:38:0;;;;;;;34188:302;34504:16;;;;:33;;;;-1:-1:-1;;;34504:16:0;;;;:33;34500:281;;34559:163;;-1:-1:-1;;;21216:27:1;;21268:2;21259:12;34559:163:0;;;;;;;;34625:16;;;;34693:14;;34559:163;;34625:16;-1:-1:-1;;;34625:16:0;;;;;;34559:163;;;;-1:-1:-1;;;;;;;;;;;34559:163:0;;;34693:14;;;34559:163;:::i;:::-;;;;;;;;34737:16;;;:32;;-1:-1:-1;;34737:32:0;-1:-1:-1;;;34737:32:0;;;;;;;34500:281;33328:1460;;;;;:::o;31827:1493::-;32044:22;;;;:45;;;;:22;;;;;:45;32040:323;;32111:181;;-1:-1:-1;;;21484:33:1;;21542:2;21533:12;32111:181:0;;;;;;;;32183:22;;;;32263:14;;32111:181;;32183:22;;;;;;;;32111:181;;;;-1:-1:-1;;;;;;;;;;;32111:181:0;;;32263:14;;;32111:181;:::i;:::-;;;;;;;;32307:22;;;:44;;-1:-1:-1;;32307:44:0;;;;;;;;;32040:323;32377:22;;;;:45;;;;:22;;;;;:45;32373:323;;32444:181;;-1:-1:-1;;;21758:33:1;;21816:2;21807:12;32444:181:0;;;;;;;;32516:22;;;;32596:14;;32444:181;;32516:22;;;;;;;;32444:181;;;;-1:-1:-1;;;;;;;;;;;32444:181:0;;;32596:14;;;32444:181;:::i;:::-;;;;;;;;32640:22;;;:44;;-1:-1:-1;;32640:44:0;;;;;;;;;32373:323;32710:20;;;;:41;;;;-1:-1:-1;;;32710:20:0;;;;:41;32706:309;;32773:175;;-1:-1:-1;;;22032:31:1;;22088:2;22079:12;32773:175:0;;;;;;;;32843:20;;;;32919:14;;32773:175;;32843:20;-1:-1:-1;;;32843:20:0;;;;;;32773:175;;;;-1:-1:-1;;;;;;;;;;;32773:175:0;;;32919:14;;;32773:175;:::i;:::-;;;;;;;;32963:20;;;:40;;-1:-1:-1;;32963:40:0;-1:-1:-1;;;32963:40:0;;;;;;;32706:309;33029:17;;;;:35;;;;-1:-1:-1;;;33029:17:0;;;;:35;33025:288;;33086:166;;-1:-1:-1;;;22304:28:1;;22357:2;22348:12;33086:166:0;;;;;;;;33153:17;;;;33223:14;;33086:166;;33153:17;-1:-1:-1;;;33153:17:0;;;;;;33086:166;;;;-1:-1:-1;;;;;;;;;;;33086:166:0;;;33223:14;;;33086:166;:::i;:::-;;;;;;;;33267:17;;;:34;;;;;-1:-1:-1;;;33267:34:0;-1:-1:-1;;33267:34:0;;;;;;31827:1493;;;;;:::o;38009:445::-;38131:23;;38103:24;38121:4;38103:9;:24::i;:::-;:51;;38081:151;;;;-1:-1:-1;;;38081:151:0;;22573:2:1;38081:151:0;;;22555:21:1;22612:2;22592:18;;;22585:30;22651:34;22631:18;;;22624:62;-1:-1:-1;;;22702:18:1;;;22695:48;22760:19;;38081:151:0;22371:414:1;38081:151:0;38247:30;38264:4;38270:6;38247:16;:30::i;:::-;38243:204;;;38298:9;;-1:-1:-1;;;38298:9:0;;;;:13;38294:142;;38332:9;:16;;-1:-1:-1;;38332:16:0;38344:4;38332:16;;;38367:17;:15;:17::i;:::-;38403:9;:17;;-1:-1:-1;;38403:17:0;;;38009:445;;:::o;11561:606::-;-1:-1:-1;;;;;11701:20:0;;11693:70;;;;-1:-1:-1;;;11693:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11782:23:0;;11774:71;;;;-1:-1:-1;;;11774:71:0;;;;;;;:::i;:::-;11934:108;11970:6;11934:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11934:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;11914:17:0;;;;;;;:9;:17;;;;;;:128;;;;12076:20;;;;;;;:32;;12101:6;12076:24;:32::i;:::-;-1:-1:-1;;;;;12053:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12124:35;;;;;;;;;;12152:6;1583:25:1;;1571:2;1556:18;;1437:177;30042:1330:0;30191:13;:17;;-1:-1:-1;;30273:12:0;;;30296:236;;;;30345:24;;30329:13;:40;;30345:24;;;;;;;;-1:-1:-1;;30384:40:0;;;;;;;30400:24;;;;;;30384:40;;;;;-1:-1:-1;;30490:30:0;-1:-1:-1;;;30453:22:0;;;;30439:36;;-1:-1:-1;;30490:30:0;;-1:-1:-1;;;30501:19:0;;;;;;;30490:30;;;;;;;30296:236;30548:13;30544:260;;;30594:23;;30578:13;:39;;30594:23;;;;-1:-1:-1;;30632:39:0;;;;;;;30594:23;30648;;;;;;30632:39;;;;;;;;-1:-1:-1;;30736:29:0;-1:-1:-1;;;30700:21:0;;;;30686:35;;;;-1:-1:-1;;30736:29:0;;-1:-1:-1;;;30747:18:0;;;;30736:29;;;;;;;;30780:12;30789:2;30780:8;:12::i;:::-;30821;30820:13;:31;;;;;30838:13;30837:14;30820:31;30816:255;;;30884:24;;30868:13;:40;;30884:24;;;;;;;;-1:-1:-1;;30923:40:0;;;;;;;30939:24;;;;;;30923:40;;;;;-1:-1:-1;;31029:30:0;-1:-1:-1;;;30992:22:0;;;;30978:36;;-1:-1:-1;;31029:30:0;;-1:-1:-1;;;31040:19:0;;;;;;;31029:30;;;;;;;30816:255;31081:39;31096:13;31111:4;31117:2;31081:14;:39::i;:::-;31189:8;;;;;;;;;31175:11;;;;;;31143:29;;31189:8;31159:13;;;;;31143;:29;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;31131:9;:66;;;;;;-1:-1:-1;;;31131:66:0;;;-1:-1:-1;;31131:66:0;;;;;;;;31213:151;;;31239:13;;;;;;;;;;23029:36:1;;31131:66:0;31267:13;;;;23096:2:1;23081:18;;23074:45;31295:11:0;;;;;23135:18:1;;;23128:45;31321:8:0;;;;;23204:2:1;23189:18;;23182:45;31344:9:0;;;;;23258:3:1;23243:19;;23236:46;31213:151:0;;;;;;;23016:3:1;31213:151:0;;;30042:1330;;;;:::o;36495:1506::-;36541:23;36567:24;36585:4;36567:9;:24::i;:::-;36684:23;;36541:50;;-1:-1:-1;36630:21:0;;36684:27;;36710:1;36684:27;:::i;:::-;36666:15;:45;36662:123;;;36746:23;;:27;;36772:1;36746:27;:::i;:::-;36728:45;;36662:123;36893:9;;36795:12;;;;36918:1;;36893:9;-1:-1:-1;;;36893:9:0;;;;;36845:31;;36863:13;36845:15;:31;:::i;:::-;36844:58;;;;:::i;:::-;:75;;;;:::i;:::-;36818:101;-1:-1:-1;36930:20:0;36953:35;36818:101;36953:15;:35;:::i;:::-;36930:58;;37001:31;37019:12;37001:17;:31::i;:::-;37045:27;37075:41;37099:17;37075:21;:41;:::i;:::-;37184:8;;37045:71;;-1:-1:-1;37127:19:0;;37184:8;;;;;;;37163:17;;37179:1;;37163:13;:17;:::i;:::-;37162:30;;;;:::i;:::-;37149:9;;:44;;;-1:-1:-1;;;37149:9:0;;;;:44;:::i;:::-;37256:13;;37127:66;;;;;-1:-1:-1;37204:26:0;;37313:1;;37127:66;;37234:35;;37256:13;37234:19;:35;:::i;:::-;37233:64;;;;:::i;:::-;:81;;;;:::i;:::-;37377:13;;37204:110;;-1:-1:-1;37325:26:0;;37407:11;;37355:35;;37377:13;;;;;37355:19;:35;:::i;:::-;37354:64;;;;:::i;:::-;37325:93;-1:-1:-1;37429:24:0;37492:39;37325:93;37492:18;:39;:::i;:::-;37456:76;;:19;:76;:::i;:::-;37567:14;;37559:57;;37429:103;;-1:-1:-1;;;;;;37567:14:0;;37429:103;;37559:57;;;;37429:103;37567:14;37559:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37649:15:0;;37641:87;;37545:71;;-1:-1:-1;;;;;;37649:15:0;;37692:21;;37641:87;;;;37692:21;37649:15;37641:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37627:101:0;;-1:-1:-1;;37745:19:0;;37741:253;;37781:50;37795:15;37812:18;37781:13;:50::i;:::-;37851:131;;;23821:25:1;;;23877:2;23862:18;;23855:34;;;23905:18;;;23898:34;;;37851:131:0;;23809:2:1;23794:18;37851:131:0;;;;;;;37741:253;36530:1471;;;;;;;;;;36495:1506::o;2767:136::-;2825:7;2852:43;2856:1;2859;2852:43;;;;;;;;;;;;;;;;;:3;:43::i;34796:1691::-;34962:10;34898:4;34943:30;;;:18;:30;;;;;;34898:4;;34943:30;;34938:1542;;34994:9;;-1:-1:-1;;;34994:9:0;;;;:13;34990:309;;35052:9;;35028:11;;35065:3;;35043:18;;-1:-1:-1;;;35052:9:0;;;;35043:6;:18;:::i;:::-;35042:26;;;;:::i;:::-;35118:8;;35028:40;;-1:-1:-1;35087:18:0;;35130:3;;35109:17;;35118:8;;;;;35109:6;:17;:::i;:::-;35108:25;;;;:::i;:::-;35087:46;-1:-1:-1;35161:12:0;35170:3;35161:6;:12;:::i;:::-;35152:21;-1:-1:-1;35196:14:0;;35192:92;;35235:29;35241:10;35253;35235:5;:29::i;:::-;35009:290;;34990:309;35317:9;;-1:-1:-1;;;35317:9:0;;;;:13;35313:414;;35351:23;35377:24;35395:4;35377:9;:24::i;:::-;35503:9;;35351:50;;-1:-1:-1;35420:23:0;;35536:1;;35503:9;-1:-1:-1;;;35503:9:0;;;;;35447:31;;35465:13;35351:50;35447:31;:::i;:::-;35446:66;;;;:::i;:::-;:91;;;;:::i;:::-;35420:117;-1:-1:-1;35556:20:0;35579:35;35420:117;35579:15;:35;:::i;:::-;35556:58;-1:-1:-1;35637:16:0;;35633:79;;35688:4;35678:14;;35633:79;35332:395;;;35313:414;35748:7;-1:-1:-1;35741:14:0;;34938:1542;-1:-1:-1;;;;;35792:24:0;;35811:4;35792:24;35788:223;;35837:22;35843:7;35852:6;35837:5;:22::i;:::-;-1:-1:-1;35888:5:0;35788:223;;;-1:-1:-1;35940:11:0;:20;;;35990:5;35788:223;36029:9;;-1:-1:-1;;;36029:9:0;;;;:13;36025:415;;36063:23;36089:24;36107:4;36089:9;:24::i;:::-;36215:9;;36063:50;;-1:-1:-1;36132:23:0;;36248:1;;36215:9;-1:-1:-1;;;36215:9:0;;;;;36159:31;;36177:13;36063:50;36159:31;:::i;:::-;36158:66;;;;:::i;:::-;:91;;;;:::i;:::-;36132:117;-1:-1:-1;36268:20:0;36291:35;36132:117;36291:15;:35;:::i;:::-;36268:58;-1:-1:-1;36349:16:0;;36345:80;;36400:5;36390:15;;36044:396;;;36461:7;-1:-1:-1;36454:14:0;;29829:205;-1:-1:-1;;;;;29896:15:0;;;;;;:11;:15;;;;;;:20;:130;;-1:-1:-1;;;;;30011:15:0;;;;;;:11;:15;;;;;;29896:130;;;29932:22;29950:2;29932:9;:22::i;:::-;:27;:63;;-1:-1:-1;;;;;29980:15:0;;;;;;:11;:15;;;;;;29932:63;;;29962:15;29932:63;-1:-1:-1;;;;;29878:15:0;;;;;;;:11;:15;;;;;:148;29829:205::o;31380:439::-;-1:-1:-1;;;;;31521:16:0;;;;;;:54;;-1:-1:-1;;;;;;31554:21:0;;31568:6;31554:21;;31521:54;:96;;;;-1:-1:-1;;;;;;31593:24:0;;;;;;:18;:24;;;;;;;;31592:25;31521:96;:136;;;;-1:-1:-1;;;;;;31635:22:0;;;;;;:18;:22;;;;;;;;31634:23;31521:136;31503:309;;;31689:13;31688:14;:28;;;;-1:-1:-1;31707:9:0;;;;31706:10;31688:28;31684:117;;;31774:11;;-1:-1:-1;;;;;31754:17:0;;;;;;:11;:17;;;;;;:31;;31774:11;31754:31;:::i;:::-;31737:14;:48;31380:439;;;:::o;38462:500::-;38553:16;;;38567:1;38553:16;;;;;;;;38529:21;;38553:16;;;;;;;;;;-1:-1:-1;38553:16:0;38529:40;;38598:4;38580;38585:1;38580:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38580:23:0;;;:7;;;;;;;;;;:23;;;;38624:15;;:22;;;-1:-1:-1;;;38624:22:0;;;;:15;;;;;:20;;:22;;;;;38580:7;;38624:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38614:4;38619:1;38614:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38614:32:0;;;:7;;;;;;;;;:32;38689:15;;38657:62;;38674:4;;38689:15;38707:11;38657:8;:62::i;:::-;38730:15;;:224;;-1:-1:-1;;;38730:224:0;;-1:-1:-1;;;;;38730:15:0;;;;:66;;:224;;38811:11;;38730:15;;38881:4;;38908;;38928:15;;38730:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38518:444;38462:500;:::o;40170:371::-;40284:15;;40252:62;;40269:4;;-1:-1:-1;;;;;40284:15:0;40302:11;40252:8;:62::i;:::-;40325:15;;40477;;40325:208;;-1:-1:-1;;;40325:208:0;;40397:4;40325:208;;;24871:34:1;24921:18;;;24914:34;;;-1:-1:-1;24964:18:1;;;24957:34;;;25007:18;;;25000:34;-1:-1:-1;;;;;40325:15:0;40477;;;;;25050:19:1;;;25043:44;40507:15:0;25103:19:1;;;25096:35;40325:15:0;;;:31;;40364:9;;24805:19:1;;40325:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;895:315;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1619:180::-;1678:6;1731:2;1719:9;1710:7;1706:23;1702:32;1699:52;;;1747:1;1744;1737:12;1699:52;-1:-1:-1;1770:23:1;;1619:180;-1:-1:-1;1619:180:1:o;1804:456::-;1881:6;1889;1897;1950:2;1938:9;1929:7;1925:23;1921:32;1918:52;;;1966:1;1963;1956:12;1918:52;2005:9;1992:23;2024:31;2049:5;2024:31;:::i;:::-;2074:5;-1:-1:-1;2131:2:1;2116:18;;2103:32;2144:33;2103:32;2144:33;:::i;:::-;1804:456;;2196:7;;-1:-1:-1;;;2250:2:1;2235:18;;;;2222:32;;1804:456::o;2662:156::-;2728:20;;2788:4;2777:16;;2767:27;;2757:55;;2808:1;2805;2798:12;2757:55;2662:156;;;:::o;2823:393::-;2901:6;2909;2917;2925;2978:3;2966:9;2957:7;2953:23;2949:33;2946:53;;;2995:1;2992;2985:12;2946:53;3018:27;3035:9;3018:27;:::i;:::-;3008:37;;3064:36;3096:2;3085:9;3081:18;3064:36;:::i;:::-;3054:46;;3119:36;3151:2;3140:9;3136:18;3119:36;:::i;:::-;3109:46;;3174:36;3206:2;3195:9;3191:18;3174:36;:::i;:::-;3164:46;;2823:393;;;;;;;:::o;3221:247::-;3280:6;3333:2;3321:9;3312:7;3308:23;3304:32;3301:52;;;3349:1;3346;3339:12;3301:52;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;3473:416::-;3538:6;3546;3599:2;3587:9;3578:7;3574:23;3570:32;3567:52;;;3615:1;3612;3605:12;3567:52;3654:9;3641:23;3673:31;3698:5;3673:31;:::i;:::-;3723:5;-1:-1:-1;3780:2:1;3765:18;;3752:32;3822:15;;3815:23;3803:36;;3793:64;;3853:1;3850;3843:12;3793:64;3876:7;3866:17;;;3473:416;;;;;:::o;3894:529::-;3971:6;3979;3987;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;4095:9;4082:23;4114:31;4139:5;4114:31;:::i;:::-;4164:5;-1:-1:-1;4221:2:1;4206:18;;4193:32;4234:33;4193:32;4234:33;:::i;:::-;4286:7;-1:-1:-1;4345:2:1;4330:18;;4317:32;4358:33;4317:32;4358:33;:::i;:::-;4410:7;4400:17;;;3894:529;;;;;:::o;4852:315::-;4920:6;4928;4981:2;4969:9;4960:7;4956:23;4952:32;4949:52;;;4997:1;4994;4987:12;4949:52;5033:9;5020:23;5010:33;;5093:2;5082:9;5078:18;5065:32;5106:31;5131:5;5106:31;:::i;5172:388::-;5240:6;5248;5301:2;5289:9;5280:7;5276:23;5272:32;5269:52;;;5317:1;5314;5307:12;5269:52;5356:9;5343:23;5375:31;5400:5;5375:31;:::i;:::-;5425:5;-1:-1:-1;5482:2:1;5467:18;;5454:32;5495:33;5454:32;5495:33;:::i;5565:380::-;5644:1;5640:12;;;;5687;;;5708:61;;5762:4;5754:6;5750:17;5740:27;;5708:61;5815:2;5807:6;5804:14;5784:18;5781:38;5778:161;;5861:10;5856:3;5852:20;5849:1;5842:31;5896:4;5893:1;5886:15;5924:4;5921:1;5914:15;5778:161;;5565:380;;;:::o;5950:356::-;6152:2;6134:21;;;6171:18;;;6164:30;6230:34;6225:2;6210:18;;6203:62;6297:2;6282:18;;5950:356::o;6311:127::-;6372:10;6367:3;6363:20;6360:1;6353:31;6403:4;6400:1;6393:15;6427:4;6424:1;6417:15;6443:168;6516:9;;;6547;;6564:15;;;6558:22;;6544:37;6534:71;;6585:18;;:::i;6616:127::-;6677:10;6672:3;6668:20;6665:1;6658:31;6708:4;6705:1;6698:15;6732:4;6729:1;6722:15;6748:120;6788:1;6814;6804:35;;6819:18;;:::i;:::-;-1:-1:-1;6853:9:1;;6748:120::o;8098:148::-;8186:4;8165:12;;;8179;;;8161:31;;8204:13;;8201:39;;;8220:18;;:::i;8858:406::-;9060:2;9042:21;;;9099:2;9079:18;;;9072:30;9138:34;9133:2;9118:18;;9111:62;-1:-1:-1;;;9204:2:1;9189:18;;9182:40;9254:3;9239:19;;8858:406::o;12942:251::-;13012:6;13065:2;13053:9;13044:7;13040:23;13036:32;13033:52;;;13081:1;13078;13071:12;13033:52;13113:9;13107:16;13132:31;13157:5;13132:31;:::i;13198:127::-;13259:10;13254:3;13250:20;13247:1;13240:31;13290:4;13287:1;13280:15;13314:4;13311:1;13304:15;13330:461;13383:3;13421:5;13415:12;13448:6;13443:3;13436:19;13474:4;13503:2;13498:3;13494:12;13487:19;;13540:2;13533:5;13529:14;13561:1;13571:195;13585:6;13582:1;13579:13;13571:195;;;13650:13;;-1:-1:-1;;;;;13646:39:1;13634:52;;13706:12;;;;13741:15;;;;13682:1;13600:9;13571:195;;;-1:-1:-1;13782:3:1;;13330:461;-1:-1:-1;;;;;13330:461:1:o;13796:510::-;14067:6;14056:9;14049:25;14110:3;14105:2;14094:9;14090:18;14083:31;14030:4;14131:57;14183:3;14172:9;14168:19;14160:6;14131:57;:::i;:::-;-1:-1:-1;;;;;14224:32:1;;;;14219:2;14204:18;;14197:60;-1:-1:-1;14288:2:1;14273:18;14266:34;14123:65;13796:510;-1:-1:-1;;13796:510:1:o;14718:125::-;14783:9;;;14804:10;;;14801:36;;;14817:18;;:::i;16012:401::-;16214:2;16196:21;;;16253:2;16233:18;;;16226:30;16292:34;16287:2;16272:18;;16265:62;-1:-1:-1;;;16358:2:1;16343:18;;16336:35;16403:3;16388:19;;16012:401::o;16418:399::-;16620:2;16602:21;;;16659:2;16639:18;;;16632:30;16698:34;16693:2;16678:18;;16671:62;-1:-1:-1;;;16764:2:1;16749:18;;16742:33;16807:3;16792:19;;16418:399::o;19188:128::-;19255:9;;;19276:11;;;19273:37;;;19290:18;;:::i;20256:209::-;-1:-1:-1;;20420:38:1;;;;20402:57;;20390:2;20375:18;;20256:209::o;23293:165::-;23331:1;23365:4;23362:1;23358:12;23389:3;23379:37;;23396:18;;:::i;:::-;23448:3;23441:4;23438:1;23434:12;23430:22;23425:27;;;23293:165;;;;:::o;23463:151::-;23553:4;23546:12;;;23532;;;23528:31;;23571:14;;23568:40;;;23588:18;;:::i;23943:582::-;24242:6;24231:9;24224:25;24285:6;24280:2;24269:9;24265:18;24258:34;24328:3;24323:2;24312:9;24308:18;24301:31;24205:4;24349:57;24401:3;24390:9;24386:19;24378:6;24349:57;:::i;:::-;-1:-1:-1;;;;;24442:32:1;;;;24437:2;24422:18;;24415:60;-1:-1:-1;24506:3:1;24491:19;24484:35;24341:65;23943:582;-1:-1:-1;;;23943:582:1:o;25142:306::-;25230:6;25238;25246;25299:2;25287:9;25278:7;25274:23;25270:32;25267:52;;;25315:1;25312;25305:12;25267:52;25344:9;25338:16;25328:26;;25394:2;25383:9;25379:18;25373:25;25363:35;;25438:2;25427:9;25423:18;25417:25;25407:35;;25142:306;;;;;:::o

Swarm Source

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