ETH Price: $3,342.09 (-3.64%)
Gas: 2 Gwei

Token

Bionic Inu (Bionic)
 

Overview

Max Total Supply

1,000,000,000,000 Bionic

Holders

162

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000603470943705 Bionic

Value
$0.00
0x79ced82968abe262be509cf5bd4b42bfd7f02919
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:
BionicInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-14
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.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);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


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

// File: @openzeppelin/contracts/utils/Context.sol


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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @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].
 *
 * 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}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() 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 {}
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


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

// File: contracts/Bionic Inu.sol

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


 
interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
 
contract BionicInu is ERC20, Ownable{
 
    IRouter public router;
    address public pair;
 
    bool private swapping;
    bool public swapEnabled;
    bool public initialized;
 
    mapping (address => bool) public noFees;
    mapping (address => bool) public isBot;
 
    uint256 public swapThreshold = 1_000_000 * 10**18;
    uint256 public maxTxAmount = 20_000_000_000 * 10**18;
    uint256 public maxWalletAmount = 20_000_000_000 * 10**18;

    address public marketingWallet = 0x1aA4DEd359A82847685F06CF5830F4a6Dde7E055;
 
    struct Taxes {
        uint128 buy;
        uint128 sell;
    }

    Taxes public taxes = Taxes(5, 5);
 
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
  
    constructor() ERC20("Bionic Inu", "Bionic") {
        _mint(msg.sender, 1e12 * 10 ** 18);
        noFees[msg.sender] = true;
        noFees[address(this)] = true;
        noFees[marketingWallet] = true;
    }

    function init(address _router, address _pair) external onlyOwner{
        require(!initialized,"Already initialized");
        router = IRouter(_router);
        pair = _pair;
        swapEnabled = true;
        initialized = true;
    }
 
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if(!noFees[sender] && !noFees[recipient] && !swapping){
            require(initialized, "Not initialized yet");
            require(!isBot[sender] && !isBot[recipient], "Bye Bye Bot");
            require(amount <= maxTxAmount, "Exceeding maxTxAmount");
            if(recipient != pair) require(balanceOf(recipient) + amount <= maxWalletAmount, "Exceeding maxWalletAmount");
        }
 
        uint256 fee;
 
        if (swapping || noFees[sender] || noFees[recipient] || (sender != pair && recipient != pair)) fee = 0;
 
        else {
            if(pair == recipient) fee = amount * taxes.sell / 100;
            else if(pair == sender) fee = amount * taxes.buy / 100;
        }
    
        if (swapEnabled && !swapping && sender != pair && fee > 0) translateFees();
 
        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);
 
    }
 
    function translateFees() private inSwap {
        if (balanceOf(address(this)) >= swapThreshold) {
            swapTokensForETH(swapThreshold);
        }
    }
 
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
 
        _approve(address(this), address(router), tokenAmount);
 
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, marketingWallet, block.timestamp);

    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }
 
    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount * 10**18;
    }

    function setTaxes(uint128 _buy, uint128 _sell) external onlyOwner{
        taxes = Taxes(_buy, _sell);
    }
 
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }

    function updateMaxTxAmount(uint256 new_amount) external onlyOwner {
        maxTxAmount = new_amount * 10**18;
    }

    function updateMaxWalletAmount(uint256 new_amount) external onlyOwner {
        maxWalletAmount = new_amount * 10**18;
    }

    function updateRouterAndPair(address _router, address _pair) external onlyOwner{
        router = IRouter(_router);
        pair = _pair;
    }
 
    function updateNoFees(address _address, bool state) external onlyOwner {
        noFees[_address] = state;
    }

    function setBot(address[] calldata bots, bool status) external onlyOwner{
        uint256 size = bots.length;
        for(uint256 i; i < size;){
            isBot[bots[i]] = status;
            unchecked{ ++i; }
        }
    }
 
    function rescueTokens(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }
 
    function rescueETH(uint256 weiAmount) external onlyOwner{
        (bool success, ) = payable(owner()).call{value: weiAmount}("");
        require(success, "Error sending eth");
    }
 
    // fallbacks
    receive() external payable {}
 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_buy","type":"uint128"},{"internalType":"uint128","name":"_sell","type":"uint128"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint128","name":"buy","type":"uint128"},{"internalType":"uint128","name":"sell","type":"uint128"}],"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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateNoFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69d3c21bcecceda1000000600a556b409f9cbc7c4a04c220000000600b819055600c55600d80546001600160a01b031916731aa4ded359a82847685f06cf5830f4a6dde7e05517905560c06040526005608081905260a052700500000000000000000000000000000005600e553480156200007957600080fd5b506040518060400160405280600a81526020016942696f6e696320496e7560b01b8152506040518060400160405280600681526020016542696f6e696360d01b8152508160039081620000cd919062000326565b506004620000dc828262000326565b505050620000f9620000f36200016160201b60201c565b62000165565b62000112336c0c9f2c9cd04674edea40000000620001b7565b336000908152600860205260408082208054600160ff1991821681179092553084528284208054821683179055600d546001600160a01b0316845291909220805490911690911790556200041a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002125760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002269190620003f2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002ad57607f821691505b602082108103620002ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027d57600081815260208120601f850160051c81016020861015620002fd5750805b601f850160051c820191505b818110156200031e5782815560010162000309565b505050505050565b81516001600160401b0381111562000342576200034262000282565b6200035a8162000353845462000298565b84620002d4565b602080601f831160018114620003925760008415620003795750858301515b600019600386901b1c1916600185901b1785556200031e565b600085815260208120601f198616915b82811015620003c357888601518255948401946001909101908401620003a2565b5085821015620003e25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200041457634e487b7160e01b600052601160045260246000fd5b92915050565b611ae3806200042a6000396000f3fe60806040526004361061021e5760003560e01c8063728f8eea11610123578063a9059cbb116100ab578063e01af92c1161006f578063e01af92c14610687578063f09a4016146106a7578063f2fde38b146106c7578063f887ea40146106e7578063fe0738911461070757600080fd5b8063a9059cbb146105f1578063aa4bde2814610611578063aacebbe314610627578063c18bc19514610647578063dd62ed3e1461066757600080fd5b806395d89b41116100f257806395d89b411461055c5780639d0014b1146105715780639e252f0014610591578063a457c2d7146105b1578063a8aa1b31146105d157600080fd5b8063728f8eea146104a557806375f0a874146104f05780638c0b5e22146105285780638da5cb5b1461053e57600080fd5b806339509351116101a6578063573761981161017557806357376198146103f95780636256d181146104195780636ddd17131461043957806370a082311461045a578063715018a61461049057600080fd5b8063395093511461036957806339efcf9e146103895780633bbac579146103a957806340b28c2f146103d957600080fd5b8063158ef93e116101ed578063158ef93e146102c7578063174351e6146102e857806318160ddd1461031857806323b872dd1461032d578063313ce5671461034d57600080fd5b80630445b6671461022a57806304fb2ebe1461025357806306fdde0314610275578063095ea7b31461029757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240600a5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5061027361026e3660046116e5565b610727565b005b34801561028157600080fd5b5061028a610761565b60405161024a9190611718565b3480156102a357600080fd5b506102b76102b236600461177b565b6107f3565b604051901515815260200161024a565b3480156102d357600080fd5b506007546102b790600160b01b900460ff1681565b3480156102f457600080fd5b506102b76103033660046117a7565b60086020526000908152604090205460ff1681565b34801561032457600080fd5b50600254610240565b34801561033957600080fd5b506102b76103483660046117cb565b61080d565b34801561035957600080fd5b506040516012815260200161024a565b34801561037557600080fd5b506102b761038436600461177b565b610831565b34801561039557600080fd5b506102736103a436600461181a565b610853565b3480156103b557600080fd5b506102b76103c43660046117a7565b60096020526000908152604090205460ff1681565b3480156103e557600080fd5b506102736103f43660046118a0565b6108ca565b34801561040557600080fd5b5061027361041436600461177b565b610900565b34801561042557600080fd5b506102736104343660046118d9565b61099f565b34801561044557600080fd5b506007546102b790600160a81b900460ff1681565b34801561046657600080fd5b506102406104753660046117a7565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102736109bf565b3480156104b157600080fd5b50600e546104d0906001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161024a565b3480156104fc57600080fd5b50600d54610510906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561053457600080fd5b50610240600b5481565b34801561054a57600080fd5b506005546001600160a01b0316610510565b34801561056857600080fd5b5061028a6109d3565b34801561057d57600080fd5b5061027361058c3660046118d9565b6109e2565b34801561059d57600080fd5b506102736105ac3660046118d9565b610a02565b3480156105bd57600080fd5b506102b76105cc36600461177b565b610abb565b3480156105dd57600080fd5b50600754610510906001600160a01b031681565b3480156105fd57600080fd5b506102b761060c36600461177b565b610b36565b34801561061d57600080fd5b50610240600c5481565b34801561063357600080fd5b506102736106423660046117a7565b610b44565b34801561065357600080fd5b506102736106623660046118d9565b610b6e565b34801561067357600080fd5b506102406106823660046118a0565b610b8e565b34801561069357600080fd5b506102736106a23660046118f2565b610bb9565b3480156106b357600080fd5b506102736106c23660046118a0565b610bdf565b3480156106d357600080fd5b506102736106e23660046117a7565b610c86565b3480156106f357600080fd5b50600654610510906001600160a01b031681565b34801561071357600080fd5b5061027361072236600461190f565b610cff565b61072f610d32565b604080518082019091526001600160801b03928316808252919092166020909201829052600160801b90910217600e55565b6060600380546107709061193d565b80601f016020809104026020016040519081016040528092919081815260200182805461079c9061193d565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b600033610801818585610d8c565b60019150505b92915050565b60003361081b858285610eb0565b610826858585610f2a565b506001949350505050565b6000336108018185856108448383610b8e565b61084e919061198d565b610d8c565b61085b610d32565b8160005b818110156108c357826009600087878581811061087e5761087e6119a0565b905060200201602081019061089391906117a7565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560010161085f565b5050505050565b6108d2610d32565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610908610d32565b816001600160a01b031663a9059cbb6109296005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a91906119b6565b505050565b6109a7610d32565b6109b981670de0b6b3a76400006119d3565b600b5550565b6109c7610d32565b6109d1600061131f565b565b6060600480546107709061193d565b6109ea610d32565b6109fc81670de0b6b3a76400006119d3565b600a5550565b610a0a610d32565b6000610a1e6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a6d565b606091505b5050905080610ab75760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee440e6cadcc8d2dcce40cae8d607b1b60448201526064015b60405180910390fd5b5050565b60003381610ac98286610b8e565b905083811015610b295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aae565b6108268286868403610d8c565b600033610801818585610f2a565b610b4c610d32565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610b76610d32565b610b8881670de0b6b3a76400006119d3565b600c5550565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610bc1610d32565b60078054911515600160a81b0260ff60a81b19909216919091179055565b610be7610d32565b600754600160b01b900460ff1615610c375760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610aae565b600680546001600160a01b0319166001600160a01b0393841617905560078054600160b01b600160a81b93909416600161ff0160a01b0319909116179190911760ff60b01b1916919091179055565b610c8e610d32565b6001600160a01b038116610cf35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aae565b610cfc8161131f565b50565b610d07610d32565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aae565b6001600160a01b038316610dee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aae565b6001600160a01b038216610e4f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aae565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610ebc8484610b8e565b90506000198114610f245781811015610f175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610aae565b610f248484848403610d8c565b50505050565b60008111610f8c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610aae565b6001600160a01b03831660009081526008602052604090205460ff16158015610fce57506001600160a01b03821660009081526008602052604090205460ff16155b8015610fe45750600754600160a01b900460ff16155b1561118e57600754600160b01b900460ff166110385760405162461bcd60e51b8152602060048201526013602482015272139bdd081a5b9a5d1a585b1a5e9959081e595d606a1b6044820152606401610aae565b6001600160a01b03831660009081526009602052604090205460ff1615801561107a57506001600160a01b03821660009081526009602052604090205460ff16155b6110b45760405162461bcd60e51b815260206004820152600b60248201526a109e5948109e5948109bdd60aa1b6044820152606401610aae565b600b548111156110fe5760405162461bcd60e51b8152602060048201526015602482015274115e18d959591a5b99c81b585e151e105b5bdd5b9d605a1b6044820152606401610aae565b6007546001600160a01b0383811691161461118e57600c5481611136846001600160a01b031660009081526020819052604090205490565b611140919061198d565b111561118e5760405162461bcd60e51b815260206004820152601960248201527f457863656564696e67206d617857616c6c6574416d6f756e74000000000000006044820152606401610aae565b600754600090600160a01b900460ff16806111c157506001600160a01b03841660009081526008602052604090205460ff165b806111e457506001600160a01b03831660009081526008602052604090205460ff165b8061121657506007546001600160a01b0385811691161480159061121657506007546001600160a01b03848116911614155b15611223575060006112a4565b6007546001600160a01b0380851691160361126957600e5460649061125890600160801b90046001600160801b0316846119d3565b61126291906119ea565b90506112a4565b6007546001600160a01b038086169116036112a457600e54606490611297906001600160801b0316846119d3565b6112a191906119ea565b90505b600754600160a81b900460ff1680156112c75750600754600160a01b900460ff16155b80156112e157506007546001600160a01b03858116911614155b80156112ed5750600081115b156112fa576112fa611371565b61130e84846113098486611a0c565b6113c7565b8015610f2457610f248430836113c7565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166109d1576007805460ff60a01b1916600160a01b179055600a5430600090815260208190526040902054106113b8576113b8600a5461156b565b6007805460ff60a01b19169055565b6001600160a01b03831661142b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aae565b6001600160a01b03821661148d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aae565b6001600160a01b038316600090815260208190526040902054818110156115055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aae565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f24565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115a0576115a06119a0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190611a1f565b81600181518110611630576116306119a0565b6001600160a01b0392831660209182029290920101526006546116569130911684610d8c565b600654600d5460405163791ac94760e01b81526001600160a01b039283169263791ac9479261169392879260009288929116904290600401611a3c565b600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b505050505050565b80356001600160801b03811681146116e057600080fd5b919050565b600080604083850312156116f857600080fd5b611701836116c9565b915061170f602084016116c9565b90509250929050565b600060208083528351808285015260005b8181101561174557858101830151858201604001528201611729565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cfc57600080fd5b6000806040838503121561178e57600080fd5b823561179981611766565b946020939093013593505050565b6000602082840312156117b957600080fd5b81356117c481611766565b9392505050565b6000806000606084860312156117e057600080fd5b83356117eb81611766565b925060208401356117fb81611766565b929592945050506040919091013590565b8015158114610cfc57600080fd5b60008060006040848603121561182f57600080fd5b833567ffffffffffffffff8082111561184757600080fd5b818601915086601f83011261185b57600080fd5b81358181111561186a57600080fd5b8760208260051b850101111561187f57600080fd5b602092830195509350508401356118958161180c565b809150509250925092565b600080604083850312156118b357600080fd5b82356118be81611766565b915060208301356118ce81611766565b809150509250929050565b6000602082840312156118eb57600080fd5b5035919050565b60006020828403121561190457600080fd5b81356117c48161180c565b6000806040838503121561192257600080fd5b823561192d81611766565b915060208301356118ce8161180c565b600181811c9082168061195157607f821691505b60208210810361197157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561080757610807611977565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119c857600080fd5b81516117c48161180c565b808202811582820484141761080757610807611977565b600082611a0757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561080757610807611977565b600060208284031215611a3157600080fd5b81516117c481611766565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a8c5784516001600160a01b031683529383019391830191600101611a67565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202db8c1112f99c38831740b0a3771c62b97c69b0051f80b1af7112f9f6916649364736f6c63430008110033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063728f8eea11610123578063a9059cbb116100ab578063e01af92c1161006f578063e01af92c14610687578063f09a4016146106a7578063f2fde38b146106c7578063f887ea40146106e7578063fe0738911461070757600080fd5b8063a9059cbb146105f1578063aa4bde2814610611578063aacebbe314610627578063c18bc19514610647578063dd62ed3e1461066757600080fd5b806395d89b41116100f257806395d89b411461055c5780639d0014b1146105715780639e252f0014610591578063a457c2d7146105b1578063a8aa1b31146105d157600080fd5b8063728f8eea146104a557806375f0a874146104f05780638c0b5e22146105285780638da5cb5b1461053e57600080fd5b806339509351116101a6578063573761981161017557806357376198146103f95780636256d181146104195780636ddd17131461043957806370a082311461045a578063715018a61461049057600080fd5b8063395093511461036957806339efcf9e146103895780633bbac579146103a957806340b28c2f146103d957600080fd5b8063158ef93e116101ed578063158ef93e146102c7578063174351e6146102e857806318160ddd1461031857806323b872dd1461032d578063313ce5671461034d57600080fd5b80630445b6671461022a57806304fb2ebe1461025357806306fdde0314610275578063095ea7b31461029757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240600a5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5061027361026e3660046116e5565b610727565b005b34801561028157600080fd5b5061028a610761565b60405161024a9190611718565b3480156102a357600080fd5b506102b76102b236600461177b565b6107f3565b604051901515815260200161024a565b3480156102d357600080fd5b506007546102b790600160b01b900460ff1681565b3480156102f457600080fd5b506102b76103033660046117a7565b60086020526000908152604090205460ff1681565b34801561032457600080fd5b50600254610240565b34801561033957600080fd5b506102b76103483660046117cb565b61080d565b34801561035957600080fd5b506040516012815260200161024a565b34801561037557600080fd5b506102b761038436600461177b565b610831565b34801561039557600080fd5b506102736103a436600461181a565b610853565b3480156103b557600080fd5b506102b76103c43660046117a7565b60096020526000908152604090205460ff1681565b3480156103e557600080fd5b506102736103f43660046118a0565b6108ca565b34801561040557600080fd5b5061027361041436600461177b565b610900565b34801561042557600080fd5b506102736104343660046118d9565b61099f565b34801561044557600080fd5b506007546102b790600160a81b900460ff1681565b34801561046657600080fd5b506102406104753660046117a7565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102736109bf565b3480156104b157600080fd5b50600e546104d0906001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161024a565b3480156104fc57600080fd5b50600d54610510906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561053457600080fd5b50610240600b5481565b34801561054a57600080fd5b506005546001600160a01b0316610510565b34801561056857600080fd5b5061028a6109d3565b34801561057d57600080fd5b5061027361058c3660046118d9565b6109e2565b34801561059d57600080fd5b506102736105ac3660046118d9565b610a02565b3480156105bd57600080fd5b506102b76105cc36600461177b565b610abb565b3480156105dd57600080fd5b50600754610510906001600160a01b031681565b3480156105fd57600080fd5b506102b761060c36600461177b565b610b36565b34801561061d57600080fd5b50610240600c5481565b34801561063357600080fd5b506102736106423660046117a7565b610b44565b34801561065357600080fd5b506102736106623660046118d9565b610b6e565b34801561067357600080fd5b506102406106823660046118a0565b610b8e565b34801561069357600080fd5b506102736106a23660046118f2565b610bb9565b3480156106b357600080fd5b506102736106c23660046118a0565b610bdf565b3480156106d357600080fd5b506102736106e23660046117a7565b610c86565b3480156106f357600080fd5b50600654610510906001600160a01b031681565b34801561071357600080fd5b5061027361072236600461190f565b610cff565b61072f610d32565b604080518082019091526001600160801b03928316808252919092166020909201829052600160801b90910217600e55565b6060600380546107709061193d565b80601f016020809104026020016040519081016040528092919081815260200182805461079c9061193d565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b600033610801818585610d8c565b60019150505b92915050565b60003361081b858285610eb0565b610826858585610f2a565b506001949350505050565b6000336108018185856108448383610b8e565b61084e919061198d565b610d8c565b61085b610d32565b8160005b818110156108c357826009600087878581811061087e5761087e6119a0565b905060200201602081019061089391906117a7565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560010161085f565b5050505050565b6108d2610d32565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610908610d32565b816001600160a01b031663a9059cbb6109296005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a91906119b6565b505050565b6109a7610d32565b6109b981670de0b6b3a76400006119d3565b600b5550565b6109c7610d32565b6109d1600061131f565b565b6060600480546107709061193d565b6109ea610d32565b6109fc81670de0b6b3a76400006119d3565b600a5550565b610a0a610d32565b6000610a1e6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a6d565b606091505b5050905080610ab75760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee440e6cadcc8d2dcce40cae8d607b1b60448201526064015b60405180910390fd5b5050565b60003381610ac98286610b8e565b905083811015610b295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aae565b6108268286868403610d8c565b600033610801818585610f2a565b610b4c610d32565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610b76610d32565b610b8881670de0b6b3a76400006119d3565b600c5550565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610bc1610d32565b60078054911515600160a81b0260ff60a81b19909216919091179055565b610be7610d32565b600754600160b01b900460ff1615610c375760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610aae565b600680546001600160a01b0319166001600160a01b0393841617905560078054600160b01b600160a81b93909416600161ff0160a01b0319909116179190911760ff60b01b1916919091179055565b610c8e610d32565b6001600160a01b038116610cf35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aae565b610cfc8161131f565b50565b610d07610d32565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aae565b6001600160a01b038316610dee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aae565b6001600160a01b038216610e4f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aae565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610ebc8484610b8e565b90506000198114610f245781811015610f175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610aae565b610f248484848403610d8c565b50505050565b60008111610f8c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610aae565b6001600160a01b03831660009081526008602052604090205460ff16158015610fce57506001600160a01b03821660009081526008602052604090205460ff16155b8015610fe45750600754600160a01b900460ff16155b1561118e57600754600160b01b900460ff166110385760405162461bcd60e51b8152602060048201526013602482015272139bdd081a5b9a5d1a585b1a5e9959081e595d606a1b6044820152606401610aae565b6001600160a01b03831660009081526009602052604090205460ff1615801561107a57506001600160a01b03821660009081526009602052604090205460ff16155b6110b45760405162461bcd60e51b815260206004820152600b60248201526a109e5948109e5948109bdd60aa1b6044820152606401610aae565b600b548111156110fe5760405162461bcd60e51b8152602060048201526015602482015274115e18d959591a5b99c81b585e151e105b5bdd5b9d605a1b6044820152606401610aae565b6007546001600160a01b0383811691161461118e57600c5481611136846001600160a01b031660009081526020819052604090205490565b611140919061198d565b111561118e5760405162461bcd60e51b815260206004820152601960248201527f457863656564696e67206d617857616c6c6574416d6f756e74000000000000006044820152606401610aae565b600754600090600160a01b900460ff16806111c157506001600160a01b03841660009081526008602052604090205460ff165b806111e457506001600160a01b03831660009081526008602052604090205460ff165b8061121657506007546001600160a01b0385811691161480159061121657506007546001600160a01b03848116911614155b15611223575060006112a4565b6007546001600160a01b0380851691160361126957600e5460649061125890600160801b90046001600160801b0316846119d3565b61126291906119ea565b90506112a4565b6007546001600160a01b038086169116036112a457600e54606490611297906001600160801b0316846119d3565b6112a191906119ea565b90505b600754600160a81b900460ff1680156112c75750600754600160a01b900460ff16155b80156112e157506007546001600160a01b03858116911614155b80156112ed5750600081115b156112fa576112fa611371565b61130e84846113098486611a0c565b6113c7565b8015610f2457610f248430836113c7565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166109d1576007805460ff60a01b1916600160a01b179055600a5430600090815260208190526040902054106113b8576113b8600a5461156b565b6007805460ff60a01b19169055565b6001600160a01b03831661142b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aae565b6001600160a01b03821661148d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aae565b6001600160a01b038316600090815260208190526040902054818110156115055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aae565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f24565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115a0576115a06119a0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190611a1f565b81600181518110611630576116306119a0565b6001600160a01b0392831660209182029290920101526006546116569130911684610d8c565b600654600d5460405163791ac94760e01b81526001600160a01b039283169263791ac9479261169392879260009288929116904290600401611a3c565b600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b505050505050565b80356001600160801b03811681146116e057600080fd5b919050565b600080604083850312156116f857600080fd5b611701836116c9565b915061170f602084016116c9565b90509250929050565b600060208083528351808285015260005b8181101561174557858101830151858201604001528201611729565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cfc57600080fd5b6000806040838503121561178e57600080fd5b823561179981611766565b946020939093013593505050565b6000602082840312156117b957600080fd5b81356117c481611766565b9392505050565b6000806000606084860312156117e057600080fd5b83356117eb81611766565b925060208401356117fb81611766565b929592945050506040919091013590565b8015158114610cfc57600080fd5b60008060006040848603121561182f57600080fd5b833567ffffffffffffffff8082111561184757600080fd5b818601915086601f83011261185b57600080fd5b81358181111561186a57600080fd5b8760208260051b850101111561187f57600080fd5b602092830195509350508401356118958161180c565b809150509250925092565b600080604083850312156118b357600080fd5b82356118be81611766565b915060208301356118ce81611766565b809150509250929050565b6000602082840312156118eb57600080fd5b5035919050565b60006020828403121561190457600080fd5b81356117c48161180c565b6000806040838503121561192257600080fd5b823561192d81611766565b915060208301356118ce8161180c565b600181811c9082168061195157607f821691505b60208210810361197157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561080757610807611977565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119c857600080fd5b81516117c48161180c565b808202811582820484141761080757610807611977565b600082611a0757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561080757610807611977565b600060208284031215611a3157600080fd5b81516117c481611766565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a8c5784516001600160a01b031683529383019391830191600101611a67565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202db8c1112f99c38831740b0a3771c62b97c69b0051f80b1af7112f9f6916649364736f6c63430008110033

