Token Power

 

Overview [ERC-20]

Max Total Supply:
25,390,555 POWER

Holders:
1

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

POWER is a utility token allowing our clients to pay their private voting cloud.

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Power

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-03-10
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        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 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 guidelines: functions revert instead
 * of 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 {
    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 defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual 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");
        _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");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(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:
     *
     * - `to` 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);
    }

    /**
     * @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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(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 to 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 Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
    }
}

contract Power is ERC20Burnable {

    constructor() ERC20("Power", "POWER") {
        _mint(msg.sender, 50000000000000000000000000);
    }

    function buy(address payable seller, uint256 amount) public payable returns (bool) {
        require(transferFrom(seller, msg.sender, amount));
        (bool success,) = seller.call{value: msg.value}("");
        require(success);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"}]

60806040523480156200001157600080fd5b50604051806040016040528060058152602001642837bbb2b960d91b815250604051806040016040528060058152602001642827aba2a960d91b8152508160039080519060200190620000669291906200017b565b5080516200007c9060049060208401906200017b565b5050506200009c336a295be96e64066972000000620000a260201b60201c565b620002c3565b6001600160a01b038216620000d45760405162461bcd60e51b8152600401620000cb9062000221565b60405180910390fd5b620000e26000838362000176565b8060026000828254620000f6919062000261565b90915550506001600160a01b038216600090815260208190526040812080548392906200012590849062000261565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200016a90859062000258565b60405180910390a35050565b505050565b828054620001899062000286565b90600052602060002090601f016020900481019282620001ad5760008555620001f8565b82601f10620001c857805160ff1916838001178555620001f8565b82800160010185558215620001f8579182015b82811115620001f8578251825591602001919060010190620001db565b50620002069291506200020a565b5090565b5b808211156200020657600081556001016200020b565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b600082198211156200028157634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806200029b57607f821691505b60208210811415620002bd57634e487b7160e01b600052602260045260246000fd5b50919050565b610dbe80620002d36000396000f3fe6080604052600436106100dd5760003560e01c806370a082311161007f578063a457c2d711610059578063a457c2d714610235578063a9059cbb14610255578063cce7ec1314610275578063dd62ed3e14610288576100dd565b806370a08231146101e057806379cc67901461020057806395d89b4114610220576100dd565b806323b872dd116100bb57806323b872dd1461015c578063313ce5671461017c578063395093511461019e57806342966c68146101be576100dd565b806306fdde03146100e2578063095ea7b31461010d57806318160ddd1461013a575b600080fd5b3480156100ee57600080fd5b506100f76102a8565b60405161010491906109e1565b60405180910390f35b34801561011957600080fd5b5061012d6101283660046109a9565b61033a565b60405161010491906109d6565b34801561014657600080fd5b5061014f610357565b6040516101049190610cdc565b34801561016857600080fd5b5061012d610177366004610969565b61035d565b34801561018857600080fd5b506101916103fd565b6040516101049190610ce5565b3480156101aa57600080fd5b5061012d6101b93660046109a9565b610402565b3480156101ca57600080fd5b506101de6101d93660046109bb565b610451565b005b3480156101ec57600080fd5b5061014f6101fb3660046108e3565b610465565b34801561020c57600080fd5b506101de61021b3660046109a9565b610480565b34801561022c57600080fd5b506100f76104d5565b34801561024157600080fd5b5061012d6102503660046109a9565b6104e4565b34801561026157600080fd5b5061012d6102703660046109a9565b61055f565b61012d610283366004610906565b610573565b34801561029457600080fd5b5061014f6102a3366004610931565b6105f2565b6060600380546102b790610d22565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390610d22565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b600061034e61034761061d565b8484610621565b50600192915050565b60025490565b600061036a8484846106d5565b6001600160a01b03841660009081526001602052604081208161038b61061d565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156103d75760405162461bcd60e51b81526004016103ce90610b41565b60405180910390fd5b6103f2856103e361061d565b6103ed8685610d0b565b610621565b506001949350505050565b601290565b600061034e61040f61061d565b84846001600061041d61061d565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546103ed9190610cf3565b61046261045c61061d565b826107fd565b50565b6001600160a01b031660009081526020819052604090205490565b600061048e836102a361061d565b9050818110156104b05760405162461bcd60e51b81526004016103ce90610b89565b6104c6836104bc61061d565b6103ed8585610d0b565b6104d083836107fd565b505050565b6060600480546102b790610d22565b600080600160006104f361061d565b6001600160a01b039081168252602080830193909352604091820160009081209188168152925290205490508281101561053f5760405162461bcd60e51b81526004016103ce90610c97565b61055561054a61061d565b856103ed8685610d0b565b5060019392505050565b600061034e61056c61061d565b84846106d5565b600061058083338461035d565b61058957600080fd5b6000836001600160a01b0316346040516105a2906109d3565b60006040518083038185875af1925050503d80600081146105df576040519150601f19603f3d011682016040523d82523d6000602084013e6105e4565b606091505b505090508061055557600080fd5b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166106475760405162461bcd60e51b81526004016103ce90610c53565b6001600160a01b03821661066d5760405162461bcd60e51b81526004016103ce90610ab9565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106c8908590610cdc565b60405180910390a3505050565b6001600160a01b0383166106fb5760405162461bcd60e51b81526004016103ce90610c0e565b6001600160a01b0382166107215760405162461bcd60e51b81526004016103ce90610a34565b61072c8383836104d0565b6001600160a01b038316600090815260208190526040902054818110156107655760405162461bcd60e51b81526004016103ce90610afb565b61076f8282610d0b565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906107a5908490610cf3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef9190610cdc565b60405180910390a350505050565b6001600160a01b0382166108235760405162461bcd60e51b81526004016103ce90610bcd565b61082f826000836104d0565b6001600160a01b038216600090815260208190526040902054818110156108685760405162461bcd60e51b81526004016103ce90610a77565b6108728282610d0b565b6001600160a01b038416600090815260208190526040812091909155600280548492906108a0908490610d0b565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106c8908690610cdc565b6000602082840312156108f4578081fd5b81356108ff81610d73565b9392505050565b60008060408385031215610918578081fd5b823561092381610d73565b946020939093013593505050565b60008060408385031215610943578182fd5b823561094e81610d73565b9150602083013561095e81610d73565b809150509250929050565b60008060006060848603121561097d578081fd5b833561098881610d73565b9250602084013561099881610d73565b929592945050506040919091013590565b60008060408385031215610918578182fd5b6000602082840312156109cc578081fd5b5035919050565b90565b901515815260200190565b6000602080835283518082850152825b81811015610a0d578581018301518582016040015282016109f1565b81811115610a1e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526024908201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604082015263616e636560e01b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115610d0657610d06610d5d565b500190565b600082821015610d1d57610d1d610d5d565b500390565b600281046001821680610d3657607f821691505b60208210811415610d5757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461046257600080fdfea2646970667358221220385bd567673cd85be23d89e0883dc2eedc07a8be861cbf90cbeafed8633a683b64736f6c63430008000033

Deployed ByteCode Sourcemap

15488:418:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7756:169;;;;;;;;;;-1:-1:-1;7756:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6709:108::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8407:422::-;;;;;;;;;;-1:-1:-1;8407:422:0;;;;;:::i;:::-;;:::i;6560:84::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9238:215::-;;;;;;;;;;-1:-1:-1;9238:215:0;;;;;:::i;:::-;;:::i;14739:91::-;;;;;;;;;;-1:-1:-1;14739:91:0;;;;;:::i;:::-;;:::i;:::-;;6880:127;;;;;;;;;;-1:-1:-1;6880:127:0;;;;;:::i;:::-;;:::i;15149:332::-;;;;;;;;;;-1:-1:-1;15149:332:0;;;;;:::i;:::-;;:::i;5826:95::-;;;;;;;;;;;;;:::i;9956:377::-;;;;;;;;;;-1:-1:-1;9956:377:0;;;;;:::i;:::-;;:::i;7220:175::-;;;;;;;;;;-1:-1:-1;7220:175:0;;;;;:::i;:::-;;:::i;15639:262::-;;;;;;:::i;:::-;;:::i;7458:151::-;;;;;;;;;;-1:-1:-1;7458:151:0;;;;;:::i;:::-;;:::i;5616:91::-;5661:13;5694:5;5687:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:91;:::o;7756:169::-;7839:4;7856:39;7865:12;:10;:12::i;:::-;7879:7;7888:6;7856:8;:39::i;:::-;-1:-1:-1;7913:4:0;7756:169;;;;:::o;6709:108::-;6797:12;;6709:108;:::o;8407:422::-;8513:4;8530:36;8540:6;8548:9;8559:6;8530:9;:36::i;:::-;-1:-1:-1;;;;;8606:19:0;;8579:24;8606:19;;;:11;:19;;;;;8579:24;8626:12;:10;:12::i;:::-;-1:-1:-1;;;;;8606:33:0;-1:-1:-1;;;;;8606:33:0;;;;;;;;;;;;;8579:60;;8678:6;8658:16;:26;;8650:79;;;;-1:-1:-1;;;8650:79:0;;;;;;;:::i;:::-;;;;;;;;;8740:57;8749:6;8757:12;:10;:12::i;:::-;8771:25;8790:6;8771:16;:25;:::i;:::-;8740:8;:57::i;:::-;-1:-1:-1;8817:4:0;;8407:422;-1:-1:-1;;;;8407:422:0:o;6560:84::-;6634:2;6560:84;:::o;9238:215::-;9326:4;9343:80;9352:12;:10;:12::i;:::-;9366:7;9412:10;9375:11;:25;9387:12;:10;:12::i;:::-;-1:-1:-1;;;;;9375:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9375:25:0;;;:34;;;;;;;;;;:47;;;;:::i;14739:91::-;14795:27;14801:12;:10;:12::i;:::-;14815:6;14795:5;:27::i;:::-;14739:91;:::o;6880:127::-;-1:-1:-1;;;;;6981:18:0;6954:7;6981:18;;;;;;;;;;;;6880:127::o;15149:332::-;15226:24;15253:32;15263:7;15272:12;:10;:12::i;15253:32::-;15226:59;;15324:6;15304:16;:26;;15296:75;;;;-1:-1:-1;;;15296:75:0;;;;;;;:::i;:::-;15382:58;15391:7;15400:12;:10;:12::i;:::-;15414:25;15433:6;15414:16;:25;:::i;15382:58::-;15451:22;15457:7;15466:6;15451:5;:22::i;:::-;15149:332;;;:::o;5826:95::-;5873:13;5906:7;5899:14;;;;;:::i;9956:377::-;10049:4;10066:24;10093:11;:25;10105:12;:10;:12::i;:::-;-1:-1:-1;;;;;10093:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;10093:25:0;;;:34;;;;;;;;;;;-1:-1:-1;10146:35:0;;;;10138:85;;;;-1:-1:-1;;;10138:85:0;;;;;;;:::i;:::-;10234:67;10243:12;:10;:12::i;:::-;10257:7;10266:34;10285:15;10266:16;:34;:::i;10234:67::-;-1:-1:-1;10321:4:0;;9956:377;-1:-1:-1;;;9956:377:0:o;7220:175::-;7306:4;7323:42;7333:12;:10;:12::i;:::-;7347:9;7358:6;7323:9;:42::i;15639:262::-;15716:4;15741:40;15754:6;15762:10;15774:6;15741:12;:40::i;:::-;15733:49;;;;;;15794:12;15811:6;-1:-1:-1;;;;;15811:11:0;15830:9;15811:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15793:51;;;15863:7;15855:16;;;;;7458:151;-1:-1:-1;;;;;7574:18:0;;;7547:7;7574:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7458:151::o;599:98::-;679:10;599:98;:::o;13312:346::-;-1:-1:-1;;;;;13414:19:0;;13406:68;;;;-1:-1:-1;;;13406:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13493:21:0;;13485:68;;;;-1:-1:-1;;;13485:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13566:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;13618:32;;;;;13596:6;;13618:32;:::i;:::-;;;;;;;;13312:346;;;:::o;10823:604::-;-1:-1:-1;;;;;10929:20:0;;10921:70;;;;-1:-1:-1;;;10921:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11010:23:0;;11002:71;;;;-1:-1:-1;;;11002:71:0;;;;;;;:::i;:::-;11086:47;11107:6;11115:9;11126:6;11086:20;:47::i;:::-;-1:-1:-1;;;;;11170:17:0;;11146:21;11170:17;;;;;;;;;;;11206:23;;;;11198:74;;;;-1:-1:-1;;;11198:74:0;;;;;;;:::i;:::-;11303:22;11319:6;11303:13;:22;:::i;:::-;-1:-1:-1;;;;;11283:17:0;;;:9;:17;;;;;;;;;;;:42;;;;11336:20;;;;;;;;:30;;11360:6;;11283:9;11336:30;;11360:6;;11336:30;:::i;:::-;;;;;;;;11401:9;-1:-1:-1;;;;;11384:35:0;11393:6;-1:-1:-1;;;;;11384:35:0;;11412:6;11384:35;;;;;;:::i;:::-;;;;;;;;10823:604;;;;:::o;12380:494::-;-1:-1:-1;;;;;12464:21:0;;12456:67;;;;-1:-1:-1;;;12456:67:0;;;;;;;:::i;:::-;12536:49;12557:7;12574:1;12578:6;12536:20;:49::i;:::-;-1:-1:-1;;;;;12623:18:0;;12598:22;12623:18;;;;;;;;;;;12660:24;;;;12652:71;;;;-1:-1:-1;;;12652:71:0;;;;;;;:::i;:::-;12755:23;12772:6;12755:14;:23;:::i;:::-;-1:-1:-1;;;;;12734:18:0;;:9;:18;;;;;;;;;;:44;;;;12789:12;:22;;12805:6;;12734:9;12789:22;;12805:6;;12789:22;:::i;:::-;;;;-1:-1:-1;;12829:37:0;;12855:1;;-1:-1:-1;;;;;12829:37:0;;;;;;;12859:6;;12829:37;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;:::-;262:5;84:189;-1:-1:-1;;;84:189:1:o;278:335::-;;;415:2;403:9;394:7;390:23;386:32;383:2;;;436:6;428;421:22;383:2;480:9;467:23;499:33;526:5;499:33;:::i;:::-;551:5;603:2;588:18;;;;575:32;;-1:-1:-1;;;373:240:1:o;618:402::-;;;747:2;735:9;726:7;722:23;718:32;715:2;;;768:6;760;753:22;715:2;812:9;799:23;831:33;858:5;831:33;:::i;:::-;883:5;-1:-1:-1;940:2:1;925:18;;912:32;953:35;912:32;953:35;:::i;:::-;1007:7;997:17;;;705:315;;;;;:::o;1025:470::-;;;;1171:2;1159:9;1150:7;1146:23;1142:32;1139:2;;;1192:6;1184;1177:22;1139:2;1236:9;1223:23;1255:33;1282:5;1255:33;:::i;:::-;1307:5;-1:-1:-1;1364:2:1;1349:18;;1336:32;1377:35;1336:32;1377:35;:::i;:::-;1129:366;;1431:7;;-1:-1:-1;;;1485:2:1;1470:18;;;;1457:32;;1129:366::o;1500:327::-;;;1629:2;1617:9;1608:7;1604:23;1600:32;1597:2;;;1650:6;1642;1635:22;1832:190;;1944:2;1932:9;1923:7;1919:23;1915:32;1912:2;;;1965:6;1957;1950:22;1912:2;-1:-1:-1;1993:23:1;;1902:120;-1:-1:-1;1902:120:1:o;2027:205::-;2227:3;2218:14::o;2237:187::-;2402:14;;2395:22;2377:41;;2365:2;2350:18;;2332:92::o;2429:603::-;;2570:2;2599;2588:9;2581:21;2631:6;2625:13;2674:6;2669:2;2658:9;2654:18;2647:34;2699:4;2712:140;2726:6;2723:1;2720:13;2712:140;;;2821:14;;;2817:23;;2811:30;2787:17;;;2806:2;2783:26;2776:66;2741:10;;2712:140;;;2870:6;2867:1;2864:13;2861:2;;;2940:4;2935:2;2926:6;2915:9;2911:22;2907:31;2900:45;2861:2;-1:-1:-1;3016:2:1;2995:15;-1:-1:-1;;2991:29:1;2976:45;;;;3023:2;2972:54;;2550:482;-1:-1:-1;;;2550:482:1:o;3037:399::-;3239:2;3221:21;;;3278:2;3258:18;;;3251:30;3317:34;3312:2;3297:18;;3290:62;-1:-1:-1;;;3383:2:1;3368:18;;3361:33;3426:3;3411:19;;3211:225::o;3441:398::-;3643:2;3625:21;;;3682:2;3662:18;;;3655:30;3721:34;3716:2;3701:18;;3694:62;-1:-1:-1;;;3787:2:1;3772:18;;3765:32;3829:3;3814:19;;3615:224::o;3844:398::-;4046:2;4028:21;;;4085:2;4065:18;;;4058:30;4124:34;4119:2;4104:18;;4097:62;-1:-1:-1;;;4190:2:1;4175:18;;4168:32;4232:3;4217:19;;4018:224::o;4247:402::-;4449:2;4431:21;;;4488:2;4468:18;;;4461:30;4527:34;4522:2;4507:18;;4500:62;-1:-1:-1;;;4593:2:1;4578:18;;4571:36;4639:3;4624:19;;4421:228::o;4654:404::-;4856:2;4838:21;;;4895:2;4875:18;;;4868:30;4934:34;4929:2;4914:18;;4907:62;-1:-1:-1;;;5000:2:1;4985:18;;4978:38;5048:3;5033:19;;4828:230::o;5063:400::-;5265:2;5247:21;;;5304:2;5284:18;;;5277:30;5343:34;5338:2;5323:18;;5316:62;-1:-1:-1;;;5409:2:1;5394:18;;5387:34;5453:3;5438:19;;5237:226::o;5468:397::-;5670:2;5652:21;;;5709:2;5689:18;;;5682:30;5748:34;5743:2;5728:18;;5721:62;-1:-1:-1;;;5814:2:1;5799:18;;5792:31;5855:3;5840:19;;5642:223::o;5870:401::-;6072:2;6054:21;;;6111:2;6091:18;;;6084:30;6150:34;6145:2;6130:18;;6123:62;-1:-1:-1;;;6216:2:1;6201:18;;6194:35;6261:3;6246:19;;6044:227::o;6276:400::-;6478:2;6460:21;;;6517:2;6497:18;;;6490:30;6556:34;6551:2;6536:18;;6529:62;-1:-1:-1;;;6622:2:1;6607:18;;6600:34;6666:3;6651:19;;6450:226::o;6681:401::-;6883:2;6865:21;;;6922:2;6902:18;;;6895:30;6961:34;6956:2;6941:18;;6934:62;-1:-1:-1;;;7027:2:1;7012:18;;7005:35;7072:3;7057:19;;6855:227::o;7087:177::-;7233:25;;;7221:2;7206:18;;7188:76::o;7269:184::-;7441:4;7429:17;;;;7411:36;;7399:2;7384:18;;7366:87::o;7458:128::-;;7529:1;7525:6;7522:1;7519:13;7516:2;;;7535:18;;:::i;:::-;-1:-1:-1;7571:9:1;;7506:80::o;7591:125::-;;7659:1;7656;7653:8;7650:2;;;7664:18;;:::i;:::-;-1:-1:-1;7701:9:1;;7640:76::o;7721:380::-;7806:1;7796:12;;7853:1;7843:12;;;7864:2;;7918:4;7910:6;7906:17;7896:27;;7864:2;7971;7963:6;7960:14;7940:18;7937:38;7934:2;;;8017:10;8012:3;8008:20;8005:1;7998:31;8052:4;8049:1;8042:15;8080:4;8077:1;8070:15;7934:2;;7776:325;;;:::o;8106:127::-;8167:10;8162:3;8158:20;8155:1;8148:31;8198:4;8195:1;8188:15;8222:4;8219:1;8212:15;8238:133;-1:-1:-1;;;;;8315:31:1;;8305:42;;8295:2;;8361:1;8358;8351:12

Swarm Source

ipfs://385bd567673cd85be23d89e0883dc2eedc07a8be861cbf90cbeafed8633a683b

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.