Mumbai Testnet

Token

QAL TOKEN (QAL)
ERC-20

Overview

Max Total Supply

0 QAL

Holders

15

Market

Price

$0.00 @ 0.000000 MATIC

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 12 Decimals)

Balance
0 QAL
0x28dca20dc802f639766e167b6bf2b7079c9d4219
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Qalaxy

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at mumbai.polygonscan.com on 2022-04-20
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.12;

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

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/**
 * @dev Implementation of the {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 {

    event allocationUpdated(address indexed account, uint256 timePeriod, uint256 amount);

    mapping(address => uint256) private _balances;

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

    mapping(address => vestingDetails) public vesting;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address public Owner;


    struct vestingDetails {
        uint256 vestingDuration;
        uint256 claimCount;
        uint256 amount;
        uint256 withdrawAmount;
        uint256 remainingAmtTosend;
        uint256 lastPayout;
        bool vestingStatus;
    }

    /**
     * @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_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
        Owner = msg.sender;
    }

    modifier onlyOwner() {
        require(Owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function ownerTransfership(address newOwner) public onlyOwner returns(bool){
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transfer(msg.sender,newOwner,_balances[msg.sender]);
        Owner = newOwner;
        return true;
    }

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

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

    function allocation(address account, uint256 setdays, uint256 amount, uint256 _claimCount) external onlyOwner returns(bool) {
        require(account != address(0), "account is zero address");
        require(setdays >= 1, "vesting time should be greater than 1 day");
        require(amount >= 0, "amount should be greater than zero");
        require(!vesting[msg.sender].vestingStatus, "account already vested");
        vesting[account].vestingDuration = setdays * 1 days;
        vesting[account].claimCount = _claimCount;
        vesting[account].amount = amount; 
        vesting[account].remainingAmtTosend = amount;
        vesting[msg.sender].vestingStatus = true;
        vesting[msg.sender].lastPayout = block.timestamp;
        _transfer(msg.sender, address(this), amount);
        emit allocationUpdated(account, setdays, amount);
        return true;
    }

    function getAccountStatus(address account) external view returns(vestingDetails memory) {
        return vesting[account];
    }

    function claimToken() external returns(uint256) {
        require(vesting[msg.sender].remainingAmtTosend > 0,"claim exceeded");
        require(block.timestamp >= vesting[msg.sender].lastPayout + vesting[msg.sender].vestingDuration, "claim time not reached");
        uint256 value = vesting[msg.sender].amount / vesting[msg.sender].claimCount;
        uint256 claimCount =  (block.timestamp - vesting[msg.sender].lastPayout) / vesting[msg.sender].vestingDuration;
        value = value * claimCount;
        uint256 cliamAmount = value <= vesting[msg.sender].remainingAmtTosend ? value : vesting[msg.sender].remainingAmtTosend;
        vesting[msg.sender].withdrawAmount += cliamAmount; 
        vesting[msg.sender].remainingAmtTosend -= cliamAmount;
        vesting[msg.sender].lastPayout = block.timestamp;
        if(vesting[msg.sender].remainingAmtTosend == 0) {
            vesting[msg.sender].vestingStatus = false;
        }
        _transfer(address(this), msg.sender, cliamAmount);
        return cliamAmount;
    }
}

contract Qalaxy is ERC20{
    constructor() ERC20("QAL TOKEN","QAL", 12) {
        _mint(msg.sender,500000000 * 10 ** 12);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"timePeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"allocationUpdated","type":"event"},{"inputs":[],"name":"Owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"setdays","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_claimCount","type":"uint256"}],"name":"allocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountStatus","outputs":[{"components":[{"internalType":"uint256","name":"vestingDuration","type":"uint256"},{"internalType":"uint256","name":"claimCount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"},{"internalType":"uint256","name":"remainingAmtTosend","type":"uint256"},{"internalType":"uint256","name":"lastPayout","type":"uint256"},{"internalType":"bool","name":"vestingStatus","type":"bool"}],"internalType":"struct ERC20.vestingDetails","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"ownerTransfership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vesting","outputs":[{"internalType":"uint256","name":"vestingDuration","type":"uint256"},{"internalType":"uint256","name":"claimCount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"},{"internalType":"uint256","name":"remainingAmtTosend","type":"uint256"},{"internalType":"uint256","name":"lastPayout","type":"uint256"},{"internalType":"bool","name":"vestingStatus","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252600981526828a0a6102a27a5a2a760b91b60208083019182528351808501909452600384526214505360ea1b908401528151919291600c91620000629160049190620001a1565b50815162000078906005906020850190620001a1565b50600680543361010081026001600160a81b031990921660ff90941693909317179055620000b392509050681b1ae4d6e2ef500000620000b9565b620002aa565b6001600160a01b038216620001145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806003600082825462000128919062000247565b90915550506001600160a01b038216600090815260208190526040812080548392906200015790849062000247565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001af906200026e565b90600052602060002090601f016020900481019282620001d357600085556200021e565b82601f10620001ee57805160ff19168380011785556200021e565b828001600101855582156200021e579182015b828111156200021e57825182559160200191906001019062000201565b506200022c92915062000230565b5090565b5b808211156200022c576000815560010162000231565b600082198211156200026957634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200028357607f821691505b602082108103620002a457634e487b7160e01b600052602260045260246000fd5b50919050565b610fd180620002ba6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b4a99a4e11610066578063b4a99a4e146101e7578063dd62ed3e14610217578063e388c42314610250578063fd4fa05a146102d557600080fd5b806370a082311461019057806395d89b41146101b9578063a254bf77146101c1578063a9059cbb146101d457600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce567146101605780634451d89f146101755780636fdc202f1461017d57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610340565b60405161010f9190610d82565b60405180910390f35b61012b610126366004610dee565b6103d2565b604051901515815260200161010f565b6003545b60405190815260200161010f565b61012b61015b366004610e18565b6103e8565b60065460405160ff909116815260200161010f565b61013f610497565b61012b61018b366004610e54565b610686565b61013f61019e366004610e54565b6001600160a01b031660009081526020819052604090205490565b610102610792565b61012b6101cf366004610e6f565b6107a1565b61012b6101e2366004610dee565b6109d2565b6006546101ff9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b61013f610225366004610ea8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61029e61025e366004610e54565b6002602081905260009182526040909120805460018201549282015460038301546004840154600585015460069095015493959492939192909160ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e00161010f565b6102e86102e3366004610e54565b6109df565b60405161010f9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b60606004805461034f90610edb565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610edb565b80156103c85780601f1061039d576101008083540402835291602001916103c8565b820191906000526020600020905b8154815290600101906020018083116103ab57829003601f168201915b5050505050905090565b60006103df338484610a8f565b50600192915050565b60006103f5848484610bb3565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561047f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61048c8533858403610a8f565b506001949350505050565b336000908152600260205260408120600401546104e75760405162461bcd60e51b815260206004820152600e60248201526d18db185a5b48195e18d95959195960921b6044820152606401610476565b33600090815260026020526040902080546005909101546105089190610f2b565b4210156105505760405162461bcd60e51b815260206004820152601660248201527518db185a5b481d1a5b59481b9bdd081c995858da195960521b6044820152606401610476565b336000908152600260208190526040822060018101549101546105739190610f43565b336000908152600260205260408120805460059091015492935090916105999042610f65565b6105a39190610f43565b90506105af8183610f7c565b33600090815260026020526040812060040154919350908311156105e557336000908152600260205260409020600401546105e7565b825b3360009081526002602052604081206003018054929350839290919061060e908490610f2b565b90915550503360009081526002602052604081206004018054839290610635908490610f65565b909155505033600090815260026020526040812042600582015560040154900361067457336000908152600260205260409020600601805460ff191690555b61067f303383610bb3565b9392505050565b60065460009061010090046001600160a01b031633146106e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610476565b6001600160a01b03821661074d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610476565b3360008181526020819052604090205461076991908490610bb3565b5060068054610100600160a81b0319166101006001600160a01b0384160217905560015b919050565b60606005805461034f90610edb565b60065460009061010090046001600160a01b031633146108035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610476565b6001600160a01b0385166108595760405162461bcd60e51b815260206004820152601760248201527f6163636f756e74206973207a65726f20616464726573730000000000000000006044820152606401610476565b60018410156108bc5760405162461bcd60e51b815260206004820152602960248201527f76657374696e672074696d652073686f756c642062652067726561746572207460448201526868616e20312064617960b81b6064820152608401610476565b3360009081526002602052604090206006015460ff16156109185760405162461bcd60e51b81526020600482015260166024820152751858d8dbdd5b9d08185b1c9958591e481d995cdd195960521b6044820152606401610476565b6109258462015180610f7c565b6001600160a01b038616600090815260026020819052604080832093845560018085018790559184018790556004909301869055338083529290912060068101805460ff191690921790915542600590910155610983903085610bb3565b60408051858152602081018590526001600160a01b038716917f04050af9a3557fef541642d5941dca6a92e9d6aefded49334f08986dda94d546910160405180910390a2506001949350505050565b60006103df338484610bb3565b610a216040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506001600160a01b0316600090815260026020818152604092839020835160e0810185528154815260018201549281019290925291820154928101929092526003810154606083015260048101546080830152600581015460a08301526006015460ff16151560c082015290565b6001600160a01b038316610af15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b038216610b525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b038216610c795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b6001600160a01b03831660009081526020819052604090205481811015610cf15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610476565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d28908490610f2b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7491815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015610daf57858101830151858201604001528201610d93565b81811115610dc1576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461078d57600080fd5b60008060408385031215610e0157600080fd5b610e0a83610dd7565b946020939093013593505050565b600080600060608486031215610e2d57600080fd5b610e3684610dd7565b9250610e4460208501610dd7565b9150604084013590509250925092565b600060208284031215610e6657600080fd5b61067f82610dd7565b60008060008060808587031215610e8557600080fd5b610e8e85610dd7565b966020860135965060408601359560600135945092505050565b60008060408385031215610ebb57600080fd5b610ec483610dd7565b9150610ed260208401610dd7565b90509250929050565b600181811c90821680610eef57607f821691505b602082108103610f0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f3e57610f3e610f15565b500190565b600082610f6057634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610f7757610f77610f15565b500390565b6000816000190483118215151615610f9657610f96610f15565b50029056fea2646970667358221220963f7895ded6eb15a626e98f9ae5e76081c90921bef096a171ec64be38123c7d64736f6c634300080d0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b4a99a4e11610066578063b4a99a4e146101e7578063dd62ed3e14610217578063e388c42314610250578063fd4fa05a146102d557600080fd5b806370a082311461019057806395d89b41146101b9578063a254bf77146101c1578063a9059cbb146101d457600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce567146101605780634451d89f146101755780636fdc202f1461017d57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610340565b60405161010f9190610d82565b60405180910390f35b61012b610126366004610dee565b6103d2565b604051901515815260200161010f565b6003545b60405190815260200161010f565b61012b61015b366004610e18565b6103e8565b60065460405160ff909116815260200161010f565b61013f610497565b61012b61018b366004610e54565b610686565b61013f61019e366004610e54565b6001600160a01b031660009081526020819052604090205490565b610102610792565b61012b6101cf366004610e6f565b6107a1565b61012b6101e2366004610dee565b6109d2565b6006546101ff9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b61013f610225366004610ea8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61029e61025e366004610e54565b6002602081905260009182526040909120805460018201549282015460038301546004840154600585015460069095015493959492939192909160ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e00161010f565b6102e86102e3366004610e54565b6109df565b60405161010f9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b60606004805461034f90610edb565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610edb565b80156103c85780601f1061039d576101008083540402835291602001916103c8565b820191906000526020600020905b8154815290600101906020018083116103ab57829003601f168201915b5050505050905090565b60006103df338484610a8f565b50600192915050565b60006103f5848484610bb3565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561047f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61048c8533858403610a8f565b506001949350505050565b336000908152600260205260408120600401546104e75760405162461bcd60e51b815260206004820152600e60248201526d18db185a5b48195e18d95959195960921b6044820152606401610476565b33600090815260026020526040902080546005909101546105089190610f2b565b4210156105505760405162461bcd60e51b815260206004820152601660248201527518db185a5b481d1a5b59481b9bdd081c995858da195960521b6044820152606401610476565b336000908152600260208190526040822060018101549101546105739190610f43565b336000908152600260205260408120805460059091015492935090916105999042610f65565b6105a39190610f43565b90506105af8183610f7c565b33600090815260026020526040812060040154919350908311156105e557336000908152600260205260409020600401546105e7565b825b3360009081526002602052604081206003018054929350839290919061060e908490610f2b565b90915550503360009081526002602052604081206004018054839290610635908490610f65565b909155505033600090815260026020526040812042600582015560040154900361067457336000908152600260205260409020600601805460ff191690555b61067f303383610bb3565b9392505050565b60065460009061010090046001600160a01b031633146106e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610476565b6001600160a01b03821661074d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610476565b3360008181526020819052604090205461076991908490610bb3565b5060068054610100600160a81b0319166101006001600160a01b0384160217905560015b919050565b60606005805461034f90610edb565b60065460009061010090046001600160a01b031633146108035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610476565b6001600160a01b0385166108595760405162461bcd60e51b815260206004820152601760248201527f6163636f756e74206973207a65726f20616464726573730000000000000000006044820152606401610476565b60018410156108bc5760405162461bcd60e51b815260206004820152602960248201527f76657374696e672074696d652073686f756c642062652067726561746572207460448201526868616e20312064617960b81b6064820152608401610476565b3360009081526002602052604090206006015460ff16156109185760405162461bcd60e51b81526020600482015260166024820152751858d8dbdd5b9d08185b1c9958591e481d995cdd195960521b6044820152606401610476565b6109258462015180610f7c565b6001600160a01b038616600090815260026020819052604080832093845560018085018790559184018790556004909301869055338083529290912060068101805460ff191690921790915542600590910155610983903085610bb3565b60408051858152602081018590526001600160a01b038716917f04050af9a3557fef541642d5941dca6a92e9d6aefded49334f08986dda94d546910160405180910390a2506001949350505050565b60006103df338484610bb3565b610a216040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506001600160a01b0316600090815260026020818152604092839020835160e0810185528154815260018201549281019290925291820154928101929092526003810154606083015260048101546080830152600581015460a08301526006015460ff16151560c082015290565b6001600160a01b038316610af15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b038216610b525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b038216610c795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b6001600160a01b03831660009081526020819052604090205481811015610cf15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610476565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d28908490610f2b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7491815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015610daf57858101830151858201604001528201610d93565b81811115610dc1576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461078d57600080fd5b60008060408385031215610e0157600080fd5b610e0a83610dd7565b946020939093013593505050565b600080600060608486031215610e2d57600080fd5b610e3684610dd7565b9250610e4460208501610dd7565b9150604084013590509250925092565b600060208284031215610e6657600080fd5b61067f82610dd7565b60008060008060808587031215610e8557600080fd5b610e8e85610dd7565b966020860135965060408601359560600135945092505050565b60008060408385031215610ebb57600080fd5b610ec483610dd7565b9150610ed260208401610dd7565b90509250929050565b600181811c90821680610eef57607f821691505b602082108103610f0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f3e57610f3e610f15565b500190565b600082610f6057634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610f7757610f77610f15565b500390565b6000816000190483118215151615610f9657610f96610f15565b50029056fea2646970667358221220963f7895ded6eb15a626e98f9ae5e76081c90921bef096a171ec64be38123c7d64736f6c634300080d0033

Deployed Bytecode Sourcemap

15930:134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6345:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8519:169;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;8519:169:0;1053:187:1;7472:108:0;7560:12;;7472:108;;;1391:25:1;;;1379:2;1364:18;7472:108:0;1245:177:1;9170:492:0;;;;;;:::i;:::-;;:::i;7307:100::-;7390:9;;7307:100;;7390:9;;;;1902:36:1;;1890:2;1875:18;7307:100:0;1760:184:1;14883:1040:0;;;:::i;5996:279::-;;;;;;:::i;:::-;;:::i;7643:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7744:18:0;7717:7;7744:18;;;;;;;;;;;;7643:127;6564:104;;;:::i;13852:885::-;;;;;;:::i;:::-;;:::i;7983:175::-;;;;;;:::i;:::-;;:::i;5073:20::-;;;;;;;;-1:-1:-1;;;;;5073:20:0;;;;;;-1:-1:-1;;;;;2700:32:1;;;2682:51;;2670:2;2655:18;5073:20:0;2536:203:1;8221:151:0;;;;;;:::i;:::-;-1:-1:-1;;;;;8337:18:0;;;8310:7;8337:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8221:151;4892:49;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:25:1;;;3374:2;3359:18;;3352:34;;;;3402:18;;;3395:34;;;;3460:2;3445:18;;3438:34;;;;3503:3;3488:19;;3481:35;3547:3;3532:19;;3525:35;3604:14;3597:22;3591:3;3576:19;;3569:51;3305:3;3290:19;4892:49:0;3009:617:1;14745:130:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;3785:4:1;3827:3;3816:9;3812:19;3804:27;;3864:6;3858:13;3847:9;3840:32;3928:4;3920:6;3916:17;3910:24;3903:4;3892:9;3888:20;3881:54;3991:4;3983:6;3979:17;3973:24;3966:4;3955:9;3951:20;3944:54;4054:4;4046:6;4042:17;4036:24;4029:4;4018:9;4014:20;4007:54;4117:4;4109:6;4105:17;4099:24;4092:4;4081:9;4077:20;4070:54;4180:4;4172:6;4168:17;4162:24;4155:4;4144:9;4140:20;4133:54;4257:4;4249:6;4245:17;4239:24;4232:32;4225:40;4218:4;4207:9;4203:20;4196:70;3631:641;;;;;6345:100:0;6399:13;6432:5;6425:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6345:100;:::o;8519:169::-;8602:4;8619:39;3278:10;8642:7;8651:6;8619:8;:39::i;:::-;-1:-1:-1;8676:4:0;8519:169;;;;:::o;9170:492::-;9310:4;9327:36;9337:6;9345:9;9356:6;9327:9;:36::i;:::-;-1:-1:-1;;;;;9403:19:0;;9376:24;9403:19;;;:11;:19;;;;;;;;3278:10;9403:33;;;;;;;;9455:26;;;;9447:79;;;;-1:-1:-1;;;9447:79:0;;4864:2:1;9447:79:0;;;4846:21:1;4903:2;4883:18;;;4876:30;4942:34;4922:18;;;4915:62;-1:-1:-1;;;4993:18:1;;;4986:38;5041:19;;9447:79:0;;;;;;;;;9562:57;9571:6;3278:10;9612:6;9593:16;:25;9562:8;:57::i;:::-;-1:-1:-1;9650:4:0;;9170:492;-1:-1:-1;;;;9170:492:0:o;14883:1040::-;14958:10;14922:7;14950:19;;;:7;:19;;;;;:38;;;14942:68;;;;-1:-1:-1;;;14942:68:0;;5273:2:1;14942:68:0;;;5255:21:1;5312:2;5292:18;;;5285:30;-1:-1:-1;;;5331:18:1;;;5324:44;5385:18;;14942:68:0;5071:338:1;14942:68:0;15089:10;15081:19;;;;:7;:19;;;;;:35;;15048:30;;;;;:68;;15081:35;15048:68;:::i;:::-;15029:15;:87;;15021:122;;;;-1:-1:-1;;;15021:122:0;;5881:2:1;15021:122:0;;;5863:21:1;5920:2;5900:18;;;5893:30;-1:-1:-1;;;5939:18:1;;;5932:52;6001:18;;15021:122:0;5679:346:1;15021:122:0;15207:10;15154:13;15199:19;;;:7;:19;;;;;;;:30;;;;15170:26;;;:59;;15199:30;15170:59;:::i;:::-;15323:10;15240:18;15315:19;;;:7;:19;;;;;:35;;15281:30;;;;;15154:75;;-1:-1:-1;15240:18:0;;15263:48;;:15;:48;:::i;:::-;15262:88;;;;:::i;:::-;15240:110;-1:-1:-1;15369:18:0;15240:110;15369:5;:18;:::i;:::-;15437:10;15398:19;15429;;;:7;:19;;;;;:38;;;15361:26;;-1:-1:-1;15398:19:0;15420:47;;;:96;;15486:10;15478:19;;;;:7;:19;;;;;:38;;;15420:96;;;15470:5;15420:96;15535:10;15527:19;;;;:7;:19;;;;;:34;;:49;;15398:118;;-1:-1:-1;15398:118:0;;15527:34;;:19;:49;;15398:118;;15527:49;:::i;:::-;;;;-1:-1:-1;;15596:10:0;15588:19;;;;:7;:19;;;;;:38;;:53;;15630:11;;15588:19;:53;;15630:11;;15588:53;:::i;:::-;;;;-1:-1:-1;;15660:10:0;15652:19;;;;:7;:19;;;;;15685:15;15652:30;;;:48;15714:38;;;:43;;15711:116;;15782:10;15810:5;15774:19;;;:7;:19;;;;;:33;;:41;;-1:-1:-1;;15774:41:0;;;15711:116;15837:49;15855:4;15862:10;15874:11;15837:9;:49::i;:::-;15904:11;14883:1040;-1:-1:-1;;;14883:1040:0:o;5996:279::-;5912:5;;6066:4;;5912:5;;;-1:-1:-1;;;;;5912:5:0;5921:10;5912:19;5904:64;;;;-1:-1:-1;;;5904:64:0;;6757:2:1;5904:64:0;;;6739:21:1;;;6776:18;;;6769:30;6835:34;6815:18;;;6808:62;6887:18;;5904:64:0;6555:356:1;5904:64:0;-1:-1:-1;;;;;6090:22:0;::::1;6082:73;;;::::0;-1:-1:-1;;;6082:73:0;;7118:2:1;6082:73:0::1;::::0;::::1;7100:21:1::0;7157:2;7137:18;;;7130:30;7196:34;7176:18;;;7169:62;-1:-1:-1;;;7247:18:1;;;7240:36;7293:19;;6082:73:0::1;6916:402:1::0;6082:73:0::1;6176:10;6196:9;:21:::0;;;::::1;::::0;;;;;;;6166:52:::1;::::0;6176:10;6187:8;;6166:9:::1;:52::i;:::-;-1:-1:-1::0;6229:5:0::1;:16:::0;;-1:-1:-1;;;;;;6229:16:0::1;;-1:-1:-1::0;;;;;6229:16:0;::::1;;;::::0;;-1:-1:-1;5979:1:0::1;5996:279:::0;;;:::o;6564:104::-;6620:13;6653:7;6646:14;;;;;:::i;13852:885::-;5912:5;;13970:4;;5912:5;;;-1:-1:-1;;;;;5912:5:0;5921:10;5912:19;5904:64;;;;-1:-1:-1;;;5904:64:0;;6757:2:1;5904:64:0;;;6739:21:1;;;6776:18;;;6769:30;6835:34;6815:18;;;6808:62;6887:18;;5904:64:0;6555:356:1;5904:64:0;-1:-1:-1;;;;;13995:21:0;::::1;13987:57;;;::::0;-1:-1:-1;;;13987:57:0;;7525:2:1;13987:57:0::1;::::0;::::1;7507:21:1::0;7564:2;7544:18;;;7537:30;7603:25;7583:18;;;7576:53;7646:18;;13987:57:0::1;7323:347:1::0;13987:57:0::1;14074:1;14063:7;:12;;14055:66;;;::::0;-1:-1:-1;;;14055:66:0;;7877:2:1;14055:66:0::1;::::0;::::1;7859:21:1::0;7916:2;7896:18;;;7889:30;7955:34;7935:18;;;7928:62;-1:-1:-1;;;8006:18:1;;;7999:39;8055:19;;14055:66:0::1;7675:405:1::0;14055:66:0::1;14218:10;14210:19;::::0;;;:7:::1;:19;::::0;;;;:33:::1;;::::0;::::1;;14209:34;14201:69;;;::::0;-1:-1:-1;;;14201:69:0;;8690:2:1;14201:69:0::1;::::0;::::1;8672:21:1::0;8729:2;8709:18;;;8702:30;-1:-1:-1;;;8748:18:1;;;8741:52;8810:18;;14201:69:0::1;8488:346:1::0;14201:69:0::1;14316:16;:7:::0;14326:6:::1;14316:16;:::i;:::-;-1:-1:-1::0;;;;;14281:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;14343:27:::1;::::0;;::::1;:41:::0;;;14395:23;;::::1;:32:::0;;;14439:35:::1;::::0;;::::1;:44:::0;;;14502:10:::1;14494:19:::0;;;;;;;:33:::1;::::0;::::1;:40:::0;;-1:-1:-1;;14494:40:0::1;::::0;;::::1;::::0;;;14578:15:::1;14545:30;::::0;;::::1;:48:::0;14604:44:::1;::::0;14634:4:::1;14421:6:::0;14604:9:::1;:44::i;:::-;14664:43;::::0;;9013:25:1;;;9069:2;9054:18;;9047:34;;;-1:-1:-1;;;;;14664:43:0;::::1;::::0;::::1;::::0;8986:18:1;14664:43:0::1;;;;;;;-1:-1:-1::0;14725:4:0::1;13852:885:::0;;;;;;:::o;7983:175::-;8069:4;8086:42;3278:10;8110:9;8121:6;8086:9;:42::i;14745:130::-;14810:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14810:21:0;-1:-1:-1;;;;;;14851:16:0;;;;;:7;:16;;;;;;;;;14844:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:130::o;12011:380::-;-1:-1:-1;;;;;12147:19:0;;12139:68;;;;-1:-1:-1;;;12139:68:0;;9294:2:1;12139:68:0;;;9276:21:1;9333:2;9313:18;;;9306:30;9372:34;9352:18;;;9345:62;-1:-1:-1;;;9423:18:1;;;9416:34;9467:19;;12139:68:0;9092:400:1;12139:68:0;-1:-1:-1;;;;;12226:21:0;;12218:68;;;;-1:-1:-1;;;12218:68:0;;9699:2:1;12218:68:0;;;9681:21:1;9738:2;9718:18;;;9711:30;9777:34;9757:18;;;9750:62;-1:-1:-1;;;9828:18:1;;;9821:32;9870:19;;12218:68:0;9497:398:1;12218:68:0;-1:-1:-1;;;;;12299:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12351:32;;1391:25:1;;;12351:32:0;;1364:18:1;12351:32:0;;;;;;;12011:380;;;:::o;10152:733::-;-1:-1:-1;;;;;10292:20:0;;10284:70;;;;-1:-1:-1;;;10284:70:0;;10102:2:1;10284:70:0;;;10084:21:1;10141:2;10121:18;;;10114:30;10180:34;10160:18;;;10153:62;-1:-1:-1;;;10231:18:1;;;10224:35;10276:19;;10284:70:0;9900:401:1;10284:70:0;-1:-1:-1;;;;;10373:23:0;;10365:71;;;;-1:-1:-1;;;10365:71:0;;10508:2:1;10365:71:0;;;10490:21:1;10547:2;10527:18;;;10520:30;10586:34;10566:18;;;10559:62;-1:-1:-1;;;10637:18:1;;;10630:33;10680:19;;10365:71:0;10306:399:1;10365:71:0;-1:-1:-1;;;;;10533:17:0;;10509:21;10533:17;;;;;;;;;;;10569:23;;;;10561:74;;;;-1:-1:-1;;;10561:74:0;;10912:2:1;10561:74:0;;;10894:21:1;10951:2;10931:18;;;10924:30;10990:34;10970:18;;;10963:62;-1:-1:-1;;;11041:18:1;;;11034:36;11087:19;;10561:74:0;10710:402:1;10561:74:0;-1:-1:-1;;;;;10671:17:0;;;:9;:17;;;;;;;;;;;10691:22;;;10671:42;;10735:20;;;;;;;;:30;;10707:6;;10671:9;10735:30;;10707:6;;10735:30;:::i;:::-;;;;;;;;10800:9;-1:-1:-1;;;;;10783:35:0;10792:6;-1:-1:-1;;;;;10783:35:0;;10811:6;10783:35;;;;1391:25:1;;1379:2;1364:18;;1245:177;10783:35:0;;;;;;;;10273:612;10152:733;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;794:254;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:186::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2100:29;2119:9;2100:29;:::i;2140:391::-;2226:6;2234;2242;2250;2303:3;2291:9;2282:7;2278:23;2274:33;2271:53;;;2320:1;2317;2310:12;2271:53;2343:29;2362:9;2343:29;:::i;:::-;2333:39;2419:2;2404:18;;2391:32;;-1:-1:-1;2470:2:1;2455:18;;2442:32;;2521:2;2506:18;2493:32;;-1:-1:-1;2140:391:1;-1:-1:-1;;;2140:391:1:o;2744:260::-;2812:6;2820;2873:2;2861:9;2852:7;2848:23;2844:32;2841:52;;;2889:1;2886;2879:12;2841:52;2912:29;2931:9;2912:29;:::i;:::-;2902:39;;2960:38;2994:2;2983:9;2979:18;2960:38;:::i;:::-;2950:48;;2744:260;;;;;:::o;4277:380::-;4356:1;4352:12;;;;4399;;;4420:61;;4474:4;4466:6;4462:17;4452:27;;4420:61;4527:2;4519:6;4516:14;4496:18;4493:38;4490:161;;4573:10;4568:3;4564:20;4561:1;4554:31;4608:4;4605:1;4598:15;4636:4;4633:1;4626:15;4490:161;;4277:380;;;:::o;5414:127::-;5475:10;5470:3;5466:20;5463:1;5456:31;5506:4;5503:1;5496:15;5530:4;5527:1;5520:15;5546:128;5586:3;5617:1;5613:6;5610:1;5607:13;5604:39;;;5623:18;;:::i;:::-;-1:-1:-1;5659:9:1;;5546:128::o;6030:217::-;6070:1;6096;6086:132;;6140:10;6135:3;6131:20;6128:1;6121:31;6175:4;6172:1;6165:15;6203:4;6200:1;6193:15;6086:132;-1:-1:-1;6232:9:1;;6030:217::o;6252:125::-;6292:4;6320:1;6317;6314:8;6311:34;;;6325:18;;:::i;:::-;-1:-1:-1;6362:9:1;;6252:125::o;6382:168::-;6422:7;6488:1;6484;6480:6;6476:14;6473:1;6470:21;6465:1;6458:9;6451:17;6447:45;6444:71;;;6495:18;;:::i;:::-;-1:-1:-1;6535:9:1;;6382:168::o

Swarm Source

ipfs://963f7895ded6eb15a626e98f9ae5e76081c90921bef096a171ec64be38123c7d
[ 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.