ETH Price: $2,406.15 (-8.86%)
 

Overview

Max Total Supply

10,000,000 FLEND

Holders

38

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
FLEND

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

/**

  _______   _______    __     _______  _____  ___   ________   ___       _______  _____  ___   ________      ___________  _______   ______    __    __   
 /"     "| /"      \  |" \   /"     "|(\"   \|"  \ |"      "\ |"  |     /"     "|(\"   \|"  \ |"      "\    ("     _   ")/"     "| /" _  "\  /" |  | "\  
(: ______)|:        | ||  | (: ______)|.\\   \    |(.  ___  :)||  |    (: ______)|.\\   \    |(.  ___  :)    )__/  \\__/(: ______)(: ( \___)(:  (__)  :) 
 \/    |  |_____/   ) |:  |  \/    |  |: \.   \\  ||: \   ) |||:  |     \/    |  |: \.   \\  ||: \   ) ||       \\_ /    \/    |   \/ \      \/      \/  
 // ___)   //      /  |.  |  // ___)_ |.  \    \. |(| (___\ || \  |___  // ___)_ |.  \    \. |(| (___\ || _____ |.  |    // ___)_  //  \ _   //  __  \\  
(:  (     |:  __   \  /\  |\(:      "||    \    \ ||:       :)( \_|:  \(:      "||    \    \ ||:       :)))_  ")\:  |   (:      "|(:   _) \ (:  (  )  :) 
 \__/     |__|  \___)(__\_|_)\_______) \___|\____\)(________/  \_______)\_______) \___|\____\)(________/(_____(  \__|    \_______) \_______) \__|  |__/  
                                                                                                                                                         

https://twitter.com/frenlend
https://docs.friendlend.tech/general/links
 */

