ETH Price: $3,389.84 (-1.53%)
Gas: 2 Gwei

Token

The Wolf Of Crypto (TWOC)
 

Overview

Max Total Supply

1,000,000,000 TWOC

Holders

207 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
HTX 34
Balance
10 TWOC

Value
$0.00
0xcac725bef4f114f728cbcfd744a731c2a463c3fc
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:
TheWolfOfCrypto

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-03
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

/**
 * @dev Interface of the BEP20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the BEP20 standard.
 *
 * _Available since v4.1._
 */
interface IBEP20Metadata is IBEP20 {
    /**
     * @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);
}

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

/**
 * @dev Implementation of the {IBEP20} 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 {BEP20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-BEP20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of BEP20 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 {IBEP20-approve}.
 */
contract BEP20 is Context, IBEP20, IBEP20Metadata {
    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 {BEP20} 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
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

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

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

    /**
     * @dev See {IBEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IBEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "BEP20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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 {IBEP20-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)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][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 {IBEP20-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)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "BEP20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "BEP20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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), "BEP20: mint to the zero address");

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

        _totalSupply += amount;
        _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), "BEP20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "BEP20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, 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 {}
}

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        _setOwner(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"
        );
        _setOwner(newOwner);
    }

    /**
     * @dev internal function of the contract to set the
     * new owner as per called by existing owner
     */

    function _setOwner(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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 getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function WETH() external pure returns (address);
}

contract TheWolfOfCrypto is BEP20, Ownable {
    // CONFIG START

    uint256 private maxSupply;

    bool public isTradingEnabled;
    uint256 public tradeStartTime;

    // CONFIG END

    mapping(address => bool) private excludeList;

    IUniswapV2Router02 private uniswapV2Router02;
    IUniswapV2Factory private uniswapV2Factory;
    address private uniswapV2Pair;

    constructor() BEP20("The Wolf Of Crypto", "TWOC") {
        maxSupply = 1_000_000_000 * 10**decimals();
        _setOwner(msg.sender);
        uniswapV2Router02 = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory());
        uniswapV2Pair = address(
            uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH())
        );
        whitelist(msg.sender, true);
        whitelist(address(this), true);
        _mint(msg.sender, maxSupply);
    }

