ETH Price: $3,134.72 (-0.06%)

Token

KEKO (KEKO)
 

Overview

Max Total Supply

69,000,000 KEKO

Holders

625

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,765.263699434037253858 KEKO

Value
$0.00
0xfb6651a3f5307e69270cb4a0977637f531f2fd6b
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:
KEKO

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-20
*/

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;


/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
     * @dev Handles the receipt of a single ERC1155 token type. This function is
     * called at the end of a `safeTransferFrom` after the balance has been updated.
     *
     * NOTE: To accept the transfer, this must return
     * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     * (i.e. 0xf23a6e61, or its own function selector).
     *
     * @param operator The address which initiated the transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param id The ID of the token being transferred
     * @param value The amount of tokens being transferred
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
     */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @dev Handles the receipt of a multiple ERC1155 token types. This function
     * is called at the end of a `safeBatchTransferFrom` after the balances have
     * been updated.
     *
     * NOTE: To accept the transfer(s), this must return
     * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     * (i.e. 0xbc197c81, or its own function selector).
     *
     * @param operator The address which initiated the batch transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param ids An array containing ids of each token being transferred (order and length must match values array)
     * @param values An array containing amounts of each token being transferred (order and length must match ids array)
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
     */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/utils/ERC1155Receiver.sol)

pragma solidity ^0.8.0;



/**
 * @dev _Available since v3.1._
 */
abstract contract ERC1155Receiver is ERC165, IERC1155Receiver {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);
    }
}

// File: @openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/utils/ERC1155Holder.sol)

pragma solidity ^0.8.0;


/**
 * Simple implementation of `ERC1155Receiver` that will allow a contract to hold ERC1155 tokens.
 *
 * IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be
 * stuck.
 *
 * @dev _Available since v3.1._
 */
contract ERC1155Holder is ERC1155Receiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] memory,
        uint256[] memory,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC1155BatchReceived.selector;
    }
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

// 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/access/Ownable.sol


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

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

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


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

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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


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

pragma solidity ^0.8.0;




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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: KEKO.sol


pragma solidity ^0.8.9;





