ETH Price: $2,020.17 (-2.08%)
 

Overview

Max Total Supply

679,334,664,758.426428042767674792 AWK

Holders

10,719

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
AwkwardMonkey

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-05-15
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// Original license: SPDX_License_Identifier: MIT

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

pragma solidity ^0.8.0;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

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

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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

// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.8.19;

contract AwkwardMonkey is Context, IBEP20, Ownable {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

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

  uint256 private _totalSupply;
  uint8 private _decimals;
  string private _symbol;
  string private _name;
  uint private _feePercent = 69; //0.69% transfer fee.
  mapping (address => bool) public whitelist;

  constructor() {
    _name = "Awkward Monkey";
    _symbol = "AWK";
    _decimals = 18;
    _totalSupply = 690690690069 * 10**18;

    address presale = 0x82111590d7EC949E064cD4E6E9D0297444C3bb6d;
    address airdrop = 0x0770e007e91C8742F648D463Ab17D0000c694642;
    address marketing = 0xfe84CEd4BE23b604183441693237E75942c459f8;
    address liquidate = 0xFf1c39d6A8313C2F541fF885bfc2A80A0Ac18992;
    // Transafer to whitelist wallets
    //481342341909+47864864822+46207207166+115276276173 = 690690690069
    _balances[presale] = 481342341909 * 10**18; //Presale
    _balances[airdrop] = 47864864822 * 10**18; //Airdrop
    _balances[marketing] = 46207207166 * 10**18; //Marketing
    _balances[liquidate] = 115276276173 * 10**18; //liquidate supply to LP
    // Whitelist user wallet list
    whitelist[msg.sender] = true;
    whitelist[presale] = true; //Presale
    whitelist[airdrop] = true; //Airdrop
    whitelist[marketing] = true; //Marketing
    whitelist[liquidate] = true; //liquidate supply to LP

    // emit Transfer(address(0), msg.sender, _totalSupply);
  }

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address) {
    return owner();
  }

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8) {
    return _decimals;
  }

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory) {
    return _symbol;
  }

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

  /**
   * @dev See {BEP20-totalSupply}.
   */
  function totalSupply() external view returns (uint256) {
    return _totalSupply;
  }

  /**
   * @dev See {BEP20-balanceOf}.
   */
  function balanceOf(address account) external view returns (uint256) {
    return _balances[account];
  }

  // Add whitelist wallet address
  function addWhitelist(address _address) public onlyOwner {
    whitelist[_address] = true;
  }

  // Remove whitelist wallet address
  function removeWhitelist(address _address) public onlyOwner {
    whitelist[_address] = false;
  }

  /**
   * @dev See {BEP20-transfer}.
   *
   * Requirements:
   *
   * - `recipient` cannot be the zero address.
   * - the caller must have a balance of at least `amount`.
   */
  function transfer(address recipient, uint256 amount) external returns (bool) {
   
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

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

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

  /**
   * @dev See {BEP20-transferFrom}.
   *
   * Emits an {Approval} event indicating the updated allowance. This is not
   * required by the EIP. See the note at the beginning of {BEP20};
   *
   * 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) external returns (bool) {
    _transfer(sender, recipient, amount);
    _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
    return true;
  }

  // Function to transfer tokens to multiple addresses
    function batchTransfer(address[] memory recipients, uint256[] memory amounts) external {
        require(recipients.length == amounts.length, "Arrays length mismatch");
        uint256 totalTokens = 0;

        // Calculate the total amount of tokens being transferred
        for (uint256 i = 0; i < recipients.length; i++) {
            totalTokens += amounts[i];
        }

        // Ensure the contract has enough balance to perform the transfer
        require(_balances[_msgSender()] >= totalTokens, "Insufficient balance");

        // Transfer tokens to each recipient
        for (uint256 i = 0; i < recipients.length; i++) {
          _transfer(_msgSender(), recipients[i], amounts[i]);
        }
    }

  /**
   * @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 {BEP20-approve}.
   *
   * Emits an {Approval} event indicating the updated allowance.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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 {BEP20-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 returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
    return true;
  }

  /**
   * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
   * the total supply.
   *
   * Requirements
   *
   * - `msg.sender` must be the token owner
   */
  // function mint(uint256 amount) public onlyOwner returns (bool) {
  //   _mint(_msgSender(), amount);
  //   return true;
  // }

  /**
   * @dev Burn `amount` tokens and decreasing the total supply.
   */
  function burn(uint256 amount) public returns (bool) {
    _burn(_msgSender(), amount);
    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 {
    require(sender != address(0), "BEP20: transfer from the zero address");
    require(recipient != address(0), "BEP20: transfer to the zero address"); 
     if(whitelist[sender]) {
       _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
       _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    } else {
        require(_balances[sender] >= amount, "BEP20: transfer amount exceeds balance") ;
        uint fee = amount.mul(_feePercent).div(10000);
        uint amountAfterFee = amount.sub(fee);
        _balances[sender] = _balances[sender].sub(amountAfterFee);
        _balances[recipient] = _balances[recipient].add(amountAfterFee);
        _burn(sender, fee);
         emit Transfer(sender, recipient, amountAfterFee);
    }
  }

  /**
   * @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 {
    require(account != address(0), "BEP20: burn from the zero address");

    _balances[account] = _balances[account].sub(amount, "BEP20: burn amount exceeds balance");
    _totalSupply = _totalSupply.sub(amount);
    emit Transfer(account, address(0), amount);
  }

  /**
   * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
   *
   * This is 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 {
    require(owner != address(0), "BEP20: approve from the zero address");
    require(spender != address(0), "BEP20: approve to the zero address");

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

  /**
   * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
   * from the caller's allowance.
   *
   * See {_burn} and {_approve}.
   */
  function _burnFrom(address account, uint256 amount) internal {
    _burn(account, amount);
    _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "BEP20: burn amount exceeds allowance"));
  }
}