import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract FLEND is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address payable public taxWallet;
    bool private swapping;

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

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public sellTotalFees;

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor(
        address router,
        address team,
        address Treasury
    ) ERC20("friendlend.tech", "FLEND") {
        uniswapV2Router = IUniswapV2Router02(router);
        excludeFromMaxTransaction(address(router), true);

        taxWallet = payable(owner());

        uint256 totalTokenSupply = 10_000_000 * 1e18;

        maxTransactionAmount = 200000 * 1e18;
        maxWallet = 200000 * 1e18;
        swapTokensAtAmount = (totalTokenSupply * 5) / 10000; // 0.05%

        buyTotalFees = 25;

        sellTotalFees = 50;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(team, true);
        excludeFromFees(Treasury, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(team, true);
        excludeFromMaxTransaction(Treasury, true);

        _mint(msg.sender, totalTokenSupply);
    }

    receive() external payable {}

    // Will enable trading, once this is toggeled, it will not be able to be turned off.
    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // Trigger this post launch once price is more stable. Made to avoid whales and snipers hogging supply.
    function setlendTaxesAndLimits(
        uint256 maxTx,
        uint256 _maxWallet,
        uint256 buyFees,
        uint256 sellFees
    ) external onlyOwner {
        maxTransactionAmount = maxTx;
        maxWallet = _maxWallet;

        buyTotalFees = buyFees;

        sellTotalFees = sellFees;
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setlendpoolpair(address pair) public onlyOwner {
        uniswapV2Pair = pair;
        _setAutomatedMarketMakerPair(pair, true);
        _isExcludedMaxTransactionAmount[pair] = true;
    }

    function justlborrowandlend(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount;
    }

    function SetblackbotAddress(address wallet) public onlyOwner {
        taxWallet = payable(wallet);
    }

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBck();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // Sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = Math.mulDiv(
                    amount,
                    sellTotalFees,
                    100,
                    Math.Rounding.Up
                );
            }
            // Buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = Math.mulDiv(amount, buyTotalFees, 100, Math.Rounding.Up);
            }

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

            amount -= fees;
        }

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

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

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

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH; ignore slippage
            path,
            taxWallet,
            block.timestamp
        );
    }

    function swapBck() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        swapTokensForEth(contractBalance);
    }

    function swaplpoolEth(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }

    function swapInitialpooleth(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{value: address(this).balance}("");
        require(success);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's 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() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * 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) public 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) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        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 Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `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");

        _beforeTokenTransfer(from, to, amount);

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

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += 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);

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    /**
     * @dev 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);
            }
        }
    }

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

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)

pragma solidity ^0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    /**
     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
     * with further edits by Uniswap Labs also under MIT license.
     */
    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
        unchecked {
            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
            // variables such that product = prod1 * 2^256 + prod0.
            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division.
            if (prod1 == 0) {
                // Solidity will revert if denominator == 0, unlike the div opcode on its own.
                // The surrounding unchecked block does not change this fact.
                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
                return prod0 / denominator;
            }

            // Make sure the result is less than 2^256. Also prevents denominator == 0.
            require(denominator > prod1, "Math: mulDiv overflow");

            ///////////////////////////////////////////////
            // 512 by 256 division.
            ///////////////////////////////////////////////

            // Make division exact by subtracting the remainder from [prod1 prod0].
            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
            // See https://cs.stackexchange.com/q/138556/92363.

            // Does not overflow because the denominator cannot be zero at this stage in the function.
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

            // Shift in bits from prod1 into prod0.
            prod0 |= prod1 * twos;

            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
            // four bits. That is, denominator * inv = 1 mod 2^4.
            uint256 inverse = (3 * denominator) ^ 2;

            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
            // in modular arithmetic, doubling the correct bits in each step.
            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
            // is no longer required.
            result = prod0 * inverse;
            return result;
        }
    }

    /**
     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
     */
    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    /**
     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
     *
     * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
     */
    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
        //
        // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
        //
        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
        //
        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
        uint256 result = 1 << (log2(a) >> 1);

        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
        // into the expected uint128 result.
        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    /**
     * @notice Calculates sqrt(a), following the selected rounding direction.
     */
    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 2, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 256, rounded down, of a positive value.
     * Returns 0 if given 0.
     *
     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
     */
    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

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

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

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"Treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"SetblackbotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"justlborrowandlend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"buyFees","type":"uint256"},{"internalType":"uint256","name":"sellFees","type":"uint256"}],"name":"setlendTaxesAndLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setlendpoolpair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"swapInitialpooleth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"swaplpoolEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805461ffff191690553480156200001c57600080fd5b50604051620023a7380380620023a78339810160408190526200003f9162000459565b6040518060400160405280600f81526020016e0cce4d2cadcc8d8cadcc85ce8cac6d608b1b81525060405180604001604052806005815260200164119311539160da1b815250816003908162000096919062000547565b506004620000a5828262000547565b505050620000c2620000bc6200021e60201b60201c565b62000222565b600680546001600160a01b0319166001600160a01b038516179055620000ea83600162000274565b6005546001600160a01b0316600880546001600160a01b0319166001600160a01b0392909216919091179055692a5a058fc295ed0000006009819055600b556a084595161401484a0000006127106200014582600562000629565b62000151919062000649565b600a556019600d556032600e556200017d620001756005546001600160a01b031690565b6001620002a9565b6200018a306001620002a9565b6200019961dead6001620002a9565b620001a6836001620002a9565b620001b3826001620002a9565b620001d2620001ca6005546001600160a01b031690565b600162000274565b620001df30600162000274565b620001ee61dead600162000274565b620001fb83600162000274565b6200020882600162000274565b62000214338262000312565b5050505062000682565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200027e620003d9565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b620002b3620003d9565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200036e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546200038291906200066c565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620004355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000365565b565b505050565b80516001600160a01b03811681146200045457600080fd5b919050565b6000806000606084860312156200046f57600080fd5b6200047a846200043c565b92506200048a602085016200043c565b91506200049a604085016200043c565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004ce57607f821691505b602082108103620004ef57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043757600081815260208120601f850160051c810160208610156200051e5750805b601f850160051c820191505b818110156200053f578281556001016200052a565b505050505050565b81516001600160401b03811115620005635762000563620004a3565b6200057b81620005748454620004b9565b84620004f5565b602080601f831160018114620005b357600084156200059a5750858301515b600019600386901b1c1916600185901b1785556200053f565b600085815260208120601f198616915b82811015620005e457888601518255948401946001909101908401620005c3565b5085821015620006035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000643576200064362000613565b92915050565b6000826200066757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000643576200064362000613565b611d1580620006926000396000f3fe60806040526004361061021e5760003560e01c80637571336a11610123578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e14610661578063e2f4560514610681578063f2c023db14610697578063f2fde38b146106b7578063f8b45b05146106d757600080fd5b8063c0246668146105e0578063c8c8ebe414610600578063c9567bf914610616578063c9e698ac1461062b578063d85ba0631461064b57600080fd5b80639a7a23d6116100f25780639a7a23d614610536578063a457c2d714610556578063a9059cbb14610576578063b62496f514610596578063bbc0c742146105c657600080fd5b80637571336a146104c35780638da5cb5b146104e357806395d89b41146105015780639a28302c1461051657600080fd5b8063313ce567116101a65780634fbee193116101755780634fbee1931461040a5780636a486a8e146104435780636ddd17131461045957806370a0823114610478578063715018a6146104ae57600080fd5b8063313ce5671461038e57806339509351146103aa57806349bd5a5e146103ca5780634a831939146103ea57600080fd5b80631694505e116101ed5780631694505e146102d757806318160ddd1461030f57806323b872dd1461032e5780632dc0562d1461034e57806330478a261461036e57600080fd5b806306fdde031461022a5780630830ff0114610255578063095ea7b31461027757806310d5de53146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106ed565b60405161024c919061192e565b60405180910390f35b34801561026157600080fd5b50610275610270366004611991565b61077f565b005b34801561028357600080fd5b506102976102923660046119ae565b6107eb565b604051901515815260200161024c565b3480156102b357600080fd5b506102976102c2366004611991565b60106020526000908152604090205460ff1681565b3480156102e357600080fd5b506006546102f7906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b34801561031b57600080fd5b506002545b60405190815260200161024c565b34801561033a57600080fd5b506102976103493660046119da565b610805565b34801561035a57600080fd5b506008546102f7906001600160a01b031681565b34801561037a57600080fd5b50610275610389366004611a1b565b61082b565b34801561039a57600080fd5b506040516012815260200161024c565b3480156103b657600080fd5b506102976103c53660046119ae565b610976565b3480156103d657600080fd5b506007546102f7906001600160a01b031681565b3480156103f657600080fd5b50610275610405366004611a54565b610998565b34801561041657600080fd5b50610297610425366004611991565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561044f57600080fd5b50610320600e5481565b34801561046557600080fd5b50600c5461029790610100900460ff1681565b34801561048457600080fd5b50610320610493366004611991565b6001600160a01b031660009081526020819052604090205490565b3480156104ba57600080fd5b506102756109a5565b3480156104cf57600080fd5b506102756104de366004611a7b565b6109b9565b3480156104ef57600080fd5b506005546001600160a01b03166102f7565b34801561050d57600080fd5b5061023f6109ec565b34801561052257600080fd5b50610275610531366004611aa9565b6109fb565b34801561054257600080fd5b50610275610551366004611a7b565b610a17565b34801561056257600080fd5b506102976105713660046119ae565b610aad565b34801561058257600080fd5b506102976105913660046119ae565b610b33565b3480156105a257600080fd5b506102976105b1366004611991565b60116020526000908152604090205460ff1681565b3480156105d257600080fd5b50600c546102979060ff1681565b3480156105ec57600080fd5b506102756105fb366004611a7b565b610b41565b34801561060c57600080fd5b5061032060095481565b34801561062257600080fd5b50610275610ba8565b34801561063757600080fd5b50610275610646366004611991565b610bc1565b34801561065757600080fd5b50610320600d5481565b34801561066d57600080fd5b5061032061067c366004611a1b565b610beb565b34801561068d57600080fd5b50610320600a5481565b3480156106a357600080fd5b506102756106b2366004611991565b610c16565b3480156106c357600080fd5b506102756106d2366004611991565b610c68565b3480156106e357600080fd5b50610320600b5481565b6060600380546106fc90611adb565b80601f016020809104026020016040519081016040528092919081815260200182805461072890611adb565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b610787610ce1565b6000816001600160a01b03164760405160006040518083038185875af1925050503d80600081146107d4576040519150601f19603f3d011682016040523d82523d6000602084013e6107d9565b606091505b50509050806107e757600080fd5b5050565b6000336107f9818585610d3b565b60019150505b92915050565b600033610813858285610e5f565b61081e858585610ed3565b60019150505b9392505050565b610833610ce1565b6001600160a01b03821661088e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190611b15565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af115801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190611b2e565b50505050565b6000336107f98185856109898383610beb565b6109939190611b61565b610d3b565b6109a0610ce1565b600a55565b6109ad610ce1565b6109b76000611495565b565b6109c1610ce1565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6060600480546106fc90611adb565b610a03610ce1565b600993909355600b91909155600d55600e55565b610a1f610ce1565b6007546001600160a01b0390811690831603610aa35760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610885565b6107e782826114e7565b60003381610abb8286610beb565b905083811015610b1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610885565b610b288286868403610d3b565b506001949350505050565b6000336107f9818585610ed3565b610b49610ce1565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610bb0610ce1565b600c805461ffff1916610101179055565b610bc9610ce1565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610c1e610ce1565b600780546001600160a01b0319166001600160a01b038316179055610c448160016114e7565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b610c70610ce1565b6001600160a01b038116610cd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610cde81611495565b50565b6005546001600160a01b031633146109b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610885565b6001600160a01b038316610d9d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216610dfe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e6b8484610beb565b905060001981146109705781811015610ec65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610885565b6109708484848403610d3b565b6001600160a01b038316610ef95760405162461bcd60e51b815260040161088590611b74565b6001600160a01b038216610f1f5760405162461bcd60e51b815260040161088590611bb9565b80600003610f3857610f338383600061153b565b505050565b6005546001600160a01b03848116911614801590610f6457506005546001600160a01b03838116911614155b8015610f7857506001600160a01b03821615155b8015610f8f57506001600160a01b03821661dead14155b8015610fa55750600854600160a01b900460ff16155b1561129e57600c5460ff16611038576001600160a01b0383166000908152600f602052604090205460ff1680610ff357506001600160a01b0382166000908152600f602052604090205460ff165b6110385760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610885565b6001600160a01b03831660009081526011602052604090205460ff16801561107957506001600160a01b03821660009081526010602052604090205460ff16155b1561115d576009548111156110ee5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610885565b600b546001600160a01b0383166000908152602081905260409020546111149083611b61565b11156111585760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b61129e565b6001600160a01b03821660009081526011602052604090205460ff16801561119e57506001600160a01b03831660009081526010602052604090205460ff16155b15611214576009548111156111585760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610885565b6001600160a01b03821660009081526010602052604090205460ff1661129e57600b546001600160a01b03831660009081526020819052604090205461125a9083611b61565b111561129e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b30600090815260208190526040902054600a54811080159081906112c95750600c54610100900460ff165b80156112df5750600854600160a01b900460ff16155b801561130457506001600160a01b03851660009081526011602052604090205460ff16155b801561132957506001600160a01b0385166000908152600f602052604090205460ff16155b801561134e57506001600160a01b0384166000908152600f602052604090205460ff16155b1561137c576008805460ff60a01b1916600160a01b17905561136e611665565b6008805460ff60a01b191690555b6008546001600160a01b0386166000908152600f602052604090205460ff600160a01b9092048216159116806113ca57506001600160a01b0385166000908152600f602052604090205460ff165b156113d3575060005b60008115611481576001600160a01b03861660009081526011602052604090205460ff16801561140557506000600e54115b156114215761141a85600e5460646001611689565b9050611463565b6001600160a01b03871660009081526011602052604090205460ff16801561144b57506000600d54115b156114635761146085600d5460646001611689565b90505b80156114745761147487308361153b565b61147e8186611bfc565b94505b61148c87878761153b565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166115615760405162461bcd60e51b815260040161088590611b74565b6001600160a01b0382166115875760405162461bcd60e51b815260040161088590611bb9565b6001600160a01b038316600090815260208190526040902054818110156115ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610885565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610970565b30600090815260208190526040812054908190036116805750565b610cde816116e6565b600080611697868686611844565b905060018360028111156116ad576116ad611c0f565b1480156116ca5750600084806116c5576116c5611c25565b868809115b156116dd576116da600182611b61565b90505b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061171b5761171b611c3b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190611c51565b816001815181106117ab576117ab611c3b565b6001600160a01b0392831660209182029290920101526006546117d19130911684610d3b565b60065460085460405163791ac94760e01b81526001600160a01b039283169263791ac9479261180e92879260009288929116904290600401611c6e565b600060405180830381600087803b15801561182857600080fd5b505af115801561183c573d6000803e3d6000fd5b505050505050565b600080806000198587098587029250828110838203039150508060000361187e5783828161187457611874611c25565b0492505050610824565b8084116118c55760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610885565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060208083528351808285015260005b8181101561195b5785810183015185820160400152820161193f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cde57600080fd5b6000602082840312156119a357600080fd5b81356108248161197c565b600080604083850312156119c157600080fd5b82356119cc8161197c565b946020939093013593505050565b6000806000606084860312156119ef57600080fd5b83356119fa8161197c565b92506020840135611a0a8161197c565b929592945050506040919091013590565b60008060408385031215611a2e57600080fd5b8235611a398161197c565b91506020830135611a498161197c565b809150509250929050565b600060208284031215611a6657600080fd5b5035919050565b8015158114610cde57600080fd5b60008060408385031215611a8e57600080fd5b8235611a998161197c565b91506020830135611a4981611a6d565b60008060008060808587031215611abf57600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680611aef57607f821691505b602082108103611b0f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611b2757600080fd5b5051919050565b600060208284031215611b4057600080fd5b815161082481611a6d565b634e487b7160e01b600052601160045260246000fd5b808201808211156107ff576107ff611b4b565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107ff576107ff611b4b565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c6357600080fd5b81516108248161197c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cbe5784516001600160a01b031683529383019391830191600101611c99565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220374af6e6b8dc8649093e4461f4f1295726986d248d19185cb2c29a18274953a864736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80637571336a11610123578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e14610661578063e2f4560514610681578063f2c023db14610697578063f2fde38b146106b7578063f8b45b05146106d757600080fd5b8063c0246668146105e0578063c8c8ebe414610600578063c9567bf914610616578063c9e698ac1461062b578063d85ba0631461064b57600080fd5b80639a7a23d6116100f25780639a7a23d614610536578063a457c2d714610556578063a9059cbb14610576578063b62496f514610596578063bbc0c742146105c657600080fd5b80637571336a146104c35780638da5cb5b146104e357806395d89b41146105015780639a28302c1461051657600080fd5b8063313ce567116101a65780634fbee193116101755780634fbee1931461040a5780636a486a8e146104435780636ddd17131461045957806370a0823114610478578063715018a6146104ae57600080fd5b8063313ce5671461038e57806339509351146103aa57806349bd5a5e146103ca5780634a831939146103ea57600080fd5b80631694505e116101ed5780631694505e146102d757806318160ddd1461030f57806323b872dd1461032e5780632dc0562d1461034e57806330478a261461036e57600080fd5b806306fdde031461022a5780630830ff0114610255578063095ea7b31461027757806310d5de53146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106ed565b60405161024c919061192e565b60405180910390f35b34801561026157600080fd5b50610275610270366004611991565b61077f565b005b34801561028357600080fd5b506102976102923660046119ae565b6107eb565b604051901515815260200161024c565b3480156102b357600080fd5b506102976102c2366004611991565b60106020526000908152604090205460ff1681565b3480156102e357600080fd5b506006546102f7906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b34801561031b57600080fd5b506002545b60405190815260200161024c565b34801561033a57600080fd5b506102976103493660046119da565b610805565b34801561035a57600080fd5b506008546102f7906001600160a01b031681565b34801561037a57600080fd5b50610275610389366004611a1b565b61082b565b34801561039a57600080fd5b506040516012815260200161024c565b3480156103b657600080fd5b506102976103c53660046119ae565b610976565b3480156103d657600080fd5b506007546102f7906001600160a01b031681565b3480156103f657600080fd5b50610275610405366004611a54565b610998565b34801561041657600080fd5b50610297610425366004611991565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561044f57600080fd5b50610320600e5481565b34801561046557600080fd5b50600c5461029790610100900460ff1681565b34801561048457600080fd5b50610320610493366004611991565b6001600160a01b031660009081526020819052604090205490565b3480156104ba57600080fd5b506102756109a5565b3480156104cf57600080fd5b506102756104de366004611a7b565b6109b9565b3480156104ef57600080fd5b506005546001600160a01b03166102f7565b34801561050d57600080fd5b5061023f6109ec565b34801561052257600080fd5b50610275610531366004611aa9565b6109fb565b34801561054257600080fd5b50610275610551366004611a7b565b610a17565b34801561056257600080fd5b506102976105713660046119ae565b610aad565b34801561058257600080fd5b506102976105913660046119ae565b610b33565b3480156105a257600080fd5b506102976105b1366004611991565b60116020526000908152604090205460ff1681565b3480156105d257600080fd5b50600c546102979060ff1681565b3480156105ec57600080fd5b506102756105fb366004611a7b565b610b41565b34801561060c57600080fd5b5061032060095481565b34801561062257600080fd5b50610275610ba8565b34801561063757600080fd5b50610275610646366004611991565b610bc1565b34801561065757600080fd5b50610320600d5481565b34801561066d57600080fd5b5061032061067c366004611a1b565b610beb565b34801561068d57600080fd5b50610320600a5481565b3480156106a357600080fd5b506102756106b2366004611991565b610c16565b3480156106c357600080fd5b506102756106d2366004611991565b610c68565b3480156106e357600080fd5b50610320600b5481565b6060600380546106fc90611adb565b80601f016020809104026020016040519081016040528092919081815260200182805461072890611adb565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b610787610ce1565b6000816001600160a01b03164760405160006040518083038185875af1925050503d80600081146107d4576040519150601f19603f3d011682016040523d82523d6000602084013e6107d9565b606091505b50509050806107e757600080fd5b5050565b6000336107f9818585610d3b565b60019150505b92915050565b600033610813858285610e5f565b61081e858585610ed3565b60019150505b9392505050565b610833610ce1565b6001600160a01b03821661088e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190611b15565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af115801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190611b2e565b50505050565b6000336107f98185856109898383610beb565b6109939190611b61565b610d3b565b6109a0610ce1565b600a55565b6109ad610ce1565b6109b76000611495565b565b6109c1610ce1565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6060600480546106fc90611adb565b610a03610ce1565b600993909355600b91909155600d55600e55565b610a1f610ce1565b6007546001600160a01b0390811690831603610aa35760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610885565b6107e782826114e7565b60003381610abb8286610beb565b905083811015610b1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610885565b610b288286868403610d3b565b506001949350505050565b6000336107f9818585610ed3565b610b49610ce1565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610bb0610ce1565b600c805461ffff1916610101179055565b610bc9610ce1565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610c1e610ce1565b600780546001600160a01b0319166001600160a01b038316179055610c448160016114e7565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b610c70610ce1565b6001600160a01b038116610cd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610cde81611495565b50565b6005546001600160a01b031633146109b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610885565b6001600160a01b038316610d9d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216610dfe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e6b8484610beb565b905060001981146109705781811015610ec65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610885565b6109708484848403610d3b565b6001600160a01b038316610ef95760405162461bcd60e51b815260040161088590611b74565b6001600160a01b038216610f1f5760405162461bcd60e51b815260040161088590611bb9565b80600003610f3857610f338383600061153b565b505050565b6005546001600160a01b03848116911614801590610f6457506005546001600160a01b03838116911614155b8015610f7857506001600160a01b03821615155b8015610f8f57506001600160a01b03821661dead14155b8015610fa55750600854600160a01b900460ff16155b1561129e57600c5460ff16611038576001600160a01b0383166000908152600f602052604090205460ff1680610ff357506001600160a01b0382166000908152600f602052604090205460ff165b6110385760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610885565b6001600160a01b03831660009081526011602052604090205460ff16801561107957506001600160a01b03821660009081526010602052604090205460ff16155b1561115d576009548111156110ee5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610885565b600b546001600160a01b0383166000908152602081905260409020546111149083611b61565b11156111585760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b61129e565b6001600160a01b03821660009081526011602052604090205460ff16801561119e57506001600160a01b03831660009081526010602052604090205460ff16155b15611214576009548111156111585760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610885565b6001600160a01b03821660009081526010602052604090205460ff1661129e57600b546001600160a01b03831660009081526020819052604090205461125a9083611b61565b111561129e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b30600090815260208190526040902054600a54811080159081906112c95750600c54610100900460ff165b80156112df5750600854600160a01b900460ff16155b801561130457506001600160a01b03851660009081526011602052604090205460ff16155b801561132957506001600160a01b0385166000908152600f602052604090205460ff16155b801561134e57506001600160a01b0384166000908152600f602052604090205460ff16155b1561137c576008805460ff60a01b1916600160a01b17905561136e611665565b6008805460ff60a01b191690555b6008546001600160a01b0386166000908152600f602052604090205460ff600160a01b9092048216159116806113ca57506001600160a01b0385166000908152600f602052604090205460ff165b156113d3575060005b60008115611481576001600160a01b03861660009081526011602052604090205460ff16801561140557506000600e54115b156114215761141a85600e5460646001611689565b9050611463565b6001600160a01b03871660009081526011602052604090205460ff16801561144b57506000600d54115b156114635761146085600d5460646001611689565b90505b80156114745761147487308361153b565b61147e8186611bfc565b94505b61148c87878761153b565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166115615760405162461bcd60e51b815260040161088590611b74565b6001600160a01b0382166115875760405162461bcd60e51b815260040161088590611bb9565b6001600160a01b038316600090815260208190526040902054818110156115ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610885565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610970565b30600090815260208190526040812054908190036116805750565b610cde816116e6565b600080611697868686611844565b905060018360028111156116ad576116ad611c0f565b1480156116ca5750600084806116c5576116c5611c25565b868809115b156116dd576116da600182611b61565b90505b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061171b5761171b611c3b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190611c51565b816001815181106117ab576117ab611c3b565b6001600160a01b0392831660209182029290920101526006546117d19130911684610d3b565b60065460085460405163791ac94760e01b81526001600160a01b039283169263791ac9479261180e92879260009288929116904290600401611c6e565b600060405180830381600087803b15801561182857600080fd5b505af115801561183c573d6000803e3d6000fd5b505050505050565b600080806000198587098587029250828110838203039150508060000361187e5783828161187457611874611c25565b0492505050610824565b8084116118c55760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610885565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060208083528351808285015260005b8181101561195b5785810183015185820160400152820161193f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cde57600080fd5b6000602082840312156119a357600080fd5b81356108248161197c565b600080604083850312156119c157600080fd5b82356119cc8161197c565b946020939093013593505050565b6000806000606084860312156119ef57600080fd5b83356119fa8161197c565b92506020840135611a0a8161197c565b929592945050506040919091013590565b60008060408385031215611a2e57600080fd5b8235611a398161197c565b91506020830135611a498161197c565b809150509250929050565b600060208284031215611a6657600080fd5b5035919050565b8015158114610cde57600080fd5b60008060408385031215611a8e57600080fd5b8235611a998161197c565b91506020830135611a4981611a6d565b60008060008060808587031215611abf57600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680611aef57607f821691505b602082108103611b0f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611b2757600080fd5b5051919050565b600060208284031215611b4057600080fd5b815161082481611a6d565b634e487b7160e01b600052601160045260246000fd5b808201808211156107ff576107ff611b4b565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107ff576107ff611b4b565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c6357600080fd5b81516108248161197c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cbe5784516001600160a01b031683529383019391830191600101611c99565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220374af6e6b8dc8649093e4461f4f1295726986d248d19185cb2c29a18274953a864736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436

