Contract 0xA799C4ADcf62E025cE4D8aBE6A77CebC487d772A 2

 
 
Txn Hash
Method
Block
From
To
Value
0x06c0ecbb055e7e8ee01af94bddeaabebe701c735c2de01f5410962fd4c21d246Approve153141732022-08-10 11:52:1312 hrs 45 mins ago0x5808f83f16c245094f9a1416851f0b12b2f6a8ae IN  LuxFi: LXF Token0 Ether0.0007827316.88959339
0xa4ed2b6a0fd683ec3c14b42b1e15808ce68ae320056cb9a72a727aabe81a672dTransfer153141682022-08-10 11:51:2712 hrs 46 mins ago0x5808f83f16c245094f9a1416851f0b12b2f6a8ae IN  LuxFi: LXF Token0 Ether0.01033746210.92569527
0x80e68bd1e417dc2c5c3470b2905e8c2832653665de9e23bc2043f637f7d003c3Approve153141542022-08-10 11:48:4612 hrs 48 mins ago0x4c89d4ceb47cfc577afa7398add6d0f9984ec784 IN  LuxFi: LXF Token0 Ether0.00064547 13.92784032
0x1602e1c36413a908fbbbaee46597b46585d259e1498f5dd73f13a736ccc480b7Transfer153141202022-08-10 11:40:4512 hrs 56 mins ago0x4bd008eeb965da7755ec2b0efb23d9bd0e79b353 IN  LuxFi: LXF Token0 Ether0.00052592 14.3265196
0x4d7ac9cb99489616fc11ae49ff5edaa988f2029bf0c1673c89ed00ebe6b8b481Transfer152989582022-08-08 2:28:572 days 22 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00033451 9.1154642
0x1fb4e7901df7184e7e05aebc547a778a4d2b8424eec1544092f26385b499afa9Transfer152985772022-08-08 1:00:132 days 23 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00042284 11.52217387
0x612d734c7c2fdde9ed65aa349830a4e8eaa9d5bb52eab25d2d22f174c660b4daTransfer152966022022-08-07 17:40:463 days 6 hrs ago0x78838179af4988440c5539ed658ba76abcff4563 IN  LuxFi: LXF Token0 Ether0.00115181 23.49593175
0xd47e7ac976f4988ee0f273bda49d565a8217d077bfcf8788bb1c456d35558efeTransfer152963362022-08-07 16:40:053 days 7 hrs ago0xed6c3bcb0e40796c74aba14783271e8e9e66ff5e IN  LuxFi: LXF Token0 Ether0.00128011 26.11308897
0x0ea08453a1a8256b61724119ab910f59f03ed30ac80c5fd87a225f4030ad8f3aTransfer152962982022-08-07 16:30:393 days 8 hrs ago0xd0dd77cff918fa07db675e55cdfccdba3a10242f IN  LuxFi: LXF Token0 Ether0.00116018 36.34445213
0x9c686b42713082b660a06a9ac1aaf2e55cdc882fdb263bcc57cd98777a65a535Approve152715232022-08-03 20:16:107 days 4 hrs ago0x16d17e68a06bfe78146f366160b04aab3c2c3ea8 IN  LuxFi: LXF Token0 Ether0.00058386 12.52396616
0x1f70129c0b5ce51394b2a7fc891dfa44d26a4fb468dbb4714f5e27f6c97350b0Transfer152675392022-08-03 5:12:487 days 19 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00036821 6.84446841
0x4c40b4f320b035993fd39d5f23fc45fb7c284aa32696e3790064b586e9c6e1a8Transfer152605802022-08-02 3:02:558 days 21 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00031652 8.62513748
0x9d5ae2260ad26939a446532327201e1ebf3ca4cb53822efcf0ff85b5a0162563Approve152598622022-08-02 0:24:359 days 12 mins ago0x74662a89885ce133b53e0c214e94d4d71e9fce08 IN  LuxFi: LXF Token0 Ether0.0005594412
0x29eef37a38256f20cf619e32370e98aeca79fe89708902640a6e50e994c40d28Transfer152598292022-08-02 0:17:249 days 20 mins ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00067533 12.55318234
0xaed6f0dc8e4e9063afdfeb3a84bbdd3272ccb1a3cbc611f9cbfc9d8c8d37831bTransfer152360852022-07-29 7:42:3612 days 16 hrs ago0xc0108ca6bdaeeeedfc9a9a4ef6602db5a71df263 IN  LuxFi: LXF Token0 Ether0.00093124 18.99644913
0xb43575720341341992ad7a2d4168b922f30ac2549143c0efac25e1fe976251fdApprove151996462022-07-23 15:09:1118 days 9 hrs ago0x4e49de382049bdbb68b7250834425a1a909429e7 IN  LuxFi: LXF Token0 Ether0.00071163 15.26458336
0xe3e79ce8de84be3ad22e582d7eb52b100b4f017675195212af3d6ad640ff4f61Transfer151960722022-07-23 1:50:1118 days 22 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00038023 10.36110837
0x4d88ce66448776eb78950429c6d026952bbbfdcd1fd44d2c82e5d4062169ac36Transfer151838032022-07-21 4:30:0120 days 20 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00062693 11.65353703
0x506989c9100b144965b81faf9c72d8dd80c6b035309eeca739745e1250babe98Approve151655082022-07-18 8:15:0023 days 16 hrs ago0xdeeeb562784031e6d9c26bd2ca566aadc6ecfecd IN  LuxFi: LXF Token0 Ether0.00080868 17.34621907
0xa640156f41904c8780ce2a9601ffabc3efdfce329f32d671e015a41ef97ac020Approve151645172022-07-18 4:37:5923 days 19 hrs ago0x15de21302fa04022313bfe702a8c08d7f235ba52 IN  LuxFi: LXF Token0 Ether0.00086234 18.49726736
0xbe9428335ef75717d69e2e4f8d13943440ef0910f733e4ba9d9bf6909129ea36Transfer151645112022-07-18 4:36:4223 days 20 hrs ago0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182 IN  LuxFi: LXF Token0 Ether0.00079901 14.84888294
0xfa90af0f63be95b9df8d5b72ee698a35147382b3987500ba8b9fd2cad267d0d8Transfer151594872022-07-17 9:54:5924 days 14 hrs ago0x9aeec340dafb0c23d04274655dfd76908bd3df12 IN  LuxFi: LXF Token0 Ether0.00021115 6.62227321
0xa7199f7f3452641cc36106b00c7ccde0353488ee0c44e321cfaf20a4652022cbTransfer151594692022-07-17 9:51:5724 days 14 hrs ago0xf880c5156fd12b90b490a424f6c86b0bf4ec942a IN  LuxFi: LXF Token0 Ether0.00026643 8.35601388
0xd919ac7fa8f25bbd5c36ad6ce685ff1503adc93e5ceaad30ed4364431aad23c6Transfer151594612022-07-17 9:49:5724 days 14 hrs ago0x0b0ba63138a7417637ff6be10fabcc5414bbc2c0 IN  LuxFi: LXF Token0 Ether0.00023254 7.29302081
0x32f2d29ff5ffb5516807f685c9515eb78a613725502a0d56cb8f3fd6887fe73bTransfer151594482022-07-17 9:47:4624 days 14 hrs ago0xfbee1865d844778aaa411f53039e2519ff271518 IN  LuxFi: LXF Token0 Ether0.00028929 9.07283609
[ Download CSV Export 

OVERVIEW

LuxFi is the world’s first asset-backed NFT marketplace for luxury assets, where people can buy, sell and invest in luxury assets using cryptocurrencies and traditional payments. LuxFi focuses on luxury assets that hold value well and have a high resale value.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-29
*/

// SPDX-License-Identifier: MIT

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




/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}




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

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

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

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

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

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

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

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