contract KEKO is ERC20, ERC1155Holder, Ownable {
    IERC1155 public erc1155Contract;
    uint256 public erc1155TokenId;
    uint256 public tokenSupply = 69000000;

    constructor(address _erc1155Contract, uint256 _tokenId) ERC20("KEKO", "KEKO") {
        erc1155Contract = IERC1155(_erc1155Contract);
        erc1155TokenId = _tokenId;
        _mint(address(this), tokenSupply * (10 ** 18));
    }

    function depositAndClaim(uint256 amount) external {
        require(amount >= 1, "Amount must be greater than 1");
        
        // Transfer the specified amount of ERC1155 tokens from the user to the contract
        erc1155Contract.safeTransferFrom(msg.sender, address(this), erc1155TokenId, amount, "");

        // Transfer the equivalent amount of ERC20 tokens to the user
        _transfer(address(this), msg.sender, amount * (10 ** 18));

    }

    function withdrawAndClaim(uint256 amount) external {
        require(amount >= 1, "Amount must be greater than 1");

        // Transfer the specified amount of ERC20 tokens to the contract pool
        _transfer(msg.sender, address(this), amount * (10 ** 18));

        // Transfer the equivalent amount of ERC1155 tokens to the user
        erc1155Contract.safeTransferFrom(address(this), msg.sender, erc1155TokenId, amount, "");

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_erc1155Contract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositAndClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc1155Contract","outputs":[{"internalType":"contract IERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc1155TokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawAndClaim","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405263041cdb406008553480156200001957600080fd5b50604051620029fc380380620029fc83398181016040528101906200003f919062000454565b6040518060400160405280600481526020017f4b454b4f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b454b4f000000000000000000000000000000000000000000000000000000008152508160039081620000bc91906200070b565b508060049081620000ce91906200070b565b505050620000f1620000e56200016a60201b60201c565b6200017260201b60201c565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055506200016230670de0b6b3a764000060085462000156919062000821565b6200023860201b60201c565b505062000958565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a190620008cd565b60405180910390fd5b620002be60008383620003a560201b60201c565b8060026000828254620002d29190620008ef565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038591906200093b565b60405180910390a3620003a160008383620003aa60201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003e182620003b4565b9050919050565b620003f381620003d4565b8114620003ff57600080fd5b50565b6000815190506200041381620003e8565b92915050565b6000819050919050565b6200042e8162000419565b81146200043a57600080fd5b50565b6000815190506200044e8162000423565b92915050565b600080604083850312156200046e576200046d620003af565b5b60006200047e8582860162000402565b925050602062000491858286016200043d565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200051d57607f821691505b602082108103620005335762000532620004d5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200059d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200055e565b620005a986836200055e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005ec620005e6620005e08462000419565b620005c1565b62000419565b9050919050565b6000819050919050565b6200060883620005cb565b620006206200061782620005f3565b8484546200056b565b825550505050565b600090565b6200063762000628565b62000644818484620005fd565b505050565b5b818110156200066c57620006606000826200062d565b6001810190506200064a565b5050565b601f821115620006bb57620006858162000539565b62000690846200054e565b81016020851015620006a0578190505b620006b8620006af856200054e565b83018262000649565b50505b505050565b600082821c905092915050565b6000620006e060001984600802620006c0565b1980831691505092915050565b6000620006fb8383620006cd565b9150826002028217905092915050565b62000716826200049b565b67ffffffffffffffff811115620007325762000731620004a6565b5b6200073e825462000504565b6200074b82828562000670565b600060209050601f8311600181146200078357600084156200076e578287015190505b6200077a8582620006ed565b865550620007ea565b601f198416620007938662000539565b60005b82811015620007bd5784890151825560018201915060208501945060208101905062000796565b86831015620007dd5784890151620007d9601f891682620006cd565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200082e8262000419565b91506200083b8362000419565b92508282026200084b8162000419565b91508282048414831517620008655762000864620007f2565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620008b5601f836200086c565b9150620008c2826200087d565b602082019050919050565b60006020820190508181036000830152620008e881620008a6565b9050919050565b6000620008fc8262000419565b9150620009098362000419565b9250828201905080821115620009245762000923620007f2565b5b92915050565b620009358162000419565b82525050565b60006020820190506200095260008301846200092a565b92915050565b61209480620009686000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637824407f116100b8578063a9059cbb1161007c578063a9059cbb1461037d578063a941a90e146103ad578063bc197c81146103c9578063dd62ed3e146103f9578063f23a6e6114610429578063f2fde38b1461045957610142565b80637824407f146102d55780637a564970146102f35780638da5cb5b1461031157806395d89b411461032f578063a457c2d71461034d57610142565b8063313ce5671161010a578063313ce567146102135780633950935114610231578063448a104714610261578063637a66871461027d57806370a082311461029b578063715018a6146102cb57610142565b806301ffc9a71461014757806306fdde0314610177578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e3575b600080fd5b610161600480360381019061015c9190611220565b610475565b60405161016e9190611268565b60405180910390f35b61017f6104ef565b60405161018c9190611313565b60405180910390f35b6101af60048036038101906101aa91906113c9565b610581565b6040516101bc9190611268565b60405180910390f35b6101cd6105a4565b6040516101da9190611418565b60405180910390f35b6101fd60048036038101906101f89190611433565b6105ae565b60405161020a9190611268565b60405180910390f35b61021b6105dd565b60405161022891906114a2565b60405180910390f35b61024b600480360381019061024691906113c9565b6105e6565b6040516102589190611268565b60405180910390f35b61027b600480360381019061027691906114bd565b61061d565b005b610285610717565b6040516102929190611418565b60405180910390f35b6102b560048036038101906102b091906114ea565b61071d565b6040516102c29190611418565b60405180910390f35b6102d3610765565b005b6102dd610779565b6040516102ea9190611418565b60405180910390f35b6102fb61077f565b6040516103089190611576565b60405180910390f35b6103196107a5565b60405161032691906115a0565b60405180910390f35b6103376107cf565b6040516103449190611313565b60405180910390f35b610367600480360381019061036291906113c9565b610861565b6040516103749190611268565b60405180910390f35b610397600480360381019061039291906113c9565b6108d8565b6040516103a49190611268565b60405180910390f35b6103c760048036038101906103c291906114bd565b6108fb565b005b6103e360048036038101906103de91906117b8565b6109f5565b6040516103f09190611896565b60405180910390f35b610413600480360381019061040e91906118b1565b610a0a565b6040516104209190611418565b60405180910390f35b610443600480360381019061043e91906118f1565b610a91565b6040516104509190611896565b60405180910390f35b610473600480360381019061046e91906114ea565b610aa6565b005b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104e857506104e782610b29565b5b9050919050565b6060600380546104fe906119b7565b80601f016020809104026020016040519081016040528092919081815260200182805461052a906119b7565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60008061058c610b93565b9050610599818585610b9b565b600191505092915050565b6000600254905090565b6000806105b9610b93565b90506105c6858285610d64565b6105d1858585610df0565b60019150509392505050565b60006012905090565b6000806105f1610b93565b90506106128185856106038589610a0a565b61060d9190611a17565b610b9b565b600191505092915050565b6001811015610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065890611a97565b60405180910390fd5b61067f3330670de0b6b3a76400008461067a9190611ab7565b610df0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3033600754856040518563ffffffff1660e01b81526004016106e29493929190611b30565b600060405180830381600087803b1580156106fc57600080fd5b505af1158015610710573d6000803e3d6000fd5b5050505050565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61076d611066565b61077760006110e4565b565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546107de906119b7565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906119b7565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050905090565b60008061086c610b93565b9050600061087a8286610a0a565b9050838110156108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690611bfa565b60405180910390fd5b6108cc8286868403610b9b565b60019250505092915050565b6000806108e3610b93565b90506108f0818585610df0565b600191505092915050565b600181101561093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690611a97565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3330600754856040518563ffffffff1660e01b81526004016109a29493929190611b30565b600060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506109f23033670de0b6b3a7640000846109ed9190611ab7565b610df0565b50565b600063bc197c8160e01b905095945050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600063f23a6e6160e01b905095945050505050565b610aae611066565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490611c8c565b60405180910390fd5b610b26816110e4565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190611d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090611db0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d579190611418565b60405180910390a3505050565b6000610d708484610a0a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dea5781811015610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390611e1c565b60405180910390fd5b610de98484848403610b9b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690611eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590611f40565b60405180910390fd5b610ed98383836111aa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690611fd2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104d9190611418565b60405180910390a36110608484846111af565b50505050565b61106e610b93565b73ffffffffffffffffffffffffffffffffffffffff1661108c6107a5565b73ffffffffffffffffffffffffffffffffffffffff16146110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d99061203e565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6111fd816111c8565b811461120857600080fd5b50565b60008135905061121a816111f4565b92915050565b600060208284031215611236576112356111be565b5b60006112448482850161120b565b91505092915050565b60008115159050919050565b6112628161124d565b82525050565b600060208201905061127d6000830184611259565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112bd5780820151818401526020810190506112a2565b60008484015250505050565b6000601f19601f8301169050919050565b60006112e582611283565b6112ef818561128e565b93506112ff81856020860161129f565b611308816112c9565b840191505092915050565b6000602082019050818103600083015261132d81846112da565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061136082611335565b9050919050565b61137081611355565b811461137b57600080fd5b50565b60008135905061138d81611367565b92915050565b6000819050919050565b6113a681611393565b81146113b157600080fd5b50565b6000813590506113c38161139d565b92915050565b600080604083850312156113e0576113df6111be565b5b60006113ee8582860161137e565b92505060206113ff858286016113b4565b9150509250929050565b61141281611393565b82525050565b600060208201905061142d6000830184611409565b92915050565b60008060006060848603121561144c5761144b6111be565b5b600061145a8682870161137e565b935050602061146b8682870161137e565b925050604061147c868287016113b4565b9150509250925092565b600060ff82169050919050565b61149c81611486565b82525050565b60006020820190506114b76000830184611493565b92915050565b6000602082840312156114d3576114d26111be565b5b60006114e1848285016113b4565b91505092915050565b600060208284031215611500576114ff6111be565b5b600061150e8482850161137e565b91505092915050565b6000819050919050565b600061153c61153761153284611335565b611517565b611335565b9050919050565b600061154e82611521565b9050919050565b600061156082611543565b9050919050565b61157081611555565b82525050565b600060208201905061158b6000830184611567565b92915050565b61159a81611355565b82525050565b60006020820190506115b56000830184611591565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6115f8826112c9565b810181811067ffffffffffffffff82111715611617576116166115c0565b5b80604052505050565b600061162a6111b4565b905061163682826115ef565b919050565b600067ffffffffffffffff821115611656576116556115c0565b5b602082029050602081019050919050565b600080fd5b600061167f61167a8461163b565b611620565b905080838252602082019050602084028301858111156116a2576116a1611667565b5b835b818110156116cb57806116b788826113b4565b8452602084019350506020810190506116a4565b5050509392505050565b600082601f8301126116ea576116e96115bb565b5b81356116fa84826020860161166c565b91505092915050565b600080fd5b600067ffffffffffffffff821115611723576117226115c0565b5b61172c826112c9565b9050602081019050919050565b82818337600083830152505050565b600061175b61175684611708565b611620565b90508281526020810184848401111561177757611776611703565b5b611782848285611739565b509392505050565b600082601f83011261179f5761179e6115bb565b5b81356117af848260208601611748565b91505092915050565b600080600080600060a086880312156117d4576117d36111be565b5b60006117e28882890161137e565b95505060206117f38882890161137e565b945050604086013567ffffffffffffffff811115611814576118136111c3565b5b611820888289016116d5565b935050606086013567ffffffffffffffff811115611841576118406111c3565b5b61184d888289016116d5565b925050608086013567ffffffffffffffff81111561186e5761186d6111c3565b5b61187a8882890161178a565b9150509295509295909350565b611890816111c8565b82525050565b60006020820190506118ab6000830184611887565b92915050565b600080604083850312156118c8576118c76111be565b5b60006118d68582860161137e565b92505060206118e78582860161137e565b9150509250929050565b600080600080600060a0868803121561190d5761190c6111be565b5b600061191b8882890161137e565b955050602061192c8882890161137e565b945050604061193d888289016113b4565b935050606061194e888289016113b4565b925050608086013567ffffffffffffffff81111561196f5761196e6111c3565b5b61197b8882890161178a565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119cf57607f821691505b6020821081036119e2576119e1611988565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a2282611393565b9150611a2d83611393565b9250828201905080821115611a4557611a446119e8565b5b92915050565b7f416d6f756e74206d7573742062652067726561746572207468616e2031000000600082015250565b6000611a81601d8361128e565b9150611a8c82611a4b565b602082019050919050565b60006020820190508181036000830152611ab081611a74565b9050919050565b6000611ac282611393565b9150611acd83611393565b9250828202611adb81611393565b91508282048414831517611af257611af16119e8565b5b5092915050565b600082825260208201905092915050565b50565b6000611b1a600083611af9565b9150611b2582611b0a565b600082019050919050565b600060a082019050611b456000830187611591565b611b526020830186611591565b611b5f6040830185611409565b611b6c6060830184611409565b8181036080830152611b7d81611b0d565b905095945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611be460258361128e565b9150611bef82611b88565b604082019050919050565b60006020820190508181036000830152611c1381611bd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c7660268361128e565b9150611c8182611c1a565b604082019050919050565b60006020820190508181036000830152611ca581611c69565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d0860248361128e565b9150611d1382611cac565b604082019050919050565b60006020820190508181036000830152611d3781611cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d9a60228361128e565b9150611da582611d3e565b604082019050919050565b60006020820190508181036000830152611dc981611d8d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e06601d8361128e565b9150611e1182611dd0565b602082019050919050565b60006020820190508181036000830152611e3581611df9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e9860258361128e565b9150611ea382611e3c565b604082019050919050565b60006020820190508181036000830152611ec781611e8b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f2a60238361128e565b9150611f3582611ece565b604082019050919050565b60006020820190508181036000830152611f5981611f1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611fbc60268361128e565b9150611fc782611f60565b604082019050919050565b60006020820190508181036000830152611feb81611faf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061202860208361128e565b915061203382611ff2565b602082019050919050565b600060208201905081810360008301526120578161201b565b905091905056fea26469706673582212206e6cb12b9b4ca25cc95b7b6a46195689a973d9ce0437f9adacd6eb5acb68380a64736f6c63430008120033000000000000000000000000a2037693b58c46201887ccd84a962273d282653f0000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80637824407f116100b8578063a9059cbb1161007c578063a9059cbb1461037d578063a941a90e146103ad578063bc197c81146103c9578063dd62ed3e146103f9578063f23a6e6114610429578063f2fde38b1461045957610142565b80637824407f146102d55780637a564970146102f35780638da5cb5b1461031157806395d89b411461032f578063a457c2d71461034d57610142565b8063313ce5671161010a578063313ce567146102135780633950935114610231578063448a104714610261578063637a66871461027d57806370a082311461029b578063715018a6146102cb57610142565b806301ffc9a71461014757806306fdde0314610177578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e3575b600080fd5b610161600480360381019061015c9190611220565b610475565b60405161016e9190611268565b60405180910390f35b61017f6104ef565b60405161018c9190611313565b60405180910390f35b6101af60048036038101906101aa91906113c9565b610581565b6040516101bc9190611268565b60405180910390f35b6101cd6105a4565b6040516101da9190611418565b60405180910390f35b6101fd60048036038101906101f89190611433565b6105ae565b60405161020a9190611268565b60405180910390f35b61021b6105dd565b60405161022891906114a2565b60405180910390f35b61024b600480360381019061024691906113c9565b6105e6565b6040516102589190611268565b60405180910390f35b61027b600480360381019061027691906114bd565b61061d565b005b610285610717565b6040516102929190611418565b60405180910390f35b6102b560048036038101906102b091906114ea565b61071d565b6040516102c29190611418565b60405180910390f35b6102d3610765565b005b6102dd610779565b6040516102ea9190611418565b60405180910390f35b6102fb61077f565b6040516103089190611576565b60405180910390f35b6103196107a5565b60405161032691906115a0565b60405180910390f35b6103376107cf565b6040516103449190611313565b60405180910390f35b610367600480360381019061036291906113c9565b610861565b6040516103749190611268565b60405180910390f35b610397600480360381019061039291906113c9565b6108d8565b6040516103a49190611268565b60405180910390f35b6103c760048036038101906103c291906114bd565b6108fb565b005b6103e360048036038101906103de91906117b8565b6109f5565b6040516103f09190611896565b60405180910390f35b610413600480360381019061040e91906118b1565b610a0a565b6040516104209190611418565b60405180910390f35b610443600480360381019061043e91906118f1565b610a91565b6040516104509190611896565b60405180910390f35b610473600480360381019061046e91906114ea565b610aa6565b005b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104e857506104e782610b29565b5b9050919050565b6060600380546104fe906119b7565b80601f016020809104026020016040519081016040528092919081815260200182805461052a906119b7565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60008061058c610b93565b9050610599818585610b9b565b600191505092915050565b6000600254905090565b6000806105b9610b93565b90506105c6858285610d64565b6105d1858585610df0565b60019150509392505050565b60006012905090565b6000806105f1610b93565b90506106128185856106038589610a0a565b61060d9190611a17565b610b9b565b600191505092915050565b6001811015610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065890611a97565b60405180910390fd5b61067f3330670de0b6b3a76400008461067a9190611ab7565b610df0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3033600754856040518563ffffffff1660e01b81526004016106e29493929190611b30565b600060405180830381600087803b1580156106fc57600080fd5b505af1158015610710573d6000803e3d6000fd5b5050505050565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61076d611066565b61077760006110e4565b565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546107de906119b7565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906119b7565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050905090565b60008061086c610b93565b9050600061087a8286610a0a565b9050838110156108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690611bfa565b60405180910390fd5b6108cc8286868403610b9b565b60019250505092915050565b6000806108e3610b93565b90506108f0818585610df0565b600191505092915050565b600181101561093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690611a97565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3330600754856040518563ffffffff1660e01b81526004016109a29493929190611b30565b600060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506109f23033670de0b6b3a7640000846109ed9190611ab7565b610df0565b50565b600063bc197c8160e01b905095945050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600063f23a6e6160e01b905095945050505050565b610aae611066565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490611c8c565b60405180910390fd5b610b26816110e4565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190611d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090611db0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d579190611418565b60405180910390a3505050565b6000610d708484610a0a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dea5781811015610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390611e1c565b60405180910390fd5b610de98484848403610b9b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690611eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590611f40565b60405180910390fd5b610ed98383836111aa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690611fd2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104d9190611418565b60405180910390a36110608484846111af565b50505050565b61106e610b93565b73ffffffffffffffffffffffffffffffffffffffff1661108c6107a5565b73ffffffffffffffffffffffffffffffffffffffff16146110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d99061203e565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6111fd816111c8565b811461120857600080fd5b50565b60008135905061121a816111f4565b92915050565b600060208284031215611236576112356111be565b5b60006112448482850161120b565b91505092915050565b60008115159050919050565b6112628161124d565b82525050565b600060208201905061127d6000830184611259565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112bd5780820151818401526020810190506112a2565b60008484015250505050565b6000601f19601f8301169050919050565b60006112e582611283565b6112ef818561128e565b93506112ff81856020860161129f565b611308816112c9565b840191505092915050565b6000602082019050818103600083015261132d81846112da565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061136082611335565b9050919050565b61137081611355565b811461137b57600080fd5b50565b60008135905061138d81611367565b92915050565b6000819050919050565b6113a681611393565b81146113b157600080fd5b50565b6000813590506113c38161139d565b92915050565b600080604083850312156113e0576113df6111be565b5b60006113ee8582860161137e565b92505060206113ff858286016113b4565b9150509250929050565b61141281611393565b82525050565b600060208201905061142d6000830184611409565b92915050565b60008060006060848603121561144c5761144b6111be565b5b600061145a8682870161137e565b935050602061146b8682870161137e565b925050604061147c868287016113b4565b9150509250925092565b600060ff82169050919050565b61149c81611486565b82525050565b60006020820190506114b76000830184611493565b92915050565b6000602082840312156114d3576114d26111be565b5b60006114e1848285016113b4565b91505092915050565b600060208284031215611500576114ff6111be565b5b600061150e8482850161137e565b91505092915050565b6000819050919050565b600061153c61153761153284611335565b611517565b611335565b9050919050565b600061154e82611521565b9050919050565b600061156082611543565b9050919050565b61157081611555565b82525050565b600060208201905061158b6000830184611567565b92915050565b61159a81611355565b82525050565b60006020820190506115b56000830184611591565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6115f8826112c9565b810181811067ffffffffffffffff82111715611617576116166115c0565b5b80604052505050565b600061162a6111b4565b905061163682826115ef565b919050565b600067ffffffffffffffff821115611656576116556115c0565b5b602082029050602081019050919050565b600080fd5b600061167f61167a8461163b565b611620565b905080838252602082019050602084028301858111156116a2576116a1611667565b5b835b818110156116cb57806116b788826113b4565b8452602084019350506020810190506116a4565b5050509392505050565b600082601f8301126116ea576116e96115bb565b5b81356116fa84826020860161166c565b91505092915050565b600080fd5b600067ffffffffffffffff821115611723576117226115c0565b5b61172c826112c9565b9050602081019050919050565b82818337600083830152505050565b600061175b61175684611708565b611620565b90508281526020810184848401111561177757611776611703565b5b611782848285611739565b509392505050565b600082601f83011261179f5761179e6115bb565b5b81356117af848260208601611748565b91505092915050565b600080600080600060a086880312156117d4576117d36111be565b5b60006117e28882890161137e565b95505060206117f38882890161137e565b945050604086013567ffffffffffffffff811115611814576118136111c3565b5b611820888289016116d5565b935050606086013567ffffffffffffffff811115611841576118406111c3565b5b61184d888289016116d5565b925050608086013567ffffffffffffffff81111561186e5761186d6111c3565b5b61187a8882890161178a565b9150509295509295909350565b611890816111c8565b82525050565b60006020820190506118ab6000830184611887565b92915050565b600080604083850312156118c8576118c76111be565b5b60006118d68582860161137e565b92505060206118e78582860161137e565b9150509250929050565b600080600080600060a0868803121561190d5761190c6111be565b5b600061191b8882890161137e565b955050602061192c8882890161137e565b945050604061193d888289016113b4565b935050606061194e888289016113b4565b925050608086013567ffffffffffffffff81111561196f5761196e6111c3565b5b61197b8882890161178a565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119cf57607f821691505b6020821081036119e2576119e1611988565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a2282611393565b9150611a2d83611393565b9250828201905080821115611a4557611a446119e8565b5b92915050565b7f416d6f756e74206d7573742062652067726561746572207468616e2031000000600082015250565b6000611a81601d8361128e565b9150611a8c82611a4b565b602082019050919050565b60006020820190508181036000830152611ab081611a74565b9050919050565b6000611ac282611393565b9150611acd83611393565b9250828202611adb81611393565b91508282048414831517611af257611af16119e8565b5b5092915050565b600082825260208201905092915050565b50565b6000611b1a600083611af9565b9150611b2582611b0a565b600082019050919050565b600060a082019050611b456000830187611591565b611b526020830186611591565b611b5f6040830185611409565b611b6c6060830184611409565b8181036080830152611b7d81611b0d565b905095945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611be460258361128e565b9150611bef82611b88565b604082019050919050565b60006020820190508181036000830152611c1381611bd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c7660268361128e565b9150611c8182611c1a565b604082019050919050565b60006020820190508181036000830152611ca581611c69565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d0860248361128e565b9150611d1382611cac565b604082019050919050565b60006020820190508181036000830152611d3781611cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d9a60228361128e565b9150611da582611d3e565b604082019050919050565b60006020820190508181036000830152611dc981611d8d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e06601d8361128e565b9150611e1182611dd0565b602082019050919050565b60006020820190508181036000830152611e3581611df9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e9860258361128e565b9150611ea382611e3c565b604082019050919050565b60006020820190508181036000830152611ec781611e8b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f2a60238361128e565b9150611f3582611ece565b604082019050919050565b60006020820190508181036000830152611f5981611f1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611fbc60268361128e565b9150611fc782611f60565b604082019050919050565b60006020820190508181036000830152611feb81611faf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061202860208361128e565b915061203382611ff2565b602082019050919050565b600060208201905081810360008301526120578161201b565b905091905056fea26469706673582212206e6cb12b9b4ca25cc95b7b6a46195689a973d9ce0437f9adacd6eb5acb68380a64736f6c63430008120033

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

000000000000000000000000a2037693b58c46201887ccd84a962273d282653f0000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _erc1155Contract (address): 0xa2037693b58C46201887CCd84A962273d282653F
Arg [1] : _tokenId (uint256): 1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2037693b58c46201887ccd84a962273d282653f
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

30895:1337:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4862:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19649:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22000:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20769:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22781:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20611:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23485:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31782:447;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30987:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20940:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13074:103;;;:::i;:::-;;31023:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30949:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19868:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24226:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21273:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31311:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5852:255;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21529:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5617:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13332:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4862:223;4964:4;5003:34;4988:49;;;:11;:49;;;;:89;;;;5041:36;5065:11;5041:23;:36::i;:::-;4988:89;4981:96;;4862:223;;;:::o;19649:100::-;19703:13;19736:5;19729:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19649:100;:::o;22000:201::-;22083:4;22100:13;22116:12;:10;:12::i;:::-;22100:28;;22139:32;22148:5;22155:7;22164:6;22139:8;:32::i;:::-;22189:4;22182:11;;;22000:201;;;;:::o;20769:108::-;20830:7;20857:12;;20850:19;;20769:108;:::o;22781:295::-;22912:4;22929:15;22947:12;:10;:12::i;:::-;22929:30;;22970:38;22986:4;22992:7;23001:6;22970:15;:38::i;:::-;23019:27;23029:4;23035:2;23039:6;23019:9;:27::i;:::-;23064:4;23057:11;;;22781:295;;;;;:::o;20611:93::-;20669:5;20694:2;20687:9;;20611:93;:::o;23485:238::-;23573:4;23590:13;23606:12;:10;:12::i;:::-;23590:28;;23629:64;23638:5;23645:7;23682:10;23654:25;23664:5;23671:7;23654:9;:25::i;:::-;:38;;;;:::i;:::-;23629:8;:64::i;:::-;23711:4;23704:11;;;23485:238;;;;:::o;31782:447::-;31862:1;31852:6;:11;;31844:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;31989:57;31999:10;32019:4;32036:8;32026:6;:19;;;;:::i;:::-;31989:9;:57::i;:::-;32132:15;;;;;;;;;;;:32;;;32173:4;32180:10;32192:14;;32208:6;32132:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31782:447;:::o;30987:29::-;;;;:::o;20940:127::-;21014:7;21041:9;:18;21051:7;21041:18;;;;;;;;;;;;;;;;21034:25;;20940:127;;;:::o;13074:103::-;12312:13;:11;:13::i;:::-;13139:30:::1;13166:1;13139:18;:30::i;:::-;13074:103::o:0;31023:37::-;;;;:::o;30949:31::-;;;;;;;;;;;;;:::o;12426:87::-;12472:7;12499:6;;;;;;;;;;;12492:13;;12426:87;:::o;19868:104::-;19924:13;19957:7;19950:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19868:104;:::o;24226:436::-;24319:4;24336:13;24352:12;:10;:12::i;:::-;24336:28;;24375:24;24402:25;24412:5;24419:7;24402:9;:25::i;:::-;24375:52;;24466:15;24446:16;:35;;24438:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24559:60;24568:5;24575:7;24603:15;24584:16;:34;24559:8;:60::i;:::-;24650:4;24643:11;;;;24226:436;;;;:::o;21273:193::-;21352:4;21369:13;21385:12;:10;:12::i;:::-;21369:28;;21408;21418:5;21425:2;21429:6;21408:9;:28::i;:::-;21454:4;21447:11;;;21273:193;;;;:::o;31311:463::-;31390:1;31380:6;:11;;31372:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;31536:15;;;;;;;;;;;:32;;;31569:10;31589:4;31596:14;;31612:6;31536:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31707:57;31725:4;31732:10;31754:8;31744:6;:19;;;;:::i;:::-;31707:9;:57::i;:::-;31311:463;:::o;5852:255::-;6037:6;6063:36;;;6056:43;;5852:255;;;;;;;:::o;21529:151::-;21618:7;21645:11;:18;21657:5;21645:18;;;;;;;;;;;;;;;:27;21664:7;21645:27;;;;;;;;;;;;;;;;21638:34;;21529:151;;;;:::o;5617:227::-;5779:6;5805:31;;;5798:38;;5617:227;;;;;;;:::o;13332:201::-;12312:13;:11;:13::i;:::-;13441:1:::1;13421:22;;:8;:22;;::::0;13413:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13497:28;13516:8;13497:18;:28::i;:::-;13332:201:::0;:::o;1782:157::-;1867:4;1906:25;1891:40;;;:11;:40;;;;1884:47;;1782:157;;;:::o;10977:98::-;11030:7;11057:10;11050:17;;10977:98;:::o;28253:380::-;28406:1;28389:19;;:5;:19;;;28381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28487:1;28468:21;;:7;:21;;;28460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28571:6;28541:11;:18;28553:5;28541:18;;;;;;;;;;;;;;;:27;28560:7;28541:27;;;;;;;;;;;;;;;:36;;;;28609:7;28593:32;;28602:5;28593:32;;;28618:6;28593:32;;;;;;:::i;:::-;;;;;;;;28253:380;;;:::o;28924:453::-;29059:24;29086:25;29096:5;29103:7;29086:9;:25::i;:::-;29059:52;;29146:17;29126:16;:37;29122:248;;29208:6;29188:16;:26;;29180:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29292:51;29301:5;29308:7;29336:6;29317:16;:25;29292:8;:51::i;:::-;29122:248;29048:329;28924:453;;;:::o;25132:840::-;25279:1;25263:18;;:4;:18;;;25255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25356:1;25342:16;;:2;:16;;;25334:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25411:38;25432:4;25438:2;25442:6;25411:20;:38::i;:::-;25462:19;25484:9;:15;25494:4;25484:15;;;;;;;;;;;;;;;;25462:37;;25533:6;25518:11;:21;;25510:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25650:6;25636:11;:20;25618:9;:15;25628:4;25618:15;;;;;;;;;;;;;;;:38;;;;25853:6;25836:9;:13;25846:2;25836:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25903:2;25888:26;;25897:4;25888:26;;;25907:6;25888:26;;;;;;:::i;:::-;;;;;;;;25927:37;25947:4;25953:2;25957:6;25927:19;:37::i;:::-;25244:728;25132:840;;;:::o;12591:132::-;12666:12;:10;:12::i;:::-;12655:23;;:7;:5;:7::i;:::-;:23;;;12647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12591:132::o;13693:191::-;13767:16;13786:6;;;;;;;;;;;13767:25;;13812:8;13803:6;;:17;;;;;;;;;;;;;;;;;;13867:8;13836:40;;13857:8;13836:40;;;;;;;;;;;;13756:128;13693:191;:::o;29977:125::-;;;;:::o;30706:124::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:126::-;2897:7;2937:42;2930:5;2926:54;2915:65;;2860:126;;;:::o;2992:96::-;3029:7;3058:24;3076:5;3058:24;:::i;:::-;3047:35;;2992:96;;;:::o;3094:122::-;3167:24;3185:5;3167:24;:::i;:::-;3160:5;3157:35;3147:63;;3206:1;3203;3196:12;3147:63;3094:122;:::o;3222:139::-;3268:5;3306:6;3293:20;3284:29;;3322:33;3349:5;3322:33;:::i;:::-;3222:139;;;;:::o;3367:77::-;3404:7;3433:5;3422:16;;3367:77;;;:::o;3450:122::-;3523:24;3541:5;3523:24;:::i;:::-;3516:5;3513:35;3503:63;;3562:1;3559;3552:12;3503:63;3450:122;:::o;3578:139::-;3624:5;3662:6;3649:20;3640:29;;3678:33;3705:5;3678:33;:::i;:::-;3578:139;;;;:::o;3723:474::-;3791:6;3799;3848:2;3836:9;3827:7;3823:23;3819:32;3816:119;;;3854:79;;:::i;:::-;3816:119;3974:1;3999:53;4044:7;4035:6;4024:9;4020:22;3999:53;:::i;:::-;3989:63;;3945:117;4101:2;4127:53;4172:7;4163:6;4152:9;4148:22;4127:53;:::i;:::-;4117:63;;4072:118;3723:474;;;;;:::o;4203:118::-;4290:24;4308:5;4290:24;:::i;:::-;4285:3;4278:37;4203:118;;:::o;4327:222::-;4420:4;4458:2;4447:9;4443:18;4435:26;;4471:71;4539:1;4528:9;4524:17;4515:6;4471:71;:::i;:::-;4327:222;;;;:::o;4555:619::-;4632:6;4640;4648;4697:2;4685:9;4676:7;4672:23;4668:32;4665:119;;;4703:79;;:::i;:::-;4665:119;4823:1;4848:53;4893:7;4884:6;4873:9;4869:22;4848:53;:::i;:::-;4838:63;;4794:117;4950:2;4976:53;5021:7;5012:6;5001:9;4997:22;4976:53;:::i;:::-;4966:63;;4921:118;5078:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;:::i;:::-;5094:63;;5049:118;4555:619;;;;;:::o;5180:86::-;5215:7;5255:4;5248:5;5244:16;5233:27;;5180:86;;;:::o;5272:112::-;5355:22;5371:5;5355:22;:::i;:::-;5350:3;5343:35;5272:112;;:::o;5390:214::-;5479:4;5517:2;5506:9;5502:18;5494:26;;5530:67;5594:1;5583:9;5579:17;5570:6;5530:67;:::i;:::-;5390:214;;;;:::o;5610:329::-;5669:6;5718:2;5706:9;5697:7;5693:23;5689:32;5686:119;;;5724:79;;:::i;:::-;5686:119;5844:1;5869:53;5914:7;5905:6;5894:9;5890:22;5869:53;:::i;:::-;5859:63;;5815:117;5610:329;;;;:::o;5945:::-;6004:6;6053:2;6041:9;6032:7;6028:23;6024:32;6021:119;;;6059:79;;:::i;:::-;6021:119;6179:1;6204:53;6249:7;6240:6;6229:9;6225:22;6204:53;:::i;:::-;6194:63;;6150:117;5945:329;;;;:::o;6280:60::-;6308:3;6329:5;6322:12;;6280:60;;;:::o;6346:142::-;6396:9;6429:53;6447:34;6456:24;6474:5;6456:24;:::i;:::-;6447:34;:::i;:::-;6429:53;:::i;:::-;6416:66;;6346:142;;;:::o;6494:126::-;6544:9;6577:37;6608:5;6577:37;:::i;:::-;6564:50;;6494:126;;;:::o;6626:142::-;6692:9;6725:37;6756:5;6725:37;:::i;:::-;6712:50;;6626:142;;;:::o;6774:163::-;6877:53;6924:5;6877:53;:::i;:::-;6872:3;6865:66;6774:163;;:::o;6943:254::-;7052:4;7090:2;7079:9;7075:18;7067:26;;7103:87;7187:1;7176:9;7172:17;7163:6;7103:87;:::i;:::-;6943:254;;;;:::o;7203:118::-;7290:24;7308:5;7290:24;:::i;:::-;7285:3;7278:37;7203:118;;:::o;7327:222::-;7420:4;7458:2;7447:9;7443:18;7435:26;;7471:71;7539:1;7528:9;7524:17;7515:6;7471:71;:::i;:::-;7327:222;;;;:::o;7555:117::-;7664:1;7661;7654:12;7678:180;7726:77;7723:1;7716:88;7823:4;7820:1;7813:15;7847:4;7844:1;7837:15;7864:281;7947:27;7969:4;7947:27;:::i;:::-;7939:6;7935:40;8077:6;8065:10;8062:22;8041:18;8029:10;8026:34;8023:62;8020:88;;;8088:18;;:::i;:::-;8020:88;8128:10;8124:2;8117:22;7907:238;7864:281;;:::o;8151:129::-;8185:6;8212:20;;:::i;:::-;8202:30;;8241:33;8269:4;8261:6;8241:33;:::i;:::-;8151:129;;;:::o;8286:311::-;8363:4;8453:18;8445:6;8442:30;8439:56;;;8475:18;;:::i;:::-;8439:56;8525:4;8517:6;8513:17;8505:25;;8585:4;8579;8575:15;8567:23;;8286:311;;;:::o;8603:117::-;8712:1;8709;8702:12;8743:710;8839:5;8864:81;8880:64;8937:6;8880:64;:::i;:::-;8864:81;:::i;:::-;8855:90;;8965:5;8994:6;8987:5;8980:21;9028:4;9021:5;9017:16;9010:23;;9081:4;9073:6;9069:17;9061:6;9057:30;9110:3;9102:6;9099:15;9096:122;;;9129:79;;:::i;:::-;9096:122;9244:6;9227:220;9261:6;9256:3;9253:15;9227:220;;;9336:3;9365:37;9398:3;9386:10;9365:37;:::i;:::-;9360:3;9353:50;9432:4;9427:3;9423:14;9416:21;;9303:144;9287:4;9282:3;9278:14;9271:21;;9227:220;;;9231:21;8845:608;;8743:710;;;;;:::o;9476:370::-;9547:5;9596:3;9589:4;9581:6;9577:17;9573:27;9563:122;;9604:79;;:::i;:::-;9563:122;9721:6;9708:20;9746:94;9836:3;9828:6;9821:4;9813:6;9809:17;9746:94;:::i;:::-;9737:103;;9553:293;9476:370;;;;:::o;9852:117::-;9961:1;9958;9951:12;9975:307;10036:4;10126:18;10118:6;10115:30;10112:56;;;10148:18;;:::i;:::-;10112:56;10186:29;10208:6;10186:29;:::i;:::-;10178:37;;10270:4;10264;10260:15;10252:23;;9975:307;;;:::o;10288:146::-;10385:6;10380:3;10375;10362:30;10426:1;10417:6;10412:3;10408:16;10401:27;10288:146;;;:::o;10440:423::-;10517:5;10542:65;10558:48;10599:6;10558:48;:::i;:::-;10542:65;:::i;:::-;10533:74;;10630:6;10623:5;10616:21;10668:4;10661:5;10657:16;10706:3;10697:6;10692:3;10688:16;10685:25;10682:112;;;10713:79;;:::i;:::-;10682:112;10803:54;10850:6;10845:3;10840;10803:54;:::i;:::-;10523:340;10440:423;;;;;:::o;10882:338::-;10937:5;10986:3;10979:4;10971:6;10967:17;10963:27;10953:122;;10994:79;;:::i;:::-;10953:122;11111:6;11098:20;11136:78;11210:3;11202:6;11195:4;11187:6;11183:17;11136:78;:::i;:::-;11127:87;;10943:277;10882:338;;;;:::o;11226:1509::-;11380:6;11388;11396;11404;11412;11461:3;11449:9;11440:7;11436:23;11432:33;11429:120;;;11468:79;;:::i;:::-;11429:120;11588:1;11613:53;11658:7;11649:6;11638:9;11634:22;11613:53;:::i;:::-;11603:63;;11559:117;11715:2;11741:53;11786:7;11777:6;11766:9;11762:22;11741:53;:::i;:::-;11731:63;;11686:118;11871:2;11860:9;11856:18;11843:32;11902:18;11894:6;11891:30;11888:117;;;11924:79;;:::i;:::-;11888:117;12029:78;12099:7;12090:6;12079:9;12075:22;12029:78;:::i;:::-;12019:88;;11814:303;12184:2;12173:9;12169:18;12156:32;12215:18;12207:6;12204:30;12201:117;;;12237:79;;:::i;:::-;12201:117;12342:78;12412:7;12403:6;12392:9;12388:22;12342:78;:::i;:::-;12332:88;;12127:303;12497:3;12486:9;12482:19;12469:33;12529:18;12521:6;12518:30;12515:117;;;12551:79;;:::i;:::-;12515:117;12656:62;12710:7;12701:6;12690:9;12686:22;12656:62;:::i;:::-;12646:72;;12440:288;11226:1509;;;;;;;;:::o;12741:115::-;12826:23;12843:5;12826:23;:::i;:::-;12821:3;12814:36;12741:115;;:::o;12862:218::-;12953:4;12991:2;12980:9;12976:18;12968:26;;13004:69;13070:1;13059:9;13055:17;13046:6;13004:69;:::i;:::-;12862:218;;;;:::o;13086:474::-;13154:6;13162;13211:2;13199:9;13190:7;13186:23;13182:32;13179:119;;;13217:79;;:::i;:::-;13179:119;13337:1;13362:53;13407:7;13398:6;13387:9;13383:22;13362:53;:::i;:::-;13352:63;;13308:117;13464:2;13490:53;13535:7;13526:6;13515:9;13511:22;13490:53;:::i;:::-;13480:63;;13435:118;13086:474;;;;;:::o;13566:1089::-;13670:6;13678;13686;13694;13702;13751:3;13739:9;13730:7;13726:23;13722:33;13719:120;;;13758:79;;:::i;:::-;13719:120;13878:1;13903:53;13948:7;13939:6;13928:9;13924:22;13903:53;:::i;:::-;13893:63;;13849:117;14005:2;14031:53;14076:7;14067:6;14056:9;14052:22;14031:53;:::i;:::-;14021:63;;13976:118;14133:2;14159:53;14204:7;14195:6;14184:9;14180:22;14159:53;:::i;:::-;14149:63;;14104:118;14261:2;14287:53;14332:7;14323:6;14312:9;14308:22;14287:53;:::i;:::-;14277:63;;14232:118;14417:3;14406:9;14402:19;14389:33;14449:18;14441:6;14438:30;14435:117;;;14471:79;;:::i;:::-;14435:117;14576:62;14630:7;14621:6;14610:9;14606:22;14576:62;:::i;:::-;14566:72;;14360:288;13566:1089;;;;;;;;:::o;14661:180::-;14709:77;14706:1;14699:88;14806:4;14803:1;14796:15;14830:4;14827:1;14820:15;14847:320;14891:6;14928:1;14922:4;14918:12;14908:22;;14975:1;14969:4;14965:12;14996:18;14986:81;;15052:4;15044:6;15040:17;15030:27;;14986:81;15114:2;15106:6;15103:14;15083:18;15080:38;15077:84;;15133:18;;:::i;:::-;15077:84;14898:269;14847:320;;;:::o;15173:180::-;15221:77;15218:1;15211:88;15318:4;15315:1;15308:15;15342:4;15339:1;15332:15;15359:191;15399:3;15418:20;15436:1;15418:20;:::i;:::-;15413:25;;15452:20;15470:1;15452:20;:::i;:::-;15447:25;;15495:1;15492;15488:9;15481:16;;15516:3;15513:1;15510:10;15507:36;;;15523:18;;:::i;:::-;15507:36;15359:191;;;;:::o;15556:179::-;15696:31;15692:1;15684:6;15680:14;15673:55;15556:179;:::o;15741:366::-;15883:3;15904:67;15968:2;15963:3;15904:67;:::i;:::-;15897:74;;15980:93;16069:3;15980:93;:::i;:::-;16098:2;16093:3;16089:12;16082:19;;15741:366;;;:::o;16113:419::-;16279:4;16317:2;16306:9;16302:18;16294:26;;16366:9;16360:4;16356:20;16352:1;16341:9;16337:17;16330:47;16394:131;16520:4;16394:131;:::i;:::-;16386:139;;16113:419;;;:::o;16538:410::-;16578:7;16601:20;16619:1;16601:20;:::i;:::-;16596:25;;16635:20;16653:1;16635:20;:::i;:::-;16630:25;;16690:1;16687;16683:9;16712:30;16730:11;16712:30;:::i;:::-;16701:41;;16891:1;16882:7;16878:15;16875:1;16872:22;16852:1;16845:9;16825:83;16802:139;;16921:18;;:::i;:::-;16802:139;16586:362;16538:410;;;;:::o;16954:168::-;17037:11;17071:6;17066:3;17059:19;17111:4;17106:3;17102:14;17087:29;;16954:168;;;;:::o;17128:114::-;;:::o;17248:362::-;17389:3;17410:65;17473:1;17468:3;17410:65;:::i;:::-;17403:72;;17484:93;17573:3;17484:93;:::i;:::-;17602:1;17597:3;17593:11;17586:18;;17248:362;;;:::o;17616:859::-;17893:4;17931:3;17920:9;17916:19;17908:27;;17945:71;18013:1;18002:9;17998:17;17989:6;17945:71;:::i;:::-;18026:72;18094:2;18083:9;18079:18;18070:6;18026:72;:::i;:::-;18108;18176:2;18165:9;18161:18;18152:6;18108:72;:::i;:::-;18190;18258:2;18247:9;18243:18;18234:6;18190:72;:::i;:::-;18310:9;18304:4;18300:20;18294:3;18283:9;18279:19;18272:49;18338:130;18463:4;18338:130;:::i;:::-;18330:138;;17616:859;;;;;;;:::o;18481:224::-;18621:34;18617:1;18609:6;18605:14;18598:58;18690:7;18685:2;18677:6;18673:15;18666:32;18481:224;:::o;18711:366::-;18853:3;18874:67;18938:2;18933:3;18874:67;:::i;:::-;18867:74;;18950:93;19039:3;18950:93;:::i;:::-;19068:2;19063:3;19059:12;19052:19;;18711:366;;;:::o;19083:419::-;19249:4;19287:2;19276:9;19272:18;19264:26;;19336:9;19330:4;19326:20;19322:1;19311:9;19307:17;19300:47;19364:131;19490:4;19364:131;:::i;:::-;19356:139;;19083:419;;;:::o;19508:225::-;19648:34;19644:1;19636:6;19632:14;19625:58;19717:8;19712:2;19704:6;19700:15;19693:33;19508:225;:::o;19739:366::-;19881:3;19902:67;19966:2;19961:3;19902:67;:::i;:::-;19895:74;;19978:93;20067:3;19978:93;:::i;:::-;20096:2;20091:3;20087:12;20080:19;;19739:366;;;:::o;20111:419::-;20277:4;20315:2;20304:9;20300:18;20292:26;;20364:9;20358:4;20354:20;20350:1;20339:9;20335:17;20328:47;20392:131;20518:4;20392:131;:::i;:::-;20384:139;;20111:419;;;:::o;20536:223::-;20676:34;20672:1;20664:6;20660:14;20653:58;20745:6;20740:2;20732:6;20728:15;20721:31;20536:223;:::o;20765:366::-;20907:3;20928:67;20992:2;20987:3;20928:67;:::i;:::-;20921:74;;21004:93;21093:3;21004:93;:::i;:::-;21122:2;21117:3;21113:12;21106:19;;20765:366;;;:::o;21137:419::-;21303:4;21341:2;21330:9;21326:18;21318:26;;21390:9;21384:4;21380:20;21376:1;21365:9;21361:17;21354:47;21418:131;21544:4;21418:131;:::i;:::-;21410:139;;21137:419;;;:::o;21562:221::-;21702:34;21698:1;21690:6;21686:14;21679:58;21771:4;21766:2;21758:6;21754:15;21747:29;21562:221;:::o;21789:366::-;21931:3;21952:67;22016:2;22011:3;21952:67;:::i;:::-;21945:74;;22028:93;22117:3;22028:93;:::i;:::-;22146:2;22141:3;22137:12;22130:19;;21789:366;;;:::o;22161:419::-;22327:4;22365:2;22354:9;22350:18;22342:26;;22414:9;22408:4;22404:20;22400:1;22389:9;22385:17;22378:47;22442:131;22568:4;22442:131;:::i;:::-;22434:139;;22161:419;;;:::o;22586:179::-;22726:31;22722:1;22714:6;22710:14;22703:55;22586:179;:::o;22771:366::-;22913:3;22934:67;22998:2;22993:3;22934:67;:::i;:::-;22927:74;;23010:93;23099:3;23010:93;:::i;:::-;23128:2;23123:3;23119:12;23112:19;;22771:366;;;:::o;23143:419::-;23309:4;23347:2;23336:9;23332:18;23324:26;;23396:9;23390:4;23386:20;23382:1;23371:9;23367:17;23360:47;23424:131;23550:4;23424:131;:::i;:::-;23416:139;;23143:419;;;:::o;23568:224::-;23708:34;23704:1;23696:6;23692:14;23685:58;23777:7;23772:2;23764:6;23760:15;23753:32;23568:224;:::o;23798:366::-;23940:3;23961:67;24025:2;24020:3;23961:67;:::i;:::-;23954:74;;24037:93;24126:3;24037:93;:::i;:::-;24155:2;24150:3;24146:12;24139:19;;23798:366;;;:::o;24170:419::-;24336:4;24374:2;24363:9;24359:18;24351:26;;24423:9;24417:4;24413:20;24409:1;24398:9;24394:17;24387:47;24451:131;24577:4;24451:131;:::i;:::-;24443:139;;24170:419;;;:::o;24595:222::-;24735:34;24731:1;24723:6;24719:14;24712:58;24804:5;24799:2;24791:6;24787:15;24780:30;24595:222;:::o;24823:366::-;24965:3;24986:67;25050:2;25045:3;24986:67;:::i;:::-;24979:74;;25062:93;25151:3;25062:93;:::i;:::-;25180:2;25175:3;25171:12;25164:19;;24823:366;;;:::o;25195:419::-;25361:4;25399:2;25388:9;25384:18;25376:26;;25448:9;25442:4;25438:20;25434:1;25423:9;25419:17;25412:47;25476:131;25602:4;25476:131;:::i;:::-;25468:139;;25195:419;;;:::o;25620:225::-;25760:34;25756:1;25748:6;25744:14;25737:58;25829:8;25824:2;25816:6;25812:15;25805:33;25620:225;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:182::-;26788:34;26784:1;26776:6;26772:14;26765:58;26648:182;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o

Swarm Source

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