-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : team (address): 0xAFb8b41FF795fB65bdF6BB232e177011da1BD436
Arg [2] : Treasury (address): 0xAFb8b41FF795fB65bdF6BB232e177011da1BD436

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436
Arg [2] : 000000000000000000000000afb8b41ff795fb65bdf6bb232e177011da1bd436


Deployed Bytecode Sourcemap

1682:8895:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10405:170:9;;;;;;;;;;-1:-1:-1;10405:170:9;;;;;:::i;:::-;;:::i;:::-;;4444:197:1;;;;;;;;;;-1:-1:-1;4444:197:1;;;;;:::i;:::-;;:::i;:::-;;;1440:14:10;;1433:22;1415:41;;1403:2;1388:18;4444:197:1;1275:187:10;2234:63:9;;;;;;;;;;-1:-1:-1;2234:63:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;1721:41;;;;;;;;;;-1:-1:-1;1721:41:9;;;;-1:-1:-1;;;;;1721:41:9;;;;;;-1:-1:-1;;;;;1658:32:10;;;1640:51;;1628:2;1613:18;1721:41:9;1467:230:10;3255:106:1;;;;;;;;;;-1:-1:-1;3342:12:1;;3255:106;;;1848:25:10;;;1836:2;1821:18;3255:106:1;1702:177:10;5203:256:1;;;;;;;;;;-1:-1:-1;5203:256:1;;;;;:::i;:::-;;:::i;1802:32:9:-;;;;;;;;;;-1:-1:-1;1802:32:9;;;;-1:-1:-1;;;;;1802:32:9;;;10121:278;;;;;;;;;;-1:-1:-1;10121:278:9;;;;;:::i;:::-;;:::i;3104:91:1:-;;;;;;;;;;-1:-1:-1;3104:91:1;;3186:2;3104:36:10;;3092:2;3077:18;3104:91:1;2962:184:10;5854:234:1;;;;;;;;;;-1:-1:-1;5854:234:1;;;;;:::i;:::-;;:::i;1768:28:9:-;;;;;;;;;;-1:-1:-1;1768:28:9;;;;-1:-1:-1;;;;;1768:28:9;;;5683:105;;;;;;;;;;-1:-1:-1;5683:105:9;;;;;:::i;:::-;;:::i;5905:124::-;;;;;;;;;;-1:-1:-1;5905:124:9;;;;;:::i;:::-;-1:-1:-1;;;;;5994:28:9;5971:4;5994:28;;;:19;:28;;;;;;;;;5905:124;2089:28;;;;;;;;;;;;;;;;2018:31;;;;;;;;;;-1:-1:-1;2018:31:9;;;;;;;;;;;3419:125:1;;;;;;;;;;-1:-1:-1;3419:125:1;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:1;3493:7;3519:18;;;;;;;;;;;;3419:125;1824:101:0;;;;;;;;;;;;;:::i;4637:162:9:-;;;;;;;;;;-1:-1:-1;4637:162:9;;;;;:::i;:::-;;:::i;1201:85:0:-;;;;;;;;;;-1:-1:-1;1273:6:0;;-1:-1:-1;;;;;1273:6:0;1201:85;;2369:102:1;;;;;;;;;;;;;:::i;4328:303:9:-;;;;;;;;;;-1:-1:-1;4328:303:9;;;;;:::i;:::-;;:::i;4990:294::-;;;;;;;;;;-1:-1:-1;4990:294:9;;;;;:::i;:::-;;:::i;6575:427:1:-;;;;;;;;;;-1:-1:-1;6575:427:1;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;;;;;-1:-1:-1;3740:189:1;;;;;:::i;:::-;;:::i;2451:57:9:-;;;;;;;;;;-1:-1:-1;2451:57:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;1979:33;;;;;;;;;;-1:-1:-1;1979:33:9;;;;;;;;4805:179;;;;;;;;;;-1:-1:-1;4805:179:9;;;;;:::i;:::-;;:::i;1868:35::-;;;;;;;;;;;;;;;;4107:107;;;;;;;;;;;;;:::i;5794:105::-;;;;;;;;;;-1:-1:-1;5794:105:9;;;;;:::i;:::-;;:::i;2056:27::-;;;;;;;;;;;;;;;;3987:149:1;;;;;;;;;;-1:-1:-1;3987:149:1;;;;;:::i;:::-;;:::i;1909:33:9:-;;;;;;;;;;;;;;;;5480:197;;;;;;;;;;-1:-1:-1;5480:197:9;;;;;:::i;:::-;;:::i;2074:198:0:-;;;;;;;;;;-1:-1:-1;2074:198:0;;;;;:::i;:::-;;:::i;1948:24:9:-;;;;;;;;;;;;;;;;2158:98:1;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;10405:170:9:-;1094:13:0;:11;:13::i;:::-;10479:12:9::1;10497:6;-1:-1:-1::0;;;;;10497:11:9::1;10516:21;10497:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10478:64;;;10560:7;10552:16;;;::::0;::::1;;10468:107;10405:170:::0;:::o;4444:197:1:-;4527:4;719:10:4;4581:32:1;719:10:4;4597:7:1;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:4;5356:38:1;5372:4;719:10:4;5387:6:1;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;5448:4;5441:11;;;5203:256;;;;;;:::o;10121:278:9:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;10209:20:9;::::1;10201:59;;;::::0;-1:-1:-1;;;10201:59:9;;5241:2:10;10201:59:9::1;::::0;::::1;5223:21:10::0;5280:2;5260:18;;;5253:30;5319:28;5299:18;;;5292:56;5365:18;;10201:59:9::1;;;;;;;;;10297:39;::::0;-1:-1:-1;;;10297:39:9;;10330:4:::1;10297:39;::::0;::::1;1640:51:10::0;10270:24:9::1;::::0;-1:-1:-1;;;;;10297:24:9;::::1;::::0;::::1;::::0;1613:18:10;;10297:39:9::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10346:46;::::0;-1:-1:-1;;;10346:46:9;;-1:-1:-1;;;;;5775:32:10;;;10346:46:9::1;::::0;::::1;5757:51:10::0;5824:18;;;5817:34;;;10270:66:9;;-1:-1:-1;10346:23:9;;::::1;::::0;::::1;::::0;5730:18:10;;10346:46:9::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10191:208;10121:278:::0;;:::o;5854:234:1:-;5942:4;719:10:4;5996:64:1;719:10:4;6012:7:1;6049:10;6021:25;719:10:4;6012:7:1;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;5683:105:9:-;1094:13:0;:11;:13::i;:::-;5754:18:9::1;:27:::0;5683:105::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;4637:162:9:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;4746:39:9;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;4746:46:9::1;::::0;::::1;;::::0;;;::::1;::::0;;4637:162::o;2369:102:1:-;2425:13;2457:7;2450:14;;;;;:::i;4328:303:9:-;1094:13:0;:11;:13::i;:::-;4496:20:9::1;:28:::0;;;;4534:9:::1;:22:::0;;;;4567:12:::1;:22:::0;4600:13:::1;:24:::0;4328:303::o;4990:294::-;1094:13:0;:11;:13::i;:::-;5129::9::1;::::0;-1:-1:-1;;;;;5129:13:9;;::::1;5121:21:::0;;::::1;::::0;5100:125:::1;;;::::0;-1:-1:-1;;;5100:125:9;;6576:2:10;5100:125:9::1;::::0;::::1;6558:21:10::0;6615:2;6595:18;;;6588:30;6654:34;6634:18;;;6627:62;6725:27;6705:18;;;6698:55;6770:19;;5100:125:9::1;6374:421:10::0;5100:125:9::1;5236:41;5265:4;5271:5;5236:28;:41::i;6575:427:1:-:0;6668:4;719:10:4;6668:4:1;6749:25;719:10:4;6766:7:1;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:1;;7002:2:10;6784:85:1;;;6984:21:10;7041:2;7021:18;;;7014:30;7080:34;7060:18;;;7053:62;-1:-1:-1;;;7131:18:10;;;7124:35;7176:19;;6784:85:1;6800:401:10;6784:85:1;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;:::-;-1:-1:-1;6991:4:1;;6575:427;-1:-1:-1;;;;6575:427:1:o;3740:189::-;3819:4;719:10:4;3873:28:1;719:10:4;3890:2:1;3894:6;3873:9;:28::i;4805:179:9:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;4889:28:9;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;4889:39:9::1;::::0;::::1;;::::0;;::::1;::::0;;;4943:34;;1415:41:10;;;4943:34:9::1;::::0;1388:18:10;4943:34:9::1;;;;;;;4805:179:::0;;:::o;4107:107::-;1094:13:0;:11;:13::i;:::-;4159::9::1;:20:::0;;-1:-1:-1;;4189:18:9;;;;;4107:107::o;5794:105::-;1094:13:0;:11;:13::i;:::-;5865:9:9::1;:27:::0;;-1:-1:-1;;;;;;5865:27:9::1;-1:-1:-1::0;;;;;5865:27:9;;;::::1;::::0;;;::::1;::::0;;5794:105::o;3987:149:1:-;-1:-1:-1;;;;;4102:18:1;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;5480:197:9:-;1094:13:0;:11;:13::i;:::-;5546::9::1;:20:::0;;-1:-1:-1;;;;;;5546:20:9::1;-1:-1:-1::0;;;;;5546:20:9;::::1;;::::0;;5576:40:::1;5546:20:::0;-1:-1:-1;5576:28:9::1;:40::i;:::-;-1:-1:-1::0;;;;;5626:37:9::1;;::::0;;;:31:::1;:37;::::0;;;;:44;;-1:-1:-1;;5626:44:9::1;5666:4;5626:44;::::0;;5480:197::o;2074:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;7408:2:10;2154:73:0::1;::::0;::::1;7390:21:10::0;7447:2;7427:18;;;7420:30;7486:34;7466:18;;;7459:62;-1:-1:-1;;;7537:18:10;;;7530:36;7583:19;;2154:73:0::1;7206:402:10::0;2154:73:0::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:4;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;7815:2:10;1414:68:0;;;7797:21:10;;;7834:18;;;7827:30;7893:34;7873:18;;;7866:62;7945:18;;1414:68:0;7613:356:10;10457:340:1;-1:-1:-1;;;;;10558:19:1;;10550:68;;;;-1:-1:-1;;;10550:68:1;;8176:2:10;10550:68:1;;;8158:21:10;8215:2;8195:18;;;8188:30;8254:34;8234:18;;;8227:62;-1:-1:-1;;;8305:18:10;;;8298:34;8349:19;;10550:68:1;7974:400:10;10550:68:1;-1:-1:-1;;;;;10636:21:1;;10628:68;;;;-1:-1:-1;;;10628:68:1;;8581:2:10;10628:68:1;;;8563:21:10;8620:2;8600:18;;;8593:30;8659:34;8639:18;;;8632:62;-1:-1:-1;;;8710:18:10;;;8703:32;8752:19;;10628:68:1;8379:398:10;10628:68:1;-1:-1:-1;;;;;10707:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1848:25:10;;;10758:32:1;;1821:18:10;10758:32:1;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:1;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:1;;8984:2:10;11297:68:1;;;8966:21:10;9023:2;9003:18;;;8996:30;9062:31;9042:18;;;9035:59;9111:18;;11297:68:1;8782:353:10;11297:68:1;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;6035:3279:9:-;-1:-1:-1;;;;;6162:18:9;;6154:68;;;;-1:-1:-1;;;6154:68:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;6240:16:9;;6232:64;;;;-1:-1:-1;;;6232:64:9;;;;;;;:::i;:::-;6311:6;6321:1;6311:11;6307:90;;6338:28;6354:4;6360:2;6364:1;6338:15;:28::i;:::-;6035:3279;;;:::o;6307:90::-;1273:6:0;;-1:-1:-1;;;;;6424:15:9;;;1273:6:0;;6424:15:9;;;;:44;;-1:-1:-1;1273:6:0;;-1:-1:-1;;;;;6455:13:9;;;1273:6:0;;6455:13:9;;6424:44;:76;;;;-1:-1:-1;;;;;;6484:16:9;;;;6424:76;:113;;;;-1:-1:-1;;;;;;6516:21:9;;6530:6;6516:21;;6424:113;:138;;;;-1:-1:-1;6554:8:9;;-1:-1:-1;;;6554:8:9;;;;6553:9;6424:138;6407:1435;;;6592:13;;;;6587:198;;-1:-1:-1;;;;;6654:25:9;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;6683:23:9;;;;;;:19;:23;;;;;;;;6654:52;6625:145;;;;-1:-1:-1;;;6625:145:9;;10152:2:10;6625:145:9;;;10134:21:10;10191:2;10171:18;;;10164:30;-1:-1:-1;;;10210:18:10;;;10203:52;10272:18;;6625:145:9;9950:346:10;6625:145:9;-1:-1:-1;;;;;6842:31:9;;;;;;:25;:31;;;;;;;;:87;;;;-1:-1:-1;;;;;;6894:35:9;;;;;;:31;:35;;;;;;;;6893:36;6842:87;6821:1011;;;7001:20;;6991:6;:30;;6962:154;;;;-1:-1:-1;;;6962:154:9;;10503:2:10;6962:154:9;;;10485:21:10;10542:2;10522:18;;;10515:30;10581:34;10561:18;;;10554:62;-1:-1:-1;;;10632:18:10;;;10625:51;10693:19;;6962:154:9;10301:417:10;6962:154:9;7189:9;;-1:-1:-1;;;;;3519:18:1;;3493:7;3519:18;;;;;;;;;;;7163:22:9;;:6;:22;:::i;:::-;:35;;7134:125;;;;-1:-1:-1;;;7134:125:9;;10925:2:10;7134:125:9;;;10907:21:10;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:10;;;10976:49;11042:18;;7134:125:9;10723:343:10;7134:125:9;6821:1011;;;-1:-1:-1;;;;;7336:29:9;;;;;;:25;:29;;;;;;;;:87;;;;-1:-1:-1;;;;;;7386:37:9;;;;;;:31;:37;;;;;;;;7385:38;7336:87;7315:517;;;7495:20;;7485:6;:30;;7456:155;;;;-1:-1:-1;;;7456:155:9;;11273:2:10;7456:155:9;;;11255:21:10;11312:2;11292:18;;;11285:30;11351:34;11331:18;;;11324:62;-1:-1:-1;;;11402:18:10;;;11395:52;11464:19;;7456:155:9;11071:418:10;7315:517:9;-1:-1:-1;;;;;7637:35:9;;;;;;:31;:35;;;;;;;;7632:200;;7747:9;;-1:-1:-1;;;;;3519:18:1;;3493:7;3519:18;;;;;;;;;;;7721:22:9;;:6;:22;:::i;:::-;:35;;7692:125;;;;-1:-1:-1;;;7692:125:9;;10925:2:10;7692:125:9;;;10907:21:10;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:10;;;10976:49;11042:18;;7692:125:9;10723:343:10;7692:125:9;7901:4;7852:28;3519:18:1;;;;;;;;;;;7957::9;;7933:42;;;;;;;8003:34;;-1:-1:-1;8026:11:9;;;;;;;8003:34;:59;;;;-1:-1:-1;8054:8:9;;-1:-1:-1;;;8054:8:9;;;;8053:9;8003:59;:107;;;;-1:-1:-1;;;;;;8079:31:9;;;;;;:25;:31;;;;;;;;8078:32;8003:107;:149;;;;-1:-1:-1;;;;;;8127:25:9;;;;;;:19;:25;;;;;;;;8126:26;8003:149;:189;;;;-1:-1:-1;;;;;;8169:23:9;;;;;;:19;:23;;;;;;;;8168:24;8003:189;7986:312;;;8217:8;:15;;-1:-1:-1;;;;8217:15:9;-1:-1:-1;;;8217:15:9;;;8247:9;:7;:9::i;:::-;8271:8;:16;;-1:-1:-1;;;;8271:16:9;;;7986:312;8324:8;;-1:-1:-1;;;;;8431:25:9;;8308:12;8431:25;;;:19;:25;;;;;;8324:8;-1:-1:-1;;;8324:8:9;;;;;8323:9;;8431:25;;:52;;-1:-1:-1;;;;;;8460:23:9;;;;;;:19;:23;;;;;;;;8431:52;8427:98;;;-1:-1:-1;8509:5:9;8427:98;8535:12;8638:7;8634:630;;;-1:-1:-1;;;;;8685:29:9;;;;;;:25;:29;;;;;;;;:50;;;;;8734:1;8718:13;;:17;8685:50;8681:441;;;8762:155;8795:6;8823:13;;8858:3;8883:16;8762:11;:155::i;:::-;8755:162;;8681:441;;;-1:-1:-1;;;;;8973:31:9;;;;;;:25;:31;;;;;;;;:51;;;;;9023:1;9008:12;;:16;8973:51;8969:153;;;9051:56;9063:6;9071:12;;9085:3;9090:16;9051:11;:56::i;:::-;9044:63;;8969:153;9140:8;;9136:89;;9168:42;9184:4;9198;9205;9168:15;:42::i;:::-;9239:14;9249:4;9239:14;;:::i;:::-;;;8634:630;9274:33;9290:4;9296:2;9300:6;9274:15;:33::i;:::-;6144:3170;;;;6035:3279;;;:::o;2426:187:0:-;2518:6;;;-1:-1:-1;;;;;2534:17:0;;;-1:-1:-1;;;;;;2534:17:0;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;5290:184:9:-;-1:-1:-1;;;;;5372:31:9;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;5372:39:9;;;;;;;;;;5427:40;;5372:39;;:31;5427:40;;;5290:184;;:::o;7456:788:1:-;-1:-1:-1;;;;;7552:18:1;;7544:68;;;;-1:-1:-1;;;7544:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;7630:16:1;;7622:64;;;;-1:-1:-1;;;7622:64:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;7768:15:1;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:1;;11829:2:10;7793:72:1;;;11811:21:10;11868:2;11848:18;;;11841:30;11907:34;11887:18;;;11880:62;-1:-1:-1;;;11958:18:10;;;11951:36;12004:19;;7793:72:1;11627:402:10;7793:72:1;-1:-1:-1;;;;;7899:15:1;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1848:25:10;;;8114:13:1;;8163:26;;1821:18:10;8163:26:1;;;;;;;8200:37;6035:3279:9;9912:203;9993:4;9949:23;3519:18:1;;;;;;;;;;;;10013:20:9;;;10009:57;;10049:7;9912:203::o;10009:57::-;10075:33;10092:15;10075:16;:33::i;6012:299:5:-;6113:7;6132:14;6149:25;6156:1;6159;6162:11;6149:6;:25::i;:::-;6132:42;-1:-1:-1;6200:11:5;6188:8;:23;;;;;;;;:::i;:::-;;:56;;;;;6243:1;6228:11;6215:25;;;;;:::i;:::-;6225:1;6222;6215:25;:29;6188:56;6184:98;;;6260:11;6270:1;6260:11;;:::i;:::-;;;6184:98;6298:6;6012:299;-1:-1:-1;;;;;6012:299:5:o;9320:586:9:-;9468:16;;;9482:1;9468:16;;;;;;;;9444:21;;9468:16;;;;;;;;;;-1:-1:-1;9468:16:9;9444:40;;9512:4;9494;9499:1;9494:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9494:23:9;;;:7;;;;;;;;;;:23;;;;9537:15;;:22;;;-1:-1:-1;;;9537:22:9;;;;:15;;;;;:20;;:22;;;;;9494:7;;9537:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9527:4;9532:1;9527:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9527:32:9;;;:7;;;;;;;;;:32;9602:15;;9570:62;;9587:4;;9602:15;9620:11;9570:8;:62::i;:::-;9668:15;;9851:9;;9668:231;;-1:-1:-1;;;9668:231:9;;-1:-1:-1;;;;;9668:15:9;;;;:66;;:231;;9748:11;;9668:15;;9833:4;;9851:9;;;9874:15;;9668:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9375:531;9320:586;:::o;1667:4213:5:-;1749:14;;;-1:-1:-1;;2286:1:5;2283;2276:20;2329:1;2326;2322:9;2313:18;;2384:5;2380:2;2377:13;2369:5;2365:2;2361:14;2357:34;2348:43;;;2486:5;2495:1;2486:10;2482:368;;2824:11;2816:5;:19;;;;;:::i;:::-;;2809:26;;;;;;2482:368;2974:5;2960:11;:19;2952:53;;;;-1:-1:-1;;;2952:53:5;;14013:2:10;2952:53:5;;;13995:21:10;14052:2;14032:18;;;14025:30;-1:-1:-1;;;14071:18:10;;;14064:51;14132:18;;2952:53:5;13811:345:10;2952:53:5;3261:17;3396:11;3393:1;3390;3383:25;4774:1;3944;3929:12;;:16;;3914:32;;4049:22;;;;4755:1;:15;;4754:21;;5007;;;5003:25;;4992:36;5076:21;;;5072:25;;5061:36;5146:21;;;5142:25;;5131:36;5216:21;;;5212:25;;5201:36;5286:21;;;5282:25;;5271:36;5357:21;;;5353:25;;;5342:36;;;3899:12;4294;;;4290:23;;;4286:31;;;3510:20;;;3499:32;;;4406:12;;;;3557:21;;4147:16;;;;4397:21;;;;5821:15;;;-1:-1:-1;;;;1667:4213:5:o;14:548:10:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:10;;632:42;;622:70;;688:1;685;678:12;703:247;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:10:o;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:10;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:10;2315:18;;;;2302:32;;1884:456::o;2569:388::-;2637:6;2645;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;2753:9;2740:23;2772:31;2797:5;2772:31;:::i;:::-;2822:5;-1:-1:-1;2879:2:10;2864:18;;2851:32;2892:33;2851:32;2892:33;:::i;:::-;2944:7;2934:17;;;2569:388;;;;;:::o;3359:180::-;3418:6;3471:2;3459:9;3450:7;3446:23;3442:32;3439:52;;;3487:1;3484;3477:12;3439:52;-1:-1:-1;3510:23:10;;3359:180;-1:-1:-1;3359:180:10:o;3544:118::-;3630:5;3623:13;3616:21;3609:5;3606:32;3596:60;;3652:1;3649;3642:12;3667:382;3732:6;3740;3793:2;3781:9;3772:7;3768:23;3764:32;3761:52;;;3809:1;3806;3799:12;3761:52;3848:9;3835:23;3867:31;3892:5;3867:31;:::i;:::-;3917:5;-1:-1:-1;3974:2:10;3959:18;;3946:32;3987:30;3946:32;3987:30;:::i;4054:385::-;4140:6;4148;4156;4164;4217:3;4205:9;4196:7;4192:23;4188:33;4185:53;;;4234:1;4231;4224:12;4185:53;-1:-1:-1;;4257:23:10;;;4327:2;4312:18;;4299:32;;-1:-1:-1;4378:2:10;4363:18;;4350:32;;4429:2;4414:18;4401:32;;-1:-1:-1;4054:385:10;-1:-1:-1;4054:385:10:o;4444:380::-;4523:1;4519:12;;;;4566;;;4587:61;;4641:4;4633:6;4629:17;4619:27;;4587:61;4694:2;4686:6;4683:14;4663:18;4660:38;4657:161;;4740:10;4735:3;4731:20;4728:1;4721:31;4775:4;4772:1;4765:15;4803:4;4800:1;4793:15;4657:161;;4444:380;;;:::o;5394:184::-;5464:6;5517:2;5505:9;5496:7;5492:23;5488:32;5485:52;;;5533:1;5530;5523:12;5485:52;-1:-1:-1;5556:16:10;;5394:184;-1:-1:-1;5394:184:10:o;5862:245::-;5929:6;5982:2;5970:9;5961:7;5957:23;5953:32;5950:52;;;5998:1;5995;5988:12;5950:52;6030:9;6024:16;6049:28;6071:5;6049:28;:::i;6112:127::-;6173:10;6168:3;6164:20;6161:1;6154:31;6204:4;6201:1;6194:15;6228:4;6225:1;6218:15;6244:125;6309:9;;;6330:10;;;6327:36;;;6343:18;;:::i;9140:401::-;9342:2;9324:21;;;9381:2;9361:18;;;9354:30;9420:34;9415:2;9400:18;;9393:62;-1:-1:-1;;;9486:2:10;9471:18;;9464:35;9531:3;9516:19;;9140:401::o;9546:399::-;9748:2;9730:21;;;9787:2;9767:18;;;9760:30;9826:34;9821:2;9806:18;;9799:62;-1:-1:-1;;;9892:2:10;9877:18;;9870:33;9935:3;9920:19;;9546:399::o;11494:128::-;11561:9;;;11582:11;;;11579:37;;;11596:18;;:::i;12034:127::-;12095:10;12090:3;12086:20;12083:1;12076:31;12126:4;12123:1;12116:15;12150:4;12147:1;12140:15;12166:127;12227:10;12222:3;12218:20;12215:1;12208:31;12258:4;12255:1;12248:15;12282:4;12279:1;12272:15;12430:127;12491:10;12486:3;12482:20;12479:1;12472:31;12522:4;12519:1;12512:15;12546:4;12543:1;12536:15;12562:251;12632:6;12685:2;12673:9;12664:7;12660:23;12656:32;12653:52;;;12701:1;12698;12691:12;12653:52;12733:9;12727:16;12752:31;12777:5;12752:31;:::i;12818:988::-;13088:4;13136:3;13125:9;13121:19;13167:6;13156:9;13149:25;13193:2;13231:6;13226:2;13215:9;13211:18;13204:34;13274:3;13269:2;13258:9;13254:18;13247:31;13298:6;13333;13327:13;13364:6;13356;13349:22;13402:3;13391:9;13387:19;13380:26;;13441:2;13433:6;13429:15;13415:29;;13462:1;13472:195;13486:6;13483:1;13480:13;13472:195;;;13551:13;;-1:-1:-1;;;;;13547:39:10;13535:52;;13642:15;;;;13607:12;;;;13583:1;13501:9;13472:195;;;-1:-1:-1;;;;;;;13723:32:10;;;;13718:2;13703:18;;13696:60;-1:-1:-1;;;13787:3:10;13772:19;13765:35;13684:3;12818:988;-1:-1:-1;;;12818:988:10:o

Swarm Source

ipfs://374af6e6b8dc8649093e4461f4f1295726986d248d19185cb2c29a18274953a8
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.