/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}













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



/**
 * @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.zeppelin.solutions/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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    /**
     * @dev See {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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "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;
        }
        _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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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












/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}


/**
 * @dev ERC20 token with pausable token transfers, minting and burning.
 *
 * Useful for scenarios such as preventing trades until the end of an evaluation
 * period, or having an emergency switch for freezing all token transfers in the
 * event of a large bug.
 */
abstract contract ERC20Pausable is ERC20, Pausable {
    /**
     * @dev See {ERC20-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     * - the contract must not be paused.
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        require(!paused(), "ERC20Pausable: token transfer while paused");
    }
}







/**
 * @dev Extension of {ERC20} that adds a cap to the supply of tokens.
 */
abstract contract ERC20Capped is ERC20 {
    uint256 private immutable _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor(uint256 cap_) {
        require(cap_ > 0, "ERC20Capped: cap is 0");
        _cap = cap_;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view virtual returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20-_mint}.
     */
    function _mint(address account, uint256 amount) internal virtual override {
        require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, amount);
    }
}









/**
 * @dev External interface of AccessControl declared to support ERC165 detection.
 */
interface IAccessControl {
    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {AccessControl-_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) external;
}









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


/**
 * @dev Contract module that allows children to implement role-based access
 * control mechanisms. This is a lightweight version that doesn't allow enumerating role
 * members except through off-chain means by accessing the contract event logs. Some
 * applications may benefit from on-chain enumerability, for those cases see
 * {AccessControlEnumerable}.
 *
 * Roles are referred to by their `bytes32` identifier. These should be exposed
 * in the external API and be unique. The best way to achieve this is by
 * using `public constant` hash digests:
 *
 * ```
 * bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
 * ```
 *
 * Roles can be used to represent a set of permissions. To restrict access to a
 * function call, use {hasRole}:
 *
 * ```
 * function foo() public {
 *     require(hasRole(MY_ROLE, msg.sender));
 *     ...
 * }
 * ```
 *
 * Roles can be granted and revoked dynamically via the {grantRole} and
 * {revokeRole} functions. Each role has an associated admin role, and only
 * accounts that have a role's admin role can call {grantRole} and {revokeRole}.
 *
 * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
 * that only accounts with this role will be able to grant or revoke other
 * roles. More complex role relationships can be created by using
 * {_setRoleAdmin}.
 *
 * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
 * grant and revoke this role. Extra precautions should be taken to secure
 * accounts that have been granted it.
 */
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with a standardized message including the required role.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     *
     * _Available since v4.1._
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    /**
     * @dev Revert with a standard message if `account` is missing `role`.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     */
    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event. Note that unlike {grantRole}, this function doesn't perform any
     * checks on the calling account.
     *
     * [WARNING]
     * ====
     * This function should only be called from the constructor when setting
     * up the initial roles for the system.
     *
     * Using this function in any other way is effectively circumventing the admin
     * system imposed by {AccessControl}.
     * ====
     */
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}