    /**
     * @dev Enable trading.
     */
    function enableTrading() external onlyOwner {
        require(!isTradingEnabled, "TWOC: trading already enabled");
        isTradingEnabled = true;
        tradeStartTime = block.timestamp;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual override {
        if (sender != owner()) {
            require(isTradingEnabled, "TWOC: Trading is not enabled yet");
        }

        if (block.timestamp < tradeStartTime + 10800) {
            require(
                isWhitelisted(sender) || isWhitelisted(recipient),
                "TWOC: only Whitelisted addresses are allowed for first 3 hours"
            );
        }

        super._transfer(sender, recipient, amount);
    }

    function whitelist(address account, bool add) public onlyOwner {
        excludeList[account] = add;
    }

    function multiWhitelist(address[] memory accounts, bool add) external onlyOwner {
        for (uint16 i = 0; i < accounts.length; i++) {
            whitelist(accounts[i], add);
        }
    }

    /**
     * @dev burn tokens to remove from supply. anybody can burn his/her own tokens using this function.
     */
    function burn(uint256 amount) public {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Returns true if the account is whitelisted, and false otherwise.
     */
    function isWhitelisted(address account) public view returns (bool) {
        return excludeList[account];
    }

    /**
     * @dev claim any stucked tokens from the contract
     */

    function claimStuckTokens(address _token, uint256 amount)
        external
        onlyOwner
    {
        if (amount > 0) {
            IBEP20(_token).transfer(owner(), amount);
        }
    }

    /**
     * @dev claim stucked bnb if sent by someone accidently
     */

    function claimBNB() external onlyOwner {
        uint256 balance = address(this).balance;
        (bool os, ) = owner().call{value: balance}("");
        require(os, "TWOC: bnb transfer failed");
    }

    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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"add","type":"bool"}],"name":"multiWhitelist","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"add","type":"bool"}],"name":"whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280601281526020017154686520576f6c66204f662043727970746f60701b8152506040518060400160405280600481526020016354574f4360e01b81525081600390816200006b919062000501565b5060046200007a828262000501565b5062000087915050600990565b6200009490600a620006e2565b620000a490633b9aca00620006fa565b600655620000b23362000296565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013d919062000714565b600b80546001600160a01b0319166001600160a01b03928316908117909155600a54604080516315ab88c960e31b81529051929363c9c653969330939091169163ad5c46489160048083019260209291908290030181865afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000714565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000242919062000714565b600c80546001600160a01b0319166001600160a01b03929092169190911790556200026f336001620002e8565b6200027c306001620002e8565b62000290336006546200037360201b60201c565b62000755565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620003485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038216620003cb5760405162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200033f565b8060026000828254620003df91906200073f565b90915550506001600160a01b038216600090815260208190526040812080548392906200040e9084906200073f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200048857607f821691505b602082108103620004a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200045857600081815260208120601f850160051c81016020861015620004d85750805b601f850160051c820191505b81811015620004f957828155600101620004e4565b505050505050565b81516001600160401b038111156200051d576200051d6200045d565b62000535816200052e845462000473565b84620004af565b602080601f8311600181146200056d5760008415620005545750858301515b600019600386901b1c1916600185901b178555620004f9565b600085815260208120601f198616915b828110156200059e578886015182559484019460019091019084016200057d565b5085821015620005bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000624578160001904821115620006085762000608620005cd565b808516156200061657918102915b93841c9390800290620005e8565b509250929050565b6000826200063d57506001620006dc565b816200064c57506000620006dc565b8160018114620006655760028114620006705762000690565b6001915050620006dc565b60ff841115620006845762000684620005cd565b50506001821b620006dc565b5060208310610133831016604e8410600b8410161715620006b5575081810a620006dc565b620006c18383620005e3565b8060001904821115620006d857620006d8620005cd565b0290505b92915050565b6000620006f360ff8416836200062c565b9392505050565b8082028115828204841417620006dc57620006dc620005cd565b6000602082840312156200072757600080fd5b81516001600160a01b0381168114620006f357600080fd5b80820180821115620006dc57620006dc620005cd565b6116b080620007656000396000f3fe6080604052600436106101845760003560e01c8063715018a6116100d6578063c6acc77a1161007f578063eecb257511610059578063eecb257514610450578063f2fde38b14610465578063f59c37081461048557600080fd5b8063c6acc77a146103ca578063dd62ed3e146103ea578063e228c60c1461043057600080fd5b806395d89b41116100b057806395d89b4114610375578063a457c2d71461038a578063a9059cbb146103aa57600080fd5b8063715018a6146103235780638a8c523c146103385780638da5cb5b1461034d57600080fd5b80632c735ef8116101385780633af32abf116101125780633af32abf1461029257806342966c68146102cb57806370a08231146102ed57600080fd5b80632c735ef814610240578063313ce56714610256578063395093511461027257600080fd5b8063095ea7b311610169578063095ea7b3146101e157806318160ddd1461020157806323b872dd1461022057600080fd5b8063064a59d01461019057806306fdde03146101bf57600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506007546101aa9060ff1681565b60405190151581526020015b60405180910390f35b3480156101cb57600080fd5b506101d46104a5565b6040516101b69190611335565b3480156101ed57600080fd5b506101aa6101fc36600461139f565b610537565b34801561020d57600080fd5b506002545b6040519081526020016101b6565b34801561022c57600080fd5b506101aa61023b3660046113c9565b61054e565b34801561024c57600080fd5b5061021260085481565b34801561026257600080fd5b50604051600981526020016101b6565b34801561027e57600080fd5b506101aa61028d36600461139f565b610612565b34801561029e57600080fd5b506101aa6102ad366004611405565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156102d757600080fd5b506102eb6102e6366004611427565b61064e565b005b3480156102f957600080fd5b50610212610308366004611405565b6001600160a01b031660009081526020819052604090205490565b34801561032f57600080fd5b506102eb61065b565b34801561034457600080fd5b506102eb6106c1565b34801561035957600080fd5b506005546040516001600160a01b0390911681526020016101b6565b34801561038157600080fd5b506101d4610781565b34801561039657600080fd5b506101aa6103a536600461139f565b610790565b3480156103b657600080fd5b506101aa6103c536600461139f565b610841565b3480156103d657600080fd5b506102eb6103e536600461139f565b61084e565b3480156103f657600080fd5b50610212610405366004611440565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561043c57600080fd5b506102eb61044b3660046114a2565b61095e565b34801561045c57600080fd5b506102eb610a01565b34801561047157600080fd5b506102eb610480366004611405565b610b10565b34801561049157600080fd5b506102eb6104a0366004611579565b610bef565b6060600380546104b4906115b0565b80601f01602080910402602001604051908101604052809291908181526020018280546104e0906115b0565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b6000610544338484610c74565b5060015b92915050565b600061055b848484610dcc565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105fa5760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6106078533858403610c74565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610544918590610649908690611600565b610c74565b6106583382610f05565b50565b6005546001600160a01b031633146106b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6106bf600061109d565b565b6005546001600160a01b0316331461071b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b60075460ff161561076e5760405162461bcd60e51b815260206004820152601d60248201527f54574f433a2074726164696e6720616c726561647920656e61626c656400000060448201526064016105f1565b6007805460ff1916600117905542600855565b6060600480546104b4906115b0565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561082a5760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105f1565b6108373385858403610c74565b5060019392505050565b6000610544338484610dcc565b6005546001600160a01b031633146108a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b801561095a57816001600160a01b031663a9059cbb6108cf6005546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611613565b505b5050565b6005546001600160a01b031633146109b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b60005b82518161ffff161015610958576109ef838261ffff16815181106109e1576109e1611630565b602002602001015183610bef565b806109f981611646565b9150506109bb565b6005546001600160a01b03163314610a5b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b476000610a706005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610aba576040519150601f19603f3d011682016040523d82523d6000602084013e610abf565b606091505b505090508061095a5760405162461bcd60e51b815260206004820152601960248201527f54574f433a20626e62207472616e73666572206661696c65640000000000000060448201526064016105f1565b6005546001600160a01b03163314610b6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6001600160a01b038116610be65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105f1565b6106588161109d565b6005546001600160a01b03163314610c495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038316610cef5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038216610d6b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03848116911614610e335760075460ff16610e335760405162461bcd60e51b815260206004820181905260248201527f54574f433a2054726164696e67206973206e6f7420656e61626c65642079657460448201526064016105f1565b600854610e4290612a30611600565b421015610efa576001600160a01b03831660009081526009602052604090205460ff1680610e8857506001600160a01b03821660009081526009602052604090205460ff165b610efa5760405162461bcd60e51b815260206004820152603e60248201527f54574f433a206f6e6c792057686974656c69737465642061646472657373657360448201527f2061726520616c6c6f77656420666f72206669727374203320686f757273000060648201526084016105f1565b610958838383611107565b6001600160a01b038216610f815760405162461bcd60e51b815260206004820152602160248201527f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b610f8d82600083610958565b6001600160a01b0382166000908152602081905260409020548181101561101c5760405162461bcd60e51b815260206004820152602260248201527f42455032303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038316600090815260208190526040812083830390556002805484929061104b908490611667565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361095883600084610958565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111835760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b0382166111ff5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b61120a838383610958565b6001600160a01b038316600090815260208190526040902054818110156112995760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906112d0908490611600565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161131c91815260200190565b60405180910390a361132f848484610958565b50505050565b600060208083528351808285015260005b8181101561136257858101830151858201604001528201611346565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461139a57600080fd5b919050565b600080604083850312156113b257600080fd5b6113bb83611383565b946020939093013593505050565b6000806000606084860312156113de57600080fd5b6113e784611383565b92506113f560208501611383565b9150604084013590509250925092565b60006020828403121561141757600080fd5b61142082611383565b9392505050565b60006020828403121561143957600080fd5b5035919050565b6000806040838503121561145357600080fd5b61145c83611383565b915061146a60208401611383565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b801515811461065857600080fd5b803561139a81611489565b600080604083850312156114b557600080fd5b823567ffffffffffffffff808211156114cd57600080fd5b818501915085601f8301126114e157600080fd5b81356020828211156114f5576114f5611473565b8160051b604051601f19603f8301168101818110868211171561151a5761151a611473565b60405292835281830193508481018201928984111561153857600080fd5b948201945b8386101561155d5761154e86611383565b8552948201949382019361153d565b965061156c9050878201611497565b9450505050509250929050565b6000806040838503121561158c57600080fd5b61159583611383565b915060208301356115a581611489565b809150509250929050565b600181811c908216806115c457607f821691505b6020821081036115e457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610548576105486115ea565b60006020828403121561162557600080fd5b815161142081611489565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361165d5761165d6115ea565b6001019392505050565b81810381811115610548576105486115ea56fea2646970667358221220c461754d8028e211264b5c6817f8dc86d8f19ef56708b456d85f70859688903464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101845760003560e01c8063715018a6116100d6578063c6acc77a1161007f578063eecb257511610059578063eecb257514610450578063f2fde38b14610465578063f59c37081461048557600080fd5b8063c6acc77a146103ca578063dd62ed3e146103ea578063e228c60c1461043057600080fd5b806395d89b41116100b057806395d89b4114610375578063a457c2d71461038a578063a9059cbb146103aa57600080fd5b8063715018a6146103235780638a8c523c146103385780638da5cb5b1461034d57600080fd5b80632c735ef8116101385780633af32abf116101125780633af32abf1461029257806342966c68146102cb57806370a08231146102ed57600080fd5b80632c735ef814610240578063313ce56714610256578063395093511461027257600080fd5b8063095ea7b311610169578063095ea7b3146101e157806318160ddd1461020157806323b872dd1461022057600080fd5b8063064a59d01461019057806306fdde03146101bf57600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506007546101aa9060ff1681565b60405190151581526020015b60405180910390f35b3480156101cb57600080fd5b506101d46104a5565b6040516101b69190611335565b3480156101ed57600080fd5b506101aa6101fc36600461139f565b610537565b34801561020d57600080fd5b506002545b6040519081526020016101b6565b34801561022c57600080fd5b506101aa61023b3660046113c9565b61054e565b34801561024c57600080fd5b5061021260085481565b34801561026257600080fd5b50604051600981526020016101b6565b34801561027e57600080fd5b506101aa61028d36600461139f565b610612565b34801561029e57600080fd5b506101aa6102ad366004611405565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156102d757600080fd5b506102eb6102e6366004611427565b61064e565b005b3480156102f957600080fd5b50610212610308366004611405565b6001600160a01b031660009081526020819052604090205490565b34801561032f57600080fd5b506102eb61065b565b34801561034457600080fd5b506102eb6106c1565b34801561035957600080fd5b506005546040516001600160a01b0390911681526020016101b6565b34801561038157600080fd5b506101d4610781565b34801561039657600080fd5b506101aa6103a536600461139f565b610790565b3480156103b657600080fd5b506101aa6103c536600461139f565b610841565b3480156103d657600080fd5b506102eb6103e536600461139f565b61084e565b3480156103f657600080fd5b50610212610405366004611440565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561043c57600080fd5b506102eb61044b3660046114a2565b61095e565b34801561045c57600080fd5b506102eb610a01565b34801561047157600080fd5b506102eb610480366004611405565b610b10565b34801561049157600080fd5b506102eb6104a0366004611579565b610bef565b6060600380546104b4906115b0565b80601f01602080910402602001604051908101604052809291908181526020018280546104e0906115b0565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b6000610544338484610c74565b5060015b92915050565b600061055b848484610dcc565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105fa5760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6106078533858403610c74565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610544918590610649908690611600565b610c74565b6106583382610f05565b50565b6005546001600160a01b031633146106b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6106bf600061109d565b565b6005546001600160a01b0316331461071b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b60075460ff161561076e5760405162461bcd60e51b815260206004820152601d60248201527f54574f433a2074726164696e6720616c726561647920656e61626c656400000060448201526064016105f1565b6007805460ff1916600117905542600855565b6060600480546104b4906115b0565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561082a5760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105f1565b6108373385858403610c74565b5060019392505050565b6000610544338484610dcc565b6005546001600160a01b031633146108a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b801561095a57816001600160a01b031663a9059cbb6108cf6005546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611613565b505b5050565b6005546001600160a01b031633146109b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b60005b82518161ffff161015610958576109ef838261ffff16815181106109e1576109e1611630565b602002602001015183610bef565b806109f981611646565b9150506109bb565b6005546001600160a01b03163314610a5b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b476000610a706005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610aba576040519150601f19603f3d011682016040523d82523d6000602084013e610abf565b606091505b505090508061095a5760405162461bcd60e51b815260206004820152601960248201527f54574f433a20626e62207472616e73666572206661696c65640000000000000060448201526064016105f1565b6005546001600160a01b03163314610b6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6001600160a01b038116610be65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105f1565b6106588161109d565b6005546001600160a01b03163314610c495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f1565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038316610cef5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038216610d6b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03848116911614610e335760075460ff16610e335760405162461bcd60e51b815260206004820181905260248201527f54574f433a2054726164696e67206973206e6f7420656e61626c65642079657460448201526064016105f1565b600854610e4290612a30611600565b421015610efa576001600160a01b03831660009081526009602052604090205460ff1680610e8857506001600160a01b03821660009081526009602052604090205460ff165b610efa5760405162461bcd60e51b815260206004820152603e60248201527f54574f433a206f6e6c792057686974656c69737465642061646472657373657360448201527f2061726520616c6c6f77656420666f72206669727374203320686f757273000060648201526084016105f1565b610958838383611107565b6001600160a01b038216610f815760405162461bcd60e51b815260206004820152602160248201527f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b610f8d82600083610958565b6001600160a01b0382166000908152602081905260409020548181101561101c5760405162461bcd60e51b815260206004820152602260248201527f42455032303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038316600090815260208190526040812083830390556002805484929061104b908490611667565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361095883600084610958565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111835760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b0382166111ff5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105f1565b61120a838383610958565b6001600160a01b038316600090815260208190526040902054818110156112995760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105f1565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906112d0908490611600565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161131c91815260200190565b60405180910390a361132f848484610958565b50505050565b600060208083528351808285015260005b8181101561136257858101830151858201604001528201611346565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461139a57600080fd5b919050565b600080604083850312156113b257600080fd5b6113bb83611383565b946020939093013593505050565b6000806000606084860312156113de57600080fd5b6113e784611383565b92506113f560208501611383565b9150604084013590509250925092565b60006020828403121561141757600080fd5b61142082611383565b9392505050565b60006020828403121561143957600080fd5b5035919050565b6000806040838503121561145357600080fd5b61145c83611383565b915061146a60208401611383565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b801515811461065857600080fd5b803561139a81611489565b600080604083850312156114b557600080fd5b823567ffffffffffffffff808211156114cd57600080fd5b818501915085601f8301126114e157600080fd5b81356020828211156114f5576114f5611473565b8160051b604051601f19603f8301168101818110868211171561151a5761151a611473565b60405292835281830193508481018201928984111561153857600080fd5b948201945b8386101561155d5761154e86611383565b8552948201949382019361153d565b965061156c9050878201611497565b9450505050509250929050565b6000806040838503121561158c57600080fd5b61159583611383565b915060208301356115a581611489565b809150509250929050565b600181811c908216806115c457607f821691505b6020821081036115e457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610548576105486115ea565b60006020828403121561162557600080fd5b815161142081611489565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361165d5761165d6115ea565b6001019392505050565b81810381811115610548576105486115ea56fea2646970667358221220c461754d8028e211264b5c6817f8dc86d8f19ef56708b456d85f70859688903464736f6c63430008130033

Deployed Bytecode Sourcemap

19769:3155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19876:28;;;;;;;;;;-1:-1:-1;19876:28:0;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;19876:28:0;;;;;;;;6154:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8461:210::-;;;;;;;;;;-1:-1:-1;8461:210:0;;;;;:::i;:::-;;:::i;7273:108::-;;;;;;;;;;-1:-1:-1;7361:12:0;;7273:108;;;1424:25:1;;;1412:2;1397:18;7273:108:0;1278:177:1;9153:529:0;;;;;;;;;;-1:-1:-1;9153:529:0;;;;;:::i;:::-;;:::i;19911:29::-;;;;;;;;;;;;;;;;7116:92;;;;;;;;;;-1:-1:-1;7116:92:0;;7199:1;1935:36:1;;1923:2;1908:18;7116:92:0;1793:184:1;10091:297:0;;;;;;;;;;-1:-1:-1;10091:297:0;;;;;:::i;:::-;;:::i;22192:113::-;;;;;;;;;;-1:-1:-1;22192:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;22277:20:0;22253:4;22277:20;;;:11;:20;;;;;;;;;22192:113;22005:83;;;;;;;;;;-1:-1:-1;22005:83:0;;;;;:::i;:::-;;:::i;:::-;;7444:177;;;;;;;;;;-1:-1:-1;7444:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;7595:18:0;7563:7;7595:18;;;;;;;;;;;;7444:177;18067:94;;;;;;;;;;;;;:::i;20774:199::-;;;;;;;;;;;;;:::i;17416:87::-;;;;;;;;;;-1:-1:-1;17489:6:0;;17416:87;;-1:-1:-1;;;;;17489:6:0;;;2504:74:1;;2492:2;2477:18;17416:87:0;2358:226:1;6373:104:0;;;;;;;;;;;;;:::i;10891:482::-;;;;;;;;;;-1:-1:-1;10891:482:0;;;;;:::i;:::-;;:::i;7834:216::-;;;;;;;;;;-1:-1:-1;7834:216:0;;;;;:::i;:::-;;:::i;22389:201::-;;;;;;;;;;-1:-1:-1;22389:201:0;;;;;:::i;:::-;;:::i;8113:::-;;;;;;;;;;-1:-1:-1;8113:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;8279:18:0;;;8247:7;8279:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8113:201;21677:197;;;;;;;;;;-1:-1:-1;21677:197:0;;;;;:::i;:::-;;:::i;22679:205::-;;;;;;;;;;;;;:::i;18316:229::-;;;;;;;;;;-1:-1:-1;18316:229:0;;;;;:::i;:::-;;:::i;21561:108::-;;;;;;;;;;-1:-1:-1;21561:108:0;;;;;:::i;:::-;;:::i;6154:100::-;6208:13;6241:5;6234:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6154:100;:::o;8461:210::-;8580:4;8602:39;4053:10;8625:7;8634:6;8602:8;:39::i;:::-;-1:-1:-1;8659:4:0;8461:210;;;;;:::o;9153:529::-;9293:4;9310:36;9320:6;9328:9;9339:6;9310:9;:36::i;:::-;-1:-1:-1;;;;;9386:19:0;;9359:24;9386:19;;;:11;:19;;;;;;;;4053:10;9386:33;;;;;;;;9452:26;;;;9430:116;;;;-1:-1:-1;;;9430:116:0;;5518:2:1;9430:116:0;;;5500:21:1;5557:2;5537:18;;;5530:30;5596:34;5576:18;;;5569:62;5667:10;5647:18;;;5640:38;5695:19;;9430:116:0;;;;;;;;;9582:57;9591:6;4053:10;9632:6;9613:16;:25;9582:8;:57::i;:::-;-1:-1:-1;9670:4:0;;9153:529;-1:-1:-1;;;;9153:529:0:o;10091:297::-;4053:10;10206:4;10300:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10300:34:0;;;;;;;;;;10206:4;;10228:130;;10278:7;;10300:47;;10337:10;;10300:47;:::i;:::-;10228:8;:130::i;22005:83::-;22053:27;4053:10;22073:6;22053:5;:27::i;:::-;22005:83;:::o;18067:94::-;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;18132:21:::1;18150:1;18132:9;:21::i;:::-;18067:94::o:0;20774:199::-;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;20838:16:::1;::::0;::::1;;20837:17;20829:59;;;::::0;-1:-1:-1;;;20829:59:0;;6607:2:1;20829:59:0::1;::::0;::::1;6589:21:1::0;6646:2;6626:18;;;6619:30;6685:31;6665:18;;;6658:59;6734:18;;20829:59:0::1;6405:353:1::0;20829:59:0::1;20899:16;:23:::0;;-1:-1:-1;;20899:23:0::1;20918:4;20899:23;::::0;;20950:15:::1;20933:14;:32:::0;20774:199::o;6373:104::-;6429:13;6462:7;6455:14;;;;;:::i;10891:482::-;4053:10;11011:4;11060:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11060:34:0;;;;;;;;;;11127:35;;;;11105:122;;;;-1:-1:-1;;;11105:122:0;;6965:2:1;11105:122:0;;;6947:21:1;7004:2;6984:18;;;6977:30;7043:34;7023:18;;;7016:62;7114:7;7094:18;;;7087:35;7139:19;;11105:122:0;6763:401:1;11105:122:0;11263:67;4053:10;11286:7;11314:15;11295:16;:34;11263:8;:67::i;:::-;-1:-1:-1;11361:4:0;;10891:482;-1:-1:-1;;;10891:482:0:o;7834:216::-;7956:4;7978:42;4053:10;8002:9;8013:6;7978:9;:42::i;22389:201::-;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;22504:10;;22500:83:::1;;22538:6;-1:-1:-1::0;;;;;22531:23:0::1;;22555:7;17489:6:::0;;-1:-1:-1;;;;;17489:6:0;;17416:87;22555:7:::1;22531:40;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;7361:55:1;;;22531:40:0::1;::::0;::::1;7343:74:1::0;7433:18;;;7426:34;;;7316:18;;22531:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22500:83;22389:201:::0;;:::o;21677:197::-;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;21773:8:::1;21768:99;21791:8;:15;21787:1;:19;;;21768:99;;;21828:27;21838:8;21847:1;21838:11;;;;;;;;;;:::i;:::-;;;;;;;21851:3;21828:9;:27::i;:::-;21808:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21768:99;;22679:205:::0;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;22747:21:::1;22729:15;22793:7;17489:6:::0;;-1:-1:-1;;;;;17489:6:0;;17416:87;22793:7:::1;-1:-1:-1::0;;;;;22793:12:0::1;22813:7;22793:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22779:46;;;22844:2;22836:40;;;::::0;-1:-1:-1;;;22836:40:0;;8524:2:1;22836:40:0::1;::::0;::::1;8506:21:1::0;8563:2;8543:18;;;8536:30;8602:27;8582:18;;;8575:55;8647:18;;22836:40:0::1;8322:349:1::0;18316:229:0;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;-1:-1:-1;;;;;18419:22:0;::::1;18397:110;;;::::0;-1:-1:-1;;;18397:110:0;;8878:2:1;18397:110:0::1;::::0;::::1;8860:21:1::0;8917:2;8897:18;;;8890:30;8956:34;8936:18;;;8929:62;9027:8;9007:18;;;9000:36;9053:19;;18397:110:0::1;8676:402:1::0;18397:110:0::1;18518:19;18528:8;18518:9;:19::i;21561:108::-:0;17489:6;;-1:-1:-1;;;;;17489:6:0;4053:10;17636:23;17628:68;;;;-1:-1:-1;;;17628:68:0;;6246:2:1;17628:68:0;;;6228:21:1;;;6265:18;;;6258:30;6324:34;6304:18;;;6297:62;6376:18;;17628:68:0;6044:356:1;17628:68:0;-1:-1:-1;;;;;21635:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:26;;-1:-1:-1;;21635:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21561:108::o;14681:380::-;-1:-1:-1;;;;;14817:19:0;;14809:68;;;;-1:-1:-1;;;14809:68:0;;9285:2:1;14809:68:0;;;9267:21:1;9324:2;9304:18;;;9297:30;9363:34;9343:18;;;9336:62;9434:6;9414:18;;;9407:34;9458:19;;14809:68:0;9083:400:1;14809:68:0;-1:-1:-1;;;;;14896:21:0;;14888:68;;;;-1:-1:-1;;;14888:68:0;;9690:2:1;14888:68:0;;;9672:21:1;9729:2;9709:18;;;9702:30;9768:34;9748:18;;;9741:62;9839:4;9819:18;;;9812:32;9861:19;;14888:68:0;9488:398:1;14888:68:0;-1:-1:-1;;;;;14969:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15021:32;;1424:25:1;;;15021:32:0;;1397:18:1;15021:32:0;;;;;;;14681:380;;;:::o;20981:572::-;17489:6;;-1:-1:-1;;;;;21126:17:0;;;17489:6;;21126:17;21122:111;;21168:16;;;;21160:61;;;;-1:-1:-1;;;21160:61:0;;10093:2:1;21160:61:0;;;10075:21:1;;;10112:18;;;10105:30;10171:34;10151:18;;;10144:62;10223:18;;21160:61:0;9891:356:1;21160:61:0;21267:14;;:22;;21284:5;21267:22;:::i;:::-;21249:15;:40;21245:246;;;-1:-1:-1;;;;;22277:20:0;;22253:4;22277:20;;;:11;:20;;;;;;;;21332:49;;;-1:-1:-1;;;;;;22277:20:0;;22253:4;22277:20;;;:11;:20;;;;;;;;21357:24;21306:173;;;;-1:-1:-1;;;21306:173:0;;10454:2:1;21306:173:0;;;10436:21:1;10493:2;10473:18;;;10466:30;10532:34;10512:18;;;10505:62;10603:32;10583:18;;;10576:60;10653:19;;21306:173:0;10252:426:1;21306:173:0;21503:42;21519:6;21527:9;21538:6;21503:15;:42::i;13652:591::-;-1:-1:-1;;;;;13736:21:0;;13728:67;;;;-1:-1:-1;;;13728:67:0;;10885:2:1;13728:67:0;;;10867:21:1;10924:2;10904:18;;;10897:30;10963:34;10943:18;;;10936:62;11034:3;11014:18;;;11007:31;11055:19;;13728:67:0;10683:397:1;13728:67:0;13808:49;13829:7;13846:1;13850:6;13808:20;:49::i;:::-;-1:-1:-1;;;;;13895:18:0;;13870:22;13895:18;;;;;;;;;;;13932:24;;;;13924:71;;;;-1:-1:-1;;;13924:71:0;;11287:2:1;13924:71:0;;;11269:21:1;11326:2;11306:18;;;11299:30;11365:34;11345:18;;;11338:62;11436:4;11416:18;;;11409:32;11458:19;;13924:71:0;11085:398:1;13924:71:0;-1:-1:-1;;;;;14031:18:0;;:9;:18;;;;;;;;;;14052:23;;;14031:44;;14097:12;:22;;14069:6;;14031:9;14097:22;;14069:6;;14097:22;:::i;:::-;;;;-1:-1:-1;;14137:37:0;;1424:25:1;;;14163:1:0;;-1:-1:-1;;;;;14137:37:0;;;;;1412:2:1;1397:18;14137:37:0;;;;;;;14187:48;14207:7;14224:1;14228:6;14187:19;:48::i;18681:174::-;18757:6;;;-1:-1:-1;;;;;18774:17:0;;;;;;;;;;;18807:40;;18757:6;;;18774:17;18757:6;;18807:40;;18738:16;;18807:40;18727:128;18681:174;:::o;11863:770::-;-1:-1:-1;;;;;12003:20:0;;11995:70;;;;-1:-1:-1;;;11995:70:0;;11823:2:1;11995:70:0;;;11805:21:1;11862:2;11842:18;;;11835:30;11901:34;11881:18;;;11874:62;11972:7;11952:18;;;11945:35;11997:19;;11995:70:0;11621:401:1;11995:70:0;-1:-1:-1;;;;;12084:23:0;;12076:71;;;;-1:-1:-1;;;12076:71:0;;12229:2:1;12076:71:0;;;12211:21:1;12268:2;12248:18;;;12241:30;12307:34;12287:18;;;12280:62;12378:5;12358:18;;;12351:33;12401:19;;12076:71:0;12027:399:1;12076:71:0;12160:47;12181:6;12189:9;12200:6;12160:20;:47::i;:::-;-1:-1:-1;;;;;12244:17:0;;12220:21;12244:17;;;;;;;;;;;12294:23;;;;12272:111;;;;-1:-1:-1;;;12272:111:0;;12633:2:1;12272:111:0;;;12615:21:1;12672:2;12652:18;;;12645:30;12711:34;12691:18;;;12684:62;12782:8;12762:18;;;12755:36;12808:19;;12272:111:0;12431:402:1;12272:111:0;-1:-1:-1;;;;;12419:17:0;;;:9;:17;;;;;;;;;;;12439:22;;;12419:42;;12483:20;;;;;;;;:30;;12455:6;;12419:9;12483:30;;12455:6;;12483:30;:::i;:::-;;;;;;;;12548:9;-1:-1:-1;;;;;12531:35:0;12540:6;-1:-1:-1;;;;;12531:35:0;;12559:6;12531:35;;;;1424:25:1;;1412:2;1397:18;;1278:177;12531:35:0;;;;;;;;12579:46;12599:6;12607:9;12618:6;12579:19;:46::i;:::-;11984:649;11863:770;;;:::o;206:607:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;804:2;-1:-1:-1;;729:2:1;721:6;717:15;713:88;702:9;698:104;694:113;686:121;;;;206:607;;;;:::o;818:196::-;886:20;;-1:-1:-1;;;;;935:54:1;;925:65;;915:93;;1004:1;1001;994:12;915:93;818:196;;;:::o;1019:254::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;1263:2;1248:18;;;;1235:32;;-1:-1:-1;;;1019:254:1:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:1:o;2173:180::-;2232:6;2285:2;2273:9;2264:7;2260:23;2256:32;2253:52;;;2301:1;2298;2291:12;2253:52;-1:-1:-1;2324:23:1;;2173:180;-1:-1:-1;2173:180:1:o;2589:260::-;2657:6;2665;2718:2;2706:9;2697:7;2693:23;2689:32;2686:52;;;2734:1;2731;2724:12;2686:52;2757:29;2776:9;2757:29;:::i;:::-;2747:39;;2805:38;2839:2;2828:9;2824:18;2805:38;:::i;:::-;2795:48;;2589:260;;;;;:::o;2854:184::-;-1:-1:-1;;;2903:1:1;2896:88;3003:4;3000:1;2993:15;3027:4;3024:1;3017:15;3043:118;3129:5;3122:13;3115:21;3108:5;3105:32;3095:60;;3151:1;3148;3141:12;3166:128;3231:20;;3260:28;3231:20;3260:28;:::i;3299:1250::-;3389:6;3397;3450:2;3438:9;3429:7;3425:23;3421:32;3418:52;;;3466:1;3463;3456:12;3418:52;3506:9;3493:23;3535:18;3576:2;3568:6;3565:14;3562:34;;;3592:1;3589;3582:12;3562:34;3630:6;3619:9;3615:22;3605:32;;3675:7;3668:4;3664:2;3660:13;3656:27;3646:55;;3697:1;3694;3687:12;3646:55;3733:2;3720:16;3755:4;3778:2;3774;3771:10;3768:36;;;3784:18;;:::i;:::-;3830:2;3827:1;3823:10;3862:2;3856:9;-1:-1:-1;;3916:2:1;3912;3908:11;3904:84;3896:6;3892:97;4039:6;4027:10;4024:22;4019:2;4007:10;4004:18;4001:46;3998:72;;;4050:18;;:::i;:::-;4086:2;4079:22;4136:18;;;4170:15;;;;-1:-1:-1;4212:11:1;;;4208:20;;;4240:19;;;4237:39;;;4272:1;4269;4262:12;4237:39;4296:11;;;;4316:148;4332:6;4327:3;4324:15;4316:148;;;4398:23;4417:3;4398:23;:::i;:::-;4386:36;;4349:12;;;;4442;;;;4316:148;;;4483:6;-1:-1:-1;4508:35:1;;-1:-1:-1;4524:18:1;;;4508:35;:::i;:::-;4498:45;;;;;;3299:1250;;;;;:::o;4554:315::-;4619:6;4627;4680:2;4668:9;4659:7;4655:23;4651:32;4648:52;;;4696:1;4693;4686:12;4648:52;4719:29;4738:9;4719:29;:::i;:::-;4709:39;;4798:2;4787:9;4783:18;4770:32;4811:28;4833:5;4811:28;:::i;:::-;4858:5;4848:15;;;4554:315;;;;;:::o;4874:437::-;4953:1;4949:12;;;;4996;;;5017:61;;5071:4;5063:6;5059:17;5049:27;;5017:61;5124:2;5116:6;5113:14;5093:18;5090:38;5087:218;;-1:-1:-1;;;5158:1:1;5151:88;5262:4;5259:1;5252:15;5290:4;5287:1;5280:15;5087:218;;4874:437;;;:::o;5725:184::-;-1:-1:-1;;;5774:1:1;5767:88;5874:4;5871:1;5864:15;5898:4;5895:1;5888:15;5914:125;5979:9;;;6000:10;;;5997:36;;;6013:18;;:::i;7471:245::-;7538:6;7591:2;7579:9;7570:7;7566:23;7562:32;7559:52;;;7607:1;7604;7597:12;7559:52;7639:9;7633:16;7658:28;7680:5;7658:28;:::i;7721:184::-;-1:-1:-1;;;7770:1:1;7763:88;7870:4;7867:1;7860:15;7894:4;7891:1;7884:15;7910:197;7948:3;7976:6;8017:2;8010:5;8006:14;8044:2;8035:7;8032:15;8029:41;;8050:18;;:::i;:::-;8099:1;8086:15;;7910:197;-1:-1:-1;;;7910:197:1:o;11488:128::-;11555:9;;;11576:11;;;11573:37;;;11590:18;;:::i

Swarm Source

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