ETH Price: $3,063.03 (+1.95%)
Gas: 5 Gwei

Token

Astro World (ASTRO)
 

Overview

Max Total Supply

1,000,000,000 ASTRO

Holders

224

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,899,999.85 ASTRO

Value
$0.00
0x71418e8b045030ac52cfb779ef7e53c5fb91dd9f
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:
AstroWorld

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

// twitter: https://twitter.com/astroworldeth
// web: https://astroworld.pro/
// telegram: https://t.me/astroworldeth

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

        return true;
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }
}

contract AstroWorld is ERC20, Ownable {
    mapping(address => bool) private _blocked;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 public _maxWallet;
    IUniswapV2Router public immutable uniswapV2Router;
    address public _devWallet = 0x3A11823CA0Ea917aFD4564c0F4FE46036467E473;
    address public _marketingWallet = 0x8D078EFBF1df54895d4c7b9B5184Ed9DE84d0613;

    uint256 public _feeLiquidity = 1000;
    uint256 public _feeMarketing = 5000;
    uint256 public _feeDevelopment = 1000;
    uint256 public feeSellTotal = _feeLiquidity + _feeMarketing + _feeDevelopment;
    uint256 public feeBuyTotal = 3500;


    uint256 public buyMinimum;
    uint256 public dynamicFee = 100;
    uint256 public dynamicSellFee;
    bool public dynamicFeeEnabled;

    address public immutable uniswapV2Pair;
    uint256 public _minTokensBeforeSwapping = 150;
    bool started;
    bool inSwapAndLiquify;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() ERC20("Astro World", "ASTRO") {
        uint256 startSupply = 1e9 * 10 ** decimals();
        _mint(msg.sender, (startSupply));

        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;

        _maxWallet = startSupply / 100;
        buyMinimum = startSupply / 1000;
        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    function openTrading() external onlyOwner {
        started = true;
    }

    function enableDynamicFee() external onlyOwner {
        dynamicFeeEnabled = true;
    }

    function disableDynamicFee() external onlyOwner {
        dynamicFeeEnabled = false;
    }

    function removeBlocked(address[] calldata accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _blocked[accounts[i]] = false;
        }
    }

    function addBlocked(address[] calldata accounts) external onlyOwner {
        uint256 len = accounts.length;
        for(uint256 i = 0; i < len;) {
            _blocked[accounts[i]] = true;
            unchecked {
                i++;
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!_blocked[from], "Sniper");
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            inSwapAndLiquify
        ) {
            super._transfer(from, to, amount);
        } else {
            require(started, "Trading has not started yet");
            uint taxAmount;
            if (to == uniswapV2Pair) {
                uint256 bal = balanceOf(address(this));
                uint256 threshold = balanceOf(uniswapV2Pair) * _minTokensBeforeSwapping / 10000;
                if (
                    bal >= threshold
                ) {
                    if (bal >= 2 * threshold) bal = 2 * threshold;
                    _swapAndLiquify(bal);
                }
                uint sellFeeApplied;
                if (dynamicSellFee >= feeSellTotal) {
                    sellFeeApplied = 0;
                } else {
                    sellFeeApplied = feeSellTotal - dynamicSellFee;
                }
                taxAmount = amount * sellFeeApplied / 10000;
            } else if (from == uniswapV2Pair) {
                if (dynamicFeeEnabled) {
                    if (amount >= buyMinimum && dynamicSellFee < feeSellTotal) {
                        dynamicSellFee += dynamicFee;
                    }
                }
                taxAmount = amount * feeBuyTotal / 10000;
                require(
                    balanceOf(to) + amount - taxAmount <= _maxWallet,
                    "Transfer amount exceeds max wallet"
                );
            } else {
                require(
                    balanceOf(to) + amount <= _maxWallet,
                    "Transfer amount exceeds max wallet"
                );
            }
            super._transfer(from, to, amount - taxAmount);
            if (taxAmount > 0) {
                super._transfer(from, address(this), taxAmount);
            }
        }
    }

    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 _feeSellTotal = feeSellTotal;
        if (_feeSellTotal == 0) return;
        uint256 feeTotal = _feeSellTotal - _feeLiquidity / 2;
        uint256 toSell = contractTokenBalance * feeTotal / _feeSellTotal;

        _swapTokensForEth(toSell);
        uint256 balance = address(this).balance;

        uint256 toDev = balance * _feeDevelopment / feeTotal;
        uint256 toMarketing = balance * _feeMarketing / feeTotal;
        
        if (_feeLiquidity > 0) {
            _addLiquidity(
                contractTokenBalance - toSell,
                balance - toDev - toMarketing
            );
        }
        if (toMarketing > 0) {
            payable(_marketingWallet).transfer(toMarketing);
        }

        if (address(this).balance > 0) {
            payable(_devWallet).transfer(address(this).balance);
        }
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp)
        );
    }

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

    function setDevWallet(address newWallet) external onlyOwner {
        _devWallet = newWallet;
    }

    function setMarketingWallet(address newWallet) external onlyOwner {
        _marketingWallet = newWallet;
    }

    function setSwapbackSettings(uint256 newValue) external onlyOwner {
        _minTokensBeforeSwapping = newValue;
    }

    function excludeFromFees(address[] calldata addresses)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }

    function includeInFees(address[] calldata addresses)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = false;
        }
    }

    function updateBuyFees(uint256 newValue) external onlyOwner {
        feeBuyTotal = newValue;
    }

    function updateSellFees(
        uint256 __feeDevelopment,
        uint256 __feeLiquidity,
        uint256 __feeMarketing
    ) external onlyOwner {
        _feeDevelopment = __feeDevelopment;
        _feeLiquidity = __feeLiquidity;
        _feeMarketing = __feeMarketing;
        feeSellTotal = __feeDevelopment + __feeLiquidity + __feeMarketing;
    }

    function setMaxWallet(uint256 __maxWallet) external onlyOwner {
        _maxWallet = __maxWallet;
    }

    function getStuckETH() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function getStuckTokens(
        IERC20 tokenAddress,
        address walletAddress,
        uint256 amt
    ) external onlyOwner {
        uint256 bal = tokenAddress.balanceOf(address(this));
        IERC20(tokenAddress).transfer(
            walletAddress,
            amt > bal ? bal : amt
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTokensBeforeSwapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addBlocked","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableDynamicFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dynamicFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableDynamicFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeBuyTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSellTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletAddress","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"getStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBlocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapbackSettings","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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 IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__feeDevelopment","type":"uint256"},{"internalType":"uint256","name":"__feeLiquidity","type":"uint256"},{"internalType":"uint256","name":"__feeMarketing","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052733a11823ca0ea917afd4564c0f4fe46036467e47360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738d078efbf1df54895d4c7b9b5184ed9de84d0613600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600b55611388600c556103e8600d55600d54600c54600b54620000d391906200092d565b620000df91906200092d565b600e55610dac600f5560646011556096601455348015620000fe575f80fd5b506040518060400160405280600b81526020017f417374726f20576f726c640000000000000000000000000000000000000000008152506040518060400160405280600581526020017f415354524f00000000000000000000000000000000000000000000000000000081525081600390816200017c919062000bc2565b5080600490816200018e919062000bc2565b505050620001b1620001a56200051b60201b60201c565b6200052260201b60201c565b5f620001c2620005e560201b60201c565b600a620001d0919062000e02565b633b9aca00620001e1919062000e52565b9050620001f53382620005ed60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000257573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027d919062000f01565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000309919062000f01565b6040518363ffffffff1660e01b81526004016200032892919062000f42565b6020604051808303815f875af115801562000345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036b919062000f01565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160075f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506064826200048d919062000f9a565b6008819055506103e882620004a3919062000f9a565b601081905550620004de336080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200072c60201b60201c565b62000513306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200072c60201b60201c565b5050620011a3565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000655906200102f565b60405180910390fd5b8060025f8282546200067191906200092d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000720919062001060565b60405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079490620010ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200080e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008059062001183565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008ea919062001060565b60405180910390a3505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200093982620008f7565b91506200094683620008f7565b925082820190508082111562000961576200096062000900565b5b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009e357607f821691505b602082108103620009f957620009f86200099e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a20565b62000a69868362000a20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000aaa62000aa462000a9e84620008f7565b62000a81565b620008f7565b9050919050565b5f819050919050565b62000ac58362000a8a565b62000add62000ad48262000ab1565b84845462000a2c565b825550505050565b5f90565b62000af362000ae5565b62000b0081848462000aba565b505050565b5b8181101562000b275762000b1b5f8262000ae9565b60018101905062000b06565b5050565b601f82111562000b765762000b4081620009ff565b62000b4b8462000a11565b8101602085101562000b5b578190505b62000b7362000b6a8562000a11565b83018262000b05565b50505b505050565b5f82821c905092915050565b5f62000b985f198460080262000b7b565b1980831691505092915050565b5f62000bb2838362000b87565b9150826002028217905092915050565b62000bcd8262000967565b67ffffffffffffffff81111562000be95762000be862000971565b5b62000bf58254620009cb565b62000c0282828562000b2b565b5f60209050601f83116001811462000c38575f841562000c23578287015190505b62000c2f858262000ba5565b86555062000c9e565b601f19841662000c4886620009ff565b5f5b8281101562000c715784890151825560018201915060208501945060208101905062000c4a565b8683101562000c91578489015162000c8d601f89168262000b87565b8355505b6001600288020188555050505b505050505050565b5f8160011c9050919050565b5f808291508390505b600185111562000d035780860481111562000cdb5762000cda62000900565b5b600185161562000ceb5780820291505b808102905062000cfb8562000ca6565b945062000cbb565b94509492505050565b5f8262000d1d576001905062000def565b8162000d2c575f905062000def565b816001811462000d45576002811462000d505762000d86565b600191505062000def565b60ff84111562000d655762000d6462000900565b5b8360020a91508482111562000d7f5762000d7e62000900565b5b5062000def565b5060208310610133831016604e8410600b841016171562000dc05782820a90508381111562000dba5762000db962000900565b5b62000def565b62000dcf848484600162000cb2565b9250905081840481111562000de95762000de862000900565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000e0e82620008f7565b915062000e1b8362000df6565b925062000e4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d0c565b905092915050565b5f62000e5e82620008f7565b915062000e6b83620008f7565b925082820262000e7b81620008f7565b9150828204841483151762000e955762000e9462000900565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ecb8262000ea0565b9050919050565b62000edd8162000ebf565b811462000ee8575f80fd5b50565b5f8151905062000efb8162000ed2565b92915050565b5f6020828403121562000f195762000f1862000e9c565b5b5f62000f288482850162000eeb565b91505092915050565b62000f3c8162000ebf565b82525050565b5f60408201905062000f575f83018562000f31565b62000f66602083018462000f31565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000fa682620008f7565b915062000fb383620008f7565b92508262000fc65762000fc562000f6d565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001017601f8362000fd1565b9150620010248262000fe1565b602082019050919050565b5f6020820190508181035f830152620010488162001009565b9050919050565b6200105a81620008f7565b82525050565b5f602082019050620010755f8301846200104f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f620010d760248362000fd1565b9150620010e4826200107b565b604082019050919050565b5f6020820190508181035f8301526200110881620010c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200116b60228362000fd1565b915062001178826200110f565b604082019050919050565b5f6020820190508181035f8301526200119c816200115d565b9050919050565b60805160a0516133b3620011ef5f395f8181610c430152818161184e015281816118b7015261197101525f8181610ab1015281816120cd015281816121a8015261226f01526133b35ff3fe60806040526004361061026a575f3560e01c806371fc468811610143578063b20d550b116100b5578063d70b637311610079578063d70b6373146108b7578063dd62ed3e146108cd578063ebda0c0514610909578063f2fde38b14610933578063f7aca38f1461095b578063fe85ee431461098557610271565b8063b20d550b146107fd578063c17b5b8c14610827578063c9567bf91461084f578063cbcc97a514610865578063d089ca501461088f57610271565b806392f428701161010757806392f42870146106e157806395d89b4114610709578063962dfc75146107335780639f7ac8a81461075d578063a457c2d714610785578063a9059cbb146107c157610271565b806371fc4688146106135780637af115221461063b57806382247ec0146106655780638da5cb5b1461068f578063923ffc14146106b957610271565b8063324ceb98116101dc5780635d0044ca116101a05780635d0044ca146105315780635d098b381461055957806360620804146105815780636b996150146105ab57806370a08231146105c1578063715018a6146105fd57610271565b8063324ceb9814610451578063395093511461047957806349bd5a5e146104b55780634e751b84146104df5780635b28b2461461050957610271565b80631694505e1161022e5780631694505e1461034557806318160ddd1461036f5780631f53ac021461039957806323b872dd146103c1578063295659fc146103fd578063313ce5671461042757610271565b8063017c348c1461027557806306fdde031461029f578063095ea7b3146102c95780631172e2d81461030557806311a63e171461031b57610271565b3661027157005b5f80fd5b348015610280575f80fd5b506102896109af565b6040516102969190612352565b60405180910390f35b3480156102aa575f80fd5b506102b36109b5565b6040516102c091906123f5565b60405180910390f35b3480156102d4575f80fd5b506102ef60048036038101906102ea91906124a1565b610a45565b6040516102fc91906124f9565b60405180910390f35b348015610310575f80fd5b50610319610a67565b005b348015610326575f80fd5b5061032f610a8a565b60405161033c9190612521565b60405180910390f35b348015610350575f80fd5b50610359610aaf565b6040516103669190612595565b60405180910390f35b34801561037a575f80fd5b50610383610ad3565b6040516103909190612352565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906125ae565b610adc565b005b3480156103cc575f80fd5b506103e760048036038101906103e291906125d9565b610b27565b6040516103f491906124f9565b60405180910390f35b348015610408575f80fd5b50610411610b55565b60405161041e9190612352565b60405180910390f35b348015610432575f80fd5b5061043b610b5b565b6040516104489190612644565b60405180910390f35b34801561045c575f80fd5b50610477600480360381019061047291906126be565b610b63565b005b348015610484575f80fd5b5061049f600480360381019061049a91906124a1565b610c0b565b6040516104ac91906124f9565b60405180910390f35b3480156104c0575f80fd5b506104c9610c41565b6040516104d69190612521565b60405180910390f35b3480156104ea575f80fd5b506104f3610c65565b6040516105009190612352565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190612744565b610c6b565b005b34801561053c575f80fd5b5061055760048036038101906105529190612794565b610d7e565b005b348015610564575f80fd5b5061057f600480360381019061057a91906125ae565b610d90565b005b34801561058c575f80fd5b50610595610ddb565b6040516105a29190612352565b60405180910390f35b3480156105b6575f80fd5b506105bf610de1565b005b3480156105cc575f80fd5b506105e760048036038101906105e291906125ae565b610e2f565b6040516105f49190612352565b60405180910390f35b348015610608575f80fd5b50610611610e74565b005b34801561061e575f80fd5b5061063960048036038101906106349190612794565b610e87565b005b348015610646575f80fd5b5061064f610e99565b60405161065c9190612352565b60405180910390f35b348015610670575f80fd5b50610679610e9f565b6040516106869190612352565b60405180910390f35b34801561069a575f80fd5b506106a3610ea5565b6040516106b09190612521565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da91906126be565b610ecd565b005b3480156106ec575f80fd5b50610707600480360381019061070291906126be565b610f75565b005b348015610714575f80fd5b5061071d61101e565b60405161072a91906123f5565b60405180910390f35b34801561073e575f80fd5b506107476110ae565b6040516107549190612521565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190612794565b6110d3565b005b348015610790575f80fd5b506107ab60048036038101906107a691906124a1565b6110e5565b6040516107b891906124f9565b60405180910390f35b3480156107cc575f80fd5b506107e760048036038101906107e291906124a1565b61115a565b6040516107f491906124f9565b60405180910390f35b348015610808575f80fd5b5061081161117c565b60405161081e9190612352565b60405180910390f35b348015610832575f80fd5b5061084d600480360381019061084891906127bf565b611182565b005b34801561085a575f80fd5b506108636111c1565b005b348015610870575f80fd5b506108796111e5565b6040516108869190612352565b60405180910390f35b34801561089a575f80fd5b506108b560048036038101906108b091906126be565b6111eb565b005b3480156108c2575f80fd5b506108cb611293565b005b3480156108d8575f80fd5b506108f360048036038101906108ee919061280f565b6112b7565b6040516109009190612352565b60405180910390f35b348015610914575f80fd5b5061091d611339565b60405161092a91906124f9565b60405180910390f35b34801561093e575f80fd5b50610959600480360381019061095491906125ae565b61134b565b005b348015610966575f80fd5b5061096f6113cd565b60405161097c9190612352565b60405180910390f35b348015610990575f80fd5b506109996113d3565b6040516109a69190612352565b60405180910390f35b60125481565b6060600380546109c49061287a565b80601f01602080910402602001604051908101604052809291908181526020018280546109f09061287a565b8015610a3b5780601f10610a1257610100808354040283529160200191610a3b565b820191905f5260205f20905b815481529060010190602001808311610a1e57829003601f168201915b5050505050905090565b5f80610a4f6113d9565b9050610a5c8185856113e0565b600191505092915050565b610a6f6115a3565b5f60135f6101000a81548160ff021916908315150217905550565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610ae46115a3565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610b316113d9565b9050610b3e858285611621565b610b498585856116ac565b60019150509392505050565b600d5481565b5f6012905090565b610b6b6115a3565b5f5b82829050811015610c06575f60065f858585818110610b8f57610b8e6128aa565b5b9050602002016020810190610ba491906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bfe90612904565b915050610b6d565b505050565b5f80610c156113d9565b9050610c36818585610c2785896112b7565b610c31919061294b565b6113e0565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60105481565b610c736115a3565b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cad9190612521565b602060405180830381865afa158015610cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cec9190612992565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84838511610d185784610d1a565b835b6040518363ffffffff1660e01b8152600401610d379291906129bd565b6020604051808303815f875af1158015610d53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d779190612a0e565b5050505050565b610d866115a3565b8060088190555050565b610d986115a3565b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b610de96115a3565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610e2c573d5f803e3d5ffd5b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e7c6115a3565b610e855f611b1c565b565b610e8f6115a3565b80600f8190555050565b600b5481565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ed56115a3565b5f5b82829050811015610f70575f60075f858585818110610ef957610ef86128aa565b5b9050602002016020810190610f0e91906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f6890612904565b915050610ed7565b505050565b610f7d6115a3565b5f5b8282905081101561101957600160075f858585818110610fa257610fa16128aa565b5b9050602002016020810190610fb791906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061101190612904565b915050610f7f565b505050565b60606004805461102d9061287a565b80601f01602080910402602001604051908101604052809291908181526020018280546110599061287a565b80156110a45780601f1061107b576101008083540402835291602001916110a4565b820191905f5260205f20905b81548152906001019060200180831161108757829003601f168201915b5050505050905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110db6115a3565b8060148190555050565b5f806110ef6113d9565b90505f6110fc82866112b7565b905083811015611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890612aa9565b60405180910390fd5b61114e82868684036113e0565b60019250505092915050565b5f806111646113d9565b90506111718185856116ac565b600191505092915050565b60115481565b61118a6115a3565b82600d8190555081600b8190555080600c819055508082846111ac919061294b565b6111b6919061294b565b600e81905550505050565b6111c96115a3565b600160155f6101000a81548160ff021916908315150217905550565b600e5481565b6111f36115a3565b5f8282905090505f5b8181101561128d57600160065f86868581811061121c5761121b6128aa565b5b905060200201602081019061123191906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111fc565b50505050565b61129b6115a3565b600160135f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135f9054906101000a900460ff1681565b6113536115a3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890612b37565b60405180910390fd5b6113ca81611b1c565b50565b600c5481565b600f5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590612bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612c53565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115969190612352565b60405180910390a3505050565b6115ab6113d9565b73ffffffffffffffffffffffffffffffffffffffff166115c9610ea5565b73ffffffffffffffffffffffffffffffffffffffff161461161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690612cbb565b60405180910390fd5b565b5f61162c84846112b7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116a65781811015611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90612d23565b60405180910390fd5b6116a584848484036113e0565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d90612d8b565b60405180910390fd5b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117d1575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117e85750601560019054906101000a900460ff165b156117fd576117f8838383611bdf565b611b17565b60155f9054906101000a900460ff1661184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290612df3565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361196f575f6118a930610e2f565b90505f6127106014546118db7f0000000000000000000000000000000000000000000000000000000000000000610e2f565b6118e59190612e11565b6118ef9190612e7f565b9050808210611925578060026119059190612e11565b821061191b578060026119189190612e11565b91505b61192482611e35565b5b5f600e5460125410611939575f905061194c565b601254600e546119499190612eaf565b90505b612710818661195b9190612e11565b6119659190612e7f565b9350505050611aeb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a915760135f9054906101000a900460ff1615611a0c5760105482101580156119eb5750600e54601254105b15611a0b5760115460125f828254611a03919061294b565b925050819055505b5b612710600f5483611a1d9190612e11565b611a279190612e7f565b90506008548183611a3786610e2f565b611a41919061294b565b611a4b9190612eaf565b1115611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390612f52565b60405180910390fd5b611aea565b60085482611a9e85610e2f565b611aa8919061294b565b1115611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090612f52565b60405180910390fd5b5b5b611b0184848385611afc9190612eaf565b611bdf565b5f811115611b1557611b14843083611bdf565b5b505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4490612fe0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061306e565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d35906130fc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e279190612352565b60405180910390a350505050565b6001601560016101000a81548160ff0219169083151502179055505f600e5490505f8103611e635750611ff8565b5f6002600b54611e739190612e7f565b82611e7e9190612eaf565b90505f828285611e8e9190612e11565b611e989190612e7f565b9050611ea381612015565b5f4790505f83600d5483611eb79190612e11565b611ec19190612e7f565b90505f84600c5484611ed39190612e11565b611edd9190612e7f565b90505f600b541115611f1557611f148488611ef89190612eaf565b828486611f059190612eaf565b611f0f9190612eaf565b612252565b5b5f811115611f8357600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f81573d5f803e3d5ffd5b505b5f471115611ff15760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611fef573d5f803e3d5ffd5b505b5050505050505b5f601560016101000a81548160ff02191690831515021790555050565b6001601560016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561204c5761204b61311a565b5b60405190808252806020026020018201604052801561207a5781602001602082028036833780820191505090505b50905030815f81518110612091576120906128aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612134573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612158919061315b565b8160018151811061216c5761216b6128aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612207959493929190613276565b5f604051808303815f87803b15801561221e575f80fd5b505af1158015612230573d5f803e3d5ffd5b50505050505f601560016101000a81548160ff02191690831515021790555050565b6001601560016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806122b6610ea5565b426040518863ffffffff1660e01b81526004016122d8969594939291906132ce565b60606040518083038185885af11580156122f4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612319919061332d565b5050505f601560016101000a81548160ff0219169083151502179055505050565b5f819050919050565b61234c8161233a565b82525050565b5f6020820190506123655f830184612343565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123a2578082015181840152602081019050612387565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123c78261236b565b6123d18185612375565b93506123e1818560208601612385565b6123ea816123ad565b840191505092915050565b5f6020820190508181035f83015261240d81846123bd565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124468261241d565b9050919050565b6124568161243c565b8114612460575f80fd5b50565b5f813590506124718161244d565b92915050565b6124808161233a565b811461248a575f80fd5b50565b5f8135905061249b81612477565b92915050565b5f80604083850312156124b7576124b6612415565b5b5f6124c485828601612463565b92505060206124d58582860161248d565b9150509250929050565b5f8115159050919050565b6124f3816124df565b82525050565b5f60208201905061250c5f8301846124ea565b92915050565b61251b8161243c565b82525050565b5f6020820190506125345f830184612512565b92915050565b5f819050919050565b5f61255d6125586125538461241d565b61253a565b61241d565b9050919050565b5f61256e82612543565b9050919050565b5f61257f82612564565b9050919050565b61258f81612575565b82525050565b5f6020820190506125a85f830184612586565b92915050565b5f602082840312156125c3576125c2612415565b5b5f6125d084828501612463565b91505092915050565b5f805f606084860312156125f0576125ef612415565b5b5f6125fd86828701612463565b935050602061260e86828701612463565b925050604061261f8682870161248d565b9150509250925092565b5f60ff82169050919050565b61263e81612629565b82525050565b5f6020820190506126575f830184612635565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261267e5761267d61265d565b5b8235905067ffffffffffffffff81111561269b5761269a612661565b5b6020830191508360208202830111156126b7576126b6612665565b5b9250929050565b5f80602083850312156126d4576126d3612415565b5b5f83013567ffffffffffffffff8111156126f1576126f0612419565b5b6126fd85828601612669565b92509250509250929050565b5f6127138261243c565b9050919050565b61272381612709565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f805f6060848603121561275b5761275a612415565b5b5f61276886828701612730565b935050602061277986828701612463565b925050604061278a8682870161248d565b9150509250925092565b5f602082840312156127a9576127a8612415565b5b5f6127b68482850161248d565b91505092915050565b5f805f606084860312156127d6576127d5612415565b5b5f6127e38682870161248d565b93505060206127f48682870161248d565b92505060406128058682870161248d565b9150509250925092565b5f806040838503121561282557612824612415565b5b5f61283285828601612463565b925050602061284385828601612463565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061289157607f821691505b6020821081036128a4576128a361284d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61290e8261233a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129405761293f6128d7565b5b600182019050919050565b5f6129558261233a565b91506129608361233a565b9250828201905080821115612978576129776128d7565b5b92915050565b5f8151905061298c81612477565b92915050565b5f602082840312156129a7576129a6612415565b5b5f6129b48482850161297e565b91505092915050565b5f6040820190506129d05f830185612512565b6129dd6020830184612343565b9392505050565b6129ed816124df565b81146129f7575f80fd5b50565b5f81519050612a08816129e4565b92915050565b5f60208284031215612a2357612a22612415565b5b5f612a30848285016129fa565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612a93602583612375565b9150612a9e82612a39565b604082019050919050565b5f6020820190508181035f830152612ac081612a87565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b21602683612375565b9150612b2c82612ac7565b604082019050919050565b5f6020820190508181035f830152612b4e81612b15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612baf602483612375565b9150612bba82612b55565b604082019050919050565b5f6020820190508181035f830152612bdc81612ba3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c3d602283612375565b9150612c4882612be3565b604082019050919050565b5f6020820190508181035f830152612c6a81612c31565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ca5602083612375565b9150612cb082612c71565b602082019050919050565b5f6020820190508181035f830152612cd281612c99565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612d0d601d83612375565b9150612d1882612cd9565b602082019050919050565b5f6020820190508181035f830152612d3a81612d01565b9050919050565b7f536e6970657200000000000000000000000000000000000000000000000000005f82015250565b5f612d75600683612375565b9150612d8082612d41565b602082019050919050565b5f6020820190508181035f830152612da281612d69565b9050919050565b7f54726164696e6720686173206e6f7420737461727465642079657400000000005f82015250565b5f612ddd601b83612375565b9150612de882612da9565b602082019050919050565b5f6020820190508181035f830152612e0a81612dd1565b9050919050565b5f612e1b8261233a565b9150612e268361233a565b9250828202612e348161233a565b91508282048414831517612e4b57612e4a6128d7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e898261233a565b9150612e948361233a565b925082612ea457612ea3612e52565b5b828204905092915050565b5f612eb98261233a565b9150612ec48361233a565b9250828203905081811115612edc57612edb6128d7565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473206d61782077616c6c5f8201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f3c602283612375565b9150612f4782612ee2565b604082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fca602583612375565b9150612fd582612f70565b604082019050919050565b5f6020820190508181035f830152612ff781612fbe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613058602383612375565b915061306382612ffe565b604082019050919050565b5f6020820190508181035f8301526130858161304c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6130e6602683612375565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506131558161244d565b92915050565b5f602082840312156131705761316f612415565b5b5f61317d84828501613147565b91505092915050565b5f819050919050565b5f6131a96131a461319f84613186565b61253a565b61233a565b9050919050565b6131b98161318f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131f18161243c565b82525050565b5f61320283836131e8565b60208301905092915050565b5f602082019050919050565b5f613224826131bf565b61322e81856131c9565b9350613239836131d9565b805f5b8381101561326957815161325088826131f7565b975061325b8361320e565b92505060018101905061323c565b5085935050505092915050565b5f60a0820190506132895f830188612343565b61329660208301876131b0565b81810360408301526132a8818661321a565b90506132b76060830185612512565b6132c46080830184612343565b9695505050505050565b5f60c0820190506132e15f830189612512565b6132ee6020830188612343565b6132fb60408301876131b0565b61330860608301866131b0565b6133156080830185612512565b61332260a0830184612343565b979650505050505050565b5f805f6060848603121561334457613343612415565b5b5f6133518682870161297e565b93505060206133628682870161297e565b92505060406133738682870161297e565b915050925092509256fea2646970667358221220554bacc5d2fbcd76459f2da311adcdebdb015955d847d8924fcca6a0f6b2029464736f6c63430008140033

Deployed Bytecode

0x60806040526004361061026a575f3560e01c806371fc468811610143578063b20d550b116100b5578063d70b637311610079578063d70b6373146108b7578063dd62ed3e146108cd578063ebda0c0514610909578063f2fde38b14610933578063f7aca38f1461095b578063fe85ee431461098557610271565b8063b20d550b146107fd578063c17b5b8c14610827578063c9567bf91461084f578063cbcc97a514610865578063d089ca501461088f57610271565b806392f428701161010757806392f42870146106e157806395d89b4114610709578063962dfc75146107335780639f7ac8a81461075d578063a457c2d714610785578063a9059cbb146107c157610271565b806371fc4688146106135780637af115221461063b57806382247ec0146106655780638da5cb5b1461068f578063923ffc14146106b957610271565b8063324ceb98116101dc5780635d0044ca116101a05780635d0044ca146105315780635d098b381461055957806360620804146105815780636b996150146105ab57806370a08231146105c1578063715018a6146105fd57610271565b8063324ceb9814610451578063395093511461047957806349bd5a5e146104b55780634e751b84146104df5780635b28b2461461050957610271565b80631694505e1161022e5780631694505e1461034557806318160ddd1461036f5780631f53ac021461039957806323b872dd146103c1578063295659fc146103fd578063313ce5671461042757610271565b8063017c348c1461027557806306fdde031461029f578063095ea7b3146102c95780631172e2d81461030557806311a63e171461031b57610271565b3661027157005b5f80fd5b348015610280575f80fd5b506102896109af565b6040516102969190612352565b60405180910390f35b3480156102aa575f80fd5b506102b36109b5565b6040516102c091906123f5565b60405180910390f35b3480156102d4575f80fd5b506102ef60048036038101906102ea91906124a1565b610a45565b6040516102fc91906124f9565b60405180910390f35b348015610310575f80fd5b50610319610a67565b005b348015610326575f80fd5b5061032f610a8a565b60405161033c9190612521565b60405180910390f35b348015610350575f80fd5b50610359610aaf565b6040516103669190612595565b60405180910390f35b34801561037a575f80fd5b50610383610ad3565b6040516103909190612352565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906125ae565b610adc565b005b3480156103cc575f80fd5b506103e760048036038101906103e291906125d9565b610b27565b6040516103f491906124f9565b60405180910390f35b348015610408575f80fd5b50610411610b55565b60405161041e9190612352565b60405180910390f35b348015610432575f80fd5b5061043b610b5b565b6040516104489190612644565b60405180910390f35b34801561045c575f80fd5b50610477600480360381019061047291906126be565b610b63565b005b348015610484575f80fd5b5061049f600480360381019061049a91906124a1565b610c0b565b6040516104ac91906124f9565b60405180910390f35b3480156104c0575f80fd5b506104c9610c41565b6040516104d69190612521565b60405180910390f35b3480156104ea575f80fd5b506104f3610c65565b6040516105009190612352565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190612744565b610c6b565b005b34801561053c575f80fd5b5061055760048036038101906105529190612794565b610d7e565b005b348015610564575f80fd5b5061057f600480360381019061057a91906125ae565b610d90565b005b34801561058c575f80fd5b50610595610ddb565b6040516105a29190612352565b60405180910390f35b3480156105b6575f80fd5b506105bf610de1565b005b3480156105cc575f80fd5b506105e760048036038101906105e291906125ae565b610e2f565b6040516105f49190612352565b60405180910390f35b348015610608575f80fd5b50610611610e74565b005b34801561061e575f80fd5b5061063960048036038101906106349190612794565b610e87565b005b348015610646575f80fd5b5061064f610e99565b60405161065c9190612352565b60405180910390f35b348015610670575f80fd5b50610679610e9f565b6040516106869190612352565b60405180910390f35b34801561069a575f80fd5b506106a3610ea5565b6040516106b09190612521565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da91906126be565b610ecd565b005b3480156106ec575f80fd5b50610707600480360381019061070291906126be565b610f75565b005b348015610714575f80fd5b5061071d61101e565b60405161072a91906123f5565b60405180910390f35b34801561073e575f80fd5b506107476110ae565b6040516107549190612521565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190612794565b6110d3565b005b348015610790575f80fd5b506107ab60048036038101906107a691906124a1565b6110e5565b6040516107b891906124f9565b60405180910390f35b3480156107cc575f80fd5b506107e760048036038101906107e291906124a1565b61115a565b6040516107f491906124f9565b60405180910390f35b348015610808575f80fd5b5061081161117c565b60405161081e9190612352565b60405180910390f35b348015610832575f80fd5b5061084d600480360381019061084891906127bf565b611182565b005b34801561085a575f80fd5b506108636111c1565b005b348015610870575f80fd5b506108796111e5565b6040516108869190612352565b60405180910390f35b34801561089a575f80fd5b506108b560048036038101906108b091906126be565b6111eb565b005b3480156108c2575f80fd5b506108cb611293565b005b3480156108d8575f80fd5b506108f360048036038101906108ee919061280f565b6112b7565b6040516109009190612352565b60405180910390f35b348015610914575f80fd5b5061091d611339565b60405161092a91906124f9565b60405180910390f35b34801561093e575f80fd5b50610959600480360381019061095491906125ae565b61134b565b005b348015610966575f80fd5b5061096f6113cd565b60405161097c9190612352565b60405180910390f35b348015610990575f80fd5b506109996113d3565b6040516109a69190612352565b60405180910390f35b60125481565b6060600380546109c49061287a565b80601f01602080910402602001604051908101604052809291908181526020018280546109f09061287a565b8015610a3b5780601f10610a1257610100808354040283529160200191610a3b565b820191905f5260205f20905b815481529060010190602001808311610a1e57829003601f168201915b5050505050905090565b5f80610a4f6113d9565b9050610a5c8185856113e0565b600191505092915050565b610a6f6115a3565b5f60135f6101000a81548160ff021916908315150217905550565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610ae46115a3565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610b316113d9565b9050610b3e858285611621565b610b498585856116ac565b60019150509392505050565b600d5481565b5f6012905090565b610b6b6115a3565b5f5b82829050811015610c06575f60065f858585818110610b8f57610b8e6128aa565b5b9050602002016020810190610ba491906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bfe90612904565b915050610b6d565b505050565b5f80610c156113d9565b9050610c36818585610c2785896112b7565b610c31919061294b565b6113e0565b600191505092915050565b7f000000000000000000000000871f5e079eec59da8687d6dcaeae2b1fe459d22181565b60105481565b610c736115a3565b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cad9190612521565b602060405180830381865afa158015610cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cec9190612992565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84838511610d185784610d1a565b835b6040518363ffffffff1660e01b8152600401610d379291906129bd565b6020604051808303815f875af1158015610d53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d779190612a0e565b5050505050565b610d866115a3565b8060088190555050565b610d986115a3565b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b610de96115a3565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610e2c573d5f803e3d5ffd5b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e7c6115a3565b610e855f611b1c565b565b610e8f6115a3565b80600f8190555050565b600b5481565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ed56115a3565b5f5b82829050811015610f70575f60075f858585818110610ef957610ef86128aa565b5b9050602002016020810190610f0e91906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f6890612904565b915050610ed7565b505050565b610f7d6115a3565b5f5b8282905081101561101957600160075f858585818110610fa257610fa16128aa565b5b9050602002016020810190610fb791906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061101190612904565b915050610f7f565b505050565b60606004805461102d9061287a565b80601f01602080910402602001604051908101604052809291908181526020018280546110599061287a565b80156110a45780601f1061107b576101008083540402835291602001916110a4565b820191905f5260205f20905b81548152906001019060200180831161108757829003601f168201915b5050505050905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110db6115a3565b8060148190555050565b5f806110ef6113d9565b90505f6110fc82866112b7565b905083811015611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890612aa9565b60405180910390fd5b61114e82868684036113e0565b60019250505092915050565b5f806111646113d9565b90506111718185856116ac565b600191505092915050565b60115481565b61118a6115a3565b82600d8190555081600b8190555080600c819055508082846111ac919061294b565b6111b6919061294b565b600e81905550505050565b6111c96115a3565b600160155f6101000a81548160ff021916908315150217905550565b600e5481565b6111f36115a3565b5f8282905090505f5b8181101561128d57600160065f86868581811061121c5761121b6128aa565b5b905060200201602081019061123191906125ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111fc565b50505050565b61129b6115a3565b600160135f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135f9054906101000a900460ff1681565b6113536115a3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890612b37565b60405180910390fd5b6113ca81611b1c565b50565b600c5481565b600f5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590612bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612c53565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115969190612352565b60405180910390a3505050565b6115ab6113d9565b73ffffffffffffffffffffffffffffffffffffffff166115c9610ea5565b73ffffffffffffffffffffffffffffffffffffffff161461161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690612cbb565b60405180910390fd5b565b5f61162c84846112b7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116a65781811015611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90612d23565b60405180910390fd5b6116a584848484036113e0565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d90612d8b565b60405180910390fd5b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117d1575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117e85750601560019054906101000a900460ff165b156117fd576117f8838383611bdf565b611b17565b60155f9054906101000a900460ff1661184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290612df3565b60405180910390fd5b5f7f000000000000000000000000871f5e079eec59da8687d6dcaeae2b1fe459d22173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361196f575f6118a930610e2f565b90505f6127106014546118db7f000000000000000000000000871f5e079eec59da8687d6dcaeae2b1fe459d221610e2f565b6118e59190612e11565b6118ef9190612e7f565b9050808210611925578060026119059190612e11565b821061191b578060026119189190612e11565b91505b61192482611e35565b5b5f600e5460125410611939575f905061194c565b601254600e546119499190612eaf565b90505b612710818661195b9190612e11565b6119659190612e7f565b9350505050611aeb565b7f000000000000000000000000871f5e079eec59da8687d6dcaeae2b1fe459d22173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a915760135f9054906101000a900460ff1615611a0c5760105482101580156119eb5750600e54601254105b15611a0b5760115460125f828254611a03919061294b565b925050819055505b5b612710600f5483611a1d9190612e11565b611a279190612e7f565b90506008548183611a3786610e2f565b611a41919061294b565b611a4b9190612eaf565b1115611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390612f52565b60405180910390fd5b611aea565b60085482611a9e85610e2f565b611aa8919061294b565b1115611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090612f52565b60405180910390fd5b5b5b611b0184848385611afc9190612eaf565b611bdf565b5f811115611b1557611b14843083611bdf565b5b505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4490612fe0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061306e565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d35906130fc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e279190612352565b60405180910390a350505050565b6001601560016101000a81548160ff0219169083151502179055505f600e5490505f8103611e635750611ff8565b5f6002600b54611e739190612e7f565b82611e7e9190612eaf565b90505f828285611e8e9190612e11565b611e989190612e7f565b9050611ea381612015565b5f4790505f83600d5483611eb79190612e11565b611ec19190612e7f565b90505f84600c5484611ed39190612e11565b611edd9190612e7f565b90505f600b541115611f1557611f148488611ef89190612eaf565b828486611f059190612eaf565b611f0f9190612eaf565b612252565b5b5f811115611f8357600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f81573d5f803e3d5ffd5b505b5f471115611ff15760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611fef573d5f803e3d5ffd5b505b5050505050505b5f601560016101000a81548160ff02191690831515021790555050565b6001601560016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561204c5761204b61311a565b5b60405190808252806020026020018201604052801561207a5781602001602082028036833780820191505090505b50905030815f81518110612091576120906128aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612134573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612158919061315b565b8160018151811061216c5761216b6128aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612207959493929190613276565b5f604051808303815f87803b15801561221e575f80fd5b505af1158015612230573d5f803e3d5ffd5b50505050505f601560016101000a81548160ff02191690831515021790555050565b6001601560016101000a81548160ff0219169083151502179055507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806122b6610ea5565b426040518863ffffffff1660e01b81526004016122d8969594939291906132ce565b60606040518083038185885af11580156122f4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612319919061332d565b5050505f601560016101000a81548160ff0219169083151502179055505050565b5f819050919050565b61234c8161233a565b82525050565b5f6020820190506123655f830184612343565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123a2578082015181840152602081019050612387565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123c78261236b565b6123d18185612375565b93506123e1818560208601612385565b6123ea816123ad565b840191505092915050565b5f6020820190508181035f83015261240d81846123bd565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124468261241d565b9050919050565b6124568161243c565b8114612460575f80fd5b50565b5f813590506124718161244d565b92915050565b6124808161233a565b811461248a575f80fd5b50565b5f8135905061249b81612477565b92915050565b5f80604083850312156124b7576124b6612415565b5b5f6124c485828601612463565b92505060206124d58582860161248d565b9150509250929050565b5f8115159050919050565b6124f3816124df565b82525050565b5f60208201905061250c5f8301846124ea565b92915050565b61251b8161243c565b82525050565b5f6020820190506125345f830184612512565b92915050565b5f819050919050565b5f61255d6125586125538461241d565b61253a565b61241d565b9050919050565b5f61256e82612543565b9050919050565b5f61257f82612564565b9050919050565b61258f81612575565b82525050565b5f6020820190506125a85f830184612586565b92915050565b5f602082840312156125c3576125c2612415565b5b5f6125d084828501612463565b91505092915050565b5f805f606084860312156125f0576125ef612415565b5b5f6125fd86828701612463565b935050602061260e86828701612463565b925050604061261f8682870161248d565b9150509250925092565b5f60ff82169050919050565b61263e81612629565b82525050565b5f6020820190506126575f830184612635565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261267e5761267d61265d565b5b8235905067ffffffffffffffff81111561269b5761269a612661565b5b6020830191508360208202830111156126b7576126b6612665565b5b9250929050565b5f80602083850312156126d4576126d3612415565b5b5f83013567ffffffffffffffff8111156126f1576126f0612419565b5b6126fd85828601612669565b92509250509250929050565b5f6127138261243c565b9050919050565b61272381612709565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f805f6060848603121561275b5761275a612415565b5b5f61276886828701612730565b935050602061277986828701612463565b925050604061278a8682870161248d565b9150509250925092565b5f602082840312156127a9576127a8612415565b5b5f6127b68482850161248d565b91505092915050565b5f805f606084860312156127d6576127d5612415565b5b5f6127e38682870161248d565b93505060206127f48682870161248d565b92505060406128058682870161248d565b9150509250925092565b5f806040838503121561282557612824612415565b5b5f61283285828601612463565b925050602061284385828601612463565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061289157607f821691505b6020821081036128a4576128a361284d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61290e8261233a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129405761293f6128d7565b5b600182019050919050565b5f6129558261233a565b91506129608361233a565b9250828201905080821115612978576129776128d7565b5b92915050565b5f8151905061298c81612477565b92915050565b5f602082840312156129a7576129a6612415565b5b5f6129b48482850161297e565b91505092915050565b5f6040820190506129d05f830185612512565b6129dd6020830184612343565b9392505050565b6129ed816124df565b81146129f7575f80fd5b50565b5f81519050612a08816129e4565b92915050565b5f60208284031215612a2357612a22612415565b5b5f612a30848285016129fa565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612a93602583612375565b9150612a9e82612a39565b604082019050919050565b5f6020820190508181035f830152612ac081612a87565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b21602683612375565b9150612b2c82612ac7565b604082019050919050565b5f6020820190508181035f830152612b4e81612b15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612baf602483612375565b9150612bba82612b55565b604082019050919050565b5f6020820190508181035f830152612bdc81612ba3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c3d602283612375565b9150612c4882612be3565b604082019050919050565b5f6020820190508181035f830152612c6a81612c31565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ca5602083612375565b9150612cb082612c71565b602082019050919050565b5f6020820190508181035f830152612cd281612c99565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612d0d601d83612375565b9150612d1882612cd9565b602082019050919050565b5f6020820190508181035f830152612d3a81612d01565b9050919050565b7f536e6970657200000000000000000000000000000000000000000000000000005f82015250565b5f612d75600683612375565b9150612d8082612d41565b602082019050919050565b5f6020820190508181035f830152612da281612d69565b9050919050565b7f54726164696e6720686173206e6f7420737461727465642079657400000000005f82015250565b5f612ddd601b83612375565b9150612de882612da9565b602082019050919050565b5f6020820190508181035f830152612e0a81612dd1565b9050919050565b5f612e1b8261233a565b9150612e268361233a565b9250828202612e348161233a565b91508282048414831517612e4b57612e4a6128d7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e898261233a565b9150612e948361233a565b925082612ea457612ea3612e52565b5b828204905092915050565b5f612eb98261233a565b9150612ec48361233a565b9250828203905081811115612edc57612edb6128d7565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473206d61782077616c6c5f8201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f3c602283612375565b9150612f4782612ee2565b604082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fca602583612375565b9150612fd582612f70565b604082019050919050565b5f6020820190508181035f830152612ff781612fbe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613058602383612375565b915061306382612ffe565b604082019050919050565b5f6020820190508181035f8301526130858161304c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6130e6602683612375565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506131558161244d565b92915050565b5f602082840312156131705761316f612415565b5b5f61317d84828501613147565b91505092915050565b5f819050919050565b5f6131a96131a461319f84613186565b61253a565b61233a565b9050919050565b6131b98161318f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131f18161243c565b82525050565b5f61320283836131e8565b60208301905092915050565b5f602082019050919050565b5f613224826131bf565b61322e81856131c9565b9350613239836131d9565b805f5b8381101561326957815161325088826131f7565b975061325b8361320e565b92505060018101905061323c565b5085935050505092915050565b5f60a0820190506132895f830188612343565b61329660208301876131b0565b81810360408301526132a8818661321a565b90506132b76060830185612512565b6132c46080830184612343565b9695505050505050565b5f60c0820190506132e15f830189612512565b6132ee6020830188612343565b6132fb60408301876131b0565b61330860608301866131b0565b6133156080830185612512565b61332260a0830184612343565b979650505050505050565b5f805f6060848603121561334457613343612415565b5b5f6133518682870161297e565b93505060206133628682870161297e565b92505060406133738682870161297e565b915050925092509256fea2646970667358221220554bacc5d2fbcd76459f2da311adcdebdb015955d847d8924fcca6a0f6b2029464736f6c63430008140033

Deployed Bytecode Sourcemap

15150:8339:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15877:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7054:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9254:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17225:92;;;;;;;;;;;;;:::i;:::-;;15389:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15333:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8159:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21589:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10062:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15635:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8001:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17325:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11771:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15951:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15807:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23130:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22897:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21698:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15996:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23010:112;;;;;;;;;;;;;:::i;:::-;;7219:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5509:103;;;;;;;;;;;;;:::i;:::-;;22418:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15551:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15301:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4861:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22183:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21947:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6878:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15466:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21819:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10862:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8714:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15839:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22527:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17044:75;;;;;;;;;;;;;:::i;:::-;;15679:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17524:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17127:90;;;;;;;;;;;;;:::i;:::-;;8332:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15913:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5767:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15593:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15763:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15877:29;;;;:::o;7054:102::-;7110:13;7143:5;7136:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7054:102;:::o;9254:228::-;9364:4;9381:13;9397:12;:10;:12::i;:::-;9381:28;;9420:32;9429:5;9436:7;9445:6;9420:8;:32::i;:::-;9470:4;9463:11;;;9254:228;;;;:::o;17225:92::-;4747:13;:11;:13::i;:::-;17304:5:::1;17284:17;;:25;;;;;;;;;;;;;;;;;;17225:92::o:0;15389:70::-;;;;;;;;;;;;;:::o;15333:49::-;;;:::o;8159:110::-;8222:7;8249:12;;8242:19;;8159:110;:::o;21589:101::-;4747:13;:11;:13::i;:::-;21673:9:::1;21660:10;;:22;;;;;;;;;;;;;;;;;;21589:101:::0;:::o;10062:297::-;10195:4;10212:15;10230:12;:10;:12::i;:::-;10212:30;;10253:38;10269:4;10275:7;10284:6;10253:15;:38::i;:::-;10302:27;10312:4;10318:2;10322:6;10302:9;:27::i;:::-;10347:4;10340:11;;;10062:297;;;;;:::o;15635:37::-;;;;:::o;8001:93::-;8059:5;8084:2;8077:9;;8001:93;:::o;17325:191::-;4747:13;:11;:13::i;:::-;17412:9:::1;17407:102;17431:8;;:15;;17427:1;:19;17407:102;;;17492:5;17468:8;:21;17477:8;;17486:1;17477:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17468:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17448:3;;;;;:::i;:::-;;;;17407:102;;;;17325:191:::0;;:::o;11771:265::-;11886:4;11903:13;11919:12;:10;:12::i;:::-;11903:28;;11942:64;11951:5;11958:7;11995:10;11967:25;11977:5;11984:7;11967:9;:25::i;:::-;:38;;;;:::i;:::-;11942:8;:64::i;:::-;12024:4;12017:11;;;11771:265;;;;:::o;15951:38::-;;;:::o;15807:25::-;;;;:::o;23130:319::-;4747:13;:11;:13::i;:::-;23275:11:::1;23289:12;:22;;;23320:4;23289:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23275:51;;23344:12;23337:29;;;23381:13;23415:3;23409;:9;:21;;23427:3;23409:21;;;23421:3;23409:21;23337:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23264:185;23130:319:::0;;;:::o;22897:105::-;4747:13;:11;:13::i;:::-;22983:11:::1;22970:10;:24;;;;22897:105:::0;:::o;21698:113::-;4747:13;:11;:13::i;:::-;21794:9:::1;21775:16;;:28;;;;;;;;;;;;;;;;;;21698:113:::0;:::o;15996:45::-;;;;:::o;23010:112::-;4747:13;:11;:13::i;:::-;23071:10:::1;23063:28;;:51;23092:21;23063:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23010:112::o:0;7219:143::-;7309:7;7336:9;:18;7346:7;7336:18;;;;;;;;;;;;;;;;7329:25;;7219:143;;;:::o;5509:103::-;4747:13;:11;:13::i;:::-;5574:30:::1;5601:1;5574:18;:30::i;:::-;5509:103::o:0;22418:101::-;4747:13;:11;:13::i;:::-;22503:8:::1;22489:11;:22;;;;22418:101:::0;:::o;15551:35::-;;;;:::o;15301:25::-;;;;:::o;4861:87::-;4907:7;4934:6;;;;;;;;;;;4927:13;;4861:87;:::o;22183:227::-;4747:13;:11;:13::i;:::-;22294:9:::1;22289:114;22313:9;;:16;;22309:1;:20;22289:114;;;22386:5;22351:18;:32;22370:9;;22380:1;22370:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22351:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22331:3;;;;;:::i;:::-;;;;22289:114;;;;22183:227:::0;;:::o;21947:228::-;4747:13;:11;:13::i;:::-;22060:9:::1;22055:113;22079:9;;:16;;22075:1;:20;22055:113;;;22152:4;22117:18;:32;22136:9;;22146:1;22136:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22117:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22097:3;;;;;:::i;:::-;;;;22055:113;;;;21947:228:::0;;:::o;6878:106::-;6936:13;6969:7;6962:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6878:106;:::o;15466:76::-;;;;;;;;;;;;;:::o;21819:120::-;4747:13;:11;:13::i;:::-;21923:8:::1;21896:24;:35;;;;21819:120:::0;:::o;10862:500::-;10982:4;10999:13;11015:12;:10;:12::i;:::-;10999:28;;11038:24;11065:25;11075:5;11082:7;11065:9;:25::i;:::-;11038:52;;11143:15;11123:16;:35;;11101:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11259:60;11268:5;11275:7;11303:15;11284:16;:34;11259:8;:60::i;:::-;11350:4;11343:11;;;;10862:500;;;;:::o;8714:220::-;8820:4;8837:13;8853:12;:10;:12::i;:::-;8837:28;;8876;8886:5;8893:2;8897:6;8876:9;:28::i;:::-;8922:4;8915:11;;;8714:220;;;;:::o;15839:31::-;;;;:::o;22527:362::-;4747:13;:11;:13::i;:::-;22707:16:::1;22689:15;:34;;;;22750:14;22734:13;:30;;;;22791:14;22775:13;:30;;;;22867:14;22850;22831:16;:33;;;;:::i;:::-;:50;;;;:::i;:::-;22816:12;:65;;;;22527:362:::0;;;:::o;17044:75::-;4747:13;:11;:13::i;:::-;17107:4:::1;17097:7;;:14;;;;;;;;;;;;;;;;;;17044:75::o:0;15679:77::-;;;;:::o;17524:272::-;4747:13;:11;:13::i;:::-;17603:11:::1;17617:8;;:15;;17603:29;;17647:9;17643:146;17666:3;17662:1;:7;17643:146;;;17711:4;17687:8;:21;17696:8;;17705:1;17696:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17687:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17759:3;;;;;;;17643:146;;;;17592:204;17524:272:::0;;:::o;17127:90::-;4747:13;:11;:13::i;:::-;17205:4:::1;17185:17;;:24;;;;;;;;;;;;;;;;;;17127:90::o:0;8332:176::-;8446:7;8473:11;:18;8485:5;8473:18;;;;;;;;;;;;;;;:27;8492:7;8473:27;;;;;;;;;;;;;;;;8466:34;;8332:176;;;;:::o;15913:29::-;;;;;;;;;;;;;:::o;5767:238::-;4747:13;:11;:13::i;:::-;5890:1:::1;5870:22;;:8;:22;;::::0;5848:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5969:28;5988:8;5969:18;:28::i;:::-;5767:238:::0;:::o;15593:35::-;;;;:::o;15763:33::-;;;;:::o;4161:98::-;4214:7;4241:10;4234:17;;4161:98;:::o;13186:380::-;13339:1;13322:19;;:5;:19;;;13314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13420:1;13401:21;;:7;:21;;;13393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13504:6;13474:11;:18;13486:5;13474:18;;;;;;;;;;;;;;;:27;13493:7;13474:27;;;;;;;;;;;;;;;:36;;;;13542:7;13526:32;;13535:5;13526:32;;;13551:6;13526:32;;;;;;:::i;:::-;;;;;;;;13186:380;;;:::o;5026:132::-;5101:12;:10;:12::i;:::-;5090:23;;:7;:5;:7::i;:::-;:23;;;5082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5026:132::o;13857:502::-;13992:24;14019:25;14029:5;14036:7;14019:9;:25::i;:::-;13992:52;;14079:17;14059:16;:37;14055:297;;14159:6;14139:16;:26;;14113:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14274:51;14283:5;14290:7;14318:6;14299:16;:25;14274:8;:51::i;:::-;14055:297;13981:378;13857:502;;;:::o;17804:2066::-;17937:8;:14;17946:4;17937:14;;;;;;;;;;;;;;;;;;;;;;;;;17936:15;17928:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;17991:18;:24;18010:4;17991:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;18032:18;:22;18051:2;18032:22;;;;;;;;;;;;;;;;;;;;;;;;;17991:63;:96;;;;18071:16;;;;;;;;;;;17991:96;17973:1890;;;18114:33;18130:4;18136:2;18140:6;18114:15;:33::i;:::-;17973:1890;;;18188:7;;;;;;;;;;;18180:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18242:14;18281:13;18275:19;;:2;:19;;;18271:1406;;18315:11;18329:24;18347:4;18329:9;:24::i;:::-;18315:38;;18372:17;18446:5;18419:24;;18392;18402:13;18392:9;:24::i;:::-;:51;;;;:::i;:::-;:59;;;;:::i;:::-;18372:79;;18503:9;18496:3;:16;18470:193;;18570:9;18566:1;:13;;;;:::i;:::-;18559:3;:20;18555:45;;18591:9;18587:1;:13;;;;:::i;:::-;18581:19;;18555:45;18623:20;18639:3;18623:15;:20::i;:::-;18470:193;18681:19;18741:12;;18723:14;;:30;18719:192;;18795:1;18778:18;;18719:192;;;18877:14;;18862:12;;:29;;;;:::i;:::-;18845:46;;18719:192;18967:5;18950:14;18941:6;:23;;;;:::i;:::-;:31;;;;:::i;:::-;18929:43;;18296:692;;;18271:1406;;;19006:13;18998:21;;:4;:21;;;18994:683;;19044:17;;;;;;;;;;;19040:203;;;19100:10;;19090:6;:20;;:53;;;;;19131:12;;19114:14;;:29;19090:53;19086:138;;;19190:10;;19172:14;;:28;;;;;;;:::i;:::-;;;;;;;;19086:138;19040:203;19296:5;19282:11;;19273:6;:20;;;;:::i;:::-;:28;;;;:::i;:::-;19261:40;;19388:10;;19375:9;19366:6;19350:13;19360:2;19350:9;:13::i;:::-;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:48;;19320:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;18994:683;;;19573:10;;19563:6;19547:13;19557:2;19547:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;19517:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18994:683;18271:1406;19691:45;19707:4;19713:2;19726:9;19717:6;:18;;;;:::i;:::-;19691:15;:45::i;:::-;19767:1;19755:9;:13;19751:101;;;19789:47;19805:4;19819;19826:9;19789:15;:47::i;:::-;19751:101;18165:1698;17973:1890;17804:2066;;;:::o;6165:191::-;6239:16;6258:6;;;;;;;;;;;6239:25;;6284:8;6275:6;;:17;;;;;;;;;;;;;;;;;;6339:8;6308:40;;6329:8;6308:40;;;;;;;;;;;;6228:128;6165:191;:::o;14367:776::-;14514:1;14498:18;;:4;:18;;;14490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:1;14577:16;;:2;:16;;;14569:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14646:19;14668:9;:15;14678:4;14668:15;;;;;;;;;;;;;;;;14646:37;;14731:6;14716:11;:21;;14694:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;14871:6;14857:11;:20;14839:9;:15;14849:4;14839:15;;;;;;;;;;;;;;;:38;;;;15074:6;15057:9;:13;15067:2;15057:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15124:2;15109:26;;15118:4;15109:26;;;15128:6;15109:26;;;;;;:::i;:::-;;;;;;;;14479:664;14367:776;;;:::o;19878:949::-;16150:4;16131:16;;:23;;;;;;;;;;;;;;;;;;19964:21:::1;19988:12;;19964:36;;20032:1;20015:13;:18:::0;20011:31:::1;;20035:7;;;20011:31;20052:16;20103:1;20087:13;;:17;;;;:::i;:::-;20071:13;:33;;;;:::i;:::-;20052:52;;20115:14;20166:13;20155:8;20132:20;:31;;;;:::i;:::-;:47;;;;:::i;:::-;20115:64;;20192:25;20210:6;20192:17;:25::i;:::-;20228:15;20246:21;20228:39;;20280:13;20324:8;20306:15;;20296:7;:25;;;;:::i;:::-;:36;;;;:::i;:::-;20280:52;;20343:19;20391:8;20375:13;;20365:7;:23;;;;:::i;:::-;:34;;;;:::i;:::-;20343:56;;20440:1;20424:13;;:17;20420:174;;;20458:124;20513:6;20490:20;:29;;;;:::i;:::-;20556:11;20548:5;20538:7;:15;;;;:::i;:::-;:29;;;;:::i;:::-;20458:13;:124::i;:::-;20420:174;20622:1;20608:11;:15;20604:95;;;20648:16;;;;;;;;;;;20640:34;;:47;20675:11;20640:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20604:95;20739:1;20715:21;:25;20711:109;;;20765:10;;;;;;;;;;;20757:28;;:51;20786:21;20757:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20711:109;19953:874;;;;;;16165:1;16196:5:::0;16177:16;;:24;;;;;;;;;;;;;;;;;;19878:949;:::o;20835:413::-;16150:4;16131:16;;:23;;;;;;;;;;;;;;;;;;20914:21:::1;20952:1;20938:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20914:40;;20983:4;20965;20970:1;20965:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21009:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20999:4;21004:1;20999:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;21042:15;:66;;;21123:11;21149:1;21165:4;21192;21213:15;21042:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20903:345;16196:5:::0;16177:16;;:24;;;;;;;;;;;;;;;;;;20835:413;:::o;21256:325::-;16150:4;16131:16;;:23;;;;;;;;;;;;;;;;;;21375:15:::1;:31;;;21414:9;21447:4;21467:11;21493:1;21509::::0;21525:7:::1;:5;:7::i;:::-;21547:15;21375:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16196:5:::0;16177:16;;:24;;;;;;;;;;;;;;;;;;21256:325;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:60::-;4178:3;4199:5;4192:12;;4150:60;;;:::o;4216:142::-;4266:9;4299:53;4317:34;4326:24;4344:5;4326:24;:::i;:::-;4317:34;:::i;:::-;4299:53;:::i;:::-;4286:66;;4216:142;;;:::o;4364:126::-;4414:9;4447:37;4478:5;4447:37;:::i;:::-;4434:50;;4364:126;;;:::o;4496:150::-;4570:9;4603:37;4634:5;4603:37;:::i;:::-;4590:50;;4496:150;;;:::o;4652:179::-;4763:61;4818:5;4763:61;:::i;:::-;4758:3;4751:74;4652:179;;:::o;4837:270::-;4954:4;4992:2;4981:9;4977:18;4969:26;;5005:95;5097:1;5086:9;5082:17;5073:6;5005:95;:::i;:::-;4837:270;;;;:::o;5113:329::-;5172:6;5221:2;5209:9;5200:7;5196:23;5192:32;5189:119;;;5227:79;;:::i;:::-;5189:119;5347:1;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5318:117;5113:329;;;;:::o;5448:619::-;5525:6;5533;5541;5590:2;5578:9;5569:7;5565:23;5561:32;5558:119;;;5596:79;;:::i;:::-;5558:119;5716:1;5741:53;5786:7;5777:6;5766:9;5762:22;5741:53;:::i;:::-;5731:63;;5687:117;5843:2;5869:53;5914:7;5905:6;5894:9;5890:22;5869:53;:::i;:::-;5859:63;;5814:118;5971:2;5997:53;6042:7;6033:6;6022:9;6018:22;5997:53;:::i;:::-;5987:63;;5942:118;5448:619;;;;;:::o;6073:86::-;6108:7;6148:4;6141:5;6137:16;6126:27;;6073:86;;;:::o;6165:112::-;6248:22;6264:5;6248:22;:::i;:::-;6243:3;6236:35;6165:112;;:::o;6283:214::-;6372:4;6410:2;6399:9;6395:18;6387:26;;6423:67;6487:1;6476:9;6472:17;6463:6;6423:67;:::i;:::-;6283:214;;;;:::o;6503:117::-;6612:1;6609;6602:12;6626:117;6735:1;6732;6725:12;6749:117;6858:1;6855;6848:12;6889:568;6962:8;6972:6;7022:3;7015:4;7007:6;7003:17;6999:27;6989:122;;7030:79;;:::i;:::-;6989:122;7143:6;7130:20;7120:30;;7173:18;7165:6;7162:30;7159:117;;;7195:79;;:::i;:::-;7159:117;7309:4;7301:6;7297:17;7285:29;;7363:3;7355:4;7347:6;7343:17;7333:8;7329:32;7326:41;7323:128;;;7370:79;;:::i;:::-;7323:128;6889:568;;;;;:::o;7463:559::-;7549:6;7557;7606:2;7594:9;7585:7;7581:23;7577:32;7574:119;;;7612:79;;:::i;:::-;7574:119;7760:1;7749:9;7745:17;7732:31;7790:18;7782:6;7779:30;7776:117;;;7812:79;;:::i;:::-;7776:117;7925:80;7997:7;7988:6;7977:9;7973:22;7925:80;:::i;:::-;7907:98;;;;7703:312;7463:559;;;;;:::o;8028:109::-;8078:7;8107:24;8125:5;8107:24;:::i;:::-;8096:35;;8028:109;;;:::o;8143:148::-;8229:37;8260:5;8229:37;:::i;:::-;8222:5;8219:48;8209:76;;8281:1;8278;8271:12;8209:76;8143:148;:::o;8297:165::-;8356:5;8394:6;8381:20;8372:29;;8410:46;8450:5;8410:46;:::i;:::-;8297:165;;;;:::o;8468:645::-;8558:6;8566;8574;8623:2;8611:9;8602:7;8598:23;8594:32;8591:119;;;8629:79;;:::i;:::-;8591:119;8749:1;8774:66;8832:7;8823:6;8812:9;8808:22;8774:66;:::i;:::-;8764:76;;8720:130;8889:2;8915:53;8960:7;8951:6;8940:9;8936:22;8915:53;:::i;:::-;8905:63;;8860:118;9017:2;9043:53;9088:7;9079:6;9068:9;9064:22;9043:53;:::i;:::-;9033:63;;8988:118;8468:645;;;;;:::o;9119:329::-;9178:6;9227:2;9215:9;9206:7;9202:23;9198:32;9195:119;;;9233:79;;:::i;:::-;9195:119;9353:1;9378:53;9423:7;9414:6;9403:9;9399:22;9378:53;:::i;:::-;9368:63;;9324:117;9119:329;;;;:::o;9454:619::-;9531:6;9539;9547;9596:2;9584:9;9575:7;9571:23;9567:32;9564:119;;;9602:79;;:::i;:::-;9564:119;9722:1;9747:53;9792:7;9783:6;9772:9;9768:22;9747:53;:::i;:::-;9737:63;;9693:117;9849:2;9875:53;9920:7;9911:6;9900:9;9896:22;9875:53;:::i;:::-;9865:63;;9820:118;9977:2;10003:53;10048:7;10039:6;10028:9;10024:22;10003:53;:::i;:::-;9993:63;;9948:118;9454:619;;;;;:::o;10079:474::-;10147:6;10155;10204:2;10192:9;10183:7;10179:23;10175:32;10172:119;;;10210:79;;:::i;:::-;10172:119;10330:1;10355:53;10400:7;10391:6;10380:9;10376:22;10355:53;:::i;:::-;10345:63;;10301:117;10457:2;10483:53;10528:7;10519:6;10508:9;10504:22;10483:53;:::i;:::-;10473:63;;10428:118;10079:474;;;;;:::o;10559:180::-;10607:77;10604:1;10597:88;10704:4;10701:1;10694:15;10728:4;10725:1;10718:15;10745:320;10789:6;10826:1;10820:4;10816:12;10806:22;;10873:1;10867:4;10863:12;10894:18;10884:81;;10950:4;10942:6;10938:17;10928:27;;10884:81;11012:2;11004:6;11001:14;10981:18;10978:38;10975:84;;11031:18;;:::i;:::-;10975:84;10796:269;10745:320;;;:::o;11071:180::-;11119:77;11116:1;11109:88;11216:4;11213:1;11206:15;11240:4;11237:1;11230:15;11257:180;11305:77;11302:1;11295:88;11402:4;11399:1;11392:15;11426:4;11423:1;11416:15;11443:233;11482:3;11505:24;11523:5;11505:24;:::i;:::-;11496:33;;11551:66;11544:5;11541:77;11538:103;;11621:18;;:::i;:::-;11538:103;11668:1;11661:5;11657:13;11650:20;;11443:233;;;:::o;11682:191::-;11722:3;11741:20;11759:1;11741:20;:::i;:::-;11736:25;;11775:20;11793:1;11775:20;:::i;:::-;11770:25;;11818:1;11815;11811:9;11804:16;;11839:3;11836:1;11833:10;11830:36;;;11846:18;;:::i;:::-;11830:36;11682:191;;;;:::o;11879:143::-;11936:5;11967:6;11961:13;11952:22;;11983:33;12010:5;11983:33;:::i;:::-;11879:143;;;;:::o;12028:351::-;12098:6;12147:2;12135:9;12126:7;12122:23;12118:32;12115:119;;;12153:79;;:::i;:::-;12115:119;12273:1;12298:64;12354:7;12345:6;12334:9;12330:22;12298:64;:::i;:::-;12288:74;;12244:128;12028:351;;;;:::o;12385:332::-;12506:4;12544:2;12533:9;12529:18;12521:26;;12557:71;12625:1;12614:9;12610:17;12601:6;12557:71;:::i;:::-;12638:72;12706:2;12695:9;12691:18;12682:6;12638:72;:::i;:::-;12385:332;;;;;:::o;12723:116::-;12793:21;12808:5;12793:21;:::i;:::-;12786:5;12783:32;12773:60;;12829:1;12826;12819:12;12773:60;12723:116;:::o;12845:137::-;12899:5;12930:6;12924:13;12915:22;;12946:30;12970:5;12946:30;:::i;:::-;12845:137;;;;:::o;12988:345::-;13055:6;13104:2;13092:9;13083:7;13079:23;13075:32;13072:119;;;13110:79;;:::i;:::-;13072:119;13230:1;13255:61;13308:7;13299:6;13288:9;13284:22;13255:61;:::i;:::-;13245:71;;13201:125;12988:345;;;;:::o;13339:224::-;13479:34;13475:1;13467:6;13463:14;13456:58;13548:7;13543:2;13535:6;13531:15;13524:32;13339:224;:::o;13569:366::-;13711:3;13732:67;13796:2;13791:3;13732:67;:::i;:::-;13725:74;;13808:93;13897:3;13808:93;:::i;:::-;13926:2;13921:3;13917:12;13910:19;;13569:366;;;:::o;13941:419::-;14107:4;14145:2;14134:9;14130:18;14122:26;;14194:9;14188:4;14184:20;14180:1;14169:9;14165:17;14158:47;14222:131;14348:4;14222:131;:::i;:::-;14214:139;;13941:419;;;:::o;14366:225::-;14506:34;14502:1;14494:6;14490:14;14483:58;14575:8;14570:2;14562:6;14558:15;14551:33;14366:225;:::o;14597:366::-;14739:3;14760:67;14824:2;14819:3;14760:67;:::i;:::-;14753:74;;14836:93;14925:3;14836:93;:::i;:::-;14954:2;14949:3;14945:12;14938:19;;14597:366;;;:::o;14969:419::-;15135:4;15173:2;15162:9;15158:18;15150:26;;15222:9;15216:4;15212:20;15208:1;15197:9;15193:17;15186:47;15250:131;15376:4;15250:131;:::i;:::-;15242:139;;14969:419;;;:::o;15394:223::-;15534:34;15530:1;15522:6;15518:14;15511:58;15603:6;15598:2;15590:6;15586:15;15579:31;15394:223;:::o;15623:366::-;15765:3;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15862:93;15951:3;15862:93;:::i;:::-;15980:2;15975:3;15971:12;15964:19;;15623:366;;;:::o;15995:419::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16248:9;16242:4;16238:20;16234:1;16223:9;16219:17;16212:47;16276:131;16402:4;16276:131;:::i;:::-;16268:139;;15995:419;;;:::o;16420:221::-;16560:34;16556:1;16548:6;16544:14;16537:58;16629:4;16624:2;16616:6;16612:15;16605:29;16420:221;:::o;16647:366::-;16789:3;16810:67;16874:2;16869:3;16810:67;:::i;:::-;16803:74;;16886:93;16975:3;16886:93;:::i;:::-;17004:2;16999:3;16995:12;16988:19;;16647:366;;;:::o;17019:419::-;17185:4;17223:2;17212:9;17208:18;17200:26;;17272:9;17266:4;17262:20;17258:1;17247:9;17243:17;17236:47;17300:131;17426:4;17300:131;:::i;:::-;17292:139;;17019:419;;;:::o;17444:182::-;17584:34;17580:1;17572:6;17568:14;17561:58;17444:182;:::o;17632:366::-;17774:3;17795:67;17859:2;17854:3;17795:67;:::i;:::-;17788:74;;17871:93;17960:3;17871:93;:::i;:::-;17989:2;17984:3;17980:12;17973:19;;17632:366;;;:::o;18004:419::-;18170:4;18208:2;18197:9;18193:18;18185:26;;18257:9;18251:4;18247:20;18243:1;18232:9;18228:17;18221:47;18285:131;18411:4;18285:131;:::i;:::-;18277:139;;18004:419;;;:::o;18429:179::-;18569:31;18565:1;18557:6;18553:14;18546:55;18429:179;:::o;18614:366::-;18756:3;18777:67;18841:2;18836:3;18777:67;:::i;:::-;18770:74;;18853:93;18942:3;18853:93;:::i;:::-;18971:2;18966:3;18962:12;18955:19;;18614:366;;;:::o;18986:419::-;19152:4;19190:2;19179:9;19175:18;19167:26;;19239:9;19233:4;19229:20;19225:1;19214:9;19210:17;19203:47;19267:131;19393:4;19267:131;:::i;:::-;19259:139;;18986:419;;;:::o;19411:156::-;19551:8;19547:1;19539:6;19535:14;19528:32;19411:156;:::o;19573:365::-;19715:3;19736:66;19800:1;19795:3;19736:66;:::i;:::-;19729:73;;19811:93;19900:3;19811:93;:::i;:::-;19929:2;19924:3;19920:12;19913:19;;19573:365;;;:::o;19944:419::-;20110:4;20148:2;20137:9;20133:18;20125:26;;20197:9;20191:4;20187:20;20183:1;20172:9;20168:17;20161:47;20225:131;20351:4;20225:131;:::i;:::-;20217:139;;19944:419;;;:::o;20369:177::-;20509:29;20505:1;20497:6;20493:14;20486:53;20369:177;:::o;20552:366::-;20694:3;20715:67;20779:2;20774:3;20715:67;:::i;:::-;20708:74;;20791:93;20880:3;20791:93;:::i;:::-;20909:2;20904:3;20900:12;20893:19;;20552:366;;;:::o;20924:419::-;21090:4;21128:2;21117:9;21113:18;21105:26;;21177:9;21171:4;21167:20;21163:1;21152:9;21148:17;21141:47;21205:131;21331:4;21205:131;:::i;:::-;21197:139;;20924:419;;;:::o;21349:410::-;21389:7;21412:20;21430:1;21412:20;:::i;:::-;21407:25;;21446:20;21464:1;21446:20;:::i;:::-;21441:25;;21501:1;21498;21494:9;21523:30;21541:11;21523:30;:::i;:::-;21512:41;;21702:1;21693:7;21689:15;21686:1;21683:22;21663:1;21656:9;21636:83;21613:139;;21732:18;;:::i;:::-;21613:139;21397:362;21349:410;;;;:::o;21765:180::-;21813:77;21810:1;21803:88;21910:4;21907:1;21900:15;21934:4;21931:1;21924:15;21951:185;21991:1;22008:20;22026:1;22008:20;:::i;:::-;22003:25;;22042:20;22060:1;22042:20;:::i;:::-;22037:25;;22081:1;22071:35;;22086:18;;:::i;:::-;22071:35;22128:1;22125;22121:9;22116:14;;21951:185;;;;:::o;22142:194::-;22182:4;22202:20;22220:1;22202:20;:::i;:::-;22197:25;;22236:20;22254:1;22236:20;:::i;:::-;22231:25;;22280:1;22277;22273:9;22265:17;;22304:1;22298:4;22295:11;22292:37;;;22309:18;;:::i;:::-;22292:37;22142:194;;;;:::o;22342:221::-;22482:34;22478:1;22470:6;22466:14;22459:58;22551:4;22546:2;22538:6;22534:15;22527:29;22342:221;:::o;22569:366::-;22711:3;22732:67;22796:2;22791:3;22732:67;:::i;:::-;22725:74;;22808:93;22897:3;22808:93;:::i;:::-;22926:2;22921:3;22917:12;22910:19;;22569:366;;;:::o;22941:419::-;23107:4;23145:2;23134:9;23130:18;23122:26;;23194:9;23188:4;23184:20;23180:1;23169:9;23165:17;23158:47;23222:131;23348:4;23222:131;:::i;:::-;23214:139;;22941:419;;;:::o;23366:224::-;23506:34;23502:1;23494:6;23490:14;23483:58;23575:7;23570:2;23562:6;23558:15;23551:32;23366:224;:::o;23596:366::-;23738:3;23759:67;23823:2;23818:3;23759:67;:::i;:::-;23752:74;;23835:93;23924:3;23835:93;:::i;:::-;23953:2;23948:3;23944:12;23937:19;;23596:366;;;:::o;23968:419::-;24134:4;24172:2;24161:9;24157:18;24149:26;;24221:9;24215:4;24211:20;24207:1;24196:9;24192:17;24185:47;24249:131;24375:4;24249:131;:::i;:::-;24241:139;;23968:419;;;:::o;24393:222::-;24533:34;24529:1;24521:6;24517:14;24510:58;24602:5;24597:2;24589:6;24585:15;24578:30;24393:222;:::o;24621:366::-;24763:3;24784:67;24848:2;24843:3;24784:67;:::i;:::-;24777:74;;24860:93;24949:3;24860:93;:::i;:::-;24978:2;24973:3;24969:12;24962:19;;24621:366;;;:::o;24993:419::-;25159:4;25197:2;25186:9;25182:18;25174:26;;25246:9;25240:4;25236:20;25232:1;25221:9;25217:17;25210:47;25274:131;25400:4;25274:131;:::i;:::-;25266:139;;24993:419;;;:::o;25418:225::-;25558:34;25554:1;25546:6;25542:14;25535:58;25627:8;25622:2;25614:6;25610:15;25603:33;25418:225;:::o;25649:366::-;25791:3;25812:67;25876:2;25871:3;25812:67;:::i;:::-;25805:74;;25888:93;25977:3;25888:93;:::i;:::-;26006:2;26001:3;25997:12;25990:19;;25649:366;;;:::o;26021:419::-;26187:4;26225:2;26214:9;26210:18;26202:26;;26274:9;26268:4;26264:20;26260:1;26249:9;26245:17;26238:47;26302:131;26428:4;26302:131;:::i;:::-;26294:139;;26021:419;;;:::o;26446:180::-;26494:77;26491:1;26484:88;26591:4;26588:1;26581:15;26615:4;26612:1;26605:15;26632:143;26689:5;26720:6;26714:13;26705:22;;26736:33;26763:5;26736:33;:::i;:::-;26632:143;;;;:::o;26781:351::-;26851:6;26900:2;26888:9;26879:7;26875:23;26871:32;26868:119;;;26906:79;;:::i;:::-;26868:119;27026:1;27051:64;27107:7;27098:6;27087:9;27083:22;27051:64;:::i;:::-;27041:74;;26997:128;26781:351;;;;:::o;27138:85::-;27183:7;27212:5;27201:16;;27138:85;;;:::o;27229:158::-;27287:9;27320:61;27338:42;27347:32;27373:5;27347:32;:::i;:::-;27338:42;:::i;:::-;27320:61;:::i;:::-;27307:74;;27229:158;;;:::o;27393:147::-;27488:45;27527:5;27488:45;:::i;:::-;27483:3;27476:58;27393:147;;:::o;27546:114::-;27613:6;27647:5;27641:12;27631:22;;27546:114;;;:::o;27666:184::-;27765:11;27799:6;27794:3;27787:19;27839:4;27834:3;27830:14;27815:29;;27666:184;;;;:::o;27856:132::-;27923:4;27946:3;27938:11;;27976:4;27971:3;27967:14;27959:22;;27856:132;;;:::o;27994:108::-;28071:24;28089:5;28071:24;:::i;:::-;28066:3;28059:37;27994:108;;:::o;28108:179::-;28177:10;28198:46;28240:3;28232:6;28198:46;:::i;:::-;28276:4;28271:3;28267:14;28253:28;;28108:179;;;;:::o;28293:113::-;28363:4;28395;28390:3;28386:14;28378:22;;28293:113;;;:::o;28442:732::-;28561:3;28590:54;28638:5;28590:54;:::i;:::-;28660:86;28739:6;28734:3;28660:86;:::i;:::-;28653:93;;28770:56;28820:5;28770:56;:::i;:::-;28849:7;28880:1;28865:284;28890:6;28887:1;28884:13;28865:284;;;28966:6;28960:13;28993:63;29052:3;29037:13;28993:63;:::i;:::-;28986:70;;29079:60;29132:6;29079:60;:::i;:::-;29069:70;;28925:224;28912:1;28909;28905:9;28900:14;;28865:284;;;28869:14;29165:3;29158:10;;28566:608;;;28442:732;;;;:::o;29180:831::-;29443:4;29481:3;29470:9;29466:19;29458:27;;29495:71;29563:1;29552:9;29548:17;29539:6;29495:71;:::i;:::-;29576:80;29652:2;29641:9;29637:18;29628:6;29576:80;:::i;:::-;29703:9;29697:4;29693:20;29688:2;29677:9;29673:18;29666:48;29731:108;29834:4;29825:6;29731:108;:::i;:::-;29723:116;;29849:72;29917:2;29906:9;29902:18;29893:6;29849:72;:::i;:::-;29931:73;29999:3;29988:9;29984:19;29975:6;29931:73;:::i;:::-;29180:831;;;;;;;;:::o;30017:807::-;30266:4;30304:3;30293:9;30289:19;30281:27;;30318:71;30386:1;30375:9;30371:17;30362:6;30318:71;:::i;:::-;30399:72;30467:2;30456:9;30452:18;30443:6;30399:72;:::i;:::-;30481:80;30557:2;30546:9;30542:18;30533:6;30481:80;:::i;:::-;30571;30647:2;30636:9;30632:18;30623:6;30571:80;:::i;:::-;30661:73;30729:3;30718:9;30714:19;30705:6;30661:73;:::i;:::-;30744;30812:3;30801:9;30797:19;30788:6;30744:73;:::i;:::-;30017:807;;;;;;;;;:::o;30830:663::-;30918:6;30926;30934;30983:2;30971:9;30962:7;30958:23;30954:32;30951:119;;;30989:79;;:::i;:::-;30951:119;31109:1;31134:64;31190:7;31181:6;31170:9;31166:22;31134:64;:::i;:::-;31124:74;;31080:128;31247:2;31273:64;31329:7;31320:6;31309:9;31305:22;31273:64;:::i;:::-;31263:74;;31218:129;31386:2;31412:64;31468:7;31459:6;31448:9;31444:22;31412:64;:::i;:::-;31402:74;;31357:129;30830:663;;;;;:::o

Swarm Source

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