ETH Price: $3,405.56 (+1.52%)

Token

PUGLIFE (PUGL)
 

Overview

Max Total Supply

500,000,000,000,000 PUGL

Holders

1,327 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 PUGL

Value
$0.00
0x487ec42483c790ec5c049dd335860efd7a7aefe5
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

PugLife is a community-driven coin, which wants to give back to its community through charity donations, voted for by the community, as well as the unbelievable giveaways.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-05-14
*/

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

// ----------------------------------------------------------------------------
// Billion Token
//
// Deployed to : 0x217373AB5e0082B2Ce622169672ECa6F4462319C
// Symbol : -
// Name : -
// Total supply: -
// Decimals :18
//
// Deployed by - Ecosystem
// ----------------------------------------------------------------------------



/**
 * @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 Burn `amount` tokens from 'owner'
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function burn(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 Interface for the optional metadata functions from the ERC20 standard.
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable is Context {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() {
    owner = msg.sender;
  }

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

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @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}.
 *
 * 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, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    uint256 private constant MAX = ~uint256(0);
    
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    uint256 private _totalSupply;
    uint8 private _decimal;
    string private _name;
    string private _symbol;
    uint8 private _charity_percentage = 5;
    uint8 private _marketing_percentage = 5;
    uint8 private _reward_percentage = 2;
    uint8 private _transaction_burn = 5;
    address private _charity_address;
    address private _marketing_address;
    address private _burn_address = 0x0000000000000000000000000000000000000000;

    /**
     * @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 two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_, uint8 decimal_, uint256 totalSupply_, address charity_address_, address marketing_address_) {
        _name = name_;
        _symbol = symbol_;
        _decimal = decimal_;
        _charity_address = charity_address_;
        _marketing_address = marketing_address_;
        _totalSupply = totalSupply_;

        _rTotal = (MAX - (MAX % _totalSupply));
        _rOwned[_msgSender()] = _rTotal;
        _balances[_msgSender()] += _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

    /**
     * @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) {
        if(account == _charity_address || account == _marketing_address) return _balances[account];
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[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 Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual onlyOwner override returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

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

    /**
     * @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");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        _transferStandard(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);
    }

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
    
    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _totalSupply, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function _transferStandard(address sender_address, address recipient_address, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tFee, uint256 charity_amount, uint256 marketing_amount, uint256 burn_amount) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        
        address sender = sender_address;
        address recipient = recipient_address;
        
        // subtract from sender
        uint256 sub_amount = rAmount - charity_amount - marketing_amount - burn_amount;
        _rOwned[sender] = _rOwned[sender].sub(sub_amount);
        
        
        // update amount in recipient address
        uint256 transfer_amount = rTransferAmount - charity_amount - marketing_amount - burn_amount;
        _rOwned[recipient] = _rOwned[recipient].add(transfer_amount);
        
        // reflect fee
        _reflectFee(rFee, tFee);
        
        // add amount in charity and marketing address
        _balances[_charity_address] += charity_amount;
        _balances[_marketing_address] += marketing_amount;
        
        emit Transfer(sender, recipient, tTransferAmount);
        emit Transfer(sender, _charity_address, charity_amount);
        emit Transfer(sender, _marketing_address, marketing_amount);
        
        // burn transacton %
        emit Transfer(sender, _burn_address, burn_amount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 total_amount = tAmount;
        (,uint256 tFee,,,) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount,) = _getRValues(total_amount, tFee, currentRate);
        return (rAmount, rTransferAmount);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        uint256 totalAmount = tAmount;
        uint256 tFee = totalAmount.mul(_reward_percentage).div(10**2);
        uint256 charity_amount = totalAmount.mul(_charity_percentage).div(10**3);
        uint256 marketing_amount = totalAmount.mul(_marketing_percentage).div(10**3);
        uint256 burn_amount = totalAmount.mul(_transaction_burn).div(10**3);
        uint256 tTransferAmount = totalAmount.sub(tFee).sub(charity_amount).sub(marketing_amount).sub(burn_amount);
        return (tTransferAmount, tFee, charity_amount, marketing_amount, burn_amount);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _totalSupply;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _totalSupply);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_totalSupply)) return (_rTotal, _totalSupply);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimal_","type":"uint8"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"charity_address_","type":"address"},{"internalType":"address","name":"marketing_address_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600d8054600560ff199091161761ff0019166105001762ff00001916620200001763ff00000019166305000000179055600f80546001600160a01b03191690553480156200005157600080fd5b5060405162001dde38038062001dde83398101604081905262000074916200038a565b600080546001600160a01b0319163317905585516200009b90600b90602089019062000214565b508451620000b190600c90602088019062000214565b50600a805460ff191660ff8616179055600d8054600160201b600160c01b0319166401000000006001600160a01b038581169190910291909117909155600e80546001600160a01b03191691831691909117905560098390556200011883600019620004b3565b62000126906000196200045c565b6007819055600360006200013962000210565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060095460016000620001746200021060201b60201c565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254620001a5919062000441565b90915550620001b5905062000210565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620001fc919062000438565b60405180910390a350505050505062000500565b3390565b828054620002229062000476565b90600052602060002090601f01602090048101928262000246576000855562000291565b82601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b5b808211156200029f5760008155600101620002a4565b80516001600160a01b0381168114620002d257600080fd5b919050565b600082601f830112620002e8578081fd5b81516001600160401b0380821115620003055762000305620004ea565b604051601f8301601f19908116603f01168101908282118183101715620003305762000330620004ea565b816040528381526020925086838588010111156200034c578485fd5b8491505b838210156200036f578582018301518183018401529082019062000350565b838211156200038057848385830101525b9695505050505050565b60008060008060008060c08789031215620003a3578182fd5b86516001600160401b0380821115620003ba578384fd5b620003c88a838b01620002d7565b97506020890151915080821115620003de578384fd5b50620003ed89828a01620002d7565b955050604087015160ff8116811462000404578283fd5b606088015190945092506200041c60808801620002ba565b91506200042c60a08801620002ba565b90509295509295509295565b90815260200190565b60008219821115620004575762000457620004d4565b500190565b600082821015620004715762000471620004d4565b500390565b6002810460018216806200048b57607f821691505b60208210811415620004ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620004cf57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6118ce80620005106000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80634549b039116100b857806395d89b411161007c57806395d89b4114610263578063a457c2d71461026b578063a9059cbb1461027e578063cba0e99614610291578063dd62ed3e146102a4578063f2fde38b146102b757610137565b80634549b0391461020d57806370a0823114610220578063715018a61461023357806379cc67901461023b5780638da5cb5b1461024e57610137565b806323b872dd116100ff57806323b872dd146101ac5780632d838119146101bf578063313ce567146101d257806339509351146101e757806342966c68146101fa57610137565b8063053ab1821461013c57806306fdde0314610151578063095ea7b31461016f57806313114a9d1461018f57806318160ddd146101a4575b600080fd5b61014f61014a3660046112da565b6102ca565b005b610159610389565b6040516101669190611344565b60405180910390f35b61018261017d3660046112b1565b61041b565b6040516101669190611339565b610197610439565b6040516101669190611787565b61019761043f565b6101826101ba366004611276565b610445565b6101976101cd3660046112da565b6104dc565b6101da61051f565b6040516101669190611790565b6101826101f53660046112b1565b610528565b6101826102083660046112da565b610577565b61019761021b3660046112f2565b6105a8565b61019761022e36600461122a565b6105fb565b61014f6106b5565b61014f6102493660046112b1565b610714565b610256610769565b6040516101669190611325565b610159610778565b6101826102793660046112b1565b610787565b61018261028c3660046112b1565b610802565b61018261029f36600461122a565b610816565b6101976102b2366004611244565b610834565b61014f6102c536600461122a565b61085f565b60006102d46108e4565b6001600160a01b03811660009081526005602052604090205490915060ff16156103195760405162461bcd60e51b8152600401610310906116f6565b60405180910390fd5b6000610324836108e8565b506001600160a01b03831660009081526003602052604090205490915061034b9082610926565b6001600160a01b0383166000908152600360205260409020556007546103719082610926565b600755600854610381908461096f565b600855505050565b6060600b80546103989061180c565b80601f01602080910402602001604051908101604052809291908181526020018280546103c49061180c565b80156104115780601f106103e657610100808354040283529160200191610411565b820191906000526020600020905b8154815290600101906020018083116103f457829003601f168201915b5050505050905090565b600061042f6104286108e4565b848461099e565b5060015b92915050565b60085490565b60095490565b6000610452848484610a52565b6001600160a01b0384166000908152600260205260408120816104736108e4565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156104b65760405162461bcd60e51b815260040161031090611557565b6104d1856104c26108e4565b6104cc86856117f5565b61099e565b506001949350505050565b60006007548211156105005760405162461bcd60e51b81526004016103109061141c565b600061050a610ac9565b90506105168382610aec565b9150505b919050565b600a5460ff1690565b600061042f6105356108e4565b8484600260006105436108e4565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546104cc919061179e565b600080546001600160a01b0316331461058f57600080fd5b6105a061059a6108e4565b83610b2e565b506001919050565b60006009548311156105cc5760405162461bcd60e51b8152600401610310906114df565b816105e65760006105dc846108e8565b5091506104339050565b60006105f1846108e8565b9250610433915050565b600d546000906001600160a01b0383811664010000000090920416148061062f5750600e546001600160a01b038381169116145b1561065357506001600160a01b03811660009081526001602052604090205461051a565b6001600160a01b03821660009081526005602052604090205460ff161561069357506001600160a01b03811660009081526004602052604090205461051a565b6001600160a01b038216600090815260036020526040902054610433906104dc565b6000546001600160a01b031633146106cc57600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000610722836102b26108e4565b9050818110156107445760405162461bcd60e51b8152600401610310906115e8565b61075a836107506108e4565b6104cc85856117f5565b6107648383610b2e565b505050565b6000546001600160a01b031681565b6060600c80546103989061180c565b600080600260006107966108e4565b6001600160a01b03908116825260208083019390935260409182016000908120918816815292529020549050828110156107e25760405162461bcd60e51b815260040161031090611742565b6107f86107ed6108e4565b856104cc86856117f5565b5060019392505050565b600061042f61080f6108e4565b8484610a52565b6001600160a01b031660009081526005602052604090205460ff1690565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b0316331461087657600080fd5b6001600160a01b03811661088957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008082816108f682610c02565b5050509150506000610906610ac9565b9050600080610916858585610cd9565b5090975095505050505050915091565b600061096883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d15565b9392505050565b60008061097c838561179e565b9050838110156109685760405162461bcd60e51b8152600401610310906114a8565b6001600160a01b0383166109c45760405162461bcd60e51b8152600401610310906116b2565b6001600160a01b0382166109ea5760405162461bcd60e51b815260040161031090611466565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a45908590611787565b60405180910390a3505050565b6001600160a01b038316610a785760405162461bcd60e51b81526004016103109061166d565b6001600160a01b038216610a9e5760405162461bcd60e51b815260040161031090611397565b60008111610abe5760405162461bcd60e51b81526004016103109061159f565b610764838383610d4f565b6000806000610ad6610fbf565b9092509050610ae58282610aec565b9250505090565b600061096883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061117c565b6001600160a01b038216610b545760405162461bcd60e51b81526004016103109061162c565b610b6082600083610764565b6001600160a01b03821660009081526001602052604090205481811015610b995760405162461bcd60e51b8152600401610310906113da565b610ba382826117f5565b6001600160a01b03841660009081526001602052604081209190915560098054849290610bd19084906117f5565b90915550506040516000906001600160a01b0385169060008051602061187983398151915290610a45908690611787565b6000806000806000808690506000610c406064610c3a600d60029054906101000a900460ff1660ff16856111aa90919063ffffffff16565b90610aec565b600d54909150600090610c5f906103e890610c3a90869060ff166111aa565b600d54909150600090610c83906103e890610c3a908790610100900460ff166111aa565b600d54909150600090610ca9906103e890610c3a9088906301000000900460ff166111aa565b90506000610cc582610cbf858188818c8c610926565b90610926565b9c949b509299509097509550909350505050565b6000808080610ce887866111aa565b90506000610cf687876111aa565b90506000610d048383610926565b929992985090965090945050505050565b60008184841115610d395760405162461bcd60e51b81526004016103109190611344565b506000610d4684866117f5565b95945050505050565b6000806000806000610d6086610c02565b945094509450945094506000610d74610ac9565b90506000806000610d868a8986610cd9565b919450925090508b8b60008789610d9d8c896117f5565b610da791906117f5565b610db191906117f5565b6001600160a01b038416600090815260036020526040902054909150610dd79082610926565b6001600160a01b038416600090815260036020526040812091909155888a610dff8d896117f5565b610e0991906117f5565b610e1391906117f5565b6001600160a01b038416600090815260036020526040902054909150610e39908261096f565b6001600160a01b038416600090815260036020526040902055610e5c858d6111ef565b600d5464010000000090046001600160a01b0316600090815260016020526040812080548d9290610e8e90849061179e565b9091555050600e546001600160a01b0316600090815260016020526040812080548c9290610ebd90849061179e565b92505081905550826001600160a01b0316846001600160a01b03166000805160206118798339815191528f604051610ef59190611787565b60405180910390a3600d546040516001600160a01b0364010000000090920482169186169060008051602061187983398151915290610f35908f90611787565b60405180910390a3600e546040516001600160a01b039182169186169060008051602061187983398151915290610f6d908e90611787565b60405180910390a3600f546040516001600160a01b039182169186169060008051602061187983398151915290610fa5908d90611787565b60405180910390a350505050505050505050505050505050565b6007546009546000918291825b60065481101561114a57826003600060068481548110610ffc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611075575081600460006006848154811061104e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561108c5760075460095494509450505050611178565b6110e060036000600684815481106110b457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610926565b9250611136600460006006848154811061110a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610926565b91508061114281611847565b915050610fcc565b5060095460075461115a91610aec565b82101561117257600754600954935093505050611178565b90925090505b9091565b6000818361119d5760405162461bcd60e51b81526004016103109190611344565b506000610d4684866117b6565b6000826111b957506000610433565b60006111c583856117d6565b9050826111d285836117b6565b146109685760405162461bcd60e51b815260040161031090611516565b6007546111fc9083610926565b60075560085461120c908261096f565b6008555050565b80356001600160a01b038116811461051a57600080fd5b60006020828403121561123b578081fd5b61096882611213565b60008060408385031215611256578081fd5b61125f83611213565b915061126d60208401611213565b90509250929050565b60008060006060848603121561128a578081fd5b61129384611213565b92506112a160208501611213565b9150604084013590509250925092565b600080604083850312156112c3578182fd5b6112cc83611213565b946020939093013593505050565b6000602082840312156112eb578081fd5b5035919050565b60008060408385031215611304578182fd5b823591506020830135801515811461131a578182fd5b809150509250929050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561137057858101830151858201604001528201611354565b818111156113815783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526024908201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604082015263616e636560e01b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b60ff91909116815260200190565b600082198211156117b1576117b1611862565b500190565b6000826117d157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156117f0576117f0611862565b500290565b60008282101561180757611807611862565b500390565b60028104600182168061182057607f821691505b6020821081141561184157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561185b5761185b611862565b5060010190565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204a9507f22c1e883f8bc30adfb0569271f889628cbe5e7c82308f3682c6d71ec864736f6c6343000801003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000027d34b7dd37a403454e5add7f15847d480d7ab2b00000000000000000000000052af103164d7297c678b26c77d89be8194a5735200000000000000000000000000000000000000000000000000000000000000075055474c4946450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045055474c00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c80634549b039116100b857806395d89b411161007c57806395d89b4114610263578063a457c2d71461026b578063a9059cbb1461027e578063cba0e99614610291578063dd62ed3e146102a4578063f2fde38b146102b757610137565b80634549b0391461020d57806370a0823114610220578063715018a61461023357806379cc67901461023b5780638da5cb5b1461024e57610137565b806323b872dd116100ff57806323b872dd146101ac5780632d838119146101bf578063313ce567146101d257806339509351146101e757806342966c68146101fa57610137565b8063053ab1821461013c57806306fdde0314610151578063095ea7b31461016f57806313114a9d1461018f57806318160ddd146101a4575b600080fd5b61014f61014a3660046112da565b6102ca565b005b610159610389565b6040516101669190611344565b60405180910390f35b61018261017d3660046112b1565b61041b565b6040516101669190611339565b610197610439565b6040516101669190611787565b61019761043f565b6101826101ba366004611276565b610445565b6101976101cd3660046112da565b6104dc565b6101da61051f565b6040516101669190611790565b6101826101f53660046112b1565b610528565b6101826102083660046112da565b610577565b61019761021b3660046112f2565b6105a8565b61019761022e36600461122a565b6105fb565b61014f6106b5565b61014f6102493660046112b1565b610714565b610256610769565b6040516101669190611325565b610159610778565b6101826102793660046112b1565b610787565b61018261028c3660046112b1565b610802565b61018261029f36600461122a565b610816565b6101976102b2366004611244565b610834565b61014f6102c536600461122a565b61085f565b60006102d46108e4565b6001600160a01b03811660009081526005602052604090205490915060ff16156103195760405162461bcd60e51b8152600401610310906116f6565b60405180910390fd5b6000610324836108e8565b506001600160a01b03831660009081526003602052604090205490915061034b9082610926565b6001600160a01b0383166000908152600360205260409020556007546103719082610926565b600755600854610381908461096f565b600855505050565b6060600b80546103989061180c565b80601f01602080910402602001604051908101604052809291908181526020018280546103c49061180c565b80156104115780601f106103e657610100808354040283529160200191610411565b820191906000526020600020905b8154815290600101906020018083116103f457829003601f168201915b5050505050905090565b600061042f6104286108e4565b848461099e565b5060015b92915050565b60085490565b60095490565b6000610452848484610a52565b6001600160a01b0384166000908152600260205260408120816104736108e4565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156104b65760405162461bcd60e51b815260040161031090611557565b6104d1856104c26108e4565b6104cc86856117f5565b61099e565b506001949350505050565b60006007548211156105005760405162461bcd60e51b81526004016103109061141c565b600061050a610ac9565b90506105168382610aec565b9150505b919050565b600a5460ff1690565b600061042f6105356108e4565b8484600260006105436108e4565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546104cc919061179e565b600080546001600160a01b0316331461058f57600080fd5b6105a061059a6108e4565b83610b2e565b506001919050565b60006009548311156105cc5760405162461bcd60e51b8152600401610310906114df565b816105e65760006105dc846108e8565b5091506104339050565b60006105f1846108e8565b9250610433915050565b600d546000906001600160a01b0383811664010000000090920416148061062f5750600e546001600160a01b038381169116145b1561065357506001600160a01b03811660009081526001602052604090205461051a565b6001600160a01b03821660009081526005602052604090205460ff161561069357506001600160a01b03811660009081526004602052604090205461051a565b6001600160a01b038216600090815260036020526040902054610433906104dc565b6000546001600160a01b031633146106cc57600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000610722836102b26108e4565b9050818110156107445760405162461bcd60e51b8152600401610310906115e8565b61075a836107506108e4565b6104cc85856117f5565b6107648383610b2e565b505050565b6000546001600160a01b031681565b6060600c80546103989061180c565b600080600260006107966108e4565b6001600160a01b03908116825260208083019390935260409182016000908120918816815292529020549050828110156107e25760405162461bcd60e51b815260040161031090611742565b6107f86107ed6108e4565b856104cc86856117f5565b5060019392505050565b600061042f61080f6108e4565b8484610a52565b6001600160a01b031660009081526005602052604090205460ff1690565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b0316331461087657600080fd5b6001600160a01b03811661088957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008082816108f682610c02565b5050509150506000610906610ac9565b9050600080610916858585610cd9565b5090975095505050505050915091565b600061096883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d15565b9392505050565b60008061097c838561179e565b9050838110156109685760405162461bcd60e51b8152600401610310906114a8565b6001600160a01b0383166109c45760405162461bcd60e51b8152600401610310906116b2565b6001600160a01b0382166109ea5760405162461bcd60e51b815260040161031090611466565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a45908590611787565b60405180910390a3505050565b6001600160a01b038316610a785760405162461bcd60e51b81526004016103109061166d565b6001600160a01b038216610a9e5760405162461bcd60e51b815260040161031090611397565b60008111610abe5760405162461bcd60e51b81526004016103109061159f565b610764838383610d4f565b6000806000610ad6610fbf565b9092509050610ae58282610aec565b9250505090565b600061096883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061117c565b6001600160a01b038216610b545760405162461bcd60e51b81526004016103109061162c565b610b6082600083610764565b6001600160a01b03821660009081526001602052604090205481811015610b995760405162461bcd60e51b8152600401610310906113da565b610ba382826117f5565b6001600160a01b03841660009081526001602052604081209190915560098054849290610bd19084906117f5565b90915550506040516000906001600160a01b0385169060008051602061187983398151915290610a45908690611787565b6000806000806000808690506000610c406064610c3a600d60029054906101000a900460ff1660ff16856111aa90919063ffffffff16565b90610aec565b600d54909150600090610c5f906103e890610c3a90869060ff166111aa565b600d54909150600090610c83906103e890610c3a908790610100900460ff166111aa565b600d54909150600090610ca9906103e890610c3a9088906301000000900460ff166111aa565b90506000610cc582610cbf858188818c8c610926565b90610926565b9c949b509299509097509550909350505050565b6000808080610ce887866111aa565b90506000610cf687876111aa565b90506000610d048383610926565b929992985090965090945050505050565b60008184841115610d395760405162461bcd60e51b81526004016103109190611344565b506000610d4684866117f5565b95945050505050565b6000806000806000610d6086610c02565b945094509450945094506000610d74610ac9565b90506000806000610d868a8986610cd9565b919450925090508b8b60008789610d9d8c896117f5565b610da791906117f5565b610db191906117f5565b6001600160a01b038416600090815260036020526040902054909150610dd79082610926565b6001600160a01b038416600090815260036020526040812091909155888a610dff8d896117f5565b610e0991906117f5565b610e1391906117f5565b6001600160a01b038416600090815260036020526040902054909150610e39908261096f565b6001600160a01b038416600090815260036020526040902055610e5c858d6111ef565b600d5464010000000090046001600160a01b0316600090815260016020526040812080548d9290610e8e90849061179e565b9091555050600e546001600160a01b0316600090815260016020526040812080548c9290610ebd90849061179e565b92505081905550826001600160a01b0316846001600160a01b03166000805160206118798339815191528f604051610ef59190611787565b60405180910390a3600d546040516001600160a01b0364010000000090920482169186169060008051602061187983398151915290610f35908f90611787565b60405180910390a3600e546040516001600160a01b039182169186169060008051602061187983398151915290610f6d908e90611787565b60405180910390a3600f546040516001600160a01b039182169186169060008051602061187983398151915290610fa5908d90611787565b60405180910390a350505050505050505050505050505050565b6007546009546000918291825b60065481101561114a57826003600060068481548110610ffc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611075575081600460006006848154811061104e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561108c5760075460095494509450505050611178565b6110e060036000600684815481106110b457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610926565b9250611136600460006006848154811061110a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610926565b91508061114281611847565b915050610fcc565b5060095460075461115a91610aec565b82101561117257600754600954935093505050611178565b90925090505b9091565b6000818361119d5760405162461bcd60e51b81526004016103109190611344565b506000610d4684866117b6565b6000826111b957506000610433565b60006111c583856117d6565b9050826111d285836117b6565b146109685760405162461bcd60e51b815260040161031090611516565b6007546111fc9083610926565b60075560085461120c908261096f565b6008555050565b80356001600160a01b038116811461051a57600080fd5b60006020828403121561123b578081fd5b61096882611213565b60008060408385031215611256578081fd5b61125f83611213565b915061126d60208401611213565b90509250929050565b60008060006060848603121561128a578081fd5b61129384611213565b92506112a160208501611213565b9150604084013590509250925092565b600080604083850312156112c3578182fd5b6112cc83611213565b946020939093013593505050565b6000602082840312156112eb578081fd5b5035919050565b60008060408385031215611304578182fd5b823591506020830135801515811461131a578182fd5b809150509250929050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561137057858101830151858201604001528201611354565b818111156113815783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526024908201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604082015263616e636560e01b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b60ff91909116815260200190565b600082198211156117b1576117b1611862565b500190565b6000826117d157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156117f0576117f0611862565b500290565b60008282101561180757611807611862565b500390565b60028104600182168061182057607f821691505b6020821081141561184157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561185b5761185b611862565b5060010190565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204a9507f22c1e883f8bc30adfb0569271f889628cbe5e7c82308f3682c6d71ec864736f6c63430008010033

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

00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000027d34b7dd37a403454e5add7f15847d480d7ab2b00000000000000000000000052af103164d7297c678b26c77d89be8194a5735200000000000000000000000000000000000000000000000000000000000000075055474c4946450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045055474c00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): PUGLIFE
Arg [1] : symbol_ (string): PUGL
Arg [2] : decimal_ (uint8): 18
Arg [3] : totalSupply_ (uint256): 1000000000000000000000000000000000
Arg [4] : charity_address_ (address): 0x27D34B7dD37A403454e5AdD7F15847d480d7ab2b
Arg [5] : marketing_address_ (address): 0x52Af103164D7297c678b26c77d89Be8194A57352

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000314dc6448d9338c15b0a00000000
Arg [4] : 00000000000000000000000027d34b7dd37a403454e5add7f15847d480d7ab2b
Arg [5] : 00000000000000000000000052af103164d7297c678b26c77d89be8194a57352
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 5055474c49464500000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 5055474c00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

19797:15777:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30674:373;;;;;;:::i;:::-;;:::i;:::-;;21804:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24157:169;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;30575:87::-;;;:::i;:::-;;;;;;;:::i;22930:108::-;;;:::i;24808:422::-;;;;;;:::i;:::-;;:::i;31496:253::-;;;;;;:::i;:::-;;:::i;22766:99::-;;;:::i;:::-;;;;;;;:::i;25639:215::-;;;;;;:::i;:::-;;:::i;26858:147::-;;;;;;:::i;:::-;;:::i;31055:433::-;;;;;;:::i;:::-;;:::i;23101:307::-;;;;;;:::i;:::-;;:::i;5457:114::-;;;:::i;27324:332::-;;;;;;:::i;:::-;;:::i;4501:20::-;;;:::i;:::-;;;;;;;:::i;22023:104::-;;;:::i;26357:377::-;;;;;;:::i;:::-;;:::i;23621:175::-;;;;;;:::i;:::-;;:::i;30457:110::-;;;;;;:::i;:::-;;:::i;23859:151::-;;;;;;:::i;:::-;;:::i;5184:178::-;;;;;;:::i;:::-;;:::i;30674:373::-;30726:14;30743:12;:10;:12::i;:::-;-1:-1:-1;;;;;30775:19:0;;;;;;:11;:19;;;;;;30726:29;;-1:-1:-1;30775:19:0;;30774:20;30766:77;;;;-1:-1:-1;;;30766:77:0;;;;;;;:::i;:::-;;;;;;;;;30855:15;30875:19;30886:7;30875:10;:19::i;:::-;-1:-1:-1;;;;;;30923:15:0;;;;;;:7;:15;;;;;;30854:40;;-1:-1:-1;30923:28:0;;30854:40;30923:19;:28::i;:::-;-1:-1:-1;;;;;30905:15:0;;;;;;:7;:15;;;;;:46;30972:7;;:20;;30984:7;30972:11;:20::i;:::-;30962:7;:30;31016:10;;:23;;31031:7;31016:14;:23::i;:::-;31003:10;:36;-1:-1:-1;;;30674:373:0:o;21804:100::-;21858:13;21891:5;21884:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21804:100;:::o;24157:169::-;24240:4;24257:39;24266:12;:10;:12::i;:::-;24280:7;24289:6;24257:8;:39::i;:::-;-1:-1:-1;24314:4:0;24157:169;;;;;:::o;30575:87::-;30644:10;;30575:87;:::o;22930:108::-;23018:12;;22930:108;:::o;24808:422::-;24914:4;24931:36;24941:6;24949:9;24960:6;24931:9;:36::i;:::-;-1:-1:-1;;;;;25007:19:0;;24980:24;25007:19;;;:11;:19;;;;;24980:24;25027:12;:10;:12::i;:::-;-1:-1:-1;;;;;25007:33:0;-1:-1:-1;;;;;25007:33:0;;;;;;;;;;;;;24980:60;;25079:6;25059:16;:26;;25051:79;;;;-1:-1:-1;;;25051:79:0;;;;;;;:::i;:::-;25141:57;25150:6;25158:12;:10;:12::i;:::-;25172:25;25191:6;25172:16;:25;:::i;:::-;25141:8;:57::i;:::-;-1:-1:-1;25218:4:0;;24808:422;-1:-1:-1;;;;24808:422:0:o;31496:253::-;31562:7;31601;;31590;:18;;31582:73;;;;-1:-1:-1;;;31582:73:0;;;;;;;:::i;:::-;31666:19;31689:10;:8;:10::i;:::-;31666:33;-1:-1:-1;31717:24:0;:7;31666:33;31717:11;:24::i;:::-;31710:31;;;31496:253;;;;:::o;22766:99::-;22849:8;;;;22766:99;:::o;25639:215::-;25727:4;25744:80;25753:12;:10;:12::i;:::-;25767:7;25813:10;25776:11;:25;25788:12;:10;:12::i;:::-;-1:-1:-1;;;;;25776:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;25776:25:0;;;:34;;;;;;;;;;:47;;;;:::i;26858:147::-;26931:4;4997:5;;-1:-1:-1;;;;;4997:5:0;4983:10;:19;4975:28;;;;;;26948:27:::1;26954:12;:10;:12::i;:::-;26968:6;26948:5;:27::i;:::-;-1:-1:-1::0;26993:4:0::1;26858:147:::0;;;:::o;31055:433::-;31145:7;31184:12;;31173:7;:23;;31165:67;;;;-1:-1:-1;;;31165:67:0;;;;;;;:::i;:::-;31248:17;31243:238;;31283:15;31303:19;31314:7;31303:10;:19::i;:::-;-1:-1:-1;31282:40:0;-1:-1:-1;31337:14:0;;-1:-1:-1;31337:14:0;31243:238;31386:23;31413:19;31424:7;31413:10;:19::i;:::-;31384:48;-1:-1:-1;31447:22:0;;-1:-1:-1;;31447:22:0;23101:307;23209:16;;23175:7;;-1:-1:-1;;;;;23198:27:0;;;23209:16;;;;;23198:27;;:60;;-1:-1:-1;23240:18:0;;-1:-1:-1;;;;;23229:29:0;;;23240:18;;23229:29;23198:60;23195:90;;;-1:-1:-1;;;;;;23267:18:0;;;;;;:9;:18;;;;;;23260:25;;23195:90;-1:-1:-1;;;;;23300:20:0;;;;;;:11;:20;;;;;;;;23296:49;;;-1:-1:-1;;;;;;23329:16:0;;;;;;:7;:16;;;;;;23322:23;;23296:49;-1:-1:-1;;;;;23383:16:0;;;;;;:7;:16;;;;;;23363:37;;:19;:37::i;5457:114::-;4997:5;;-1:-1:-1;;;;;4997:5:0;4983:10;:19;4975:28;;;;;;5534:5:::1;::::0;;5515:25:::1;::::0;-1:-1:-1;;;;;5534:5:0;;::::1;::::0;5515:25:::1;::::0;::::1;5563:1;5547:18:::0;;-1:-1:-1;;;;;;5547:18:0::1;::::0;;5457:114::o;27324:332::-;27401:24;27428:32;27438:7;27447:12;:10;:12::i;27428:32::-;27401:59;;27499:6;27479:16;:26;;27471:75;;;;-1:-1:-1;;;27471:75:0;;;;;;;:::i;:::-;27557:58;27566:7;27575:12;:10;:12::i;:::-;27589:25;27608:6;27589:16;:25;:::i;27557:58::-;27626:22;27632:7;27641:6;27626:5;:22::i;:::-;27324:332;;;:::o;4501:20::-;;;-1:-1:-1;;;;;4501:20:0;;:::o;22023:104::-;22079:13;22112:7;22105:14;;;;;:::i;26357:377::-;26450:4;26467:24;26494:11;:25;26506:12;:10;:12::i;:::-;-1:-1:-1;;;;;26494:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;26494:25:0;;;:34;;;;;;;;;;;-1:-1:-1;26547:35:0;;;;26539:85;;;;-1:-1:-1;;;26539:85:0;;;;;;;:::i;:::-;26635:67;26644:12;:10;:12::i;:::-;26658:7;26667:34;26686:15;26667:16;:34;:::i;26635:67::-;-1:-1:-1;26722:4:0;;26357:377;-1:-1:-1;;;26357:377:0:o;23621:175::-;23707:4;23724:42;23734:12;:10;:12::i;:::-;23748:9;23759:6;23724:9;:42::i;30457:110::-;-1:-1:-1;;;;;30539:20:0;30515:4;30539:20;;;:11;:20;;;;;;;;;30457:110::o;23859:151::-;-1:-1:-1;;;;;23975:18:0;;;23948:7;23975:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;23859:151::o;5184:178::-;4997:5;;-1:-1:-1;;;;;4997:5:0;4983:10;:19;4975:28;;;;;;-1:-1:-1;;;;;5261:22:0;::::1;5253:31;;;::::0;::::1;;5317:5;::::0;;5296:37:::1;::::0;-1:-1:-1;;;;;5296:37:0;;::::1;::::0;5317:5;::::1;::::0;5296:37:::1;::::0;::::1;5340:5;:16:::0;;-1:-1:-1;;;;;;5340:16:0::1;-1:-1:-1::0;;;;;5340:16:0;;;::::1;::::0;;;::::1;::::0;;5184:178::o;3925:98::-;4005:10;3925:98;:::o;33416:367::-;33475:7;;33527;33475;33566:20;33527:7;33566:11;:20::i;:::-;33545:41;;;;;;33597:19;33620:10;:8;:10::i;:::-;33597:33;;33642:15;33659:23;33687:44;33699:12;33713:4;33719:11;33687;:44::i;:::-;-1:-1:-1;33641:90:0;;-1:-1:-1;33641:90:0;-1:-1:-1;;;;;;33416:367:0;;;:::o;6866:136::-;6924:7;6951:43;6955:1;6958;6951:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6944:50;6866:136;-1:-1:-1;;;6866:136:0:o;6410:181::-;6468:7;;6500:5;6504:1;6500;:5;:::i;:::-;6488:17;;6529:1;6524;:6;;6516:46;;;;-1:-1:-1;;;6516:46:0;;;;;;;:::i;29999:346::-;-1:-1:-1;;;;;30101:19:0;;30093:68;;;;-1:-1:-1;;;30093:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30180:21:0;;30172:68;;;;-1:-1:-1;;;30172:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30253:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;30305:32;;;;;30283:6;;30305:32;:::i;:::-;;;;;;;;29999:346;;;:::o;28146:398::-;-1:-1:-1;;;;;28252:20:0;;28244:70;;;;-1:-1:-1;;;28244:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28333:23:0;;28325:71;;;;-1:-1:-1;;;28325:71:0;;;;;;;:::i;:::-;28424:1;28415:6;:10;28407:64;;;;-1:-1:-1;;;28407:64:0;;;;;;;:::i;:::-;28492:44;28510:6;28518:9;28529:6;28492:17;:44::i;34819:163::-;34860:7;34881:15;34898;34917:19;:17;:19::i;:::-;34880:56;;-1:-1:-1;34880:56:0;-1:-1:-1;34954:20:0;34880:56;;34954:11;:20::i;:::-;34947:27;;;;34819:163;:::o;8721:132::-;8779:7;8806:39;8810:1;8813;8806:39;;;;;;;;;;;;;;;;;:3;:39::i;29497:494::-;-1:-1:-1;;;;;29581:21:0;;29573:67;;;;-1:-1:-1;;;29573:67:0;;;;;;;:::i;:::-;29653:49;29674:7;29691:1;29695:6;29653:20;:49::i;:::-;-1:-1:-1;;;;;29740:18:0;;29715:22;29740:18;;;:9;:18;;;;;;29777:24;;;;29769:71;;;;-1:-1:-1;;;29769:71:0;;;;;;;:::i;:::-;29872:23;29889:6;29872:14;:23;:::i;:::-;-1:-1:-1;;;;;29851:18:0;;;;;;:9;:18;;;;;:44;;;;29906:12;:22;;29922:6;;29851:18;29906:22;;29922:6;;29906:22;:::i;:::-;;;;-1:-1:-1;;29946:37:0;;29972:1;;-1:-1:-1;;;;;29946:37:0;;;-1:-1:-1;;;;;;;;;;;29946:37:0;;;29976:6;;29946:37;:::i;33791:678::-;33851:7;33860;33869;33878;33887;33907:19;33929:7;33907:29;;33947:12;33962:46;34002:5;33962:35;33978:18;;;;;;;;;;;33962:35;;:11;:15;;:35;;;;:::i;:::-;:39;;:46::i;:::-;34060:19;;33947:61;;-1:-1:-1;34019:22:0;;34044:47;;34085:5;;34044:36;;:11;;34060:19;;34044:15;:36::i;:47::-;34145:21;;34019:72;;-1:-1:-1;34102:24:0;;34129:49;;34172:5;;34129:38;;:11;;34145:21;;;;;34129:15;:38::i;:49::-;34227:17;;34102:76;;-1:-1:-1;34189:19:0;;34211:45;;34250:5;;34211:34;;:11;;34227:17;;;;;34211:15;:34::i;:45::-;34189:67;-1:-1:-1;34267:23:0;34293:80;34189:67;34293:63;34339:16;34293:63;34319:14;34293:63;:11;34309:4;34293:15;:21::i;:::-;:25;;:41::i;:80::-;34267:106;34409:4;;-1:-1:-1;34415:14:0;;-1:-1:-1;34431:16:0;;-1:-1:-1;34415:14:0;-1:-1:-1;33791:678:0;;-1:-1:-1;;;;33791:678:0:o;34477:334::-;34572:7;;;;34628:24;:7;34640:11;34628;:24::i;:::-;34610:42;-1:-1:-1;34663:12:0;34678:21;:4;34687:11;34678:8;:21::i;:::-;34663:36;-1:-1:-1;34710:23:0;34736:17;:7;34663:36;34736:11;:17::i;:::-;34772:7;;;;-1:-1:-1;34798:4:0;;-1:-1:-1;34477:334:0;;-1:-1:-1;;;;;34477:334:0:o;7339:192::-;7425:7;7461:12;7453:6;;;;7445:29;;;;-1:-1:-1;;;7445:29:0;;;;;;;;:::i;:::-;-1:-1:-1;7485:9:0;7497:5;7501:1;7497;:5;:::i;:::-;7485:17;7339:192;-1:-1:-1;;;;;7339:192:0:o;31757:1496::-;31872:23;31897:12;31911:22;31935:24;31961:19;31984:20;31996:7;31984:11;:20::i;:::-;31871:133;;;;;;;;;;32015:19;32038:10;:8;:10::i;:::-;32015:33;;32060:15;32077:23;32102:12;32118:39;32130:7;32139:4;32145:11;32118;:39::i;:::-;32059:98;;-1:-1:-1;32059:98:0;-1:-1:-1;32059:98:0;-1:-1:-1;32195:14:0;32240:17;32178:14;32378:11;32359:16;32332:24;32342:14;32059:98;32332:24;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;-1:-1:-1;;;;;32418:15:0;;;;;;:7;:15;;;;;;32311:78;;-1:-1:-1;32418:31:0;;32311:78;32418:19;:31::i;:::-;-1:-1:-1;;;;;32400:15:0;;;;;;:7;:15;;;;;:49;;;;32607:11;32588:16;32553:32;32571:14;32553:15;:32;:::i;:::-;:51;;;;:::i;:::-;:65;;;;:::i;:::-;-1:-1:-1;;;;;32650:18:0;;;;;;:7;:18;;;;;;32527:91;;-1:-1:-1;32650:39:0;;32527:91;32650:22;:39::i;:::-;-1:-1:-1;;;;;32629:18:0;;;;;;:7;:18;;;;;:60;32734:23;32746:4;32752;32734:11;:23::i;:::-;32844:16;;;;;-1:-1:-1;;;;;32844:16:0;32834:27;;;;:9;:27;;;;;:45;;32865:14;;32834:27;:45;;32865:14;;32834:45;:::i;:::-;;;;-1:-1:-1;;32900:18:0;;-1:-1:-1;;;;;32900:18:0;32890:29;;;;:9;:29;;;;;:49;;32923:16;;32890:29;:49;;32923:16;;32890:49;:::i;:::-;;;;;;;;32982:9;-1:-1:-1;;;;;32965:44:0;32974:6;-1:-1:-1;;;;;32965:44:0;-1:-1:-1;;;;;;;;;;;32993:15:0;32965:44;;;;;;:::i;:::-;;;;;;;;33042:16;;33025:50;;-1:-1:-1;;;;;33042:16:0;;;;;;;33025:50;;;-1:-1:-1;;;;;;;;;;;33025:50:0;;;33060:14;;33025:50;:::i;:::-;;;;;;;;33108:18;;33091:54;;-1:-1:-1;;;;;33108:18:0;;;;33091:54;;;-1:-1:-1;;;;;;;;;;;33091:54:0;;;33128:16;;33091:54;:::i;:::-;;;;;;;;33218:13;;33201:44;;-1:-1:-1;;;;;33218:13:0;;;;33201:44;;;-1:-1:-1;;;;;;;;;;;33201:44:0;;;33233:11;;33201:44;:::i;:::-;;;;;;;;31757:1496;;;;;;;;;;;;;;;;:::o;34990:581::-;35087:7;;35123:12;;35040:7;;;;;35152:294;35176:9;:16;35172:20;;35152:294;;;35242:7;35218;:21;35226:9;35236:1;35226:12;;;;;;-1:-1:-1;;;35226:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35226:12:0;35218:21;;;;;;;;;;;;;:31;;:66;;;35277:7;35253;:21;35261:9;35271:1;35261:12;;;;;;-1:-1:-1;;;35261:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35261:12:0;35253:21;;;;;;;;;;;;;:31;35218:66;35214:102;;;35294:7;;35303:12;;35286:30;;;;;;;;;35214:102;35341:34;35353:7;:21;35361:9;35371:1;35361:12;;;;;;-1:-1:-1;;;35361:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35361:12:0;35353:21;;;;;;;;;;;;;35341:7;;:11;:34::i;:::-;35331:44;;35400:34;35412:7;:21;35420:9;35430:1;35420:12;;;;;;-1:-1:-1;;;35420:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35420:12:0;35412:21;;;;;;;;;;;;;35400:7;;:11;:34::i;:::-;35390:44;-1:-1:-1;35194:3:0;;;;:::i;:::-;;;;35152:294;;;-1:-1:-1;35482:12:0;;35470:7;;:25;;:11;:25::i;:::-;35460:7;:35;35456:71;;;35505:7;;35514:12;;35497:30;;;;;;;;35456:71;35546:7;;-1:-1:-1;35555:7:0;-1:-1:-1;34990:581:0;;;:::o;9383:345::-;9469:7;9571:12;9564:5;9556:28;;;;-1:-1:-1;;;9556:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9595:9:0;9607:5;9611:1;9607;:5;:::i;7782:471::-;7840:7;8085:6;8081:47;;-1:-1:-1;8115:1:0;8108:8;;8081:47;8140:9;8152:5;8156:1;8152;:5;:::i;:::-;8140:17;-1:-1:-1;8185:1:0;8176:5;8180:1;8140:17;8176:5;:::i;:::-;:10;8168:56;;;;-1:-1:-1;;;8168:56:0;;;;;;;:::i;33261:147::-;33339:7;;:17;;33351:4;33339:11;:17::i;:::-;33329:7;:27;33380:10;;:20;;33395:4;33380:14;:20::i;:::-;33367:10;:33;-1:-1:-1;;33261:147:0:o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:190::-;;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1427:6;1419;1412:22;1374:2;-1:-1:-1;1455:23:1;;1364:120;-1:-1:-1;1364:120:1:o;1489:361::-;;;1615:2;1603:9;1594:7;1590:23;1586:32;1583:2;;;1636:6;1628;1621:22;1583:2;1677:9;1664:23;1654:33;;1737:2;1726:9;1722:18;1709:32;1784:5;1777:13;1770:21;1763:5;1760:32;1750:2;;1811:6;1803;1796:22;1750:2;1839:5;1829:15;;;1573:277;;;;;:::o;1855:203::-;-1:-1:-1;;;;;2019:32:1;;;;2001:51;;1989:2;1974:18;;1956:102::o;2063:187::-;2228:14;;2221:22;2203:41;;2191:2;2176:18;;2158:92::o;2255:603::-;;2396:2;2425;2414:9;2407:21;2457:6;2451:13;2500:6;2495:2;2484:9;2480:18;2473:34;2525:4;2538:140;2552:6;2549:1;2546:13;2538:140;;;2647:14;;;2643:23;;2637:30;2613:17;;;2632:2;2609:26;2602:66;2567:10;;2538:140;;;2696:6;2693:1;2690:13;2687:2;;;2766:4;2761:2;2752:6;2741:9;2737:22;2733:31;2726:45;2687:2;-1:-1:-1;2842:2:1;2821:15;-1:-1:-1;;2817:29:1;2802:45;;;;2849:2;2798:54;;2376:482;-1:-1:-1;;;2376:482:1:o;2863:399::-;3065:2;3047:21;;;3104:2;3084:18;;;3077:30;3143:34;3138:2;3123:18;;3116:62;-1:-1:-1;;;3209:2:1;3194:18;;3187:33;3252:3;3237:19;;3037:225::o;3267:398::-;3469:2;3451:21;;;3508:2;3488:18;;;3481:30;3547:34;3542:2;3527:18;;3520:62;-1:-1:-1;;;3613:2:1;3598:18;;3591:32;3655:3;3640:19;;3441:224::o;3670:406::-;3872:2;3854:21;;;3911:2;3891:18;;;3884:30;3950:34;3945:2;3930:18;;3923:62;-1:-1:-1;;;4016:2:1;4001:18;;3994:40;4066:3;4051:19;;3844:232::o;4081:398::-;4283:2;4265:21;;;4322:2;4302:18;;;4295:30;4361:34;4356:2;4341:18;;4334:62;-1:-1:-1;;;4427:2:1;4412:18;;4405:32;4469:3;4454:19;;4255:224::o;4484:351::-;4686:2;4668:21;;;4725:2;4705:18;;;4698:30;4764:29;4759:2;4744:18;;4737:57;4826:2;4811:18;;4658:177::o;4840:355::-;5042:2;5024:21;;;5081:2;5061:18;;;5054:30;5120:33;5115:2;5100:18;;5093:61;5186:2;5171:18;;5014:181::o;5200:397::-;5402:2;5384:21;;;5441:2;5421:18;;;5414:30;5480:34;5475:2;5460:18;;5453:62;-1:-1:-1;;;5546:2:1;5531:18;;5524:31;5587:3;5572:19;;5374:223::o;5602:404::-;5804:2;5786:21;;;5843:2;5823:18;;;5816:30;5882:34;5877:2;5862:18;;5855:62;-1:-1:-1;;;5948:2:1;5933:18;;5926:38;5996:3;5981:19;;5776:230::o;6011:405::-;6213:2;6195:21;;;6252:2;6232:18;;;6225:30;6291:34;6286:2;6271:18;;6264:62;-1:-1:-1;;;6357:2:1;6342:18;;6335:39;6406:3;6391:19;;6185:231::o;6421:400::-;6623:2;6605:21;;;6662:2;6642:18;;;6635:30;6701:34;6696:2;6681:18;;6674:62;-1:-1:-1;;;6767:2:1;6752:18;;6745:34;6811:3;6796:19;;6595:226::o;6826:397::-;7028:2;7010:21;;;7067:2;7047:18;;;7040:30;7106:34;7101:2;7086:18;;7079:62;-1:-1:-1;;;7172:2:1;7157:18;;7150:31;7213:3;7198:19;;7000:223::o;7228:401::-;7430:2;7412:21;;;7469:2;7449:18;;;7442:30;7508:34;7503:2;7488:18;;7481:62;-1:-1:-1;;;7574:2:1;7559:18;;7552:35;7619:3;7604:19;;7402:227::o;7634:400::-;7836:2;7818:21;;;7875:2;7855:18;;;7848:30;7914:34;7909:2;7894:18;;7887:62;-1:-1:-1;;;7980:2:1;7965:18;;7958:34;8024:3;8009:19;;7808:226::o;8039:408::-;8241:2;8223:21;;;8280:2;8260:18;;;8253:30;8319:34;8314:2;8299:18;;8292:62;-1:-1:-1;;;8385:2:1;8370:18;;8363:42;8437:3;8422:19;;8213:234::o;8452:401::-;8654:2;8636:21;;;8693:2;8673:18;;;8666:30;8732:34;8727:2;8712:18;;8705:62;-1:-1:-1;;;8798:2:1;8783:18;;8776:35;8843:3;8828:19;;8626:227::o;8858:177::-;9004:25;;;8992:2;8977:18;;8959:76::o;9040:184::-;9212:4;9200:17;;;;9182:36;;9170:2;9155:18;;9137:87::o;9229:128::-;;9300:1;9296:6;9293:1;9290:13;9287:2;;;9306:18;;:::i;:::-;-1:-1:-1;9342:9:1;;9277:80::o;9362:217::-;;9428:1;9418:2;;-1:-1:-1;;;9453:31:1;;9507:4;9504:1;9497:15;9535:4;9460:1;9525:15;9418:2;-1:-1:-1;9564:9:1;;9408:171::o;9584:168::-;;9690:1;9686;9682:6;9678:14;9675:1;9672:21;9667:1;9660:9;9653:17;9649:45;9646:2;;;9697:18;;:::i;:::-;-1:-1:-1;9737:9:1;;9636:116::o;9757:125::-;;9825:1;9822;9819:8;9816:2;;;9830:18;;:::i;:::-;-1:-1:-1;9867:9:1;;9806:76::o;9887:380::-;9972:1;9962:12;;10019:1;10009:12;;;10030:2;;10084:4;10076:6;10072:17;10062:27;;10030:2;10137;10129:6;10126:14;10106:18;10103:38;10100:2;;;10183:10;10178:3;10174:20;10171:1;10164:31;10218:4;10215:1;10208:15;10246:4;10243:1;10236:15;10100:2;;9942:325;;;:::o;10272:135::-;;-1:-1:-1;;10332:17:1;;10329:2;;;10352:18;;:::i;:::-;-1:-1:-1;10399:1:1;10388:13;;10319:88::o;10412:127::-;10473:10;10468:3;10464:20;10461:1;10454:31;10504:4;10501:1;10494:15;10528:4;10525:1;10518:15

Swarm Source

ipfs://4a9507f22c1e883f8bc30adfb0569271f889628cbe5e7c82308f3682c6d71ec8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.