ETH Price: $3,418.72 (-2.33%)
Gas: 10 Gwei

Token

Pepe (PEPE)
 

Overview

Max Total Supply

9,962,000,000 PEPE

Holders

179

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
191,668.443722291899192794 PEPE

Value
$0.00
0x03098a0Ce26224bd072255Df7f20007AEA03eB35
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:
PEPE

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-28
*/

// SPDX-License-Identifier: MIT

// Website: https://anycoin.wtf/

// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol

// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

// 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/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 (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 */
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/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;





/**
 * @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}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

    mapping(address account => mapping(address spender => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual 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 `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` 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 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        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 `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` 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.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

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

// File: contracts/Anycoin.sol


pragma solidity ^0.8.0;


/**
 * @title PEPE contract
 * @dev Extends ERC20. 
 */
contract PEPE is ERC20 {

	// Fee for changing the token name and symbol
	uint256 public constant burnFee = 1_000_000 * (10 ** 18);
	string private _name;
	string private _symbol;

	// Struct to keep track of name and symbol changes
	struct NameSymbolChange {
		string name;
		string symbol;
		address changer;
		uint256 timestamp;
	}

	// An array to keep track of all changes
	NameSymbolChange[] public changes;

	// Event for changing name and symbol
	event NameSymbolChanged(string newName, string newSymbol, address indexed changer, uint256 timestamp);

	constructor() ERC20("Pepe", "PEPE") {
		_mint(msg.sender, 10_000_000_000 * (10 ** decimals()));
        _makeChange("Pepe", "PEPE");
	}

	// Function to change the token name and symbol
	function burnForChange(string memory newName, string memory newSymbol) public {
		require(balanceOf(msg.sender) >= burnFee, "Insufficient balance to change name and symbol");
		require(bytes(newSymbol).length <= 10 && bytes(newSymbol).length > 0, 'SYMBOL must be between 0 and 10 characters');
		require(bytes(newName).length <= 26 && bytes(newName).length > 0, 'NAME must be between 0 and 26 characters');
		_burn(msg.sender, burnFee);
        _makeChange(newName, newSymbol);
    }

  function _makeChange(string memory newName, string memory newSymbol) private {
		// Adding the change to the history
		changes.push(NameSymbolChange({
        timestamp: block.timestamp,
            changer: msg.sender,
            symbol: newSymbol,
            name: newName
        }));

        // Log the name and symbol change
        emit NameSymbolChanged(newName, newSymbol, msg.sender, block.timestamp);

        // We use a private variable to store the new name and symbol
        _name = newName;
        _symbol = newSymbol;
	}

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

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

	// Function to retrieve a list of previous names, symbols, and users
	function getBurnChangeHistory(uint256 page, uint256 pageSize) public view returns (NameSymbolChange[] memory) {
        require(pageSize > 0, "PageSize must be greater than 0");
        uint256 totalChanges = changes.length;

        if (totalChanges == 0 || page * pageSize >= totalChanges) {
                return new NameSymbolChange[](0); // Return an empty array if no changes or the page is out of range
        }

        uint256 start = page * pageSize;
        uint256 end = (start + pageSize > totalChanges) ? totalChanges : (start + pageSize);
        uint256 itemsToFetch = end - start;

        NameSymbolChange[] memory history = new NameSymbolChange[](itemsToFetch);

        for (uint256 i = 0; i < itemsToFetch; i++) {
                history[i] = changes[totalChanges - 1 - i - start];
        }
        return history;
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":false,"internalType":"string","name":"newName","type":"string"},{"indexed":false,"internalType":"string","name":"newSymbol","type":"string"},{"indexed":true,"internalType":"address","name":"changer","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"NameSymbolChanged","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":"value","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":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"burnForChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"changes","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"changer","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"page","type":"uint256"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"name":"getBurnChangeHistory","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"changer","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct PEPE.NameSymbolChange[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b50604051806040016040528060048152602001635065706560e01b815250604051806040016040528060048152602001635045504560e01b81525081600390816200005c91906200041e565b5060046200006b82826200041e565b505050620000a73362000083620000f760201b60201c565b6200009090600a620005f5565b620000a1906402540be4006200060c565b620000fc565b620000f1604051806040016040528060048152602001635065706560e01b815250604051806040016040528060048152602001635045504560e01b8152506200013c60201b60201c565b620006ba565b601290565b6001600160a01b0382166200012b5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b620001385f838362000250565b5050565b60408051608081018252838152602081018390523391810191909152426060820152600780546001810182555f91909152815160049091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801908190620001a590826200041e565b5060208201516001820190620001bc90826200041e565b506040828101516002830180546001600160a01b0319166001600160a01b039092169190911790556060909201516003909101555133907f6743fea860c6d9f87592dd91c2997ae53858e412388811c4130d11175cf13f919062000226908590859042906200066b565b60405180910390a260056200023c83826200041e565b5060066200024b82826200041e565b505050565b6001600160a01b0383166200027e578060025f828254620002729190620006a4565b90915550620002f09050565b6001600160a01b0383165f9081526020819052604090205481811015620002d25760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000122565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166200030e576002805482900390556200032c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037291815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003a857607f821691505b602082108103620003c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200024b575f81815260208120601f850160051c81016020861015620003f55750805b601f850160051c820191505b81811015620004165782815560010162000401565b505050505050565b81516001600160401b038111156200043a576200043a6200037f565b62000452816200044b845462000393565b84620003cd565b602080601f83116001811462000488575f8415620004705750858301515b5f19600386901b1c1916600185901b17855562000416565b5f85815260208120601f198616915b82811015620004b85788860151825594840194600190910190840162000497565b5085821015620004d657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200053a57815f19048211156200051e576200051e620004e6565b808516156200052c57918102915b93841c9390800290620004ff565b509250929050565b5f826200055257506001620005ef565b816200056057505f620005ef565b81600181146200057957600281146200058457620005a4565b6001915050620005ef565b60ff841115620005985762000598620004e6565b50506001821b620005ef565b5060208310610133831016604e8410600b8410161715620005c9575081810a620005ef565b620005d58383620004fa565b805f1904821115620005eb57620005eb620004e6565b0290505b92915050565b5f6200060560ff84168362000542565b9392505050565b8082028115828204841417620005ef57620005ef620004e6565b5f81518084525f5b818110156200064c576020818501810151868301820152016200062e565b505f602082860101526020601f19601f83011685010191505092915050565b606081525f6200067f606083018662000626565b828103602084015262000693818662000626565b915050826040830152949350505050565b80820180821115620005ef57620005ef620004e6565b6112c380620006c85f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638d62c64e11610088578063d5d2289511610063578063d5d22895146101aa578063dd62ed3e146101bf578063f0304db5146101f7578063fce589d814610217575f80fd5b80638d62c64e1461016c57806395d89b411461018f578063a9059cbb14610197575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806370a0823114610144575b5f80fd5b6100d7610228565b6040516100e49190610da4565b60405180910390f35b6101006100fb366004610dd8565b6102b8565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b610100610130366004610e00565b6102d1565b604051601281526020016100e4565b610114610152366004610e39565b6001600160a01b03165f9081526020819052604090205490565b61017f61017a366004610e52565b6102f4565b6040516100e49493929190610e69565b6100d7610445565b6101006101a5366004610dd8565b610454565b6101bd6101b8366004610f47565b610461565b005b6101146101cd366004610fa7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61020a610205366004610fd8565b6105e7565b6040516100e49190610ff8565b61011469d3c21bcecceda100000081565b6060600580546102379061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546102639061109a565b80156102ae5780601f10610285576101008083540402835291602001916102ae565b820191905f5260205f20905b81548152906001019060200180831161029157829003601f168201915b5050505050905090565b5f336102c5818585610946565b60019150505b92915050565b5f336102de858285610958565b6102e98585856109d3565b506001949350505050565b60078181548110610303575f80fd5b905f5260205f2090600402015f91509050805f0180546103229061109a565b80601f016020809104026020016040519081016040528092919081815260200182805461034e9061109a565b80156103995780601f1061037057610100808354040283529160200191610399565b820191905f5260205f20905b81548152906001019060200180831161037c57829003601f168201915b5050505050908060010180546103ae9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546103da9061109a565b80156104255780601f106103fc57610100808354040283529160200191610425565b820191905f5260205f20905b81548152906001019060200180831161040857829003601f168201915b50505050600283015460039093015491926001600160a01b031691905084565b6060600680546102379061109a565b5f336102c58185856109d3565b335f9081526020819052604090205469d3c21bcecceda100000011156104e55760405162461bcd60e51b815260206004820152602e60248201527f496e73756666696369656e742062616c616e636520746f206368616e6765206e60448201526d185b5948185b99081cde5b589bdb60921b60648201526084015b60405180910390fd5b600a8151111580156104f757505f8151115b6105565760405162461bcd60e51b815260206004820152602a60248201527f53594d424f4c206d757374206265206265747765656e203020616e64203130206044820152696368617261637465727360b01b60648201526084016104dc565b601a82511115801561056857505f8251115b6105c55760405162461bcd60e51b815260206004820152602860248201527f4e414d45206d757374206265206265747765656e203020616e64203236206368604482015267617261637465727360c01b60648201526084016104dc565b6105d93369d3c21bcecceda1000000610a30565b6105e38282610a64565b5050565b60605f82116106385760405162461bcd60e51b815260206004820152601f60248201527f5061676553697a65206d7573742062652067726561746572207468616e20300060448201526064016104dc565b60075480158061065157508061064e84866110e6565b10155b156106b957604080515f80825260208201909252906106b0565b61069d604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f81525090565b81526020019060019003908161066b5790505b509150506102cb565b5f6106c484866110e6565b90505f826106d286846110fd565b116106e6576106e185836110fd565b6106e8565b825b90505f6106f58383611110565b90505f8167ffffffffffffffff81111561071157610711610eaa565b60405190808252806020026020018201604052801561077457816020015b610761604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f81525090565b81526020019060019003908161072f5790505b5090505f5b8281101561093a576007858261079060018a611110565b61079a9190611110565b6107a49190611110565b815481106107b4576107b4611123565b905f5260205f2090600402016040518060800160405290815f820180546107da9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546108069061109a565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050815260200160018201805461086a9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546108969061109a565b80156108e15780601f106108b8576101008083540402835291602001916108e1565b820191905f5260205f20905b8154815290600101906020018083116108c457829003601f168201915b505050918352505060028201546001600160a01b03166020820152600390910154604090910152825183908390811061091c5761091c611123565b6020026020010181905250808061093290611137565b915050610779565b50979650505050505050565b6109538383836001610b69565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146109cd57818110156109bf57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104dc565b6109cd84848484035f610b69565b50505050565b6001600160a01b0383166109fc57604051634b637e8f60e11b81525f60048201526024016104dc565b6001600160a01b038216610a255760405163ec442f0560e01b81525f60048201526024016104dc565b610953838383610c3b565b6001600160a01b038216610a5957604051634b637e8f60e11b81525f60048201526024016104dc565b6105e3825f83610c3b565b60408051608081018252838152602081018390523391810191909152426060820152600780546001810182555f91909152815160049091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801908190610acb908261119c565b5060208201516001820190610ae0908261119c565b506040828101516002830180546001600160a01b0319166001600160a01b039092169190911790556060909201516003909101555133907f6743fea860c6d9f87592dd91c2997ae53858e412388811c4130d11175cf13f9190610b4890859085904290611258565b60405180910390a26005610b5c838261119c565b506006610953828261119c565b6001600160a01b038416610b925760405163e602df0560e01b81525f60048201526024016104dc565b6001600160a01b038316610bbb57604051634a1406b160e11b81525f60048201526024016104dc565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156109cd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c2d91815260200190565b60405180910390a350505050565b6001600160a01b038316610c65578060025f828254610c5a91906110fd565b90915550610cd59050565b6001600160a01b0383165f9081526020819052604090205481811015610cb75760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104dc565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610cf157600280548290039055610d0f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d5491815260200190565b60405180910390a3505050565b5f81518084525f5b81811015610d8557602081850181015186830182015201610d69565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610db66020830184610d61565b9392505050565b80356001600160a01b0381168114610dd3575f80fd5b919050565b5f8060408385031215610de9575f80fd5b610df283610dbd565b946020939093013593505050565b5f805f60608486031215610e12575f80fd5b610e1b84610dbd565b9250610e2960208501610dbd565b9150604084013590509250925092565b5f60208284031215610e49575f80fd5b610db682610dbd565b5f60208284031215610e62575f80fd5b5035919050565b608081525f610e7b6080830187610d61565b8281036020840152610e8d8187610d61565b6001600160a01b0395909516604084015250506060015292915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610ecd575f80fd5b813567ffffffffffffffff80821115610ee857610ee8610eaa565b604051601f8301601f19908116603f01168101908282118183101715610f1057610f10610eaa565b81604052838152866020858801011115610f28575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610f58575f80fd5b823567ffffffffffffffff80821115610f6f575f80fd5b610f7b86838701610ebe565b93506020850135915080821115610f90575f80fd5b50610f9d85828601610ebe565b9150509250929050565b5f8060408385031215610fb8575f80fd5b610fc183610dbd565b9150610fcf60208401610dbd565b90509250929050565b5f8060408385031215610fe9575f80fd5b50508035926020909101359150565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101561108c57603f1989840301855281516080815181865261104382870182610d61565b915050888201518582038a87015261105b8282610d61565b838a01516001600160a01b0316878b015260609384015193909601929092525050938601939086019060010161101d565b509098975050505050505050565b600181811c908216806110ae57607f821691505b6020821081036110cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102cb576102cb6110d2565b808201808211156102cb576102cb6110d2565b818103818111156102cb576102cb6110d2565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611148576111486110d2565b5060010190565b601f821115610953575f81815260208120601f850160051c810160208610156111755750805b601f850160051c820191505b8181101561119457828155600101611181565b505050505050565b815167ffffffffffffffff8111156111b6576111b6610eaa565b6111ca816111c4845461109a565b8461114f565b602080601f8311600181146111fd575f84156111e65750858301515b5f19600386901b1c1916600185901b178555611194565b5f85815260208120601f198616915b8281101561122b5788860151825594840194600190910190840161120c565b508582101561124857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081525f61126a6060830186610d61565b828103602084015261127c8186610d61565b91505082604083015294935050505056fea26469706673582212206f4584611bb20f8636f0753b05b95a9193dde5cf57b8b1a3e3b7835c8653309464736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638d62c64e11610088578063d5d2289511610063578063d5d22895146101aa578063dd62ed3e146101bf578063f0304db5146101f7578063fce589d814610217575f80fd5b80638d62c64e1461016c57806395d89b411461018f578063a9059cbb14610197575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806370a0823114610144575b5f80fd5b6100d7610228565b6040516100e49190610da4565b60405180910390f35b6101006100fb366004610dd8565b6102b8565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b610100610130366004610e00565b6102d1565b604051601281526020016100e4565b610114610152366004610e39565b6001600160a01b03165f9081526020819052604090205490565b61017f61017a366004610e52565b6102f4565b6040516100e49493929190610e69565b6100d7610445565b6101006101a5366004610dd8565b610454565b6101bd6101b8366004610f47565b610461565b005b6101146101cd366004610fa7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61020a610205366004610fd8565b6105e7565b6040516100e49190610ff8565b61011469d3c21bcecceda100000081565b6060600580546102379061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546102639061109a565b80156102ae5780601f10610285576101008083540402835291602001916102ae565b820191905f5260205f20905b81548152906001019060200180831161029157829003601f168201915b5050505050905090565b5f336102c5818585610946565b60019150505b92915050565b5f336102de858285610958565b6102e98585856109d3565b506001949350505050565b60078181548110610303575f80fd5b905f5260205f2090600402015f91509050805f0180546103229061109a565b80601f016020809104026020016040519081016040528092919081815260200182805461034e9061109a565b80156103995780601f1061037057610100808354040283529160200191610399565b820191905f5260205f20905b81548152906001019060200180831161037c57829003601f168201915b5050505050908060010180546103ae9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546103da9061109a565b80156104255780601f106103fc57610100808354040283529160200191610425565b820191905f5260205f20905b81548152906001019060200180831161040857829003601f168201915b50505050600283015460039093015491926001600160a01b031691905084565b6060600680546102379061109a565b5f336102c58185856109d3565b335f9081526020819052604090205469d3c21bcecceda100000011156104e55760405162461bcd60e51b815260206004820152602e60248201527f496e73756666696369656e742062616c616e636520746f206368616e6765206e60448201526d185b5948185b99081cde5b589bdb60921b60648201526084015b60405180910390fd5b600a8151111580156104f757505f8151115b6105565760405162461bcd60e51b815260206004820152602a60248201527f53594d424f4c206d757374206265206265747765656e203020616e64203130206044820152696368617261637465727360b01b60648201526084016104dc565b601a82511115801561056857505f8251115b6105c55760405162461bcd60e51b815260206004820152602860248201527f4e414d45206d757374206265206265747765656e203020616e64203236206368604482015267617261637465727360c01b60648201526084016104dc565b6105d93369d3c21bcecceda1000000610a30565b6105e38282610a64565b5050565b60605f82116106385760405162461bcd60e51b815260206004820152601f60248201527f5061676553697a65206d7573742062652067726561746572207468616e20300060448201526064016104dc565b60075480158061065157508061064e84866110e6565b10155b156106b957604080515f80825260208201909252906106b0565b61069d604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f81525090565b81526020019060019003908161066b5790505b509150506102cb565b5f6106c484866110e6565b90505f826106d286846110fd565b116106e6576106e185836110fd565b6106e8565b825b90505f6106f58383611110565b90505f8167ffffffffffffffff81111561071157610711610eaa565b60405190808252806020026020018201604052801561077457816020015b610761604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f81525090565b81526020019060019003908161072f5790505b5090505f5b8281101561093a576007858261079060018a611110565b61079a9190611110565b6107a49190611110565b815481106107b4576107b4611123565b905f5260205f2090600402016040518060800160405290815f820180546107da9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546108069061109a565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050815260200160018201805461086a9061109a565b80601f01602080910402602001604051908101604052809291908181526020018280546108969061109a565b80156108e15780601f106108b8576101008083540402835291602001916108e1565b820191905f5260205f20905b8154815290600101906020018083116108c457829003601f168201915b505050918352505060028201546001600160a01b03166020820152600390910154604090910152825183908390811061091c5761091c611123565b6020026020010181905250808061093290611137565b915050610779565b50979650505050505050565b6109538383836001610b69565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146109cd57818110156109bf57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104dc565b6109cd84848484035f610b69565b50505050565b6001600160a01b0383166109fc57604051634b637e8f60e11b81525f60048201526024016104dc565b6001600160a01b038216610a255760405163ec442f0560e01b81525f60048201526024016104dc565b610953838383610c3b565b6001600160a01b038216610a5957604051634b637e8f60e11b81525f60048201526024016104dc565b6105e3825f83610c3b565b60408051608081018252838152602081018390523391810191909152426060820152600780546001810182555f91909152815160049091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801908190610acb908261119c565b5060208201516001820190610ae0908261119c565b506040828101516002830180546001600160a01b0319166001600160a01b039092169190911790556060909201516003909101555133907f6743fea860c6d9f87592dd91c2997ae53858e412388811c4130d11175cf13f9190610b4890859085904290611258565b60405180910390a26005610b5c838261119c565b506006610953828261119c565b6001600160a01b038416610b925760405163e602df0560e01b81525f60048201526024016104dc565b6001600160a01b038316610bbb57604051634a1406b160e11b81525f60048201526024016104dc565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156109cd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c2d91815260200190565b60405180910390a350505050565b6001600160a01b038316610c65578060025f828254610c5a91906110fd565b90915550610cd59050565b6001600160a01b0383165f9081526020819052604090205481811015610cb75760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104dc565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610cf157600280548290039055610d0f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d5491815260200190565b60405180910390a3505050565b5f81518084525f5b81811015610d8557602081850181015186830182015201610d69565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610db66020830184610d61565b9392505050565b80356001600160a01b0381168114610dd3575f80fd5b919050565b5f8060408385031215610de9575f80fd5b610df283610dbd565b946020939093013593505050565b5f805f60608486031215610e12575f80fd5b610e1b84610dbd565b9250610e2960208501610dbd565b9150604084013590509250925092565b5f60208284031215610e49575f80fd5b610db682610dbd565b5f60208284031215610e62575f80fd5b5035919050565b608081525f610e7b6080830187610d61565b8281036020840152610e8d8187610d61565b6001600160a01b0395909516604084015250506060015292915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610ecd575f80fd5b813567ffffffffffffffff80821115610ee857610ee8610eaa565b604051601f8301601f19908116603f01168101908282118183101715610f1057610f10610eaa565b81604052838152866020858801011115610f28575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610f58575f80fd5b823567ffffffffffffffff80821115610f6f575f80fd5b610f7b86838701610ebe565b93506020850135915080821115610f90575f80fd5b50610f9d85828601610ebe565b9150509250929050565b5f8060408385031215610fb8575f80fd5b610fc183610dbd565b9150610fcf60208401610dbd565b90509250929050565b5f8060408385031215610fe9575f80fd5b50508035926020909101359150565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101561108c57603f1989840301855281516080815181865261104382870182610d61565b915050888201518582038a87015261105b8282610d61565b838a01516001600160a01b0316878b015260609384015193909601929092525050938601939086019060010161101d565b509098975050505050505050565b600181811c908216806110ae57607f821691505b6020821081036110cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102cb576102cb6110d2565b808201808211156102cb576102cb6110d2565b818103818111156102cb576102cb6110d2565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611148576111486110d2565b5060010190565b601f821115610953575f81815260208120601f850160051c810160208610156111755750805b601f850160051c820191505b8181101561119457828155600101611181565b505050505050565b815167ffffffffffffffff8111156111b6576111b6610eaa565b6111ca816111c4845461109a565b8461114f565b602080601f8311600181146111fd575f84156111e65750858301515b5f19600386901b1c1916600185901b178555611194565b5f85815260208120601f198616915b8281101561122b5788860151825594840194600190910190840161120c565b508582101561124857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081525f61126a6060830186610d61565b828103602084015261127c8186610d61565b91505082604083015294935050505056fea26469706673582212206f4584611bb20f8636f0753b05b95a9193dde5cf57b8b1a3e3b7835c8653309464736f6c63430008150033

Deployed Bytecode Sourcemap

22689:3087:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24582:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15527:190;;;;;;:::i;:::-;;:::i;:::-;;;1269:14:1;;1262:22;1244:41;;1232:2;1217:18;15527:190:0;1104:187:1;14336:99:0;14415:12;;14336:99;;;1442:25:1;;;1430:2;1415:18;14336:99:0;1296:177:1;16295:249:0;;;;;;:::i;:::-;;:::i;14187:84::-;;;14261:2;1953:36:1;;1941:2;1926:18;14187:84:0;1811:184:1;14498:118:0;;;;;;:::i;:::-;-1:-1:-1;;;;;14590:18:0;14563:7;14590:18;;;;;;;;;;;;14498:118;23084:33;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;24742:96::-;;;:::i;14821:182::-;;;;;;:::i;:::-;;:::i;23463:489::-;;;;;;:::i;:::-;;:::i;:::-;;15066:142;;;;;;:::i;:::-;-1:-1:-1;;;;;15173:18:0;;;15146:7;15173:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15066:142;24914:859;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22766:56::-;;22800:22;22766:56;;24582:92;24628:13;24661:5;24654:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24582:92;:::o;15527:190::-;15600:4;7558:10;15656:31;7558:10;15672:7;15681:5;15656:8;:31::i;:::-;15705:4;15698:11;;;15527:190;;;;;:::o;16295:249::-;16382:4;7558:10;16440:37;16456:4;7558:10;16471:5;16440:15;:37::i;:::-;16488:26;16498:4;16504:2;16508:5;16488:9;:26::i;:::-;-1:-1:-1;16532:4:0;;16295:249;-1:-1:-1;;;;16295:249:0:o;23084:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;23084:33:0;;;;;;;;;;;-1:-1:-1;;;;;23084:33:0;;;-1:-1:-1;23084:33:0;:::o;24742:96::-;24790:13;24823:7;24816:14;;;;;:::i;14821:182::-;14890:4;7558:10;14946:27;7558:10;14963:2;14967:5;14946:9;:27::i;23463:489::-;23564:10;14563:7;14590:18;;;;;;;;;;;22800:22;-1:-1:-1;23554:32:0;23546:91;;;;-1:-1:-1;;;23546:91:0;;6838:2:1;23546:91:0;;;6820:21:1;6877:2;6857:18;;;6850:30;6916:34;6896:18;;;6889:62;-1:-1:-1;;;6967:18:1;;;6960:44;7021:19;;23546:91:0;;;;;;;;;23677:2;23656:9;23650:23;:29;;:60;;;;;23709:1;23689:9;23683:23;:27;23650:60;23642:115;;;;-1:-1:-1;;;23642:115:0;;7253:2:1;23642:115:0;;;7235:21:1;7292:2;7272:18;;;7265:30;7331:34;7311:18;;;7304:62;-1:-1:-1;;;7382:18:1;;;7375:40;7432:19;;23642:115:0;7051:406:1;23642:115:0;23795:2;23776:7;23770:21;:27;;:56;;;;;23825:1;23807:7;23801:21;:25;23770:56;23762:109;;;;-1:-1:-1;;;23762:109:0;;7664:2:1;23762:109:0;;;7646:21:1;7703:2;7683:18;;;7676:30;7742:34;7722:18;;;7715:62;-1:-1:-1;;;7793:18:1;;;7786:38;7841:19;;23762:109:0;7462:404:1;23762:109:0;23876:26;23882:10;22800:22;23876:5;:26::i;:::-;23913:31;23925:7;23934:9;23913:11;:31::i;:::-;23463:489;;:::o;24914:859::-;24997:25;25054:1;25043:8;:12;25035:56;;;;-1:-1:-1;;;25035:56:0;;8073:2:1;25035:56:0;;;8055:21:1;8112:2;8092:18;;;8085:30;8151:33;8131:18;;;8124:61;8202:18;;25035:56:0;7871:355:1;25035:56:0;25125:7;:14;25156:17;;;:52;;-1:-1:-1;25196:12:0;25177:15;25184:8;25177:4;:15;:::i;:::-;:31;;25156:52;25152:188;;;25236:25;;;25259:1;25236:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25236:25:0;;;;;;;;;;;;;;;;;25229:32;;;;;25152:188;25352:13;25368:15;25375:8;25368:4;:15;:::i;:::-;25352:31;-1:-1:-1;25394:11:0;25428:12;25409:16;25417:8;25352:31;25409:16;:::i;:::-;:31;25408:69;;25460:16;25468:8;25460:5;:16;:::i;:::-;25408:69;;;25444:12;25408:69;25394:83;-1:-1:-1;25488:20:0;25511:11;25517:5;25394:83;25511:11;:::i;:::-;25488:34;;25535:33;25594:12;25571:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25571:36:0;;;;;;;;;;;;;;;;;25535:72;;25625:9;25620:124;25644:12;25640:1;:16;25620:124;;;25695:7;25726:5;25722:1;25703:16;25718:1;25703:12;:16;:::i;:::-;:20;;;;:::i;:::-;:28;;;;:::i;:::-;25695:37;;;;;;;;:::i;:::-;;;;;;;;;;;25682:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25682:50:0;;;-1:-1:-1;;25682:50:0;;;;-1:-1:-1;;;;;25682:50:0;;;;;;;;;;;;;;;:10;;:7;;25690:1;;25682:10;;;;;;:::i;:::-;;;;;;:50;;;;25658:3;;;;;:::i;:::-;;;;25620:124;;;-1:-1:-1;25761:7:0;24914:859;-1:-1:-1;;;;;;;24914:859:0:o;20354:130::-;20439:37;20448:5;20455:7;20464:5;20471:4;20439:8;:37::i;:::-;20354:130;;;:::o;22070:487::-;-1:-1:-1;;;;;15173:18:0;;;22170:24;15173:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;22237:37:0;;22233:317;;22314:5;22295:16;:24;22291:132;;;22347:60;;-1:-1:-1;;;22347:60:0;;-1:-1:-1;;;;;9291:32:1;;22347:60:0;;;9273:51:1;9340:18;;;9333:34;;;9383:18;;;9376:34;;;9246:18;;22347:60:0;9071:345:1;22291:132:0;22466:57;22475:5;22482:7;22510:5;22491:16;:24;22517:5;22466:8;:57::i;:::-;22159:398;22070:487;;;:::o;16929:308::-;-1:-1:-1;;;;;17013:18:0;;17009:88;;17055:30;;-1:-1:-1;;;17055:30:0;;17082:1;17055:30;;;9567:51:1;9540:18;;17055:30:0;9421:203:1;17009:88:0;-1:-1:-1;;;;;17111:16:0;;17107:88;;17151:32;;-1:-1:-1;;;17151:32:0;;17180:1;17151:32;;;9567:51:1;9540:18;;17151:32:0;9421:203:1;17107:88:0;17205:24;17213:4;17219:2;17223:5;17205:7;:24::i;19590:211::-;-1:-1:-1;;;;;19661:21:0;;19657:91;;19706:30;;-1:-1:-1;;;19706:30:0;;19733:1;19706:30;;;9567:51:1;9540:18;;19706:30:0;9421:203:1;19657:91:0;19758:35;19766:7;19783:1;19787:5;19758:7;:35::i;23958:556::-;24092:160;;;;;;;;;;;;;;;;;24170:10;24092:160;;;;;;;24131:15;24092:160;;;;24079:7;:174;;;;;;;-1:-1:-1;24079:174:0;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24079:174:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24079:174:0;;;;;;;;;;-1:-1:-1;;;;;;24079:174:0;-1:-1:-1;;;;;24079:174:0;;;;;;;;;;;;;;;;;;;24314:66;24352:10;;24314:66;;;;24332:7;;24341:9;;24364:15;;24314:66;:::i;:::-;;;;;;;;24464:5;:15;24472:7;24464:5;:15;:::i;:::-;-1:-1:-1;24490:7:0;:19;24500:9;24490:7;:19;:::i;21335:443::-;-1:-1:-1;;;;;21448:19:0;;21444:91;;21491:32;;-1:-1:-1;;;21491:32:0;;21520:1;21491:32;;;9567:51:1;9540:18;;21491:32:0;9421:203:1;21444:91:0;-1:-1:-1;;;;;21549:21:0;;21545:92;;21594:31;;-1:-1:-1;;;21594:31:0;;21622:1;21594:31;;;9567:51:1;9540:18;;21594:31:0;9421:203:1;21545:92:0;-1:-1:-1;;;;;21647:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;21693:78;;;;21744:7;-1:-1:-1;;;;;21728:31:0;21737:5;-1:-1:-1;;;;;21728:31:0;;21753:5;21728:31;;;;1442:25:1;;1430:2;1415:18;;1296:177;21728:31:0;;;;;;;;21335:443;;;;:::o;17561:1135::-;-1:-1:-1;;;;;17651:18:0;;17647:552;;17805:5;17789:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;17647:552:0;;-1:-1:-1;17647:552:0;;-1:-1:-1;;;;;17865:15:0;;17843:19;17865:15;;;;;;;;;;;17899:19;;;17895:117;;;17946:50;;-1:-1:-1;;;17946:50:0;;-1:-1:-1;;;;;9291:32:1;;17946:50:0;;;9273:51:1;9340:18;;;9333:34;;;9383:18;;;9376:34;;;9246:18;;17946:50:0;9071:345:1;17895:117:0;-1:-1:-1;;;;;18135:15:0;;:9;:15;;;;;;;;;;18153:19;;;;18135:37;;17647:552;-1:-1:-1;;;;;18215:16:0;;18211:435;;18381:12;:21;;;;;;;18211:435;;;-1:-1:-1;;;;;18597:13:0;;:9;:13;;;;;;;;;;:22;;;;;;18211:435;18678:2;-1:-1:-1;;;;;18663:25:0;18672:4;-1:-1:-1;;;;;18663:25:0;;18682:5;18663:25;;;;1442::1;;1430:2;1415:18;;1296:177;18663:25:0;;;;;;;;17561:1135;;;:::o;14:423:1:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;:::-;603:53;442:220;-1:-1:-1;;;442:220:1:o;667:173::-;735:20;;-1:-1:-1;;;;;784:31:1;;774:42;;764:70;;830:1;827;820:12;764:70;667:173;;;:::o;845:254::-;913:6;921;974:2;962:9;953:7;949:23;945:32;942:52;;;990:1;987;980:12;942:52;1013:29;1032:9;1013:29;:::i;:::-;1003:39;1089:2;1074:18;;;;1061:32;;-1:-1:-1;;;845:254:1:o;1478:328::-;1555:6;1563;1571;1624:2;1612:9;1603:7;1599:23;1595:32;1592:52;;;1640:1;1637;1630:12;1592:52;1663:29;1682:9;1663:29;:::i;:::-;1653:39;;1711:38;1745:2;1734:9;1730:18;1711:38;:::i;:::-;1701:48;;1796:2;1785:9;1781:18;1768:32;1758:42;;1478:328;;;;;:::o;2000:186::-;2059:6;2112:2;2100:9;2091:7;2087:23;2083:32;2080:52;;;2128:1;2125;2118:12;2080:52;2151:29;2170:9;2151:29;:::i;2191:180::-;2250:6;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;-1:-1:-1;2342:23:1;;2191:180;-1:-1:-1;2191:180:1:o;2376:553::-;2629:3;2618:9;2611:22;2592:4;2656:46;2697:3;2686:9;2682:19;2674:6;2656:46;:::i;:::-;2750:9;2742:6;2738:22;2733:2;2722:9;2718:18;2711:50;2778:33;2804:6;2796;2778:33;:::i;:::-;-1:-1:-1;;;;;2847:32:1;;;;2842:2;2827:18;;2820:60;-1:-1:-1;;2911:2:1;2896:18;2889:34;2770:41;2376:553;-1:-1:-1;;2376:553:1:o;2934:127::-;2995:10;2990:3;2986:20;2983:1;2976:31;3026:4;3023:1;3016:15;3050:4;3047:1;3040:15;3066:719;3109:5;3162:3;3155:4;3147:6;3143:17;3139:27;3129:55;;3180:1;3177;3170:12;3129:55;3216:6;3203:20;3242:18;3279:2;3275;3272:10;3269:36;;;3285:18;;:::i;:::-;3360:2;3354:9;3328:2;3414:13;;-1:-1:-1;;3410:22:1;;;3434:2;3406:31;3402:40;3390:53;;;3458:18;;;3478:22;;;3455:46;3452:72;;;3504:18;;:::i;:::-;3544:10;3540:2;3533:22;3579:2;3571:6;3564:18;3625:3;3618:4;3613:2;3605:6;3601:15;3597:26;3594:35;3591:55;;;3642:1;3639;3632:12;3591:55;3706:2;3699:4;3691:6;3687:17;3680:4;3672:6;3668:17;3655:54;3753:1;3746:4;3741:2;3733:6;3729:15;3725:26;3718:37;3773:6;3764:15;;;;;;3066:719;;;;:::o;3790:543::-;3878:6;3886;3939:2;3927:9;3918:7;3914:23;3910:32;3907:52;;;3955:1;3952;3945:12;3907:52;3995:9;3982:23;4024:18;4065:2;4057:6;4054:14;4051:34;;;4081:1;4078;4071:12;4051:34;4104:50;4146:7;4137:6;4126:9;4122:22;4104:50;:::i;:::-;4094:60;;4207:2;4196:9;4192:18;4179:32;4163:48;;4236:2;4226:8;4223:16;4220:36;;;4252:1;4249;4242:12;4220:36;;4275:52;4319:7;4308:8;4297:9;4293:24;4275:52;:::i;:::-;4265:62;;;3790:543;;;;;:::o;4338:260::-;4406:6;4414;4467:2;4455:9;4446:7;4442:23;4438:32;4435:52;;;4483:1;4480;4473:12;4435:52;4506:29;4525:9;4506:29;:::i;:::-;4496:39;;4554:38;4588:2;4577:9;4573:18;4554:38;:::i;:::-;4544:48;;4338:260;;;;;:::o;4603:248::-;4671:6;4679;4732:2;4720:9;4711:7;4707:23;4703:32;4700:52;;;4748:1;4745;4738:12;4700:52;-1:-1:-1;;4771:23:1;;;4841:2;4826:18;;;4813:32;;-1:-1:-1;4603:248:1:o;4856:1390::-;5064:4;5093:2;5133;5122:9;5118:18;5163:2;5152:9;5145:21;5186:6;5221;5215:13;5252:6;5244;5237:22;5278:2;5268:12;;5311:2;5300:9;5296:18;5289:25;;5373:2;5363:6;5360:1;5356:14;5345:9;5341:30;5337:39;5411:2;5403:6;5399:15;5432:1;5442:775;5456:6;5453:1;5450:13;5442:775;;;5549:2;5545:7;5533:9;5525:6;5521:22;5517:36;5512:3;5505:49;5583:6;5577:13;5613:4;5656:2;5650:9;5687:2;5679:6;5672:18;5717:48;5761:2;5753:6;5749:15;5735:12;5717:48;:::i;:::-;5703:62;;;5814:2;5810;5806:11;5800:18;5867:6;5859;5855:19;5850:2;5842:6;5838:15;5831:44;5902:41;5936:6;5920:14;5902:41;:::i;:::-;5990:11;;;5984:18;-1:-1:-1;;;;;5980:44:1;5963:15;;;5956:69;6048:4;6095:11;;;6089:18;6072:15;;;;6065:43;;;;-1:-1:-1;;6195:12:1;;;;6160:15;;;;6021:1;5471:9;5442:775;;;-1:-1:-1;6234:6:1;;4856:1390;-1:-1:-1;;;;;;;;4856:1390:1:o;6251:380::-;6330:1;6326:12;;;;6373;;;6394:61;;6448:4;6440:6;6436:17;6426:27;;6394:61;6501:2;6493:6;6490:14;6470:18;6467:38;6464:161;;6547:10;6542:3;6538:20;6535:1;6528:31;6582:4;6579:1;6572:15;6610:4;6607:1;6600:15;6464:161;;6251:380;;;:::o;8231:127::-;8292:10;8287:3;8283:20;8280:1;8273:31;8323:4;8320:1;8313:15;8347:4;8344:1;8337:15;8363:168;8436:9;;;8467;;8484:15;;;8478:22;;8464:37;8454:71;;8505:18;;:::i;8536:125::-;8601:9;;;8622:10;;;8619:36;;;8635:18;;:::i;8666:128::-;8733:9;;;8754:11;;;8751:37;;;8768:18;;:::i;8799:127::-;8860:10;8855:3;8851:20;8848:1;8841:31;8891:4;8888:1;8881:15;8915:4;8912:1;8905:15;8931:135;8970:3;8991:17;;;8988:43;;9011:18;;:::i;:::-;-1:-1:-1;9058:1:1;9047:13;;8931:135::o;9755:545::-;9857:2;9852:3;9849:11;9846:448;;;9893:1;9918:5;9914:2;9907:17;9963:4;9959:2;9949:19;10033:2;10021:10;10017:19;10014:1;10010:27;10004:4;10000:38;10069:4;10057:10;10054:20;10051:47;;;-1:-1:-1;10092:4:1;10051:47;10147:2;10142:3;10138:12;10135:1;10131:20;10125:4;10121:31;10111:41;;10202:82;10220:2;10213:5;10210:13;10202:82;;;10265:17;;;10246:1;10235:13;10202:82;;;10206:3;;;9755:545;;;:::o;10476:1352::-;10602:3;10596:10;10629:18;10621:6;10618:30;10615:56;;;10651:18;;:::i;:::-;10680:97;10770:6;10730:38;10762:4;10756:11;10730:38;:::i;:::-;10724:4;10680:97;:::i;:::-;10832:4;;10896:2;10885:14;;10913:1;10908:663;;;;11615:1;11632:6;11629:89;;;-1:-1:-1;11684:19:1;;;11678:26;11629:89;-1:-1:-1;;10433:1:1;10429:11;;;10425:24;10421:29;10411:40;10457:1;10453:11;;;10408:57;11731:81;;10878:944;;10908:663;9702:1;9695:14;;;9739:4;9726:18;;-1:-1:-1;;10944:20:1;;;11062:236;11076:7;11073:1;11070:14;11062:236;;;11165:19;;;11159:26;11144:42;;11257:27;;;;11225:1;11213:14;;;;11092:19;;11062:236;;;11066:3;11326:6;11317:7;11314:19;11311:201;;;11387:19;;;11381:26;-1:-1:-1;;11470:1:1;11466:14;;;11482:3;11462:24;11458:37;11454:42;11439:58;11424:74;;11311:201;-1:-1:-1;;;;;11558:1:1;11542:14;;;11538:22;11525:36;;-1:-1:-1;10476:1352:1:o;11833:454::-;12058:2;12047:9;12040:21;12021:4;12084:45;12125:2;12114:9;12110:18;12102:6;12084:45;:::i;:::-;12177:9;12169:6;12165:22;12160:2;12149:9;12145:18;12138:50;12205:33;12231:6;12223;12205:33;:::i;:::-;12197:41;;;12274:6;12269:2;12258:9;12254:18;12247:34;11833:454;;;;;;:::o

Swarm Source

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