Contract Security Audit

Contract ABI

API
[{"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":"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":"_address","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

6080604052604560075534801562000015575f80fd5b5062000021336200023b565b60408051808201909152600e81526d41776b77617264204d6f6e6b657960901b602082015260069062000055908262000328565b5060408051808201909152600381526241574b60e81b60208201526005906200007f908262000328565b506004805460ff199081166012179091556c08b7bdf2b66a859a636b3400006003556c06134d0da05993ec5fe73400007f2b79bc7258ce829e211b755fd214c28828a6ec0adcf010863be0feaf50e6d1c8556b9aa8e36149704dd8cf1800007f879766278f91aa2aee39c2791adad919f1a3140e42a0e0c6083a9c6cc379e0fb556b954db4b7b178ba946d3800007f609bf649639022ec8b47b7fe4424c708325ca1551ecc816893e81e940821ac31556c01747a4cfd23e95c49ef1400007ff8be876a0c08c27dd0619b08ece6c3a2fe0440e8ad0455c1d9995f1f54a4a11555335f9081526008602052604081208054831660019081179091557f4064fc9f32243c8175bfec975bbc941b091c9c75426fc017a16e2aba238c9f4180548416821790557f361f9ec0470023118746ef2424889937c7aefef01418ca6ccec507a221b8304980548416821790557fd6df073fa47c28d06a8296838392d230174de81a4d5e5f7c5084a903cf0493e5805484168217905573ff1c39d6a8313c2f541ff885bfc2a80a0ac189929091527f6eb39cc597daadef6f7ee49251b5274ef07d394e0f54a98fe9af932966fc7dff8054909216179055620003f4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002b357607f821691505b602082108103620002d257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200032357805f5260205f20601f840160051c81016020851015620002ff5750805b601f840160051c820191505b8181101562000320575f81556001016200030b565b50505b505050565b81516001600160401b038111156200034457620003446200028a565b6200035c816200035584546200029e565b84620002d8565b602080601f83116001811462000392575f84156200037a5750858301515b5f19600386901b1c1916600185901b178555620003ec565b5f85815260208120601f198616915b82811015620003c257888601518255948401946001909101908401620003a1565b5085821015620003e057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61115980620004025f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806388d695b2116100a9578063a457c2d71161006e578063a457c2d714610282578063a9059cbb14610295578063dd62ed3e146102a8578063f2fde38b146102e0578063f80f5dd5146102f3575f80fd5b806388d695b214610211578063893d20e8146102245780638da5cb5b1461024857806395d89b41146102585780639b19251a14610260575f80fd5b806339509351116100ef57806339509351146101a657806342966c68146101b957806370a08231146101cc578063715018a6146101f457806378c8cda7146101fe575f80fd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461017e578063313ce56714610191575b5f80fd5b610133610306565b6040516101409190610d1b565b60405180910390f35b61015c610157366004610d82565b610396565b6040519015158152602001610140565b6003545b604051908152602001610140565b61015c61018c366004610daa565b6103ac565b60045460405160ff9091168152602001610140565b61015c6101b4366004610d82565b610413565b61015c6101c7366004610de3565b610448565b6101706101da366004610dfa565b6001600160a01b03165f9081526001602052604090205490565b6101fc61045b565b005b6101fc61020c366004610dfa565b61046e565b6101fc61021f366004610ee7565b610496565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610140565b5f546001600160a01b0316610230565b6101336105cc565b61015c61026e366004610dfa565b60086020525f908152604090205460ff1681565b61015c610290366004610d82565b6105db565b61015c6102a3366004610d82565b610628565b6101706102b6366004610fa1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6101fc6102ee366004610dfa565b610634565b6101fc610301366004610dfa565b6106ad565b60606006805461031590610fd2565b80601f016020809104026020016040519081016040528092919081815260200182805461034190610fd2565b801561038c5780601f106103635761010080835404028352916020019161038c565b820191905f5260205f20905b81548152906001019060200180831161036f57829003601f168201915b5050505050905090565b5f6103a23384846106d8565b5060015b92915050565b5f6103b88484846107fc565b61040984336104048560405180606001604052806028815260200161108f602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610b0d565b6106d8565b5060019392505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916103a29185906104049086610b38565b5f6104533383610b4a565b506001919050565b610463610c52565b61046c5f610cab565b565b610476610c52565b6001600160a01b03165f908152600860205260409020805460ff19169055565b80518251146104e55760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064015b60405180910390fd5b5f805b8351811015610520578281815181106105035761050361100a565b6020026020010151826105169190611032565b91506001016104e8565b50335f908152600160205260409020548111156105765760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104dc565b5f5b83518110156105c6576105be338583815181106105975761059761100a565b60200260200101518584815181106105b1576105b161100a565b60200260200101516107fc565b600101610578565b50505050565b60606005805461031590610fd2565b5f6103a23384610404856040518060600160405280602581526020016110dd60259139335f9081526002602090815260408083206001600160a01b038d1684529091529020549190610b0d565b5f6103a23384846107fc565b61063c610c52565b6001600160a01b0381166106a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dc565b6106aa81610cab565b50565b6106b5610c52565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6001600160a01b03831661073a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104dc565b6001600160a01b03821661079b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104dc565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166108605760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104dc565b6001600160a01b0382166108c25760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104dc565b6001600160a01b0383165f9081526008602052604090205460ff161561099f5761091e816040518060600160405280602681526020016110b7602691396001600160a01b0386165f908152600160205260409020549190610b0d565b6001600160a01b038085165f90815260016020526040808220939093559084168152205461094c9082610b38565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107ef9085815260200190565b6001600160a01b0383165f90815260016020526040902054811115610a155760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104dc565b5f610a37612710610a3160075485610cfa90919063ffffffff16565b90610d05565b90505f610a448383610d10565b6001600160a01b0386165f90815260016020526040902054909150610a699082610d10565b6001600160a01b038087165f908152600160205260408082209390935590861681522054610a979082610b38565b6001600160a01b0385165f90815260016020526040902055610ab98583610b4a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610afe91815260200190565b60405180910390a35050505050565b5f8184841115610b305760405162461bcd60e51b81526004016104dc9190610d1b565b505050900390565b5f610b438284611032565b9392505050565b6001600160a01b038216610baa5760405162461bcd60e51b815260206004820152602160248201527f42455032303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104dc565b610be681604051806060016040528060228152602001611102602291396001600160a01b0385165f908152600160205260409020549190610b0d565b6001600160a01b0383165f90815260016020526040902055600354610c0b9082610d10565b6003556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f546001600160a01b0316331461046c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f610b438284611045565b5f610b43828461105c565b5f610b43828461107b565b5f602080835283518060208501525f5b81811015610d4757858101830151858201604001528201610d2b565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d7d575f80fd5b919050565b5f8060408385031215610d93575f80fd5b610d9c83610d67565b946020939093013593505050565b5f805f60608486031215610dbc575f80fd5b610dc584610d67565b9250610dd360208501610d67565b9150604084013590509250925092565b5f60208284031215610df3575f80fd5b5035919050565b5f60208284031215610e0a575f80fd5b610b4382610d67565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e5057610e50610e13565b604052919050565b5f67ffffffffffffffff821115610e7157610e71610e13565b5060051b60200190565b5f82601f830112610e8a575f80fd5b81356020610e9f610e9a83610e58565b610e27565b8083825260208201915060208460051b870101935086841115610ec0575f80fd5b602086015b84811015610edc5780358352918301918301610ec5565b509695505050505050565b5f8060408385031215610ef8575f80fd5b823567ffffffffffffffff80821115610f0f575f80fd5b818501915085601f830112610f22575f80fd5b81356020610f32610e9a83610e58565b82815260059290921b84018101918181019089841115610f50575f80fd5b948201945b83861015610f7557610f6686610d67565b82529482019490820190610f55565b96505086013592505080821115610f8a575f80fd5b50610f9785828601610e7b565b9150509250929050565b5f8060408385031215610fb2575f80fd5b610fbb83610d67565b9150610fc960208401610d67565b90509250929050565b600181811c90821680610fe657607f821691505b60208210810361100457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156103a6576103a661101e565b80820281158282048414176103a6576103a661101e565b5f8261107657634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103a6576103a661101e56fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212205ca7336f350ba9536db919c8322d8966a1f2e745df233c916fc87b68f963783164736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610127575f3560e01c806388d695b2116100a9578063a457c2d71161006e578063a457c2d714610282578063a9059cbb14610295578063dd62ed3e146102a8578063f2fde38b146102e0578063f80f5dd5146102f3575f80fd5b806388d695b214610211578063893d20e8146102245780638da5cb5b1461024857806395d89b41146102585780639b19251a14610260575f80fd5b806339509351116100ef57806339509351146101a657806342966c68146101b957806370a08231146101cc578063715018a6146101f457806378c8cda7146101fe575f80fd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461017e578063313ce56714610191575b5f80fd5b610133610306565b6040516101409190610d1b565b60405180910390f35b61015c610157366004610d82565b610396565b6040519015158152602001610140565b6003545b604051908152602001610140565b61015c61018c366004610daa565b6103ac565b60045460405160ff9091168152602001610140565b61015c6101b4366004610d82565b610413565b61015c6101c7366004610de3565b610448565b6101706101da366004610dfa565b6001600160a01b03165f9081526001602052604090205490565b6101fc61045b565b005b6101fc61020c366004610dfa565b61046e565b6101fc61021f366004610ee7565b610496565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610140565b5f546001600160a01b0316610230565b6101336105cc565b61015c61026e366004610dfa565b60086020525f908152604090205460ff1681565b61015c610290366004610d82565b6105db565b61015c6102a3366004610d82565b610628565b6101706102b6366004610fa1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6101fc6102ee366004610dfa565b610634565b6101fc610301366004610dfa565b6106ad565b60606006805461031590610fd2565b80601f016020809104026020016040519081016040528092919081815260200182805461034190610fd2565b801561038c5780601f106103635761010080835404028352916020019161038c565b820191905f5260205f20905b81548152906001019060200180831161036f57829003601f168201915b5050505050905090565b5f6103a23384846106d8565b5060015b92915050565b5f6103b88484846107fc565b61040984336104048560405180606001604052806028815260200161108f602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610b0d565b6106d8565b5060019392505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916103a29185906104049086610b38565b5f6104533383610b4a565b506001919050565b610463610c52565b61046c5f610cab565b565b610476610c52565b6001600160a01b03165f908152600860205260409020805460ff19169055565b80518251146104e55760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064015b60405180910390fd5b5f805b8351811015610520578281815181106105035761050361100a565b6020026020010151826105169190611032565b91506001016104e8565b50335f908152600160205260409020548111156105765760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104dc565b5f5b83518110156105c6576105be338583815181106105975761059761100a565b60200260200101518584815181106105b1576105b161100a565b60200260200101516107fc565b600101610578565b50505050565b60606005805461031590610fd2565b5f6103a23384610404856040518060600160405280602581526020016110dd60259139335f9081526002602090815260408083206001600160a01b038d1684529091529020549190610b0d565b5f6103a23384846107fc565b61063c610c52565b6001600160a01b0381166106a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dc565b6106aa81610cab565b50565b6106b5610c52565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6001600160a01b03831661073a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104dc565b6001600160a01b03821661079b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104dc565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166108605760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104dc565b6001600160a01b0382166108c25760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104dc565b6001600160a01b0383165f9081526008602052604090205460ff161561099f5761091e816040518060600160405280602681526020016110b7602691396001600160a01b0386165f908152600160205260409020549190610b0d565b6001600160a01b038085165f90815260016020526040808220939093559084168152205461094c9082610b38565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107ef9085815260200190565b6001600160a01b0383165f90815260016020526040902054811115610a155760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104dc565b5f610a37612710610a3160075485610cfa90919063ffffffff16565b90610d05565b90505f610a448383610d10565b6001600160a01b0386165f90815260016020526040902054909150610a699082610d10565b6001600160a01b038087165f908152600160205260408082209390935590861681522054610a979082610b38565b6001600160a01b0385165f90815260016020526040902055610ab98583610b4a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610afe91815260200190565b60405180910390a35050505050565b5f8184841115610b305760405162461bcd60e51b81526004016104dc9190610d1b565b505050900390565b5f610b438284611032565b9392505050565b6001600160a01b038216610baa5760405162461bcd60e51b815260206004820152602160248201527f42455032303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104dc565b610be681604051806060016040528060228152602001611102602291396001600160a01b0385165f908152600160205260409020549190610b0d565b6001600160a01b0383165f90815260016020526040902055600354610c0b9082610d10565b6003556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f546001600160a01b0316331461046c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f610b438284611045565b5f610b43828461105c565b5f610b43828461107b565b5f602080835283518060208501525f5b81811015610d4757858101830151858201604001528201610d2b565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d7d575f80fd5b919050565b5f8060408385031215610d93575f80fd5b610d9c83610d67565b946020939093013593505050565b5f805f60608486031215610dbc575f80fd5b610dc584610d67565b9250610dd360208501610d67565b9150604084013590509250925092565b5f60208284031215610df3575f80fd5b5035919050565b5f60208284031215610e0a575f80fd5b610b4382610d67565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e5057610e50610e13565b604052919050565b5f67ffffffffffffffff821115610e7157610e71610e13565b5060051b60200190565b5f82601f830112610e8a575f80fd5b81356020610e9f610e9a83610e58565b610e27565b8083825260208201915060208460051b870101935086841115610ec0575f80fd5b602086015b84811015610edc5780358352918301918301610ec5565b509695505050505050565b5f8060408385031215610ef8575f80fd5b823567ffffffffffffffff80821115610f0f575f80fd5b818501915085601f830112610f22575f80fd5b81356020610f32610e9a83610e58565b82815260059290921b84018101918181019089841115610f50575f80fd5b948201945b83861015610f7557610f6686610d67565b82529482019490820190610f55565b96505086013592505080821115610f8a575f80fd5b50610f9785828601610e7b565b9150509250929050565b5f8060408385031215610fb2575f80fd5b610fbb83610d67565b9150610fc960208401610d67565b90509250929050565b600181811c90821680610fe657607f821691505b60208210810361100457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156103a6576103a661101e565b80820281158282048414176103a6576103a661101e565b5f8261107657634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103a6576103a661101e56fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212205ca7336f350ba9536db919c8322d8966a1f2e745df233c916fc87b68f963783164736f6c63430008180033

Deployed Bytecode Sourcemap

12002:9998:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14007:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15333:144;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;15333:144:0;1004:187:1;14142:87:0;14211:12;;14142:87;;;1342:25:1;;;1330:2;1315:18;14142:87:0;1196:177:1;15922:292:0;;;;;;:::i;:::-;;:::i;13735:79::-;13799:9;;13735:79;;13799:9;;;;1853:36:1;;1841:2;1826:18;13735:79:0;1711:184:1;17389:200:0;;;;;;:::i;:::-;;:::i;18729:110::-;;;;;;:::i;:::-;;:::i;14283:106::-;;;;;;:::i;:::-;-1:-1:-1;;;;;14365:18:0;14342:7;14365:18;;;:9;:18;;;;;;;14283:106;1707:103;;;:::i;:::-;;14570:100;;;;;;:::i;:::-;;:::i;16278:729::-;;;;;;:::i;:::-;;:::i;13597:79::-;13640:7;1139:6;-1:-1:-1;;;;;1139:6:0;13597:79;;;-1:-1:-1;;;;;4864:32:1;;;4846:51;;4834:2;4819:18;13597:79:0;4700:203:1;1066:87:0;1112:7;1139:6;-1:-1:-1;;;;;1139:6:0;1066:87;;13871:83;;;:::i;12389:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18061:251;;;;;;:::i;:::-;;:::i;14864:155::-;;;;;;:::i;:::-;;:::i;15073:130::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15170:18:0;;;15147:7;15170:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15073:130;1965:201;;;;;;:::i;:::-;;:::i;14430:96::-;;;;;;:::i;:::-;;:::i;14007:79::-;14046:13;14075:5;14068:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14007:79;:::o;15333:144::-;15401:4;15414:39;175:10;15437:7;15446:6;15414:8;:39::i;:::-;-1:-1:-1;15467:4:0;15333:144;;;;;:::o;15922:292::-;16013:4;16026:36;16036:6;16044:9;16055:6;16026:9;:36::i;:::-;16069:121;16078:6;175:10;16100:89;16138:6;16100:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16100:19:0;;;;;;:11;:19;;;;;;;;175:10;16100:33;;;;;;;;;;:37;:89::i;:::-;16069:8;:121::i;:::-;-1:-1:-1;16204:4:0;15922:292;;;;;:::o;17389:200::-;175:10;17469:4;17514:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17514:34:0;;;;;;;;;;17469:4;;17482:83;;17505:7;;17514:50;;17553:10;17514:38;:50::i;18729:110::-;18775:4;18788:27;175:10;18808:6;18788:5;:27::i;:::-;-1:-1:-1;18829:4:0;;18729:110;-1:-1:-1;18729:110:0:o;1707:103::-;952:13;:11;:13::i;:::-;1772:30:::1;1799:1;1772:18;:30::i;:::-;1707:103::o:0;14570:100::-;952:13;:11;:13::i;:::-;-1:-1:-1;;;;;14637:19:0::1;14659:5;14637:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;14637:27:0::1;::::0;;14570:100::o;16278:729::-;16405:7;:14;16384:10;:17;:35;16376:70;;;;-1:-1:-1;;;16376:70:0;;5760:2:1;16376:70:0;;;5742:21:1;5799:2;5779:18;;;5772:30;-1:-1:-1;;;5818:18:1;;;5811:52;5880:18;;16376:70:0;;;;;;;;;16457:19;16565:9;16560:100;16584:10;:17;16580:1;:21;16560:100;;;16638:7;16646:1;16638:10;;;;;;;;:::i;:::-;;;;;;;16623:25;;;;;:::i;:::-;;-1:-1:-1;16603:3:0;;16560:100;;;-1:-1:-1;175:10:0;16755:23;;;;:9;:23;;;;;;:38;-1:-1:-1;16755:38:0;16747:71;;;;-1:-1:-1;;;16747:71:0;;6505:2:1;16747:71:0;;;6487:21:1;6544:2;6524:18;;;6517:30;-1:-1:-1;;;6563:18:1;;;6556:50;6623:18;;16747:71:0;6303:344:1;16747:71:0;16882:9;16877:123;16901:10;:17;16897:1;:21;16877:123;;;16938:50;175:10;16962;16973:1;16962:13;;;;;;;;:::i;:::-;;;;;;;16977:7;16985:1;16977:10;;;;;;;;:::i;:::-;;;;;;;16938:9;:50::i;:::-;16920:3;;16877:123;;;;16365:642;16278:729;;:::o;13871:83::-;13912:13;13941:7;13934:14;;;;;:::i;18061:251::-;18146:4;18159:129;175:10;18182:7;18191:96;18230:15;18191:96;;;;;;;;;;;;;;;;;175:10;18191:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18191:34:0;;;;;;;;;;;;:38;:96::i;14864:155::-;14935:4;14953:42;175:10;14977:9;14988:6;14953:9;:42::i;1965:201::-;952:13;:11;:13::i;:::-;-1:-1:-1;;;;;2054:22:0;::::1;2046:73;;;::::0;-1:-1:-1;;;2046:73:0;;6854:2:1;2046:73:0::1;::::0;::::1;6836:21:1::0;6893:2;6873:18;;;6866:30;6932:34;6912:18;;;6905:62;-1:-1:-1;;;6983:18:1;;;6976:36;7029:19;;2046:73:0::1;6652:402:1::0;2046:73:0::1;2130:28;2149:8;2130:18;:28::i;:::-;1965:201:::0;:::o;14430:96::-;952:13;:11;:13::i;:::-;-1:-1:-1;;;;;14494:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;14494:26:0::1;14516:4;14494:26;::::0;;14430:96::o;21283:320::-;-1:-1:-1;;;;;21373:19:0;;21365:68;;;;-1:-1:-1;;;21365:68:0;;7261:2:1;21365:68:0;;;7243:21:1;7300:2;7280:18;;;7273:30;7339:34;7319:18;;;7312:62;-1:-1:-1;;;7390:18:1;;;7383:34;7434:19;;21365:68:0;7059:400:1;21365:68:0;-1:-1:-1;;;;;21448:21:0;;21440:68;;;;-1:-1:-1;;;21440:68:0;;7666:2:1;21440:68:0;;;7648:21:1;7705:2;7685:18;;;7678:30;7744:34;7724:18;;;7717:62;-1:-1:-1;;;7795:18:1;;;7788:32;7837:19;;21440:68:0;7464:398:1;21440:68:0;-1:-1:-1;;;;;21517:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21565:32;;1342:25:1;;;21565:32:0;;1315:18:1;21565:32:0;;;;;;;;21283:320;;;:::o;19299:934::-;-1:-1:-1;;;;;19393:20:0;;19385:70;;;;-1:-1:-1;;;19385:70:0;;8069:2:1;19385:70:0;;;8051:21:1;8108:2;8088:18;;;8081:30;8147:34;8127:18;;;8120:62;-1:-1:-1;;;8198:18:1;;;8191:35;8243:19;;19385:70:0;7867:401:1;19385:70:0;-1:-1:-1;;;;;19470:23:0;;19462:71;;;;-1:-1:-1;;;19462:71:0;;8475:2:1;19462:71:0;;;8457:21:1;8514:2;8494:18;;;8487:30;8553:34;8533:18;;;8526:62;-1:-1:-1;;;8604:18:1;;;8597:33;8647:19;;19462:71:0;8273:399:1;19462:71:0;-1:-1:-1;;;;;19545:17:0;;;;;;:9;:17;;;;;;;;19542:686;;;19594:71;19616:6;19594:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19594:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;19574:17:0;;;;;;;:9;:17;;;;;;:91;;;;19698:20;;;;;;;:32;;19723:6;19698:24;:32::i;:::-;-1:-1:-1;;;;;19675:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19746:35;;;;;;;;;;19774:6;1342:25:1;;1330:2;1315:18;;1196:177;19542:686:0;-1:-1:-1;;;;;19814:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;19814:27:0;19806:78;;;;-1:-1:-1;;;19806:78:0;;8879:2:1;19806:78:0;;;8861:21:1;8918:2;8898:18;;;8891:30;8957:34;8937:18;;;8930:62;-1:-1:-1;;;9008:18:1;;;9001:36;9054:19;;19806:78:0;8677:402:1;19806:78:0;19896:8;19907:34;19935:5;19907:23;19918:11;;19907:6;:10;;:23;;;;:::i;:::-;:27;;:34::i;:::-;19896:45;-1:-1:-1;19952:19:0;19974:15;:6;19896:45;19974:10;:15::i;:::-;-1:-1:-1;;;;;20020:17:0;;;;;;:9;:17;;;;;;19952:37;;-1:-1:-1;20020:37:0;;19952;20020:21;:37::i;:::-;-1:-1:-1;;;;;20000:17:0;;;;;;;:9;:17;;;;;;:57;;;;20091:20;;;;;;;:40;;20116:14;20091:24;:40::i;:::-;-1:-1:-1;;;;;20068:20:0;;;;;;:9;:20;;;;;:63;20142:18;20148:6;20156:3;20142:5;:18::i;:::-;20194:9;-1:-1:-1;;;;;20177:43:0;20186:6;-1:-1:-1;;;;;20177:43:0;;20205:14;20177:43;;;;1342:25:1;;1330:2;1315:18;;1196:177;20177:43:0;;;;;;;;19795:433;;19299:934;;;:::o;7180:206::-;7266:7;7327:12;7319:6;;;;7311:29;;;;-1:-1:-1;;;7311:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;7362:5:0;;;7180:206::o;4901:98::-;4959:7;4986:5;4990:1;4986;:5;:::i;:::-;4979:12;4901:98;-1:-1:-1;;;4901:98:0:o;20541:330::-;-1:-1:-1;;;;;20613:21:0;;20605:67;;;;-1:-1:-1;;;20605:67:0;;9286:2:1;20605:67:0;;;9268:21:1;9325:2;9305:18;;;9298:30;9364:34;9344:18;;;9337:62;-1:-1:-1;;;9415:18:1;;;9408:31;9456:19;;20605:67:0;9084:397:1;20605:67:0;20702:68;20725:6;20702:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20702:18:0;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;20681:18:0;;;;;;:9;:18;;;;;:89;20792:12;;:24;;20809:6;20792:16;:24::i;:::-;20777:12;:39;20828:37;;1342:25:1;;;20854:1:0;;-1:-1:-1;;;;;20828:37:0;;;;;1330:2:1;1315:18;20828:37:0;;;;;;;20541:330;;:::o;1231:132::-;1112:7;1139:6;-1:-1:-1;;;;;1139:6:0;175:10;1295:23;1287:68;;;;-1:-1:-1;;;1287:68:0;;9688:2:1;1287:68:0;;;9670:21:1;;;9707:18;;;9700:30;9766:34;9746:18;;;9739:62;9818:18;;1287:68:0;9486:356:1;2326:191:0;2400:16;2419:6;;-1:-1:-1;;;;;2436:17:0;;;-1:-1:-1;;;;;;2436:17:0;;;;;;2469:40;;2419:6;;;;;;;2469:40;;2400:16;2469:40;2389:128;2326:191;:::o;5639:98::-;5697:7;5724:5;5728:1;5724;:5;:::i;6038:98::-;6096:7;6123:5;6127:1;6123;:5;:::i;5282:98::-;5340:7;5367:5;5371:1;5367;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;2276:127::-;2337:10;2332:3;2328:20;2325:1;2318:31;2368:4;2365:1;2358:15;2392:4;2389:1;2382:15;2408:275;2479:2;2473:9;2544:2;2525:13;;-1:-1:-1;;2521:27:1;2509:40;;2579:18;2564:34;;2600:22;;;2561:62;2558:88;;;2626:18;;:::i;:::-;2662:2;2655:22;2408:275;;-1:-1:-1;2408:275:1:o;2688:183::-;2748:4;2781:18;2773:6;2770:30;2767:56;;;2803:18;;:::i;:::-;-1:-1:-1;2848:1:1;2844:14;2860:4;2840:25;;2688:183::o;2876:668::-;2930:5;2983:3;2976:4;2968:6;2964:17;2960:27;2950:55;;3001:1;2998;2991:12;2950:55;3037:6;3024:20;3063:4;3087:60;3103:43;3143:2;3103:43;:::i;:::-;3087:60;:::i;:::-;3169:3;3193:2;3188:3;3181:15;3221:4;3216:3;3212:14;3205:21;;3278:4;3272:2;3269:1;3265:10;3257:6;3253:23;3249:34;3235:48;;3306:3;3298:6;3295:15;3292:35;;;3323:1;3320;3313:12;3292:35;3359:4;3351:6;3347:17;3373:142;3389:6;3384:3;3381:15;3373:142;;;3455:17;;3443:30;;3493:12;;;;3406;;3373:142;;;-1:-1:-1;3533:5:1;2876:668;-1:-1:-1;;;;;;2876:668:1:o;3549:1146::-;3667:6;3675;3728:2;3716:9;3707:7;3703:23;3699:32;3696:52;;;3744:1;3741;3734:12;3696:52;3784:9;3771:23;3813:18;3854:2;3846:6;3843:14;3840:34;;;3870:1;3867;3860:12;3840:34;3908:6;3897:9;3893:22;3883:32;;3953:7;3946:4;3942:2;3938:13;3934:27;3924:55;;3975:1;3972;3965:12;3924:55;4011:2;3998:16;4033:4;4057:60;4073:43;4113:2;4073:43;:::i;4057:60::-;4151:15;;;4233:1;4229:10;;;;4221:19;;4217:28;;;4182:12;;;;4257:19;;;4254:39;;;4289:1;4286;4279:12;4254:39;4313:11;;;;4333:148;4349:6;4344:3;4341:15;4333:148;;;4415:23;4434:3;4415:23;:::i;:::-;4403:36;;4366:12;;;;4459;;;;4333:148;;;4500:5;-1:-1:-1;;4543:18:1;;4530:32;;-1:-1:-1;;4574:16:1;;;4571:36;;;4603:1;4600;4593:12;4571:36;;4626:63;4681:7;4670:8;4659:9;4655:24;4626:63;:::i;:::-;4616:73;;;3549:1146;;;;;:::o;4908:260::-;4976:6;4984;5037:2;5025:9;5016:7;5012:23;5008:32;5005:52;;;5053:1;5050;5043:12;5005:52;5076:29;5095:9;5076:29;:::i;:::-;5066:39;;5124:38;5158:2;5147:9;5143:18;5124:38;:::i;:::-;5114:48;;4908:260;;;;;:::o;5173:380::-;5252:1;5248:12;;;;5295;;;5316:61;;5370:4;5362:6;5358:17;5348:27;;5316:61;5423:2;5415:6;5412:14;5392:18;5389:38;5386:161;;5469:10;5464:3;5460:20;5457:1;5450:31;5504:4;5501:1;5494:15;5532:4;5529:1;5522:15;5386:161;;5173:380;;;:::o;5909:127::-;5970:10;5965:3;5961:20;5958:1;5951:31;6001:4;5998:1;5991:15;6025:4;6022:1;6015:15;6041:127;6102:10;6097:3;6093:20;6090:1;6083:31;6133:4;6130:1;6123:15;6157:4;6154:1;6147:15;6173:125;6238:9;;;6259:10;;;6256:36;;;6272:18;;:::i;9847:168::-;9920:9;;;9951;;9968:15;;;9962:22;;9948:37;9938:71;;9989:18;;:::i;10020:217::-;10060:1;10086;10076:132;;10130:10;10125:3;10121:20;10118:1;10111:31;10165:4;10162:1;10155:15;10193:4;10190:1;10183:15;10076:132;-1:-1:-1;10222:9:1;;10020:217::o;10242:128::-;10309:9;;;10330:11;;;10327:37;;;10344:18;;:::i

Swarm Source

ipfs://5ca7336f350ba9536db919c8322d8966a1f2e745df233c916fc87b68f9637831
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.