ETH Price: $2,848.83 (-11.05%)
Gas: 14 Gwei

Token

Make American Rich Again (MARA)
 

Overview

Max Total Supply

100,000,000 MARA

Holders

76

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 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:
MARA

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-20
*/

// SPDX-License-Identifier: MIT
/**

Make American Rich Again - Donald J Trump

https://www.youtube.com/watch?v=pfl0u7QSHAg

https://x.com/mara_erc
https://t.me/MARA_erc
https://marameme.wtf/


**/

pragma solidity ^0.8.16;

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function allPairsLength() external view returns (uint256);

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

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

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

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

/**
 * @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 decimals places of the token.
     */
    function decimals() external view returns (uint8);

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

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

/**
 * @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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

contract MARA is ERC20, Ownable {
    // TOKENOMICS START ==========================================================>
    string private _name = unicode"Make American Rich Again";
    string private _symbol = unicode"MARA";
    uint8 private _decimals = 9;
    uint256 private _supply = 100_000_000;
    uint256 public taxBuyForMarketing = 20;
    uint256 public taxSellForMarketing = 20;
    uint256 public maxWalletAmount = ((_supply * 1) / 100) * 10**_decimals; // init max wallet 1%
    address public marketingWallet = 0x15c67cf2Cf8897EBDd6Ed626f8f932163c766aD3;
    // TOKENOMICS END ============================================================>

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) private _isExcludedFromFee;

    uint256 private _numTokensSellToAddToETH =
        ((_supply * 2) / 10_000) * 10**_decimals;
    bool private _swapTaxAll = false;

    bool inSwapAndLiquify;

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

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

    constructor() ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply * 10**_decimals));
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

        if (
            (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify
        ) {
            if (from != uniswapV2Pair) {
                uint256 contractLiquidityBalance = balanceOf(address(this));
                if ((contractLiquidityBalance) >= _numTokensSellToAddToETH) {
                    if (_swapTaxAll) {
                        _swapTokensForEth(contractLiquidityBalance);
                    } else {
                        _swapTokensForEth(
                            min(_numTokensSellToAddToETH, amount)
                        );
                    }

                    bool sent = payable(marketingWallet).send(
                        address(this).balance
                    );
                    require(sent, "Failed to send ETH");
                }
            }

            uint256 transferAmount;
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                transferAmount = amount;
            } else {
                if (from == uniswapV2Pair) {
                    require(
                        (amount + balanceOf(to)) <= maxWalletAmount,
                        "ERC20: balance amount exceeded max wallet amount limit"
                    );
                }
                uint256 marketingShare = 0;
                if (from == uniswapV2Pair) {
                    marketingShare = ((amount * taxBuyForMarketing) / 100);
                } else {
                    marketingShare = ((amount * taxSellForMarketing) / 100);
                }

                transferAmount = amount - (marketingShare);

                if (marketingShare > 0)
                    super._transfer(from, address(this), (marketingShare));
            }
            super._transfer(from, to, transferAmount);
        } else {
            super._transfer(from, to, amount);
        }
    }

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

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

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

    function changeMarketingWallet(address newWallet)
        public
        onlyOwner
        returns (bool)
    {
        marketingWallet = newWallet;
        return true;
    }

    function changeTaxForMarketing(
        uint256 _taxBuyForMarketing,
        uint256 _taxSellForMarketing
    ) public onlyOwner returns (bool) {
        require(
            (_taxBuyForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        require(
            (_taxSellForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        taxBuyForMarketing = _taxBuyForMarketing;
        taxSellForMarketing = _taxSellForMarketing;

        return true;
    }

    function removeLimit() public onlyOwner returns (bool) {
        maxWalletAmount = _supply * 10**_decimals;
        _swapTaxAll = true;
        return true;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxBuyForMarketing","type":"uint256"},{"internalType":"uint256","name":"_taxSellForMarketing","type":"uint256"}],"name":"changeTaxForMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052601860c09081527f4d616b6520416d65726963616e205269636820416761696e000000000000000060e05260069061003d90826105fe565b506040805180820190915260048152634d41524160e01b602082015260079061006690826105fe565b506008805460ff191660099081179091556305f5e10081556014600a818155600b9190915561009591906107b3565b606460095460016100a691906107c8565b6100b091906107df565b6100ba91906107c8565b600c55600d80546001600160a01b0319167315c67cf2cf8897ebdd6ed626f8f932163c766ad31790556008546100f49060ff16600a6107b3565b612710600954600261010691906107c8565b61011091906107df565b61011a91906107c8565b600f556010805460ff19169055348015610132575f80fd5b50600680546101409061057a565b80601f016020809104026020016040519081016040528092919081815260200182805461016c9061057a565b80156101b75780601f1061018e576101008083540402835291602001916101b7565b820191905f5260205f20905b81548152906001019060200180831161019a57829003601f168201915b5050505050600780546101c99061057a565b80601f01602080910402602001604051908101604052809291908181526020018280546101f59061057a565b80156102405780601f1061021757610100808354040283529160200191610240565b820191905f5260205f20905b81548152906001019060200180831161022357829003601f168201915b5050505050816003908161025491906105fe565b50600461026182826105fe565b50505061027a61027561045060201b60201c565b610454565b6008546102a39033906102919060ff16600a6107b3565b60095461029e91906107c8565b6104a5565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031b91906107fe565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610366573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038a91906107fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156103d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f891906107fe565b6001600160a01b0390811660a05290811660808190525f908152600e60205260408082208054600160ff1991821681179092553384528284208054821683179055600d54909416835291208054909216179055610837565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166104ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546105109190610824565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061058e57607f821691505b6020821081036105ac57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105f957805f5260205f20601f840160051c810160208510156105d75750805b601f840160051c820191505b818110156105f6575f81556001016105e3565b50505b505050565b81516001600160401b0381111561061757610617610566565b61062b81610625845461057a565b846105b2565b602080601f83116001811461065e575f84156106475750858301515b5f19600386901b1c1916600185901b1785556106b5565b5f85815260208120601f198616915b8281101561068c5788860151825594840194600190910190840161066d565b50858210156106a957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561070b57815f19048211156106f1576106f16106bd565b808516156106fe57918102915b93841c93908002906106d6565b509250929050565b5f82610721575060016107ad565b8161072d57505f6107ad565b8160018114610743576002811461074d57610769565b60019150506107ad565b60ff84111561075e5761075e6106bd565b50506001821b6107ad565b5060208310610133831016604e8410600b841016171561078c575081810a6107ad565b61079683836106d1565b805f19048211156107a9576107a96106bd565b0290505b92915050565b5f6107c160ff841683610713565b9392505050565b80820281158282048414176107ad576107ad6106bd565b5f826107f957634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561080e575f80fd5b81516001600160a01b03811681146107c1575f80fd5b808201808211156107ad576107ad6106bd565b60805160a0516114d86108905f395f81816102950152818161096d015281816109a8015281816109f701528181610b2d0152610bf901525f81816101b401528181610db701528181610e6e0152610e9d01526114d85ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b919061102f565b60405180910390f35b34801561017f575f80fd5b5061019361018e366004611078565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b506101936102263660046110a2565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110e0565b61050b565b348015610270575f80fd5b5061019361027f366004611078565b61056e565b34801561028f575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e5366004611100565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105cd565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105e0565b348015610370575f80fd5b5061019361037f366004611078565b6105ef565b34801561038f575f80fd5b5061019361039e366004611078565b610669565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e7366004611100565b610676565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b36600461111b565b6106a4565b34801561042b575f80fd5b5061031361043a366004611100565b6106ce565b60606003805461044e90611152565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611152565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610747565b60019150505b92915050565b5f336104f585828561086a565b6105008585856108e2565b506001949350505050565b5f610514610ca8565b600a83111561053e5760405162461bcd60e51b81526004016105359061118a565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b81526004016105359061118a565b50600a91909155600b55600190565b5f336104dc81858561058083836106a4565b61058a91906111ea565b610747565b5f610598610ca8565b6008546105a99060ff16600a6112dd565b6009546105b691906112eb565b600c55506010805460ff1916600190811790915590565b6105d5610ca8565b6105de5f610d02565b565b60606004805461044e90611152565b5f33816105fc82866106a4565b90508381101561065c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610747565b5f336104dc8185856108e2565b5f61067f610ca8565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106d6610ca8565b6001600160a01b03811661073b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61074481610d02565b50565b6001600160a01b0383166107a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b03821661080a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61087584846106a4565b90505f1981146108dc57818110156108cf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108dc8484848403610747565b50505050565b6001600160a01b0383166109085760405162461bcd60e51b815260040161053590611302565b6001600160a01b03821661092e5760405162461bcd60e51b815260040161053590611347565b8061094d846001600160a01b03165f9081526020819052604090205490565b101561096b5760405162461bcd60e51b81526004016105359061138a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806109dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80156109f05750601054610100900460ff16155b15610c98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610ae257305f90815260208190526040902054600f548110610ae05760105460ff1615610a5f57610a5a81610d53565b610a73565b610a73610a6e600f5484610f2e565b610d53565b600d546040515f916001600160a01b0316904780156108fc029184818181858888f19350505050905080610ade5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610b1f57506001600160a01b0383165f908152600e602052604090205460ff165b15610b2b575080610c8d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610bf657600c546001600160a01b0384165f90815260208190526040902054610b8990846111ea565b1115610bf65760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610c51576064600a5484610c4091906112eb565b610c4a91906113d0565b9050610c6e565b6064600b5484610c6191906112eb565b610c6b91906113d0565b90505b610c7881846113ef565b91508015610c8b57610c8b853083610f45565b505b6108dc848483610f45565b610ca3838383610f45565b505050565b6005546001600160a01b031633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6010805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9557610d95611402565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e359190611416565b81600181518110610e4857610e48611402565b60200260200101906001600160a01b031690816001600160a01b031681525050610e93307f000000000000000000000000000000000000000000000000000000000000000084610747565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663791ac947835f8430610ed24261012c6111ea565b6040518663ffffffff1660e01b8152600401610ef2959493929190611431565b5f604051808303815f87803b158015610f09575f80fd5b505af1158015610f1b573d5f803e3d5ffd5b50506010805461ff001916905550505050565b5f818311610f3c5782610f3e565b815b9392505050565b6001600160a01b038316610f6b5760405162461bcd60e51b815260040161053590611302565b6001600160a01b038216610f915760405162461bcd60e51b815260040161053590611347565b6001600160a01b0383165f9081526020819052604090205481811015610fc95760405162461bcd60e51b81526004016105359061138a565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610744575f80fd5b5f8060408385031215611089575f80fd5b823561109481611064565b946020939093013593505050565b5f805f606084860312156110b4575f80fd5b83356110bf81611064565b925060208401356110cf81611064565b929592945050506040919091013590565b5f80604083850312156110f1575f80fd5b50508035926020909101359150565b5f60208284031215611110575f80fd5b8135610f3e81611064565b5f806040838503121561112c575f80fd5b823561113781611064565b9150602083013561114781611064565b809150509250929050565b600181811c9082168061116657607f821691505b60208210810361118457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111d6565b600181815b8085111561123757815f190482111561121d5761121d6111d6565b8085161561122a57918102915b93841c9390800290611202565b509250929050565b5f8261124d575060016104e2565b8161125957505f6104e2565b816001811461126f576002811461127957611295565b60019150506104e2565b60ff84111561128a5761128a6111d6565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112b8575081810a6104e2565b6112c283836111fd565b805f19048211156112d5576112d56111d6565b029392505050565b5f610f3e60ff84168361123f565b80820281158282048414176104e2576104e26111d6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f826113ea57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111d6565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611426575f80fd5b8151610f3e81611064565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114815784516001600160a01b03168352938301939183019160010161145c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204a7b017c9eae39041d43c23af00f77cd5d6eea9af3e47305cc341843ac7aaf8564736f6c63430008190033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b919061102f565b60405180910390f35b34801561017f575f80fd5b5061019361018e366004611078565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b506101936102263660046110a2565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110e0565b61050b565b348015610270575f80fd5b5061019361027f366004611078565b61056e565b34801561028f575f80fd5b506101d67f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae81565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e5366004611100565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105cd565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105e0565b348015610370575f80fd5b5061019361037f366004611078565b6105ef565b34801561038f575f80fd5b5061019361039e366004611078565b610669565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e7366004611100565b610676565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b36600461111b565b6106a4565b34801561042b575f80fd5b5061031361043a366004611100565b6106ce565b60606003805461044e90611152565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611152565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610747565b60019150505b92915050565b5f336104f585828561086a565b6105008585856108e2565b506001949350505050565b5f610514610ca8565b600a83111561053e5760405162461bcd60e51b81526004016105359061118a565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b81526004016105359061118a565b50600a91909155600b55600190565b5f336104dc81858561058083836106a4565b61058a91906111ea565b610747565b5f610598610ca8565b6008546105a99060ff16600a6112dd565b6009546105b691906112eb565b600c55506010805460ff1916600190811790915590565b6105d5610ca8565b6105de5f610d02565b565b60606004805461044e90611152565b5f33816105fc82866106a4565b90508381101561065c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610747565b5f336104dc8185856108e2565b5f61067f610ca8565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106d6610ca8565b6001600160a01b03811661073b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61074481610d02565b50565b6001600160a01b0383166107a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b03821661080a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61087584846106a4565b90505f1981146108dc57818110156108cf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108dc8484848403610747565b50505050565b6001600160a01b0383166109085760405162461bcd60e51b815260040161053590611302565b6001600160a01b03821661092e5760405162461bcd60e51b815260040161053590611347565b8061094d846001600160a01b03165f9081526020819052604090205490565b101561096b5760405162461bcd60e51b81526004016105359061138a565b7f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae6001600160a01b0316836001600160a01b031614806109dc57507f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae6001600160a01b0316826001600160a01b0316145b80156109f05750601054610100900460ff16155b15610c98577f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae6001600160a01b0316836001600160a01b031614610ae257305f90815260208190526040902054600f548110610ae05760105460ff1615610a5f57610a5a81610d53565b610a73565b610a73610a6e600f5484610f2e565b610d53565b600d546040515f916001600160a01b0316904780156108fc029184818181858888f19350505050905080610ade5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610b1f57506001600160a01b0383165f908152600e602052604090205460ff165b15610b2b575080610c8d565b7f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae6001600160a01b0316846001600160a01b031603610bf657600c546001600160a01b0384165f90815260208190526040902054610b8990846111ea565b1115610bf65760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f0000000000000000000000005717ef5c94fb3083ea5cafe6fefcc0ad500ccaae6001600160a01b0316856001600160a01b031603610c51576064600a5484610c4091906112eb565b610c4a91906113d0565b9050610c6e565b6064600b5484610c6191906112eb565b610c6b91906113d0565b90505b610c7881846113ef565b91508015610c8b57610c8b853083610f45565b505b6108dc848483610f45565b610ca3838383610f45565b505050565b6005546001600160a01b031633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6010805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9557610d95611402565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e359190611416565b81600181518110610e4857610e48611402565b60200260200101906001600160a01b031690816001600160a01b031681525050610e93307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610747565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663791ac947835f8430610ed24261012c6111ea565b6040518663ffffffff1660e01b8152600401610ef2959493929190611431565b5f604051808303815f87803b158015610f09575f80fd5b505af1158015610f1b573d5f803e3d5ffd5b50506010805461ff001916905550505050565b5f818311610f3c5782610f3e565b815b9392505050565b6001600160a01b038316610f6b5760405162461bcd60e51b815260040161053590611302565b6001600160a01b038216610f915760405162461bcd60e51b815260040161053590611347565b6001600160a01b0383165f9081526020819052604090205481811015610fc95760405162461bcd60e51b81526004016105359061138a565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610744575f80fd5b5f8060408385031215611089575f80fd5b823561109481611064565b946020939093013593505050565b5f805f606084860312156110b4575f80fd5b83356110bf81611064565b925060208401356110cf81611064565b929592945050506040919091013590565b5f80604083850312156110f1575f80fd5b50508035926020909101359150565b5f60208284031215611110575f80fd5b8135610f3e81611064565b5f806040838503121561112c575f80fd5b823561113781611064565b9150602083013561114781611064565b809150509250929050565b600181811c9082168061116657607f821691505b60208210810361118457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111d6565b600181815b8085111561123757815f190482111561121d5761121d6111d6565b8085161561122a57918102915b93841c9390800290611202565b509250929050565b5f8261124d575060016104e2565b8161125957505f6104e2565b816001811461126f576002811461127957611295565b60019150506104e2565b60ff84111561128a5761128a6111d6565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112b8575081810a6104e2565b6112c283836111fd565b805f19048211156112d5576112d56111d6565b029392505050565b5f610f3e60ff84168361123f565b80820281158282048414176104e2576104e26111d6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f826113ea57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111d6565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611426575f80fd5b8151610f3e81611064565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114815784516001600160a01b03168352938301939183019160010161145c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204a7b017c9eae39041d43c23af00f77cd5d6eea9af3e47305cc341843ac7aaf8564736f6c63430008190033

Deployed Bytecode Sourcemap

23650:5733:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14565:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16839:244;;;;;;;;;;-1:-1:-1;16839:244:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;16839:244:0;893:187:1;24319:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1275:32:1;;;1257:51;;1245:2;1230:18;24319:51:0;1085:229:1;15703:110:0;;;;;;;;;;-1:-1:-1;15793:12:0;;15703:110;;;1465:25:1;;;1453:2;1438:18;15703:110:0;1319:177:1;17663:297:0;;;;;;;;;;-1:-1:-1;17663:297:0;;;;;:::i;:::-;;:::i;15546:92::-;;;;;;;;;;-1:-1:-1;15546:92:0;;15629:1;2104:36:1;;2092:2;2077:18;15546:92:0;1962:184:1;28621:548:0;;;;;;;;;;-1:-1:-1;28621:548:0;;;;;:::i;:::-;;:::i;19379:272::-;;;;;;;;;;-1:-1:-1;19379:272:0;;;;;:::i;:::-;;:::i;24377:38::-;;;;;;;;;;;;;;;29177:166;;;;;;;;;;;;;:::i;14730:177::-;;;;;;;;;;-1:-1:-1;14730:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;14881:18:0;14849:7;14881:18;;;;;;;;;;;;14730:177;13020:103;;;;;;;;;;;;;:::i;:::-;;24150:75;;;;;;;;;;-1:-1:-1;24150:75:0;;;;-1:-1:-1;;;;;24150:75:0;;;12372:87;;;;;;;;;;-1:-1:-1;12445:6:0;;-1:-1:-1;;;;;12445:6:0;12372:87;;14389:106;;;;;;;;;;;;;:::i;18463:507::-;;;;;;;;;;-1:-1:-1;18463:507:0;;;;;:::i;:::-;;:::i;16283:236::-;;;;;;;;;;-1:-1:-1;16283:236:0;;;;;:::i;:::-;;:::i;24051:70::-;;;;;;;;;;;;;;;;23960:38;;;;;;;;;;;;;;;;28431:182;;;;;;;;;;-1:-1:-1;28431:182:0;;;;;:::i;:::-;;:::i;24005:39::-;;;;;;;;;;;;;;;;15876:201;;;;;;;;;;-1:-1:-1;15876:201:0;;;;;:::i;:::-;;:::i;13278:238::-;;;;;;;;;;-1:-1:-1;13278:238:0;;;;;:::i;:::-;;:::i;14565:102::-;14621:13;14654:5;14647:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14565:102;:::o;16839:244::-;16960:4;11245:10;17021:32;11245:10;17037:7;17046:6;17021:8;:32::i;:::-;17071:4;17064:11;;;16839:244;;;;;:::o;17663:297::-;17796:4;11245:10;17854:38;17870:4;11245:10;17885:6;17854:15;:38::i;:::-;17903:27;17913:4;17919:2;17923:6;17903:9;:27::i;:::-;-1:-1:-1;17948:4:0;;17663:297;-1:-1:-1;;;;17663:297:0:o;28621:548::-;28762:4;12258:13;:11;:13::i;:::-;28826:2:::1;28802:19;28801:27;;28779:121;;;;-1:-1:-1::0;;;28779:121:0::1;;;;;;;:::i;:::-;;;;;;;;;28959:2;28934:20;28933:28;;28911:122;;;;-1:-1:-1::0;;;28911:122:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;29044:18:0::1;:40:::0;;;;29095:19:::1;:42:::0;29157:4:::1;::::0;28621:548::o;19379:272::-;19496:4;11245:10;19557:64;11245:10;19573:7;19610:10;19582:25;11245:10;19573:7;19582:9;:25::i;:::-;:38;;;;:::i;:::-;19557:8;:64::i;29177:166::-;29226:4;12258:13;:11;:13::i;:::-;29275:9:::1;::::0;29271:13:::1;::::0;29275:9:::1;;29271:2;:13;:::i;:::-;29261:7;;:23;;;;:::i;:::-;29243:15;:41:::0;-1:-1:-1;29295:11:0::1;:18:::0;;-1:-1:-1;;29295:18:0::1;29309:4;29295:18:::0;;::::1;::::0;;;29177:166;:::o;13020:103::-;12258:13;:11;:13::i;:::-;13085:30:::1;13112:1;13085:18;:30::i;:::-;13020:103::o:0;14389:106::-;14447:13;14480:7;14473:14;;;;;:::i;18463:507::-;18585:4;11245:10;18585:4;18673:25;11245:10;18690:7;18673:9;:25::i;:::-;18646:52;;18751:15;18731:16;:35;;18709:122;;;;-1:-1:-1;;;18709:122:0;;6069:2:1;18709:122:0;;;6051:21:1;6108:2;6088:18;;;6081:30;6147:34;6127:18;;;6120:62;-1:-1:-1;;;6198:18:1;;;6191:35;6243:19;;18709:122:0;5867:401:1;18709:122:0;18867:60;18876:5;18883:7;18911:15;18892:16;:34;18867:8;:60::i;16283:236::-;16400:4;11245:10;16461:28;11245:10;16478:2;16482:6;16461:9;:28::i;28431:182::-;28534:4;12258:13;:11;:13::i;:::-;-1:-1:-1;28556:15:0::1;:27:::0;;-1:-1:-1;;;;;28556:27:0;::::1;-1:-1:-1::0;;;;;;28556:27:0;;::::1;;::::0;;;28431:182;;;:::o;15876:201::-;-1:-1:-1;;;;;16042:18:0;;;16010:7;16042:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15876:201::o;13278:238::-;12258:13;:11;:13::i;:::-;-1:-1:-1;;;;;13381:22:0;::::1;13359:110;;;::::0;-1:-1:-1;;;13359:110:0;;6475:2:1;13359:110:0::1;::::0;::::1;6457:21:1::0;6514:2;6494:18;;;6487:30;6553:34;6533:18;;;6526:62;-1:-1:-1;;;6604:18:1;;;6597:36;6650:19;;13359:110:0::1;6273:402:1::0;13359:110:0::1;13480:28;13499:8;13480:18;:28::i;:::-;13278:238:::0;:::o;21686:380::-;-1:-1:-1;;;;;21822:19:0;;21814:68;;;;-1:-1:-1;;;21814:68:0;;6882:2:1;21814:68:0;;;6864:21:1;6921:2;6901:18;;;6894:30;6960:34;6940:18;;;6933:62;-1:-1:-1;;;7011:18:1;;;7004:34;7055:19;;21814:68:0;6680:400:1;21814:68:0;-1:-1:-1;;;;;21901:21:0;;21893:68;;;;-1:-1:-1;;;21893:68:0;;7287:2:1;21893:68:0;;;7269:21:1;7326:2;7306:18;;;7299:30;7365:34;7345:18;;;7338:62;-1:-1:-1;;;7416:18:1;;;7409:32;7458:19;;21893:68:0;7085:398:1;21893:68:0;-1:-1:-1;;;;;21974:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22026:32;;1465:25:1;;;22026:32:0;;1438:18:1;22026:32:0;;;;;;;21686:380;;;:::o;22357:502::-;22492:24;22519:25;22529:5;22536:7;22519:9;:25::i;:::-;22492:52;;-1:-1:-1;;22559:16:0;:37;22555:297;;22659:6;22639:16;:26;;22613:117;;;;-1:-1:-1;;;22613:117:0;;7690:2:1;22613:117:0;;;7672:21:1;7729:2;7709:18;;;7702:30;7768:31;7748:18;;;7741:59;7817:18;;22613:117:0;7488:353:1;22613:117:0;22774:51;22783:5;22790:7;22818:6;22799:16;:25;22774:8;:51::i;:::-;22481:378;22357:502;;;:::o;25613:2306::-;-1:-1:-1;;;;;25745:18:0;;25737:68;;;;-1:-1:-1;;;25737:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25824:16:0;;25816:64;;;;-1:-1:-1;;;25816:64:0;;;;;;;:::i;:::-;25932:6;25913:15;25923:4;-1:-1:-1;;;;;14881:18:0;14849:7;14881:18;;;;;;;;;;;;14730:177;25913:15;:25;;25891:113;;;;-1:-1:-1;;;25891:113:0;;;;;;;:::i;:::-;26044:13;-1:-1:-1;;;;;26036:21:0;:4;-1:-1:-1;;;;;26036:21:0;;:44;;;;26067:13;-1:-1:-1;;;;;26061:19:0;:2;-1:-1:-1;;;;;26061:19:0;;26036:44;26035:67;;;;-1:-1:-1;26086:16:0;;;;;;;26085:17;26035:67;26017:1895;;;26141:13;-1:-1:-1;;;;;26133:21:0;:4;-1:-1:-1;;;;;26133:21:0;;26129:716;;26228:4;26175:32;14881:18;;;;;;;;;;;26287:24;;26257:54;;26253:577;;26340:11;;;;26336:280;;;26380:43;26398:24;26380:17;:43::i;:::-;26336:280;;;26480:112;26528:37;26532:24;;26558:6;26528:3;:37::i;:::-;26480:17;:112::i;:::-;26660:15;;26652:100;;26640:9;;-1:-1:-1;;;;;26660:15:0;;26708:21;26652:100;;;;;26640:9;26652:100;26640:9;26652:100;26708:21;26660:15;26652:100;;;;;;;26640:112;;26783:4;26775:35;;;;-1:-1:-1;;;26775:35:0;;9265:2:1;26775:35:0;;;9247:21:1;9304:2;9284:18;;;9277:30;-1:-1:-1;;;9323:18:1;;;9316:48;9381:18;;26775:35:0;9063:342:1;26775:35:0;26313:517;26253:577;26156:689;26129:716;-1:-1:-1;;;;;26902:24:0;;26861:22;26902:24;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;26930:22:0;;;;;;:18;:22;;;;;;;;26902:50;26898:881;;;-1:-1:-1;26990:6:0;26898:881;;;27049:13;-1:-1:-1;;;;;27041:21:0;:4;-1:-1:-1;;;;;27041:21:0;;27037:253;;27149:15;;-1:-1:-1;;;;;14881:18:0;;14849:7;14881:18;;;;;;;;;;;27122:22;;:6;:22;:::i;:::-;27121:43;;27087:183;;;;-1:-1:-1;;;27087:183:0;;9612:2:1;27087:183:0;;;9594:21:1;9651:2;9631:18;;;9624:30;9690:34;9670:18;;;9663:62;-1:-1:-1;;;9741:18:1;;;9734:52;9803:19;;27087:183:0;9410:418:1;27087:183:0;27308:22;27365:13;-1:-1:-1;;;;;27357:21:0;:4;-1:-1:-1;;;;;27357:21:0;;27353:228;;27453:3;27431:18;;27422:6;:27;;;;:::i;:::-;27421:35;;;;:::i;:::-;27403:54;;27353:228;;;27557:3;27534:19;;27525:6;:28;;;;:::i;:::-;27524:36;;;;:::i;:::-;27506:55;;27353:228;27618:25;27628:14;27618:6;:25;:::i;:::-;27601:42;-1:-1:-1;27668:18:0;;27664:99;;27709:54;27725:4;27739;27747:14;27709:15;:54::i;:::-;27018:761;26898:881;27793:41;27809:4;27815:2;27819:14;27793:15;:41::i;26017:1895::-;27867:33;27883:4;27889:2;27893:6;27867:15;:33::i;:::-;25613:2306;;;:::o;12537:132::-;12445:6;;-1:-1:-1;;;;;12445:6:0;11245:10;12601:23;12593:68;;;;-1:-1:-1;;;12593:68:0;;10390:2:1;12593:68:0;;;10372:21:1;;;10409:18;;;10402:30;10468:34;10448:18;;;10441:62;10520:18;;12593:68:0;10188:356:1;13676:191:0;13769:6;;;-1:-1:-1;;;;;13786:17:0;;;-1:-1:-1;;;;;;13786:17:0;;;;;;;13819:40;;13769:6;;;13786:17;13769:6;;13819:40;;13750:16;;13819:40;13739:128;13676:191;:::o;27927:496::-;24821:16;:23;;-1:-1:-1;;24821:23:0;;;;;28030:16:::1;::::0;;28044:1:::1;28030:16:::0;;;;;::::1;::::0;;-1:-1:-1;;28030:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;28030:16:0::1;28006:40;;28075:4;28057;28062:1;28057:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;28057:23:0::1;;;-1:-1:-1::0;;;;;28057:23:0::1;;;::::0;::::1;28101:15;-1:-1:-1::0;;;;;28101:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28091:4;28096:1;28091:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;28091:32:0::1;;;-1:-1:-1::0;;;;;28091:32:0::1;;;::::0;::::1;28136:62;28153:4;28168:15;28186:11;28136:8;:62::i;:::-;-1:-1:-1::0;;;;;28211:15:0::1;:66;;28292:11:::0;28318:1:::1;28334:4:::0;28361::::1;28382:21;:15;28400:3;28382:21;:::i;:::-;28211:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24867:16:0;:24;;-1:-1:-1;;24867:24:0;;;-1:-1:-1;;;;27927:496:0:o;25498:107::-;25555:7;25587:1;25583;:5;25582:15;;25596:1;25582:15;;;25592:1;25582:15;25575:22;25498:107;-1:-1:-1;;;25498:107:0:o;22867:776::-;-1:-1:-1;;;;;22998:18:0;;22990:68;;;;-1:-1:-1;;;22990:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23077:16:0;;23069:64;;;;-1:-1:-1;;;23069:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23168:15:0;;23146:19;23168:15;;;;;;;;;;;23216:21;;;;23194:109;;;;-1:-1:-1;;;23194:109:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23339:15:0;;;:9;:15;;;;;;;;;;;23357:20;;;23339:38;;23557:13;;;;;;;;;;:23;;;;;;23609:26;;1465:25:1;;;23557:13:0;;23609:26;;1438:18:1;23609:26:0;;;;;;;22979:664;22867:776;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1501:456::-;1578:6;1586;1594;1647:2;1635:9;1626:7;1622:23;1618:32;1615:52;;;1663:1;1660;1653:12;1615:52;1702:9;1689:23;1721:31;1746:5;1721:31;:::i;:::-;1771:5;-1:-1:-1;1828:2:1;1813:18;;1800:32;1841:33;1800:32;1841:33;:::i;:::-;1501:456;;1893:7;;-1:-1:-1;;;1947:2:1;1932:18;;;;1919:32;;1501:456::o;2151:248::-;2219:6;2227;2280:2;2268:9;2259:7;2255:23;2251:32;2248:52;;;2296:1;2293;2286:12;2248:52;-1:-1:-1;;2319:23:1;;;2389:2;2374:18;;;2361:32;;-1:-1:-1;2151:248:1:o;2612:247::-;2671:6;2724:2;2712:9;2703:7;2699:23;2695:32;2692:52;;;2740:1;2737;2730:12;2692:52;2779:9;2766:23;2798:31;2823:5;2798:31;:::i;2864:388::-;2932:6;2940;2993:2;2981:9;2972:7;2968:23;2964:32;2961:52;;;3009:1;3006;2999:12;2961:52;3048:9;3035:23;3067:31;3092:5;3067:31;:::i;:::-;3117:5;-1:-1:-1;3174:2:1;3159:18;;3146:32;3187:33;3146:32;3187:33;:::i;:::-;3239:7;3229:17;;;2864:388;;;;;:::o;3257:380::-;3336:1;3332:12;;;;3379;;;3400:61;;3454:4;3446:6;3442:17;3432:27;;3400:61;3507:2;3499:6;3496:14;3476:18;3473:38;3470:161;;3553:10;3548:3;3544:20;3541:1;3534:31;3588:4;3585:1;3578:15;3616:4;3613:1;3606:15;3470:161;;3257:380;;;:::o;3642:408::-;3844:2;3826:21;;;3883:2;3863:18;;;3856:30;3922:34;3917:2;3902:18;;3895:62;-1:-1:-1;;;3988:2:1;3973:18;;3966:42;4040:3;4025:19;;3642:408::o;4055:127::-;4116:10;4111:3;4107:20;4104:1;4097:31;4147:4;4144:1;4137:15;4171:4;4168:1;4161:15;4187:125;4252:9;;;4273:10;;;4270:36;;;4286:18;;:::i;4317:416::-;4406:1;4443:5;4406:1;4457:270;4478:7;4468:8;4465:21;4457:270;;;4537:4;4533:1;4529:6;4525:17;4519:4;4516:27;4513:53;;;4546:18;;:::i;:::-;4596:7;4586:8;4582:22;4579:55;;;4616:16;;;;4579:55;4695:22;;;;4655:15;;;;4457:270;;;4461:3;4317:416;;;;;:::o;4738:806::-;4787:5;4817:8;4807:80;;-1:-1:-1;4858:1:1;4872:5;;4807:80;4906:4;4896:76;;-1:-1:-1;4943:1:1;4957:5;;4896:76;4988:4;5006:1;5001:59;;;;5074:1;5069:130;;;;4981:218;;5001:59;5031:1;5022:10;;5045:5;;;5069:130;5106:3;5096:8;5093:17;5090:43;;;5113:18;;:::i;:::-;-1:-1:-1;;5169:1:1;5155:16;;5184:5;;4981:218;;5283:2;5273:8;5270:16;5264:3;5258:4;5255:13;5251:36;5245:2;5235:8;5232:16;5227:2;5221:4;5218:12;5214:35;5211:77;5208:159;;;-1:-1:-1;5320:19:1;;;5352:5;;5208:159;5399:34;5424:8;5418:4;5399:34;:::i;:::-;5469:6;5465:1;5461:6;5457:19;5448:7;5445:32;5442:58;;;5480:18;;:::i;:::-;5518:20;;4738:806;-1:-1:-1;;;4738:806:1:o;5549:140::-;5607:5;5636:47;5677:4;5667:8;5663:19;5657:4;5636:47;:::i;5694:168::-;5767:9;;;5798;;5815:15;;;5809:22;;5795:37;5785:71;;5836:18;;:::i;7846:401::-;8048:2;8030:21;;;8087:2;8067:18;;;8060:30;8126:34;8121:2;8106:18;;8099:62;-1:-1:-1;;;8192:2:1;8177:18;;8170:35;8237:3;8222:19;;7846:401::o;8252:399::-;8454:2;8436:21;;;8493:2;8473:18;;;8466:30;8532:34;8527:2;8512:18;;8505:62;-1:-1:-1;;;8598:2:1;8583:18;;8576:33;8641:3;8626:19;;8252:399::o;8656:402::-;8858:2;8840:21;;;8897:2;8877:18;;;8870:30;8936:34;8931:2;8916:18;;8909:62;-1:-1:-1;;;9002:2:1;8987:18;;8980:36;9048:3;9033:19;;8656:402::o;9833:217::-;9873:1;9899;9889:132;;9943:10;9938:3;9934:20;9931:1;9924:31;9978:4;9975:1;9968:15;10006:4;10003:1;9996:15;9889:132;-1:-1:-1;10035:9:1;;9833:217::o;10055:128::-;10122:9;;;10143:11;;;10140:37;;;10157:18;;:::i;10681:127::-;10742:10;10737:3;10733:20;10730:1;10723:31;10773:4;10770:1;10763:15;10797:4;10794:1;10787:15;10813:251;10883:6;10936:2;10924:9;10915:7;10911:23;10907:32;10904:52;;;10952:1;10949;10942:12;10904:52;10984:9;10978:16;11003:31;11028:5;11003:31;:::i;11069:980::-;11331:4;11379:3;11368:9;11364:19;11410:6;11399:9;11392:25;11436:2;11474:6;11469:2;11458:9;11454:18;11447:34;11517:3;11512:2;11501:9;11497:18;11490:31;11541:6;11576;11570:13;11607:6;11599;11592:22;11645:3;11634:9;11630:19;11623:26;;11684:2;11676:6;11672:15;11658:29;;11705:1;11715:195;11729:6;11726:1;11723:13;11715:195;;;11794:13;;-1:-1:-1;;;;;11790:39:1;11778:52;;11885:15;;;;11850:12;;;;11826:1;11744:9;11715:195;;;-1:-1:-1;;;;;;;11966:32:1;;;;11961:2;11946:18;;11939:60;-1:-1:-1;;;12030:3:1;12015:19;12008:35;11927:3;11069:980;-1:-1:-1;;;11069:980:1:o

Swarm Source

ipfs://4a7b017c9eae39041d43c23af00f77cd5d6eea9af3e47305cc341843ac7aaf85
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.