contract Token is Context, AccessControl, ERC20, ERC20Pausable, ERC20Capped {
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
    bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");

    constructor(string memory name, string memory symbol, address account, uint256 cap) ERC20(name, symbol) ERC20Capped(cap) {
        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _setupRole(MINTER_ROLE, account);
        _setupRole(PAUSER_ROLE, account);
        _setupRole(BURNER_ROLE, account);
    }

    function mint(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");
        _mint(to, amount);
    }

    function pause() public virtual {
        require(hasRole(PAUSER_ROLE, _msgSender()), "must have pauser role to pause");
        _pause();
    }

    function unpause() public virtual {
        require(hasRole(PAUSER_ROLE, _msgSender()), "must have pauser role to unpause");
        _unpause();
    }

    function burn(uint256 amount) public virtual {
        require(hasRole(BURNER_ROLE, _msgSender()), "must have burner role to burn");
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        require(hasRole(BURNER_ROLE, _msgSender()), "must have burner role to burn");
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }

    function _mint(address account, uint256 amount) internal virtual override(ERC20, ERC20Capped) {
        super._mint(account, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override(ERC20, ERC20Pausable) {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"cap","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162001cab38038062001cab833981016040819052620000349162000385565b80848481600490805190602001906200004f92919062000212565b5080516200006590600590602084019062000212565b50506006805460ff191690555080620000c45760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015260640160405180910390fd5b608052620000d460003362000162565b620001007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68362000162565b6200012c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8362000162565b620001587f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488362000162565b5050505062000455565b6200016e828262000172565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200016e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001ce3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b828054620002209062000418565b90600052602060002090601f0160209004810192826200024457600085556200028f565b82601f106200025f57805160ff19168380011785556200028f565b828001600101855582156200028f579182015b828111156200028f57825182559160200191906001019062000272565b506200029d929150620002a1565b5090565b5b808211156200029d5760008155600101620002a2565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002e057600080fd5b81516001600160401b0380821115620002fd57620002fd620002b8565b604051601f8301601f19908116603f01168101908282118183101715620003285762000328620002b8565b816040528381526020925086838588010111156200034557600080fd5b600091505b838210156200036957858201830151818301840152908201906200034a565b838211156200037b5760008385830101525b9695505050505050565b600080600080608085870312156200039c57600080fd5b84516001600160401b0380821115620003b457600080fd5b620003c288838901620002ce565b95506020870151915080821115620003d957600080fd5b50620003e887828801620002ce565b604087015190945090506001600160a01b03811681146200040857600080fd5b6060959095015193969295505050565b600181811c908216806200042d57607f821691505b602082108114156200044f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805161183362000478600039600081816102ae015261133501526118336000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806342966c68116100f9578063a217fddf11610097578063d539139311610071578063d5391393146103be578063d547741f146103e5578063dd62ed3e146103f8578063e63ab1e91461043157600080fd5b8063a217fddf14610390578063a457c2d714610398578063a9059cbb146103ab57600080fd5b806379cc6790116100d357806379cc67901461035a5780638456cb591461036d57806391d148541461037557806395d89b411461038857600080fd5b806342966c68146103135780635c975abb1461032657806370a082311461033157600080fd5b80632f2ff15d1161016657806336568abe1161014057806336568abe146102d257806339509351146102e55780633f4ba83a146102f857806340c10f191461030057600080fd5b80632f2ff15d14610288578063313ce5671461029d578063355274ea146102ac57600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e578063282c51f31461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d7366004611511565b610458565b60405190151581526020015b60405180910390f35b6101f961048f565b6040516101e89190611567565b6101dc6102143660046115b6565b610521565b6003545b6040519081526020016101e8565b6101dc6102393660046115e0565b610537565b61021d61024c36600461161c565b60009081526020819052604090206001015490565b61021d7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b61029b610296366004611635565b6105e6565b005b604051601281526020016101e8565b7f000000000000000000000000000000000000000000000000000000000000000061021d565b61029b6102e0366004611635565b610611565b6101dc6102f33660046115b6565b61068f565b61029b6106cb565b61029b61030e3660046115b6565b61074b565b61029b61032136600461161c565b6107cb565b60065460ff166101dc565b61021d61033f366004611661565b6001600160a01b031660009081526001602052604090205490565b61029b6103683660046115b6565b61084e565b61029b610945565b6101dc610383366004611635565b6109c3565b6101f96109ec565b61021d600081565b6101dc6103a63660046115b6565b6109fb565b6101dc6103b93660046115b6565b610a94565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61029b6103f3366004611635565b610aa1565b61021d61040636600461167c565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216637965db0b60e01b148061048957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606004805461049e906116a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906116a6565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600061052e338484610ac7565b50600192915050565b6000610544848484610beb565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156105ce5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105db8533858403610ac7565b506001949350505050565b6000828152602081905260409020600101546106028133610dc6565b61060c8383610e2a565b505050565b6001600160a01b03811633146106815760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105c5565b61068b8282610eae565b5050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161052e9185906106c69086906116f7565b610ac7565b6106f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336109c3565b6107415760405162461bcd60e51b815260206004820181905260248201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560448201526064016105c5565b610749610f13565b565b6107757f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336109c3565b6107c15760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060448201526064016105c5565b61068b8282610fa6565b6107f57f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336109c3565b6108415760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206275726e657220726f6c6520746f206275726e00000060448201526064016105c5565b61084b3382610fb0565b50565b6108787f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336109c3565b6108c45760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206275726e657220726f6c6520746f206275726e00000060448201526064016105c5565b60006108d08333610406565b90508181101561092e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016105c5565b61093b8333848403610ac7565b61060c8383610fb0565b61096f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336109c3565b6109bb5760405162461bcd60e51b815260206004820152601e60248201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060448201526064016105c5565b61074961110a565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606005805461049e906116a6565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610a7d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105c5565b610a8a3385858403610ac7565b5060019392505050565b600061052e338484610beb565b600082815260208190526040902060010154610abd8133610dc6565b61060c8383610eae565b6001600160a01b038316610b295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b6001600160a01b038216610b8a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c5565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c4f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c5565b6001600160a01b038216610cb15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c5565b610cbc838383611185565b6001600160a01b03831660009081526001602052604090205481811015610d345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105c5565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610d6b9084906116f7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610db791815260200190565b60405180910390a35b50505050565b610dd082826109c3565b61068b57610de8816001600160a01b03166014611190565b610df3836020611190565b604051602001610e0492919061170f565b60408051601f198184030181529082905262461bcd60e51b82526105c591600401611567565b610e3482826109c3565b61068b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e6a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610eb882826109c3565b1561068b576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60065460ff16610f5c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105c5565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61068b8282611333565b6001600160a01b0382166110105760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105c5565b61101c82600083611185565b6001600160a01b038216600090815260016020526040902054818110156110905760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105c5565b6001600160a01b03831660009081526001602052604081208383039055600380548492906110bf908490611784565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60065460ff16156111505760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105c5565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f893390565b61060c8383836113c0565b6060600061119f83600261179b565b6111aa9060026116f7565b67ffffffffffffffff8111156111c2576111c26117ba565b6040519080825280601f01601f1916602001820160405280156111ec576020820181803683370190505b509050600360fc1b81600081518110611207576112076117d0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611236576112366117d0565b60200101906001600160f81b031916908160001a905350600061125a84600261179b565b6112659060016116f7565b90505b60018111156112dd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611299576112996117d0565b1a60f81b8282815181106112af576112af6117d0565b60200101906001600160f81b031916908160001a90535060049490941c936112d6816117e6565b9050611268565b50831561132c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105c5565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000008161135e60035490565b61136891906116f7565b11156113b65760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a206361702065786365656465640000000000000060448201526064016105c5565b61068b8282611426565b60065460ff161561060c5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105c5565b6001600160a01b03821661147c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105c5565b61148860008383611185565b806003600082825461149a91906116f7565b90915550506001600160a01b038216600090815260016020526040812080548392906114c79084906116f7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006020828403121561152357600080fd5b81356001600160e01b03198116811461132c57600080fd5b60005b8381101561155657818101518382015260200161153e565b83811115610dc05750506000910152565b602081526000825180602084015261158681604085016020870161153b565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146115b157600080fd5b919050565b600080604083850312156115c957600080fd5b6115d28361159a565b946020939093013593505050565b6000806000606084860312156115f557600080fd5b6115fe8461159a565b925061160c6020850161159a565b9150604084013590509250925092565b60006020828403121561162e57600080fd5b5035919050565b6000806040838503121561164857600080fd5b823591506116586020840161159a565b90509250929050565b60006020828403121561167357600080fd5b61132c8261159a565b6000806040838503121561168f57600080fd5b6116988361159a565b91506116586020840161159a565b600181811c908216806116ba57607f821691505b602082108114156116db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561170a5761170a6116e1565b500190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161174781601785016020880161153b565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161177881602884016020880161153b565b01602801949350505050565b600082821015611796576117966116e1565b500390565b60008160001904831182151516156117b5576117b56116e1565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816117f5576117f56116e1565b50600019019056fea2646970667358221220601a2cca3afcb15e121f96f57ffedc72bed456da3f46c8ca82b09e771f4585d264736f6c63430008090033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000043b5eb502466b927caec175417a8f8fdb1e16aac00000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000000000000000000000000000000000000000000054c7578466900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c58460000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000043b5eb502466b927caec175417a8f8fdb1e16aac00000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000000000000000000000000000000000000000000054c7578466900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c58460000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): LuxFi
Arg [1] : symbol (string): LXF
Arg [2] : account (address): 0x43b5eb502466b927caec175417a8f8fdb1e16aac
Arg [3] : cap (uint256): 100000000000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 00000000000000000000000043b5eb502466b927caec175417a8f8fdb1e16aac
Arg [3] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 4c75784669000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4c58460000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

33467:2099:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28843:204;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;28843:204:0;;;;;;;;8868:100;;;:::i;:::-;;;;;;;:::i;11035:169::-;;;;;;:::i;:::-;;:::i;9988:108::-;10076:12;;9988:108;;;1731:25:1;;;1719:2;1704:18;9988:108:0;1585:177:1;11686:492:0;;;;;;:::i;:::-;;:::i;30254:123::-;;;;;;:::i;:::-;30320:7;30347:12;;;;;;;;;;:22;;;;30254:123;33688:62;;33726:24;33688:62;;30639:147;;;;;;:::i;:::-;;:::i;:::-;;9830:93;;;9913:2;2868:36:1;;2856:2;2841:18;9830:93:0;2726:184:1;22291:83:0;22362:4;22291:83;;31687:218;;;;;;:::i;:::-;;:::i;12587:215::-;;;;;;:::i;:::-;;:::i;34421:153::-;;;:::i;34078:180::-;;;;;;:::i;:::-;;:::i;34582:178::-;;;;;;:::i;:::-;;:::i;19834:86::-;19905:7;;;;19834:86;;10159:127;;;;;;:::i;:::-;-1:-1:-1;;;;;10260:18:0;10233:7;10260:18;;;:9;:18;;;;;;;10159:127;34768:455;;;;;;:::i;:::-;;:::i;34266:147::-;;;:::i;29139:139::-;;;;;;:::i;:::-;;:::i;9087:104::-;;;:::i;28230:49::-;;28275:4;28230:49;;13305:413;;;;;;:::i;:::-;;:::i;10499:175::-;;;;;;:::i;:::-;;:::i;33550:62::-;;33588:24;33550:62;;31031:149;;;;;;:::i;:::-;;:::i;10737:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10853:18:0;;;10826:7;10853:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10737:151;33619:62;;33657:24;33619:62;;28843:204;28928:4;-1:-1:-1;;;;;;28952:47:0;;-1:-1:-1;;;28952:47:0;;:87;;-1:-1:-1;;;;;;;;;;26371:40:0;;;29003:36;28945:94;28843:204;-1:-1:-1;;28843:204:0:o;8868:100::-;8922:13;8955:5;8948:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8868:100;:::o;11035:169::-;11118:4;11135:39;1438:10;11158:7;11167:6;11135:8;:39::i;:::-;-1:-1:-1;11192:4:0;11035:169;;;;:::o;11686:492::-;11826:4;11843:36;11853:6;11861:9;11872:6;11843:9;:36::i;:::-;-1:-1:-1;;;;;11919:19:0;;11892:24;11919:19;;;:11;:19;;;;;;;;1438:10;11919:33;;;;;;;;11971:26;;;;11963:79;;;;-1:-1:-1;;;11963:79:0;;4143:2:1;11963:79:0;;;4125:21:1;4182:2;4162:18;;;4155:30;4221:34;4201:18;;;4194:62;-1:-1:-1;;;4272:18:1;;;4265:38;4320:19;;11963:79:0;;;;;;;;;12078:57;12087:6;1438:10;12128:6;12109:16;:25;12078:8;:57::i;:::-;-1:-1:-1;12166:4:0;;11686:492;-1:-1:-1;;;;11686:492:0:o;30639:147::-;30320:7;30347:12;;;;;;;;;;:22;;;28721:30;28732:4;1438:10;28721;:30::i;:::-;30753:25:::1;30764:4;30770:7;30753:10;:25::i;:::-;30639:147:::0;;;:::o;31687:218::-;-1:-1:-1;;;;;31783:23:0;;1438:10;31783:23;31775:83;;;;-1:-1:-1;;;31775:83:0;;4552:2:1;31775:83:0;;;4534:21:1;4591:2;4571:18;;;4564:30;4630:34;4610:18;;;4603:62;-1:-1:-1;;;4681:18:1;;;4674:45;4736:19;;31775:83:0;4350:411:1;31775:83:0;31871:26;31883:4;31889:7;31871:11;:26::i;:::-;31687:218;;:::o;12587:215::-;1438:10;12675:4;12724:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12724:34:0;;;;;;;;;;12675:4;;12692:80;;12715:7;;12724:47;;12761:10;;12724:47;:::i;:::-;12692:8;:80::i;34421:153::-;34474:34;33657:24;1438:10;29139:139;:::i;34474:34::-;34466:79;;;;-1:-1:-1;;;34466:79:0;;5233:2:1;34466:79:0;;;5215:21:1;;;5252:18;;;5245:30;5311:34;5291:18;;;5284:62;5363:18;;34466:79:0;5031:356:1;34466:79:0;34556:10;:8;:10::i;:::-;34421:153::o;34078:180::-;34154:34;33588:24;1438:10;29139:139;:::i;34154:34::-;34146:76;;;;-1:-1:-1;;;34146:76:0;;5594:2:1;34146:76:0;;;5576:21:1;5633:2;5613:18;;;5606:30;5672:31;5652:18;;;5645:59;5721:18;;34146:76:0;5392:353:1;34146:76:0;34233:17;34239:2;34243:6;34233:5;:17::i;34582:178::-;34646:34;33726:24;1438:10;29139:139;:::i;34646:34::-;34638:76;;;;-1:-1:-1;;;34638:76:0;;5952:2:1;34638:76:0;;;5934:21:1;5991:2;5971:18;;;5964:30;6030:31;6010:18;;;6003:59;6079:18;;34638:76:0;5750:353:1;34638:76:0;34725:27;1438:10;34745:6;34725:5;:27::i;:::-;34582:178;:::o;34768:455::-;34853:34;33726:24;1438:10;29139:139;:::i;34853:34::-;34845:76;;;;-1:-1:-1;;;34845:76:0;;5952:2:1;34845:76:0;;;5934:21:1;5991:2;5971:18;;;5964:30;6030:31;6010:18;;;6003:59;6079:18;;34845:76:0;5750:353:1;34845:76:0;34932:24;34959:32;34969:7;1438:10;10737:151;:::i;34959:32::-;34932:59;;35030:6;35010:16;:26;;35002:75;;;;-1:-1:-1;;;35002:75:0;;6310:2:1;35002:75:0;;;6292:21:1;6349:2;6329:18;;;6322:30;6388:34;6368:18;;;6361:62;-1:-1:-1;;;6439:18:1;;;6432:34;6483:19;;35002:75:0;6108:400:1;35002:75:0;35113:58;35122:7;1438:10;35164:6;35145:16;:25;35113:8;:58::i;:::-;35193:22;35199:7;35208:6;35193:5;:22::i;34266:147::-;34317:34;33657:24;1438:10;29139:139;:::i;34317:34::-;34309:77;;;;-1:-1:-1;;;34309:77:0;;6715:2:1;34309:77:0;;;6697:21:1;6754:2;6734:18;;;6727:30;6793:32;6773:18;;;6766:60;6843:18;;34309:77:0;6513:354:1;34309:77:0;34397:8;:6;:8::i;29139:139::-;29217:4;29241:12;;;;;;;;;;;-1:-1:-1;;;;;29241:29:0;;;;;;;;;;;;;;;29139:139::o;9087:104::-;9143:13;9176:7;9169:14;;;;;:::i;13305:413::-;1438:10;13398:4;13442:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13442:34:0;;;;;;;;;;13495:35;;;;13487:85;;;;-1:-1:-1;;;13487:85:0;;7074:2:1;13487:85:0;;;7056:21:1;7113:2;7093:18;;;7086:30;7152:34;7132:18;;;7125:62;-1:-1:-1;;;7203:18:1;;;7196:35;7248:19;;13487:85:0;6872:401:1;13487:85:0;13608:67;1438:10;13631:7;13659:15;13640:16;:34;13608:8;:67::i;:::-;-1:-1:-1;13706:4:0;;13305:413;-1:-1:-1;;;13305:413:0:o;10499:175::-;10585:4;10602:42;1438:10;10626:9;10637:6;10602:9;:42::i;31031:149::-;30320:7;30347:12;;;;;;;;;;:22;;;28721:30;28732:4;1438:10;28721;:30::i;:::-;31146:26:::1;31158:4;31164:7;31146:11;:26::i;16989:380::-:0;-1:-1:-1;;;;;17125:19:0;;17117:68;;;;-1:-1:-1;;;17117:68:0;;7480:2:1;17117:68:0;;;7462:21:1;7519:2;7499:18;;;7492:30;7558:34;7538:18;;;7531:62;-1:-1:-1;;;7609:18:1;;;7602:34;7653:19;;17117:68:0;7278:400:1;17117:68:0;-1:-1:-1;;;;;17204:21:0;;17196:68;;;;-1:-1:-1;;;17196:68:0;;7885:2:1;17196:68:0;;;7867:21:1;7924:2;7904:18;;;7897:30;7963:34;7943:18;;;7936:62;-1:-1:-1;;;8014:18:1;;;8007:32;8056:19;;17196:68:0;7683:398:1;17196:68:0;-1:-1:-1;;;;;17277:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17329:32;;1731:25:1;;;17329:32:0;;1704:18:1;17329:32:0;;;;;;;16989:380;;;:::o;14208:733::-;-1:-1:-1;;;;;14348:20:0;;14340:70;;;;-1:-1:-1;;;14340:70:0;;8288:2:1;14340:70:0;;;8270:21:1;8327:2;8307:18;;;8300:30;8366:34;8346:18;;;8339:62;-1:-1:-1;;;8417:18:1;;;8410:35;8462:19;;14340:70:0;8086:401:1;14340:70:0;-1:-1:-1;;;;;14429:23:0;;14421:71;;;;-1:-1:-1;;;14421:71:0;;8694:2:1;14421:71:0;;;8676:21:1;8733:2;8713:18;;;8706:30;8772:34;8752:18;;;8745:62;-1:-1:-1;;;8823:18:1;;;8816:33;8866:19;;14421:71:0;8492:399:1;14421:71:0;14505:47;14526:6;14534:9;14545:6;14505:20;:47::i;:::-;-1:-1:-1;;;;;14589:17:0;;14565:21;14589:17;;;:9;:17;;;;;;14625:23;;;;14617:74;;;;-1:-1:-1;;;14617:74:0;;9098:2:1;14617:74:0;;;9080:21:1;9137:2;9117:18;;;9110:30;9176:34;9156:18;;;9149:62;-1:-1:-1;;;9227:18:1;;;9220:36;9273:19;;14617:74:0;8896:402:1;14617:74:0;-1:-1:-1;;;;;14727:17:0;;;;;;;:9;:17;;;;;;14747:22;;;14727:42;;14791:20;;;;;;;;:30;;14763:6;;14727:17;14791:30;;14763:6;;14791:30;:::i;:::-;;;;;;;;14856:9;-1:-1:-1;;;;;14839:35:0;14848:6;-1:-1:-1;;;;;14839:35:0;;14867:6;14839:35;;;;1731:25:1;;1719:2;1704:18;;1585:177;14839:35:0;;;;;;;;14887:46;14329:612;14208:733;;;:::o;29568:497::-;29649:22;29657:4;29663:7;29649;:22::i;:::-;29644:414;;29837:41;29865:7;-1:-1:-1;;;;;29837:41:0;29875:2;29837:19;:41::i;:::-;29951:38;29979:4;29986:2;29951:19;:38::i;:::-;29742:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;29742:270:0;;;;;;;;;;-1:-1:-1;;;29688:358:0;;;;;;;:::i;32991:229::-;33066:22;33074:4;33080:7;33066;:22::i;:::-;33061:152;;33105:6;:12;;;;;;;;;;;-1:-1:-1;;;;;33105:29:0;;;;;;;;;:36;;-1:-1:-1;;33105:36:0;33137:4;33105:36;;;33188:12;1438:10;;1358:98;33188:12;-1:-1:-1;;;;;33161:40:0;33179:7;-1:-1:-1;;;;;33161:40:0;33173:4;33161:40;;;;;;;;;;32991:229;;:::o;33228:230::-;33303:22;33311:4;33317:7;33303;:22::i;:::-;33299:152;;;33374:5;33342:12;;;;;;;;;;;-1:-1:-1;;;;;33342:29:0;;;;;;;;;;:37;;-1:-1:-1;;33342:37:0;;;33399:40;1438:10;;33342:12;;33399:40;;33374:5;33399:40;33228:230;;:::o;20893:120::-;19905:7;;;;20429:41;;;;-1:-1:-1;;;20429:41:0;;10296:2:1;20429:41:0;;;10278:21:1;10335:2;10315:18;;;10308:30;-1:-1:-1;;;10354:18:1;;;10347:50;10414:18;;20429:41:0;10094:344:1;20429:41:0;20952:7:::1;:15:::0;;-1:-1:-1;;20952:15:0::1;::::0;;20983:22:::1;1438:10:::0;20992:12:::1;20983:22;::::0;-1:-1:-1;;;;;10607:32:1;;;10589:51;;10577:2;10562:18;20983:22:0::1;;;;;;;20893:120::o:0;35231:141::-;35336:28;35348:7;35357:6;35336:11;:28::i;15960:591::-;-1:-1:-1;;;;;16044:21:0;;16036:67;;;;-1:-1:-1;;;16036:67:0;;10853:2:1;16036:67:0;;;10835:21:1;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:31;11023:19;;16036:67:0;10651:397:1;16036:67:0;16116:49;16137:7;16154:1;16158:6;16116:20;:49::i;:::-;-1:-1:-1;;;;;16203:18:0;;16178:22;16203:18;;;:9;:18;;;;;;16240:24;;;;16232:71;;;;-1:-1:-1;;;16232:71:0;;11255:2:1;16232:71:0;;;11237:21:1;11294:2;11274:18;;;11267:30;11333:34;11313:18;;;11306:62;-1:-1:-1;;;11384:18:1;;;11377:32;11426:19;;16232:71:0;11053:398:1;16232:71:0;-1:-1:-1;;;;;16339:18:0;;;;;;:9;:18;;;;;16360:23;;;16339:44;;16405:12;:22;;16377:6;;16339:18;16405:22;;16377:6;;16405:22;:::i;:::-;;;;-1:-1:-1;;16445:37:0;;1731:25:1;;;16471:1:0;;-1:-1:-1;;;;;16445:37:0;;;;;1719:2:1;1704:18;16445:37:0;;;;;;;30639:147;;;:::o;20634:118::-;19905:7;;;;20159:9;20151:38;;;;-1:-1:-1;;;20151:38:0;;11788:2:1;20151:38:0;;;11770:21:1;11827:2;11807:18;;;11800:30;-1:-1:-1;;;11846:18:1;;;11839:46;11902:18;;20151:38:0;11586:340:1;20151:38:0;20694:7:::1;:14:::0;;-1:-1:-1;;20694:14:0::1;20704:4;20694:14;::::0;;20724:20:::1;20731:12;1438:10:::0;;1358:98;35380:183;35511:44;35538:4;35544:2;35548:6;35511:26;:44::i;5858:451::-;5933:13;5959:19;5991:10;5995:6;5991:1;:10;:::i;:::-;:14;;6004:1;5991:14;:::i;:::-;5981:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5981:25:0;;5959:47;;-1:-1:-1;;;6017:6:0;6024:1;6017:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;6017:15:0;;;;;;;;;-1:-1:-1;;;6043:6:0;6050:1;6043:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;6043:15:0;;;;;;;;-1:-1:-1;6074:9:0;6086:10;6090:6;6086:1;:10;:::i;:::-;:14;;6099:1;6086:14;:::i;:::-;6074:26;;6069:135;6106:1;6102;:5;6069:135;;;-1:-1:-1;;;6154:5:0;6162:3;6154:11;6141:25;;;;;;;:::i;:::-;;;;6129:6;6136:1;6129:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;6129:37:0;;;;;;;;-1:-1:-1;6191:1:0;6181:11;;;;;6109:3;;;:::i;:::-;;;6069:135;;;-1:-1:-1;6222:10:0;;6214:55;;;;-1:-1:-1;;;6214:55:0;;12711:2:1;6214:55:0;;;12693:21:1;;;12730:18;;;12723:30;12789:34;12769:18;;;12762:62;12841:18;;6214:55:0;12509:356:1;6214:55:0;6294:6;5858:451;-1:-1:-1;;;5858:451:0:o;22432:207::-;22362:4;22547:6;22525:19;10076:12;;;9988:108;22525:19;:28;;;;:::i;:::-;:37;;22517:75;;;;-1:-1:-1;;;22517:75:0;;13072:2:1;22517:75:0;;;13054:21:1;13111:2;13091:18;;;13084:30;13150:27;13130:18;;;13123:55;13195:18;;22517:75:0;12870:349:1;22517:75:0;22603:28;22615:7;22624:6;22603:11;:28::i;21503:272::-;19905:7;;;;21711:9;21703:64;;;;-1:-1:-1;;;21703:64:0;;13426:2:1;21703:64:0;;;13408:21:1;13465:2;13445:18;;;13438:30;13504:34;13484:18;;;13477:62;-1:-1:-1;;;13555:18:1;;;13548:40;13605:19;;21703:64:0;13224:406:1;15228:399:0;-1:-1:-1;;;;;15312:21:0;;15304:65;;;;-1:-1:-1;;;15304:65:0;;13837:2:1;15304:65:0;;;13819:21:1;13876:2;13856:18;;;13849:30;13915:33;13895:18;;;13888:61;13966:18;;15304:65:0;13635:355:1;15304:65:0;15382:49;15411:1;15415:7;15424:6;15382:20;:49::i;:::-;15460:6;15444:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15477:18:0;;;;;;:9;:18;;;;;:28;;15499:6;;15477:18;:28;;15499:6;;15477:28;:::i;:::-;;;;-1:-1:-1;;15521:37:0;;1731:25:1;;;-1:-1:-1;;;;;15521:37:0;;;15538:1;;15521:37;;1719:2:1;1704:18;15521:37:0;;;;;;;31687:218;;:::o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:258;569:1;579:113;593:6;590:1;587:13;579:113;;;669:11;;;663:18;650:11;;;643:39;615:2;608:10;579:113;;;710:6;707:1;704:13;701:48;;;-1:-1:-1;;745:1:1;727:16;;720:27;497:258::o;760:383::-;909:2;898:9;891:21;872:4;941:6;935:13;984:6;979:2;968:9;964:18;957:34;1000:66;1059:6;1054:2;1043:9;1039:18;1034:2;1026:6;1022:15;1000:66;:::i;:::-;1127:2;1106:15;-1:-1:-1;;1102:29:1;1087:45;;;;1134:2;1083:54;;760:383;-1:-1:-1;;760:383:1:o;1148:173::-;1216:20;;-1:-1:-1;;;;;1265:31:1;;1255:42;;1245:70;;1311:1;1308;1301:12;1245:70;1148:173;;;:::o;1326:254::-;1394:6;1402;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;1494:29;1513:9;1494:29;:::i;:::-;1484:39;1570:2;1555:18;;;;1542:32;;-1:-1:-1;;;1326:254:1:o;1767:328::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1952:29;1971:9;1952:29;:::i;:::-;1942:39;;2000:38;2034:2;2023:9;2019:18;2000:38;:::i;:::-;1990:48;;2085:2;2074:9;2070:18;2057:32;2047:42;;1767:328;;;;;:::o;2100:180::-;2159:6;2212:2;2200:9;2191:7;2187:23;2183:32;2180:52;;;2228:1;2225;2218:12;2180:52;-1:-1:-1;2251:23:1;;2100:180;-1:-1:-1;2100:180:1:o;2467:254::-;2535:6;2543;2596:2;2584:9;2575:7;2571:23;2567:32;2564:52;;;2612:1;2609;2602:12;2564:52;2648:9;2635:23;2625:33;;2677:38;2711:2;2700:9;2696:18;2677:38;:::i;:::-;2667:48;;2467:254;;;;;:::o;3100:186::-;3159:6;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;3251:29;3270:9;3251:29;:::i;3291:260::-;3359:6;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;3459:29;3478:9;3459:29;:::i;:::-;3449:39;;3507:38;3541:2;3530:9;3526:18;3507:38;:::i;3556:380::-;3635:1;3631:12;;;;3678;;;3699:61;;3753:4;3745:6;3741:17;3731:27;;3699:61;3806:2;3798:6;3795:14;3775:18;3772:38;3769:161;;;3852:10;3847:3;3843:20;3840:1;3833:31;3887:4;3884:1;3877:15;3915:4;3912:1;3905:15;3769:161;;3556:380;;;:::o;4766:127::-;4827:10;4822:3;4818:20;4815:1;4808:31;4858:4;4855:1;4848:15;4882:4;4879:1;4872:15;4898:128;4938:3;4969:1;4965:6;4962:1;4959:13;4956:39;;;4975:18;;:::i;:::-;-1:-1:-1;5011:9:1;;4898:128::o;9303:786::-;9714:25;9709:3;9702:38;9684:3;9769:6;9763:13;9785:62;9840:6;9835:2;9830:3;9826:12;9819:4;9811:6;9807:17;9785:62;:::i;:::-;-1:-1:-1;;;9906:2:1;9866:16;;;9898:11;;;9891:40;9956:13;;9978:63;9956:13;10027:2;10019:11;;10012:4;10000:17;;9978:63;:::i;:::-;10061:17;10080:2;10057:26;;9303:786;-1:-1:-1;;;;9303:786:1:o;11456:125::-;11496:4;11524:1;11521;11518:8;11515:34;;;11529:18;;:::i;:::-;-1:-1:-1;11566:9:1;;11456:125::o;11931:168::-;11971:7;12037:1;12033;12029:6;12025:14;12022:1;12019:21;12014:1;12007:9;12000:17;11996:45;11993:71;;;12044:18;;:::i;:::-;-1:-1:-1;12084:9:1;;11931:168::o;12104:127::-;12165:10;12160:3;12156:20;12153:1;12146:31;12196:4;12193:1;12186:15;12220:4;12217:1;12210:15;12236:127;12297:10;12292:3;12288:20;12285:1;12278:31;12328:4;12325:1;12318:15;12352:4;12349:1;12342:15;12368:136;12407:3;12435:5;12425:39;;12444:18;;:::i;:::-;-1:-1:-1;;;12480:18:1;;12368:136::o

Swarm Source

ipfs://601a2cca3afcb15e121f96f57ffedc72bed456da3f46c8ca82b09e771f4585d2
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.