Deployed Bytecode Sourcemap

21384:4637:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21672:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;21672:49:0;;;;;;;;24602:110;;;;;;;;;;-1:-1:-1;24602:110:0;;;;;:::i;:::-;;:::i;:::-;;6651:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9002:201::-;;;;;;;;;;-1:-1:-1;9002:201:0;;;;;:::i;:::-;;:::i;:::-;;;1828:14:1;;1821:22;1803:41;;1791:2;1776:18;9002:201:0;1663:187:1;21545:23:0;;;;;;;;;;-1:-1:-1;21545:23:0;;;;-1:-1:-1;;;21545:23:0;;;;;;21578:39;;;;;;;;;;-1:-1:-1;21578:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7771:108;;;;;;;;;;-1:-1:-1;7859:12:0;;7771:108;;9783:295;;;;;;;;;;-1:-1:-1;9783:295:0;;;;;:::i;:::-;;:::i;7613:93::-;;;;;;;;;;-1:-1:-1;7613:93:0;;7696:2;2710:36:1;;2698:2;2683:18;7613:93:0;2568:184:1;10487:238:0;;;;;;;;;;-1:-1:-1;10487:238:0;;;;;:::i;:::-;;:::i;25380:233::-;;;;;;;;;;-1:-1:-1;25380:233:0;;;;;:::i;:::-;;:::i;21624:38::-;;;;;;;;;;-1:-1:-1;21624:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25103:146;;;;;;;;;;-1:-1:-1;25103:146:0;;;;;:::i;:::-;;:::i;25622:143::-;;;;;;;;;;-1:-1:-1;25622:143:0;;;;;:::i;:::-;;:::i;24843:118::-;;;;;;;;;;-1:-1:-1;24843:118:0;;;;;:::i;:::-;;:::i;21515:23::-;;;;;;;;;;-1:-1:-1;21515:23:0;;;;-1:-1:-1;;;21515:23:0;;;;;;7942:127;;;;;;;;;;-1:-1:-1;7942:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8043:18:0;8016:7;8043:18;;;;;;;;;;;;7942:127;19722:103;;;;;;;;;;;;;:::i;22011:32::-;;;;;;;;;;-1:-1:-1;22011:32:0;;;;-1:-1:-1;;;;;22011:32:0;;;;-1:-1:-1;;;22011:32:0;;;;;;;;;-1:-1:-1;;;;;4458:15:1;;;4440:34;;4510:15;;;;4505:2;4490:18;;4483:43;4360:18;22011:32:0;4213:319:1;21852:75:0;;;;;;;;;;-1:-1:-1;21852:75:0;;;;-1:-1:-1;;;;;21852:75:0;;;;;;-1:-1:-1;;;;;4701:32:1;;;4683:51;;4671:2;4656:18;21852:75:0;4537:203:1;21728:52:0;;;;;;;;;;;;;;;;19074:87;;;;;;;;;;-1:-1:-1;19147:6:0;;-1:-1:-1;;;;;19147:6:0;19074:87;;6870:104;;;;;;;;;;;;;:::i;24475:119::-;;;;;;;;;;-1:-1:-1;24475:119:0;;;;;:::i;:::-;;:::i;25774:185::-;;;;;;;;;;-1:-1:-1;25774:185:0;;;;;:::i;:::-;;:::i;11228:436::-;;;;;;;;;;-1:-1:-1;11228:436:0;;;;;:::i;:::-;;:::i;21458:19::-;;;;;;;;;;-1:-1:-1;21458:19:0;;;;-1:-1:-1;;;;;21458:19:0;;;8275:193;;;;;;;;;;-1:-1:-1;8275:193:0;;;;;:::i;:::-;;:::i;21787:56::-;;;;;;;;;;;;;;;;24721:114;;;;;;;;;;-1:-1:-1;24721:114:0;;;;;:::i;:::-;;:::i;24969:126::-;;;;;;;;;;-1:-1:-1;24969:126:0;;;;;:::i;:::-;;:::i;8531:151::-;;;;;;;;;;-1:-1:-1;8531:151:0;;;;;:::i;:::-;;:::i;24373:93::-;;;;;;;;;;-1:-1:-1;24373:93:0;;;;;:::i;:::-;;:::i;22424:243::-;;;;;;;;;;-1:-1:-1;22424:243:0;;;;;:::i;:::-;;:::i;19980:201::-;;;;;;;;;;-1:-1:-1;19980:201:0;;;;;:::i;:::-;;:::i;21430:21::-;;;;;;;;;;-1:-1:-1;21430:21:0;;;;-1:-1:-1;;;;;21430:21:0;;;25258:114;;;;;;;;;;-1:-1:-1;25258:114:0;;;;;:::i;:::-;;:::i;24602:110::-;18960:13;:11;:13::i;:::-;24686:18:::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;24686:18:0;;::::1;::::0;;;;;;::::1;;::::0;;::::1;::::0;;;-1:-1:-1;;;24678:26:0;;::::1;;:5;:26:::0;24602:110::o;6651:100::-;6705:13;6738:5;6731:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:100;:::o;9002:201::-;9085:4;4373:10;9141:32;4373:10;9157:7;9166:6;9141:8;:32::i;:::-;9191:4;9184:11;;;9002:201;;;;;:::o;9783:295::-;9914:4;4373:10;9972:38;9988:4;4373:10;10003:6;9972:15;:38::i;:::-;10021:27;10031:4;10037:2;10041:6;10021:9;:27::i;:::-;-1:-1:-1;10066:4:0;;9783:295;-1:-1:-1;;;;9783:295:0:o;10487:238::-;10575:4;4373:10;10631:64;4373:10;10647:7;10684:10;10656:25;4373:10;10647:7;10656:9;:25::i;:::-;:38;;;;:::i;:::-;10631:8;:64::i;25380:233::-;18960:13;:11;:13::i;:::-;25478:4;25463:12:::1;25500:106;25519:4;25515:1;:8;25500:106;;;25557:6;25540:5;:14;25546:4;;25551:1;25546:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25540:14:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25540:14:0;:23;;-1:-1:-1;;25540:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;25589:3:0::1;25500:106;;;;25452:161;25380:233:::0;;;:::o;25103:146::-;18960:13;:11;:13::i;:::-;25193:6:::1;:25:::0;;-1:-1:-1;;;;;25193:25:0;;::::1;-1:-1:-1::0;;;;;;25193:25:0;;::::1;;::::0;;;25229:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;25103:146::o;25622:143::-;18960:13;:11;:13::i;:::-;25718:12:::1;-1:-1:-1::0;;;;;25711:29:0::1;;25741:7;19147:6:::0;;-1:-1:-1;;;;;19147:6:0;;19074:87;25741:7:::1;25711:46;::::0;-1:-1:-1;;;;;;25711:46:0::1;::::0;;;;;;-1:-1:-1;;;;;6572:32:1;;;25711:46:0::1;::::0;::::1;6554:51:1::0;6621:18;;;6614:34;;;6527:18;;25711:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25622:143:::0;;:::o;24843:118::-;18960:13;:11;:13::i;:::-;24934:19:::1;:10:::0;24947:6:::1;24934:19;:::i;:::-;24920:11;:33:::0;-1:-1:-1;24843:118:0:o;19722:103::-;18960:13;:11;:13::i;:::-;19787:30:::1;19814:1;19787:18;:30::i;:::-;19722:103::o:0;6870:104::-;6926:13;6959:7;6952:14;;;;;:::i;24475:119::-;18960:13;:11;:13::i;:::-;24567:19:::1;:10:::0;24580:6:::1;24567:19;:::i;:::-;24551:13;:35:::0;-1:-1:-1;24475:119:0:o;25774:185::-;18960:13;:11;:13::i;:::-;25842:12:::1;25868:7;19147:6:::0;;-1:-1:-1;;;;;19147:6:0;;19074:87;25868:7:::1;-1:-1:-1::0;;;;;25860:21:0::1;25889:9;25860:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25841:62;;;25922:7;25914:37;;;::::0;-1:-1:-1;;;25914:37:0;;7494:2:1;25914:37:0::1;::::0;::::1;7476:21:1::0;7533:2;7513:18;;;7506:30;-1:-1:-1;;;7552:18:1;;;7545:47;7609:18;;25914:37:0::1;;;;;;;;;25830:129;25774:185:::0;:::o;11228:436::-;11321:4;4373:10;11321:4;11404:25;4373:10;11421:7;11404:9;:25::i;:::-;11377:52;;11468:15;11448:16;:35;;11440:85;;;;-1:-1:-1;;;11440:85:0;;7840:2:1;11440:85:0;;;7822:21:1;7879:2;7859:18;;;7852:30;7918:34;7898:18;;;7891:62;-1:-1:-1;;;7969:18:1;;;7962:35;8014:19;;11440:85:0;7638:401:1;11440:85:0;11561:60;11570:5;11577:7;11605:15;11586:16;:34;11561:8;:60::i;8275:193::-;8354:4;4373:10;8410:28;4373:10;8427:2;8431:6;8410:9;:28::i;24721:114::-;18960:13;:11;:13::i;:::-;24800:15:::1;:27:::0;;-1:-1:-1;;;;;;24800:27:0::1;-1:-1:-1::0;;;;;24800:27:0;;;::::1;::::0;;;::::1;::::0;;24721:114::o;24969:126::-;18960:13;:11;:13::i;:::-;25068:19:::1;:10:::0;25081:6:::1;25068:19;:::i;:::-;25050:15;:37:::0;-1:-1:-1;24969:126:0:o;8531:151::-;-1:-1:-1;;;;;8647:18:0;;;8620:7;8647:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8531:151::o;24373:93::-;18960:13;:11;:13::i;:::-;24439:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;24439:19:0::1;-1:-1:-1::0;;;;24439:19:0;;::::1;::::0;;;::::1;::::0;;24373:93::o;22424:243::-;18960:13;:11;:13::i;:::-;22508:11:::1;::::0;-1:-1:-1;;;22508:11:0;::::1;;;22507:12;22499:43;;;::::0;-1:-1:-1;;;22499:43:0;;8246:2:1;22499:43:0::1;::::0;::::1;8228:21:1::0;8285:2;8265:18;;;8258:30;-1:-1:-1;;;8304:18:1;;;8297:49;8363:18;;22499:43:0::1;8044:343:1::0;22499:43:0::1;22553:6;:25:::0;;-1:-1:-1;;;;;;22553:25:0::1;-1:-1:-1::0;;;;;22553:25:0;;::::1;;::::0;;22589:4:::1;:12:::0;;-1:-1:-1;;;;;;22589:12:0;;;::::1;-1:-1:-1::0;;;;;;22612:18:0;;;;;;;::::1;-1:-1:-1::0;;;;22641:18:0::1;::::0;;;::::1;::::0;;22424:243::o;19980:201::-;18960:13;:11;:13::i;:::-;-1:-1:-1;;;;;20069:22:0;::::1;20061:73;;;::::0;-1:-1:-1;;;20061:73:0;;8594:2:1;20061:73:0::1;::::0;::::1;8576:21:1::0;8633:2;8613:18;;;8606:30;8672:34;8652:18;;;8645:62;-1:-1:-1;;;8723:18:1;;;8716:36;8769:19;;20061:73:0::1;8392:402:1::0;20061:73:0::1;20145:28;20164:8;20145:18;:28::i;:::-;19980:201:::0;:::o;25258:114::-;18960:13;:11;:13::i;:::-;-1:-1:-1;;;;;25340:16:0;;;::::1;;::::0;;;:6:::1;:16;::::0;;;;:24;;-1:-1:-1;;25340:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25258:114::o;19239:132::-;19147:6;;-1:-1:-1;;;;;19147:6:0;4373:10;19303:23;19295:68;;;;-1:-1:-1;;;19295:68:0;;9001:2:1;19295:68:0;;;8983:21:1;;;9020:18;;;9013:30;9079:34;9059:18;;;9052:62;9131:18;;19295:68:0;8799:356:1;15255:380:0;-1:-1:-1;;;;;15391:19:0;;15383:68;;;;-1:-1:-1;;;15383:68:0;;9362:2:1;15383:68:0;;;9344:21:1;9401:2;9381:18;;;9374:30;9440:34;9420:18;;;9413:62;-1:-1:-1;;;9491:18:1;;;9484:34;9535:19;;15383:68:0;9160:400:1;15383:68:0;-1:-1:-1;;;;;15470:21:0;;15462:68;;;;-1:-1:-1;;;15462:68:0;;9767:2:1;15462:68:0;;;9749:21:1;9806:2;9786:18;;;9779:30;9845:34;9825:18;;;9818:62;-1:-1:-1;;;9896:18:1;;;9889:32;9938:19;;15462:68:0;9565:398:1;15462:68:0;-1:-1:-1;;;;;15543:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15595:32;;160:25:1;;;15595:32:0;;133:18:1;15595:32:0;;;;;;;15255:380;;;:::o;15926:453::-;16061:24;16088:25;16098:5;16105:7;16088:9;:25::i;:::-;16061:52;;-1:-1:-1;;16128:16:0;:37;16124:248;;16210:6;16190:16;:26;;16182:68;;;;-1:-1:-1;;;16182:68:0;;10170:2:1;16182:68:0;;;10152:21:1;10209:2;10189:18;;;10182:30;10248:31;10228:18;;;10221:59;10297:18;;16182:68:0;9968:353:1;16182:68:0;16294:51;16303:5;16310:7;16338:6;16319:16;:25;16294:8;:51::i;:::-;16050:329;15926:453;;;:::o;22676:1104::-;22792:1;22783:6;:10;22775:64;;;;-1:-1:-1;;;22775:64:0;;10528:2:1;22775:64:0;;;10510:21:1;10567:2;10547:18;;;10540:30;10606:34;10586:18;;;10579:62;-1:-1:-1;;;10657:18:1;;;10650:39;10706:19;;22775:64:0;10326:405:1;22775:64:0;-1:-1:-1;;;;;22857:14:0;;;;;;:6;:14;;;;;;;;22856:15;:37;;;;-1:-1:-1;;;;;;22876:17:0;;;;;;:6;:17;;;;;;;;22875:18;22856:37;:50;;;;-1:-1:-1;22898:8:0;;-1:-1:-1;;;22898:8:0;;;;22897:9;22856:50;22853:391;;;22930:11;;-1:-1:-1;;;22930:11:0;;;;22922:43;;;;-1:-1:-1;;;22922:43:0;;10938:2:1;22922:43:0;;;10920:21:1;10977:2;10957:18;;;10950:30;-1:-1:-1;;;10996:18:1;;;10989:49;11055:18;;22922:43:0;10736:343:1;22922:43:0;-1:-1:-1;;;;;22989:13:0;;;;;;:5;:13;;;;;;;;22988:14;:35;;;;-1:-1:-1;;;;;;23007:16:0;;;;;;:5;:16;;;;;;;;23006:17;22988:35;22980:59;;;;-1:-1:-1;;;22980:59:0;;11286:2:1;22980:59:0;;;11268:21:1;11325:2;11305:18;;;11298:30;-1:-1:-1;;;11344:18:1;;;11337:41;11395:18;;22980:59:0;11084:335:1;22980:59:0;23072:11;;23062:6;:21;;23054:55;;;;-1:-1:-1;;;23054:55:0;;11626:2:1;23054:55:0;;;11608:21:1;11665:2;11645:18;;;11638:30;-1:-1:-1;;;11684:18:1;;;11677:51;11745:18;;23054:55:0;11424:345:1;23054:55:0;23140:4;;-1:-1:-1;;;;;23127:17:0;;;23140:4;;23127:17;23124:108;;23187:15;;23177:6;23154:20;23164:9;-1:-1:-1;;;;;8043:18:0;8016:7;8043:18;;;;;;;;;;;;7942:127;23154:20;:29;;;;:::i;:::-;:48;;23146:86;;;;-1:-1:-1;;;23146:86:0;;11976:2:1;23146:86:0;;;11958:21:1;12015:2;11995:18;;;11988:30;12054:27;12034:18;;;12027:55;12099:18;;23146:86:0;11774:349:1;23146:86:0;23286:8;;23257:11;;-1:-1:-1;;;23286:8:0;;;;;:26;;-1:-1:-1;;;;;;23298:14:0;;;;;;:6;:14;;;;;;;;23286:26;:47;;;-1:-1:-1;;;;;;23316:17:0;;;;;;:6;:17;;;;;;;;23286:47;:88;;;-1:-1:-1;23348:4:0;;-1:-1:-1;;;;;23338:14:0;;;23348:4;;23338:14;;;;:35;;-1:-1:-1;23369:4:0;;-1:-1:-1;;;;;23356:17:0;;;23369:4;;23356:17;;23338:35;23282:269;;;-1:-1:-1;23382:1:0;23282:269;;;23420:4;;-1:-1:-1;;;;;23420:17:0;;;:4;;:17;23417:122;;23454:5;:10;23467:3;;23445:19;;-1:-1:-1;;;23454:10:0;;-1:-1:-1;;;;;23454:10:0;23445:6;:19;:::i;:::-;:25;;;;:::i;:::-;23439:31;;23417:122;;;23493:4;;-1:-1:-1;;;;;23493:14:0;;;:4;;:14;23490:49;;23524:5;:9;23536:3;;23515:18;;-1:-1:-1;;;;;23524:9:0;23515:6;:18;:::i;:::-;:24;;;;:::i;:::-;23509:30;;23490:49;23571:11;;-1:-1:-1;;;23571:11:0;;;;:24;;;;-1:-1:-1;23587:8:0;;-1:-1:-1;;;23587:8:0;;;;23586:9;23571:24;:42;;;;-1:-1:-1;23609:4:0;;-1:-1:-1;;;;;23599:14:0;;;23609:4;;23599:14;;23571:42;:53;;;;;23623:1;23617:3;:7;23571:53;23567:74;;;23626:15;:13;:15::i;:::-;23655:48;23671:6;23679:9;23690:12;23699:3;23690:6;:12;:::i;:::-;23655:15;:48::i;:::-;23717:7;;23714:55;;23726:43;23742:6;23758:4;23765:3;23726:15;:43::i;20341:191::-;20434:6;;;-1:-1:-1;;;;;20451:17:0;;;-1:-1:-1;;;;;;20451:17:0;;;;;;;20484:40;;20434:6;;;20451:17;20434:6;;20484:40;;20415:16;;20484:40;20404:128;20341:191;:::o;23789:163::-;22087:8;;-1:-1:-1;;;22087:8:0;;;;22082:104;;22112:8;:15;;-1:-1:-1;;;;22112:15:0;-1:-1:-1;;;22112:15:0;;;23872:13:::1;::::0;23862:4:::1;-1:-1:-1::0;8043:18:0;;;;;;;;;;;23844:41:::1;23840:105;;23902:31;23919:13;;23902:16;:31::i;:::-;22158:8:::0;:16;;-1:-1:-1;;;;22158:16:0;;;23789:163::o;12134:840::-;-1:-1:-1;;;;;12265:18:0;;12257:68;;;;-1:-1:-1;;;12257:68:0;;12685:2:1;12257:68:0;;;12667:21:1;12724:2;12704:18;;;12697:30;12763:34;12743:18;;;12736:62;-1:-1:-1;;;12814:18:1;;;12807:35;12859:19;;12257:68:0;12483:401:1;12257:68:0;-1:-1:-1;;;;;12344:16:0;;12336:64;;;;-1:-1:-1;;;12336:64:0;;13091:2:1;12336:64:0;;;13073:21:1;13130:2;13110:18;;;13103:30;13169:34;13149:18;;;13142:62;-1:-1:-1;;;13220:18:1;;;13213:33;13263:19;;12336:64:0;12889:399:1;12336:64:0;-1:-1:-1;;;;;12486:15:0;;12464:19;12486:15;;;;;;;;;;;12520:21;;;;12512:72;;;;-1:-1:-1;;;12512:72:0;;13495:2:1;12512:72:0;;;13477:21:1;13534:2;13514:18;;;13507:30;13573:34;13553:18;;;13546:62;-1:-1:-1;;;13624:18:1;;;13617:36;13670:19;;12512:72:0;13293:402:1;12512:72:0;-1:-1:-1;;;;;12620:15:0;;;:9;:15;;;;;;;;;;;12638:20;;;12620:38;;12838:13;;;;;;;;;;:23;;;;;;12890:26;;160:25:1;;;12838:13:0;;12890:26;;133:18:1;12890:26:0;;;;;;;12929:37;25622:143;23961:404;24051:16;;;24065:1;24051:16;;;;;;;;24027:21;;24051:16;;;;;;;;;;-1:-1:-1;24051:16:0;24027:40;;24096:4;24078;24083:1;24078:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24078:23:0;;;:7;;;;;;;;;;:23;;;;24122:6;;:13;;;-1:-1:-1;;;24122:13:0;;;;:6;;;;;:11;;:13;;;;;24078:7;;24122:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24112:4;24117:1;24112:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24112:23:0;;;:7;;;;;;;;;:23;24181:6;;24149:53;;24166:4;;24181:6;24190:11;24149:8;:53::i;:::-;24242:6;;24322:15;;24242:113;;-1:-1:-1;;;24242:113:0;;-1:-1:-1;;;;;24242:6:0;;;;:57;;:113;;24300:11;;24242:6;;24316:4;;24322:15;;;24339;;24242:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24016:349;23961:404;:::o;196:188:1:-;264:20;;-1:-1:-1;;;;;313:46:1;;303:57;;293:85;;374:1;371;364:12;293:85;196:188;;;:::o;389:260::-;457:6;465;518:2;506:9;497:7;493:23;489:32;486:52;;;534:1;531;524:12;486:52;557:29;576:9;557:29;:::i;:::-;547:39;;605:38;639:2;628:9;624:18;605:38;:::i;:::-;595:48;;389:260;;;;;:::o;654:548::-;766:4;795:2;824;813:9;806:21;856:6;850:13;899:6;894:2;883:9;879:18;872:34;924:1;934:140;948:6;945:1;942:13;934:140;;;1043:14;;;1039:23;;1033:30;1009:17;;;1028:2;1005:26;998:66;963:10;;934:140;;;938:3;1123:1;1118:2;1109:6;1098:9;1094:22;1090:31;1083:42;1193:2;1186;1182:7;1177:2;1169:6;1165:15;1161:29;1150:9;1146:45;1142:54;1134:62;;;;654:548;;;;:::o;1207:131::-;-1:-1:-1;;;;;1282:31:1;;1272:42;;1262:70;;1328:1;1325;1318:12;1343:315;1411:6;1419;1472:2;1460:9;1451:7;1447:23;1443:32;1440:52;;;1488:1;1485;1478:12;1440:52;1527:9;1514:23;1546:31;1571:5;1546:31;:::i;:::-;1596:5;1648:2;1633:18;;;;1620:32;;-1:-1:-1;;;1343:315:1:o;1855:247::-;1914:6;1967:2;1955:9;1946:7;1942:23;1938:32;1935:52;;;1983:1;1980;1973:12;1935:52;2022:9;2009:23;2041:31;2066:5;2041:31;:::i;:::-;2091:5;1855:247;-1:-1:-1;;;1855:247:1:o;2107:456::-;2184:6;2192;2200;2253:2;2241:9;2232:7;2228:23;2224:32;2221:52;;;2269:1;2266;2259:12;2221:52;2308:9;2295:23;2327:31;2352:5;2327:31;:::i;:::-;2377:5;-1:-1:-1;2434:2:1;2419:18;;2406:32;2447:33;2406:32;2447:33;:::i;:::-;2107:456;;2499:7;;-1:-1:-1;;;2553:2:1;2538:18;;;;2525:32;;2107:456::o;2757:118::-;2843:5;2836:13;2829:21;2822:5;2819:32;2809:60;;2865:1;2862;2855:12;2880:750;2972:6;2980;2988;3041:2;3029:9;3020:7;3016:23;3012:32;3009:52;;;3057:1;3054;3047:12;3009:52;3097:9;3084:23;3126:18;3167:2;3159:6;3156:14;3153:34;;;3183:1;3180;3173:12;3153:34;3221:6;3210:9;3206:22;3196:32;;3266:7;3259:4;3255:2;3251:13;3247:27;3237:55;;3288:1;3285;3278:12;3237:55;3328:2;3315:16;3354:2;3346:6;3343:14;3340:34;;;3370:1;3367;3360:12;3340:34;3425:7;3418:4;3408:6;3405:1;3401:14;3397:2;3393:23;3389:34;3386:47;3383:67;;;3446:1;3443;3436:12;3383:67;3477:4;3469:13;;;;-1:-1:-1;3501:6:1;-1:-1:-1;;3542:20:1;;3529:34;3572:28;3529:34;3572:28;:::i;:::-;3619:5;3609:15;;;2880:750;;;;;:::o;3635:388::-;3703:6;3711;3764:2;3752:9;3743:7;3739:23;3735:32;3732:52;;;3780:1;3777;3770:12;3732:52;3819:9;3806:23;3838:31;3863:5;3838:31;:::i;:::-;3888:5;-1:-1:-1;3945:2:1;3930:18;;3917:32;3958:33;3917:32;3958:33;:::i;:::-;4010:7;4000:17;;;3635:388;;;;;:::o;4028:180::-;4087:6;4140:2;4128:9;4119:7;4115:23;4111:32;4108:52;;;4156:1;4153;4146:12;4108:52;-1:-1:-1;4179:23:1;;4028:180;-1:-1:-1;4028:180:1:o;4745:241::-;4801:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:52;;;4870:1;4867;4860:12;4822:52;4909:9;4896:23;4928:28;4950:5;4928:28;:::i;5214:382::-;5279:6;5287;5340:2;5328:9;5319:7;5315:23;5311:32;5308:52;;;5356:1;5353;5346:12;5308:52;5395:9;5382:23;5414:31;5439:5;5414:31;:::i;:::-;5464:5;-1:-1:-1;5521:2:1;5506:18;;5493:32;5534:30;5493:32;5534:30;:::i;5601:380::-;5680:1;5676:12;;;;5723;;;5744:61;;5798:4;5790:6;5786:17;5776:27;;5744:61;5851:2;5843:6;5840:14;5820:18;5817:38;5814:161;;5897:10;5892:3;5888:20;5885:1;5878:31;5932:4;5929:1;5922:15;5960:4;5957:1;5950:15;5814:161;;5601:380;;;:::o;5986:127::-;6047:10;6042:3;6038:20;6035:1;6028:31;6078:4;6075:1;6068:15;6102:4;6099:1;6092:15;6118:125;6183:9;;;6204:10;;;6201:36;;;6217:18;;:::i;6248:127::-;6309:10;6304:3;6300:20;6297:1;6290:31;6340:4;6337:1;6330:15;6364:4;6361:1;6354:15;6659:245;6726:6;6779:2;6767:9;6758:7;6754:23;6750:32;6747:52;;;6795:1;6792;6785:12;6747:52;6827:9;6821:16;6846:28;6868:5;6846:28;:::i;6909:168::-;6982:9;;;7013;;7030:15;;;7024:22;;7010:37;7000:71;;7051:18;;:::i;12128:217::-;12168:1;12194;12184:132;;12238:10;12233:3;12229:20;12226:1;12219:31;12273:4;12270:1;12263:15;12301:4;12298:1;12291:15;12184:132;-1:-1:-1;12330:9:1;;12128:217::o;12350:128::-;12417:9;;;12438:11;;;12435:37;;;12452:18;;:::i;13832:251::-;13902:6;13955:2;13943:9;13934:7;13930:23;13926:32;13923:52;;;13971:1;13968;13961:12;13923:52;14003:9;13997:16;14022:31;14047:5;14022:31;:::i;14088:980::-;14350:4;14398:3;14387:9;14383:19;14429:6;14418:9;14411:25;14455:2;14493:6;14488:2;14477:9;14473:18;14466:34;14536:3;14531:2;14520:9;14516:18;14509:31;14560:6;14595;14589:13;14626:6;14618;14611:22;14664:3;14653:9;14649:19;14642:26;;14703:2;14695:6;14691:15;14677:29;;14724:1;14734:195;14748:6;14745:1;14742:13;14734:195;;;14813:13;;-1:-1:-1;;;;;14809:39:1;14797:52;;14904:15;;;;14869:12;;;;14845:1;14763:9;14734:195;;;-1:-1:-1;;;;;;;14985:32:1;;;;14980:2;14965:18;;14958:60;-1:-1:-1;;;15049:3:1;15034:19;15027:35;14946:3;14088:980;-1:-1:-1;;;14088:980:1:o

Swarm Source

ipfs://2db8c1112f99c38831740b0a3771c62b97c69b0051f80b1af7112f9f69166493
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.