S Price: $0.602748 (-19.40%)

Token

Cobra Share (GCOBRA)

Overview

Max Total Supply

1 GCOBRA

Holders

12

Total Transfers

-

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

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
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
GCobra

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-03-01
*/

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Context.sol



pragma solidity ^0.8.0;

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

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

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

// File: @openzeppelin/contracts/access/Ownable.sol



pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/GSN/Context.sol



pragma solidity ^0.8.0;


// File: contracts/owner/Operator.sol



contract Operator is Context, Ownable {
    address private _operator;

    event OperatorTransferred(address indexed previousOperator, address indexed newOperator);

    constructor() {
        _operator = _msgSender();
        emit OperatorTransferred(address(0), _operator);
    }

    function operator() public view returns (address) {
        return _operator;
    }

    modifier onlyOperator() {
        require(_operator == msg.sender, "operator: caller is not the operator");
        _;
    }

    function isOperator() public view returns (bool) {
        return _msgSender() == _operator;
    }

    function transferOperator(address newOperator_) public onlyOwner {
        _transferOperator(newOperator_);
    }

    function _transferOperator(address newOperator_) internal {
        require(newOperator_ != address(0), "operator: zero address given for new operator");
        emit OperatorTransferred(address(0), newOperator_);
        _operator = newOperator_;
    }

    function _renounceOperator() public onlyOwner {
        emit OperatorTransferred(_operator, address(0));
        _operator = address(0);
    }
}

// File: @openzeppelin/contracts/math/SafeMath.sol



pragma solidity ^0.8.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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        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) {
        // 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) {
        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) {
        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) {
        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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b > 0, "SafeMath: modulo by zero");
        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) {
        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.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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) {
        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) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol



pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

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

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].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 {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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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);

        _balances[account] = _balances[account].sub(amount, "ERC20: 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 internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

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

// File: @openzeppelin/contracts/token/ERC20/ERC20Burnable.sol



pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    using SafeMath for uint256;

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

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

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }
}

// File: contracts/GCobra.sol



pragma solidity 0.8.26;

contract GCobra is ERC20Burnable, Operator {
    using SafeMath for uint256;

    // TOTAL MAX SUPPLY = 80,000 GCOBRA
    uint256 public constant FARMING_POOL_REWARD_ALLOCATION = 74000 ether; // 44,000
    uint256 public constant COMMUNITY_FUND_POOL_ALLOCATION = 3500 ether;
    uint256 public constant DEV_FUND_POOL_ALLOCATION = 2499 ether;

    uint256 public constant VESTING_DURATION = 180 days; 
    uint256 public startTime;
    uint256 public endTime;

    uint256 public communityFundRewardRate;
    uint256 public devFundRewardRate;

    address public communityFund;
    address public devFund;

    uint256 public communityFundLastClaimed;
    uint256 public devFundLastClaimed;

    bool public rewardPoolDistributed = false;

    constructor(uint256 _startTime, address _communityFund, address _devFund) public ERC20("Cobra Share", "GCOBRA") {
        _mint(msg.sender, 1 ether); // mint 1 COBRA Share for initial pools deployment

        startTime = _startTime;
        endTime = startTime + VESTING_DURATION;

        communityFundLastClaimed = startTime;
        devFundLastClaimed = startTime;

        communityFundRewardRate = COMMUNITY_FUND_POOL_ALLOCATION.div(VESTING_DURATION);
        devFundRewardRate = DEV_FUND_POOL_ALLOCATION.div(VESTING_DURATION);

        require(_devFund != address(0), "Address cannot be 0");
        devFund = _devFund;

        require(_communityFund != address(0), "Address cannot be 0");
        communityFund = _communityFund;
    }

    function setTreasuryFund(address _communityFund) external {
        require(msg.sender == devFund, "!dev");
        communityFund = _communityFund;
    }

    function setDevFund(address _devFund) external {
        require(msg.sender == devFund, "!dev");
        require(_devFund != address(0), "zero");
        devFund = _devFund;
    }

    function unclaimedTreasuryFund() public view returns (uint256 _pending) {
        uint256 _now = block.timestamp;
        if (_now > endTime) _now = endTime;
        if (communityFundLastClaimed >= _now) return 0;
        _pending = _now.sub(communityFundLastClaimed).mul(communityFundRewardRate);
    }

    function unclaimedDevFund() public view returns (uint256 _pending) {
        uint256 _now = block.timestamp;
        if (_now > endTime) _now = endTime;
        if (devFundLastClaimed >= _now) return 0;
        _pending = _now.sub(devFundLastClaimed).mul(devFundRewardRate);
    }

    /**
     * @dev Claim pending rewards to community and dev fund
     */
    function claimRewards() external {
        uint256 _pending = unclaimedTreasuryFund();
        if (_pending > 0 && communityFund != address(0)) {
            _mint(communityFund, _pending);
            communityFundLastClaimed = block.timestamp;
        }
        _pending = unclaimedDevFund();
        if (_pending > 0 && devFund != address(0)) {
            _mint(devFund, _pending);
            devFundLastClaimed = block.timestamp;
        }
    }

    /**
     * @notice distribute to reward pool (only once)
     */
    function distributeReward(address _farmingIncentiveFund) external onlyOperator {
        require(!rewardPoolDistributed, "only can distribute once");
        require(_farmingIncentiveFund != address(0), "!_farmingIncentiveFund");
        rewardPoolDistributed = true;
        _mint(_farmingIncentiveFund, FARMING_POOL_REWARD_ALLOCATION);
    }

    function burn(uint256 amount) public override {
        super.burn(amount);
    }

    function governanceRecoverUnsupported(
        IERC20 _token,
        uint256 _amount,
        address _to
    ) external onlyOperator {
        _token.transfer(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"address","name":"_communityFund","type":"address"},{"internalType":"address","name":"_devFund","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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","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":[],"name":"COMMUNITY_FUND_POOL_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_FUND_POOL_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FARMING_POOL_REWARD_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_renounceOperator","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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"communityFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityFundLastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityFundRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFundLastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFundRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_farmingIncentiveFund","type":"address"}],"name":"distributeReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"governanceRecoverUnsupported","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOperator","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":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPoolDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devFund","type":"address"}],"name":"setDevFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityFund","type":"address"}],"name":"setTreasuryFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclaimedDevFund","outputs":[{"internalType":"uint256","name":"_pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unclaimedTreasuryFund","outputs":[{"internalType":"uint256","name":"_pending","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600f805460ff19169055348015610019575f80fd5b50604051611d4f380380611d4f83398101604081905261003891610440565b6040518060400160405280600b81526020016a436f62726120536861726560a81b8152506040518060400160405280600681526020016547434f42524160d01b815250816003908161008a9190610510565b5060046100978282610510565b50506005805460ff19166012179055505f6100af3390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916339081179091556040515f907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a361015533670de0b6b3a7640000610283565b600783905561016762ed4e00846105ca565b600855600754600d819055600e5561018b68bdbc41e0348b30000062ed4e0061035f565b6009556101a4688778977bbb052c000062ed4e0061035f565b600a556001600160a01b0381166101f85760405162461bcd60e51b81526020600482015260136024820152720416464726573732063616e6e6f74206265203606c1b60448201526064015b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0383811691909117909155821661025c5760405162461bcd60e51b81526020600482015260136024820152720416464726573732063616e6e6f74206265203606c1b60448201526064016101ef565b50600b80546001600160a01b0319166001600160a01b039290921691909117905550610608565b6001600160a01b0382166102d95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ef565b6002546102e690826103c7565b6002556001600160a01b0382165f9081526020819052604090205461030b90826103c7565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f8082116103af5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016101ef565b6103b982846105e9565b90505b92915050565b505050565b5f806103d383856105ca565b9050838110156103b95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016101ef565b80516001600160a01b038116811461043b575f80fd5b919050565b5f805f60608486031215610452575f80fd5b8351925061046260208501610425565b915061047060408501610425565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806104a157607f821691505b6020821081036104bf57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103c257805f5260205f20601f840160051c810160208510156104ea5750805b601f840160051c820191505b81811015610509575f81556001016104f6565b5050505050565b81516001600160401b0381111561052957610529610479565b61053d81610537845461048d565b846104c5565b6020601f82116001811461056f575f83156105585750848201515b5f19600385901b1c1916600184901b178455610509565b5f84815260208120601f198516915b8281101561059e578785015182556020948501946001909201910161057e565b50848210156105bb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103bc57634e487b7160e01b5f52601160045260245ffd5b5f8261060357634e487b7160e01b5f52601260045260245ffd5b500490565b61173a806106155f395ff3fe608060405234801561000f575f80fd5b506004361061023e575f3560e01c80634cfc4d301161013557806395d89b41116100b4578063abb4b1be11610079578063abb4b1be1461049c578063ae4db919146104a5578063dd62ed3e146104b8578063f2fde38b146104f0578063f746b71814610503575f80fd5b806395d89b41146104505780639662676c14610458578063a06160fd14610465578063a457c2d714610476578063a9059cbb14610489575f80fd5b8063715018a6116100fa578063715018a61461040e57806378e979251461041657806379cc67901461041f5780638a27f103146104325780638da5cb5b1461043a575f80fd5b80634cfc4d30146103a85780634f337dd5146103b257806354575af4146103c2578063570ca735146103d557806370a08231146103e6575f80fd5b80632e3367ce116101c15780633bba8eed116101865780633bba8eed1461035657806342966c68146103665780634390d2a8146103795780634456eda21461038c57806344cdc4541461039f575f80fd5b80632e3367ce14610314578063313ce5671461031d5780633197cbb614610332578063372500ab1461033b5780633950935114610343575f80fd5b8063177647821161020757806317764782146102d657806318160ddd146102de57806323b872dd146102e657806329605e77146102f95780632c07a6241461030c575f80fd5b8062f380f414610242578063040173151461027257806306fdde0314610289578063092193ab1461029e578063095ea7b3146102b3575b5f80fd5b600b54610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61027b600e5481565b604051908152602001610269565b610291610516565b60405161026991906113b2565b6102b16102ac3660046113fb565b6105a6565b005b6102c66102c1366004611416565b61069f565b6040519015158152602001610269565b61027b6106b5565b60025461027b565b6102c66102f4366004611440565b6106ff565b6102b16103073660046113fb565b610766565b61027b61079f565b61027b600a5481565b60055460405160ff9091168152602001610269565b61027b60085481565b6102b16107dd565b6102c6610351366004611416565b610866565b61027b68bdbc41e0348b30000081565b6102b161037436600461147e565b61089b565b600c54610255906001600160a01b031681565b6006546001600160a01b031633146102c6565b61027b60095481565b61027b62ed4e0081565b61027b688778977bbb052c000081565b6102b16103d0366004611495565b6108a4565b6006546001600160a01b0316610255565b61027b6103f43660046113fb565b6001600160a01b03165f9081526020819052604090205490565b6102b1610944565b61027b60075481565b6102b161042d366004611416565b6109c3565b6102b1610a0e565b60055461010090046001600160a01b0316610255565b610291610a87565b600f546102c69060ff1681565b61027b690fab8c4c3b325a40000081565b6102c6610484366004611416565b610a96565b6102c6610497366004611416565b610ae3565b61027b600d5481565b6102b16104b33660046113fb565b610aef565b61027b6104c63660046114d4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6102b16104fe3660046113fb565b610b93565b6102b16105113660046113fb565b610c8e565b6060600380546105259061150b565b80601f01602080910402602001604051908101604052809291908181526020018280546105519061150b565b801561059c5780601f106105735761010080835404028352916020019161059c565b820191905f5260205f20905b81548152906001019060200180831161057f57829003601f168201915b5050505050905090565b6006546001600160a01b031633146105d95760405162461bcd60e51b81526004016105d090611543565b60405180910390fd5b600f5460ff161561062c5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c792063616e2064697374726962757465206f6e6365000000000000000060448201526064016105d0565b6001600160a01b03811661067b5760405162461bcd60e51b81526020600482015260166024820152750857d9985c9b5a5b99d25b98d95b9d1a5d99519d5b9960521b60448201526064016105d0565b600f805460ff1916600117905561069c81690fab8c4c3b325a400000610cf3565b50565b5f6106ab338484610dd0565b5060015b92915050565b6008545f9042908111156106c857506008545b80600d54106106d8575f91505090565b6106f96009546106f3600d5484610ef490919063ffffffff16565b90610f56565b91505090565b5f61070b848484610fd4565b61075c843361075785604051806060016040528060288152602001611694602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611154565b610dd0565b5060019392505050565b6005546001600160a01b036101009091041633146107965760405162461bcd60e51b81526004016105d090611587565b61069c8161118a565b6008545f9042908111156107b257506008545b80600e54106107c2575f91505090565b6106f9600a546106f3600e5484610ef490919063ffffffff16565b5f6107e66106b5565b90505f811180156108015750600b546001600160a01b031615155b1561082157600b5461081c906001600160a01b031682610cf3565b42600d555b61082961079f565b90505f811180156108445750600c546001600160a01b031615155b1561069c57600c5461085f906001600160a01b031682610cf3565b42600e5550565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106ab918590610757908661124d565b61069c816112ab565b6006546001600160a01b031633146108ce5760405162461bcd60e51b81526004016105d090611543565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af115801561091a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093e91906115bc565b50505050565b6005546001600160a01b036101009091041633146109745760405162461bcd60e51b81526004016105d090611587565b6005546040515f9161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b5f6109f2826040518060600160405280602481526020016116bc602491396109eb86336104c6565b9190611154565b90506109ff833383610dd0565b610a0983836112b1565b505050565b6005546001600160a01b03610100909104163314610a3e5760405162461bcd60e51b81526004016105d090611587565b6006546040515f916001600160a01b0316907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908390a3600680546001600160a01b0319169055565b6060600480546105259061150b565b5f6106ab3384610757856040518060600160405280602581526020016116e060259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611154565b5f6106ab338484610fd4565b600c546001600160a01b03163314610b325760405162461bcd60e51b81526004016105d09060208082526004908201526310b232bb60e11b604082015260600190565b6001600160a01b038116610b715760405162461bcd60e51b81526004016105d0906020808252600490820152637a65726f60e01b604082015260600190565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314610bc35760405162461bcd60e51b81526004016105d090611587565b6001600160a01b038116610c285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d0565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600c546001600160a01b03163314610cd15760405162461bcd60e51b81526004016105d09060208082526004908201526310b232bb60e11b604082015260600190565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d0565b600254610d56908261124d565b6002556001600160a01b0382165f90815260208190526040902054610d7b908261124d565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6001600160a01b038316610e325760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d0565b6001600160a01b038216610e935760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f82821115610f455760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016105d0565b610f4f82846115ef565b9392505050565b5f825f03610f6557505f6106af565b5f610f708385611602565b905082610f7d8583611619565b14610f4f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d0565b6001600160a01b0383166110385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d0565b6001600160a01b03821661109a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d0565b6110d68160405180606001604052806026815260200161166e602691396001600160a01b0386165f908152602081905260409020549190611154565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611104908261124d565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ee7565b5f81848411156111775760405162461bcd60e51b81526004016105d091906113b2565b5061118283856115ef565b949350505050565b6001600160a01b0381166111f65760405162461bcd60e51b815260206004820152602d60248201527f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260448201526c103732bb9037b832b930ba37b960991b60648201526084016105d0565b6040516001600160a01b038216905f907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f806112598385611638565b905083811015610f4f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d0565b61069c33825b6001600160a01b0382166113115760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d0565b61134d8160405180606001604052806022815260200161164c602291396001600160a01b0385165f908152602081905260409020549190611154565b6001600160a01b0383165f908152602081905260409020556002546113729082610ef4565b6002556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dc4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461069c575f80fd5b5f6020828403121561140b575f80fd5b8135610f4f816113e7565b5f8060408385031215611427575f80fd5b8235611432816113e7565b946020939093013593505050565b5f805f60608486031215611452575f80fd5b833561145d816113e7565b9250602084013561146d816113e7565b929592945050506040919091013590565b5f6020828403121561148e575f80fd5b5035919050565b5f805f606084860312156114a7575f80fd5b83356114b2816113e7565b92506020840135915060408401356114c9816113e7565b809150509250925092565b5f80604083850312156114e5575f80fd5b82356114f0816113e7565b91506020830135611500816113e7565b809150509250929050565b600181811c9082168061151f57607f821691505b60208210810361153d57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526024908201527f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260408201526330ba37b960e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115cc575f80fd5b81518015158114610f4f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156106af576106af6115db565b80820281158282048414176106af576106af6115db565b5f8261163357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106af576106af6115db56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205808aa6f85fd2667c117800c170c440611336667bc0770381d743fed6bfd5c5164736f6c634300081a00330000000000000000000000000000000000000000000000000000000067c5a7d0000000000000000000000000d5794185aafff4b41a044ed985cadb2d22c9f530000000000000000000000000c6568bf26a3ef8c2c72cd73a4093b77616dedf64

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061023e575f3560e01c80634cfc4d301161013557806395d89b41116100b4578063abb4b1be11610079578063abb4b1be1461049c578063ae4db919146104a5578063dd62ed3e146104b8578063f2fde38b146104f0578063f746b71814610503575f80fd5b806395d89b41146104505780639662676c14610458578063a06160fd14610465578063a457c2d714610476578063a9059cbb14610489575f80fd5b8063715018a6116100fa578063715018a61461040e57806378e979251461041657806379cc67901461041f5780638a27f103146104325780638da5cb5b1461043a575f80fd5b80634cfc4d30146103a85780634f337dd5146103b257806354575af4146103c2578063570ca735146103d557806370a08231146103e6575f80fd5b80632e3367ce116101c15780633bba8eed116101865780633bba8eed1461035657806342966c68146103665780634390d2a8146103795780634456eda21461038c57806344cdc4541461039f575f80fd5b80632e3367ce14610314578063313ce5671461031d5780633197cbb614610332578063372500ab1461033b5780633950935114610343575f80fd5b8063177647821161020757806317764782146102d657806318160ddd146102de57806323b872dd146102e657806329605e77146102f95780632c07a6241461030c575f80fd5b8062f380f414610242578063040173151461027257806306fdde0314610289578063092193ab1461029e578063095ea7b3146102b3575b5f80fd5b600b54610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61027b600e5481565b604051908152602001610269565b610291610516565b60405161026991906113b2565b6102b16102ac3660046113fb565b6105a6565b005b6102c66102c1366004611416565b61069f565b6040519015158152602001610269565b61027b6106b5565b60025461027b565b6102c66102f4366004611440565b6106ff565b6102b16103073660046113fb565b610766565b61027b61079f565b61027b600a5481565b60055460405160ff9091168152602001610269565b61027b60085481565b6102b16107dd565b6102c6610351366004611416565b610866565b61027b68bdbc41e0348b30000081565b6102b161037436600461147e565b61089b565b600c54610255906001600160a01b031681565b6006546001600160a01b031633146102c6565b61027b60095481565b61027b62ed4e0081565b61027b688778977bbb052c000081565b6102b16103d0366004611495565b6108a4565b6006546001600160a01b0316610255565b61027b6103f43660046113fb565b6001600160a01b03165f9081526020819052604090205490565b6102b1610944565b61027b60075481565b6102b161042d366004611416565b6109c3565b6102b1610a0e565b60055461010090046001600160a01b0316610255565b610291610a87565b600f546102c69060ff1681565b61027b690fab8c4c3b325a40000081565b6102c6610484366004611416565b610a96565b6102c6610497366004611416565b610ae3565b61027b600d5481565b6102b16104b33660046113fb565b610aef565b61027b6104c63660046114d4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6102b16104fe3660046113fb565b610b93565b6102b16105113660046113fb565b610c8e565b6060600380546105259061150b565b80601f01602080910402602001604051908101604052809291908181526020018280546105519061150b565b801561059c5780601f106105735761010080835404028352916020019161059c565b820191905f5260205f20905b81548152906001019060200180831161057f57829003601f168201915b5050505050905090565b6006546001600160a01b031633146105d95760405162461bcd60e51b81526004016105d090611543565b60405180910390fd5b600f5460ff161561062c5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c792063616e2064697374726962757465206f6e6365000000000000000060448201526064016105d0565b6001600160a01b03811661067b5760405162461bcd60e51b81526020600482015260166024820152750857d9985c9b5a5b99d25b98d95b9d1a5d99519d5b9960521b60448201526064016105d0565b600f805460ff1916600117905561069c81690fab8c4c3b325a400000610cf3565b50565b5f6106ab338484610dd0565b5060015b92915050565b6008545f9042908111156106c857506008545b80600d54106106d8575f91505090565b6106f96009546106f3600d5484610ef490919063ffffffff16565b90610f56565b91505090565b5f61070b848484610fd4565b61075c843361075785604051806060016040528060288152602001611694602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611154565b610dd0565b5060019392505050565b6005546001600160a01b036101009091041633146107965760405162461bcd60e51b81526004016105d090611587565b61069c8161118a565b6008545f9042908111156107b257506008545b80600e54106107c2575f91505090565b6106f9600a546106f3600e5484610ef490919063ffffffff16565b5f6107e66106b5565b90505f811180156108015750600b546001600160a01b031615155b1561082157600b5461081c906001600160a01b031682610cf3565b42600d555b61082961079f565b90505f811180156108445750600c546001600160a01b031615155b1561069c57600c5461085f906001600160a01b031682610cf3565b42600e5550565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106ab918590610757908661124d565b61069c816112ab565b6006546001600160a01b031633146108ce5760405162461bcd60e51b81526004016105d090611543565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af115801561091a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093e91906115bc565b50505050565b6005546001600160a01b036101009091041633146109745760405162461bcd60e51b81526004016105d090611587565b6005546040515f9161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b5f6109f2826040518060600160405280602481526020016116bc602491396109eb86336104c6565b9190611154565b90506109ff833383610dd0565b610a0983836112b1565b505050565b6005546001600160a01b03610100909104163314610a3e5760405162461bcd60e51b81526004016105d090611587565b6006546040515f916001600160a01b0316907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908390a3600680546001600160a01b0319169055565b6060600480546105259061150b565b5f6106ab3384610757856040518060600160405280602581526020016116e060259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611154565b5f6106ab338484610fd4565b600c546001600160a01b03163314610b325760405162461bcd60e51b81526004016105d09060208082526004908201526310b232bb60e11b604082015260600190565b6001600160a01b038116610b715760405162461bcd60e51b81526004016105d0906020808252600490820152637a65726f60e01b604082015260600190565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314610bc35760405162461bcd60e51b81526004016105d090611587565b6001600160a01b038116610c285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d0565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600c546001600160a01b03163314610cd15760405162461bcd60e51b81526004016105d09060208082526004908201526310b232bb60e11b604082015260600190565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d0565b600254610d56908261124d565b6002556001600160a01b0382165f90815260208190526040902054610d7b908261124d565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6001600160a01b038316610e325760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d0565b6001600160a01b038216610e935760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f82821115610f455760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016105d0565b610f4f82846115ef565b9392505050565b5f825f03610f6557505f6106af565b5f610f708385611602565b905082610f7d8583611619565b14610f4f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d0565b6001600160a01b0383166110385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d0565b6001600160a01b03821661109a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d0565b6110d68160405180606001604052806026815260200161166e602691396001600160a01b0386165f908152602081905260409020549190611154565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611104908261124d565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ee7565b5f81848411156111775760405162461bcd60e51b81526004016105d091906113b2565b5061118283856115ef565b949350505050565b6001600160a01b0381166111f65760405162461bcd60e51b815260206004820152602d60248201527f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260448201526c103732bb9037b832b930ba37b960991b60648201526084016105d0565b6040516001600160a01b038216905f907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f806112598385611638565b905083811015610f4f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d0565b61069c33825b6001600160a01b0382166113115760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d0565b61134d8160405180606001604052806022815260200161164c602291396001600160a01b0385165f908152602081905260409020549190611154565b6001600160a01b0383165f908152602081905260409020556002546113729082610ef4565b6002556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dc4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461069c575f80fd5b5f6020828403121561140b575f80fd5b8135610f4f816113e7565b5f8060408385031215611427575f80fd5b8235611432816113e7565b946020939093013593505050565b5f805f60608486031215611452575f80fd5b833561145d816113e7565b9250602084013561146d816113e7565b929592945050506040919091013590565b5f6020828403121561148e575f80fd5b5035919050565b5f805f606084860312156114a7575f80fd5b83356114b2816113e7565b92506020840135915060408401356114c9816113e7565b809150509250925092565b5f80604083850312156114e5575f80fd5b82356114f0816113e7565b91506020830135611500816113e7565b809150509250929050565b600181811c9082168061151f57607f821691505b60208210810361153d57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526024908201527f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260408201526330ba37b960e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115cc575f80fd5b81518015158114610f4f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156106af576106af6115db565b80820281158282048414176106af576106af6115db565b5f8261163357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106af576106af6115db56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205808aa6f85fd2667c117800c170c440611336667bc0770381d743fed6bfd5c5164736f6c634300081a0033

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

0000000000000000000000000000000000000000000000000000000067c5a7d0000000000000000000000000d5794185aafff4b41a044ed985cadb2d22c9f530000000000000000000000000c6568bf26a3ef8c2c72cd73a4093b77616dedf64

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1741006800
Arg [1] : _communityFund (address): 0xD5794185AAFFf4b41A044ed985Cadb2d22C9F530
Arg [2] : _devFund (address): 0xc6568bf26a3EF8C2c72cD73A4093B77616DedF64

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000067c5a7d0
Arg [1] : 000000000000000000000000d5794185aafff4b41a044ed985cadb2d22c9f530
Arg [2] : 000000000000000000000000c6568bf26a3ef8c2c72cd73a4093b77616dedf64


Deployed Bytecode Sourcemap

27079:3756:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27641:28;;;;;-1:-1:-1;;;;;27641:28:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;27641:28:0;;;;;;;;27753:33;;;;;;;;;368:25:1;;;356:2;341:18;27753:33:0;222:177:1;16915:91:0;;;:::i;:::-;;;;;;;:::i;30198:348::-;;;;;;:::i;:::-;;:::i;:::-;;19061:169;;;;;;:::i;:::-;;:::i;:::-;;;1752:14:1;;1745:22;1727:41;;1715:2;1700:18;19061:169:0;1587:187:1;28968:308:0;;;:::i;18014:108::-;18102:12;;18014:108;;19712:321;;;;;;:::i;:::-;;:::i;6759:115::-;;;;;;:::i;:::-;;:::i;29284:285::-;;;:::i;27600:32::-;;;;;;17858:91;17932:9;;17858:91;;17932:9;;;;2434:36:1;;2422:2;2407:18;17858:91:0;2292:184:1;27524:22:0;;;;;;29656:462;;;:::i;20442:218::-;;;;;;:::i;:::-;;:::i;27290:67::-;;27347:10;27290:67;;30554:83;;;;;;:::i;:::-;;:::i;27676:22::-;;;;;-1:-1:-1;;;;;27676:22:0;;;6651:100;6734:9;;-1:-1:-1;;;;;6734:9:0;3445:10;6718:25;6651:100;;27555:38;;;;;;27434:51;;27477:8;27434:51;;27364:61;;27415:10;27364:61;;30645:187;;;;;;:::i;:::-;;:::i;6423:85::-;6491:9;;-1:-1:-1;;;;;6491:9:0;6423:85;;18185:127;;;;;;:::i;:::-;-1:-1:-1;;;;;18286:18:0;18259:7;18286:18;;;;;;;;;;;;18185:127;5440:148;;;:::i;27493:24::-;;;;;;26713:295;;;;;;:::i;:::-;;:::i;7147:145::-;;;:::i;4789:87::-;4862:6;;;;;-1:-1:-1;;;;;4862:6:0;4789:87;;17125:95;;;:::i;27795:41::-;;;;;;;;;27205:68;;27262:11;27205:68;;21163:269;;;;;;:::i;:::-;;:::i;18525:175::-;;;;;;:::i;:::-;;:::i;27707:39::-;;;;;;28777:183;;;;;;:::i;:::-;;:::i;18763:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;18879:18:0;;;18852:7;18879:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18763:151;5743:244;;;;;;:::i;:::-;;:::i;28613:156::-;;;;;;:::i;:::-;;:::i;16915:91::-;16960:13;16993:5;16986:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16915:91;:::o;30198:348::-;6559:9;;-1:-1:-1;;;;;6559:9:0;6572:10;6559:23;6551:72;;;;-1:-1:-1;;;6551:72:0;;;;;;;:::i;:::-;;;;;;;;;30297:21:::1;::::0;::::1;;30296:22;30288:59;;;::::0;-1:-1:-1;;;30288:59:0;;4623:2:1;30288:59:0::1;::::0;::::1;4605:21:1::0;4662:2;4642:18;;;4635:30;4701:26;4681:18;;;4674:54;4745:18;;30288:59:0::1;4421:348:1::0;30288:59:0::1;-1:-1:-1::0;;;;;30366:35:0;::::1;30358:70;;;::::0;-1:-1:-1;;;30358:70:0;;4976:2:1;30358:70:0::1;::::0;::::1;4958:21:1::0;5015:2;4995:18;;;4988:30;-1:-1:-1;;;5034:18:1;;;5027:52;5096:18;;30358:70:0::1;4774:346:1::0;30358:70:0::1;30439:21;:28:::0;;-1:-1:-1;;30439:28:0::1;30463:4;30439:28;::::0;;30478:60:::1;30484:21:::0;27262:11:::1;30478:5;:60::i;:::-;30198:348:::0;:::o;19061:169::-;19144:4;19161:39;3445:10;19184:7;19193:6;19161:8;:39::i;:::-;-1:-1:-1;19218:4:0;19061:169;;;;;:::o;28968:308::-;29103:7;;29022:16;;29066:15;;29096:14;;29092:34;;;-1:-1:-1;29119:7:0;;29092:34;29169:4;29141:24;;:32;29137:46;;29182:1;29175:8;;;28968:308;:::o;29137:46::-;29205:63;29244:23;;29205:34;29214:24;;29205:4;:8;;:34;;;;:::i;:::-;:38;;:63::i;:::-;29194:74;;29040:236;28968:308;:::o;19712:321::-;19818:4;19835:36;19845:6;19853:9;19864:6;19835:9;:36::i;:::-;19882:121;19891:6;3445:10;19913:89;19951:6;19913:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19913:19:0;;;;;;:11;:19;;;;;;;;3445:10;19913:33;;;;;;;;;;:37;:89::i;:::-;19882:8;:121::i;:::-;-1:-1:-1;20021:4:0;19712:321;;;;;:::o;6759:115::-;4862:6;;-1:-1:-1;;;;;4862:6:0;;;;;3445:10;5009:23;5001:68;;;;-1:-1:-1;;;5001:68:0;;;;;;;:::i;:::-;6835:31:::1;6853:12;6835:17;:31::i;29284:285::-:0;29414:7;;29333:16;;29377:15;;29407:14;;29403:34;;;-1:-1:-1;29430:7:0;;29403:34;29474:4;29452:18;;:26;29448:40;;29487:1;29480:8;;;29284:285;:::o;29448:40::-;29510:51;29543:17;;29510:28;29519:18;;29510:4;:8;;:28;;;;:::i;29656:462::-;29700:16;29719:23;:21;:23::i;:::-;29700:42;;29768:1;29757:8;:12;:43;;;;-1:-1:-1;29773:13:0;;-1:-1:-1;;;;;29773:13:0;:27;;29757:43;29753:163;;;29823:13;;29817:30;;-1:-1:-1;;;;;29823:13:0;29838:8;29817:5;:30::i;:::-;29889:15;29862:24;:42;29753:163;29937:18;:16;:18::i;:::-;29926:29;;29981:1;29970:8;:12;:37;;;;-1:-1:-1;29986:7:0;;-1:-1:-1;;;;;29986:7:0;:21;;29970:37;29966:145;;;30030:7;;30024:24;;-1:-1:-1;;;;;30030:7:0;30039:8;30024:5;:24::i;:::-;30084:15;30063:18;:36;29689:429;29656:462::o;20442:218::-;3445:10;20530:4;20579:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20579:34:0;;;;;;;;;;20530:4;;20547:83;;20570:7;;20579:50;;20618:10;20579:38;:50::i;30554:83::-;30611:18;30622:6;30611:10;:18::i;30645:187::-;6559:9;;-1:-1:-1;;;;;6559:9:0;6572:10;6559:23;6551:72;;;;-1:-1:-1;;;6551:72:0;;;;;;;:::i;:::-;30795:29:::1;::::0;-1:-1:-1;;;30795:29:0;;-1:-1:-1;;;;;5678:32:1;;;30795:29:0::1;::::0;::::1;5660:51:1::0;5727:18;;;5720:34;;;30795:15:0;::::1;::::0;::::1;::::0;5633:18:1;;30795:29:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30645:187:::0;;;:::o;5440:148::-;4862:6;;-1:-1:-1;;;;;4862:6:0;;;;;3445:10;5009:23;5001:68;;;;-1:-1:-1;;;5001:68:0;;;;;;;:::i;:::-;5531:6:::1;::::0;5510:40:::1;::::0;5547:1:::1;::::0;5531:6:::1;::::0;::::1;-1:-1:-1::0;;;;;5531:6:0::1;::::0;5510:40:::1;::::0;5547:1;;5510:40:::1;5561:6;:19:::0;;-1:-1:-1;;;;;;5561:19:0::1;::::0;;5440:148::o;26713:295::-;26790:26;26819:84;26856:6;26819:84;;;;;;;;;;;;;;;;;:32;26829:7;3445:10;18763:151;:::i;26819:32::-;:36;:84;:36;:84::i;:::-;26790:113;-1:-1:-1;26916:51:0;26925:7;3445:10;26948:18;26916:8;:51::i;:::-;26978:22;26984:7;26993:6;26978:5;:22::i;:::-;26779:229;26713:295;;:::o;7147:145::-;4862:6;;-1:-1:-1;;;;;4862:6:0;;;;;3445:10;5009:23;5001:68;;;;-1:-1:-1;;;5001:68:0;;;;;;;:::i;:::-;7229:9:::1;::::0;7209:42:::1;::::0;7248:1:::1;::::0;-1:-1:-1;;;;;7229:9:0::1;::::0;7209:42:::1;::::0;7248:1;;7209:42:::1;7262:9;:22:::0;;-1:-1:-1;;;;;;7262:22:0::1;::::0;;7147:145::o;17125:95::-;17172:13;17205:7;17198:14;;;;;:::i;21163:269::-;21256:4;21273:129;3445:10;21296:7;21305:96;21344:15;21305:96;;;;;;;;;;;;;;;;;3445:10;21305:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21305:34:0;;;;;;;;;;;;:38;:96::i;18525:175::-;18611:4;18628:42;3445:10;18652:9;18663:6;18628:9;:42::i;28777:183::-;28857:7;;-1:-1:-1;;;;;28857:7:0;28843:10;:21;28835:38;;;;-1:-1:-1;;;28835:38:0;;;;;;6249:2:1;6231:21;;;6288:1;6268:18;;;6261:29;-1:-1:-1;;;6321:2:1;6306:18;;6299:34;6365:2;6350:18;;6047:327;28835:38:0;-1:-1:-1;;;;;28892:22:0;;28884:39;;;;-1:-1:-1;;;28884:39:0;;;;;;6581:2:1;6563:21;;;6620:1;6600:18;;;6593:29;-1:-1:-1;;;6653:2:1;6638:18;;6631:34;6697:2;6682:18;;6379:327;28884:39:0;28934:7;:18;;-1:-1:-1;;;;;;28934:18:0;-1:-1:-1;;;;;28934:18:0;;;;;;;;;;28777:183::o;5743:244::-;4862:6;;-1:-1:-1;;;;;4862:6:0;;;;;3445:10;5009:23;5001:68;;;;-1:-1:-1;;;5001:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5832:22:0;::::1;5824:73;;;::::0;-1:-1:-1;;;5824:73:0;;6913:2:1;5824:73:0::1;::::0;::::1;6895:21:1::0;6952:2;6932:18;;;6925:30;6991:34;6971:18;;;6964:62;-1:-1:-1;;;7042:18:1;;;7035:36;7088:19;;5824:73:0::1;6711:402:1::0;5824:73:0::1;5934:6;::::0;5913:38:::1;::::0;-1:-1:-1;;;;;5913:38:0;;::::1;::::0;5934:6:::1;::::0;::::1;;::::0;5913:38:::1;::::0;;;::::1;5962:6;:17:::0;;-1:-1:-1;;;;;5962:17:0;;::::1;;;-1:-1:-1::0;;;;;;5962:17:0;;::::1;::::0;;;::::1;::::0;;5743:244::o;28613:156::-;28704:7;;-1:-1:-1;;;;;28704:7:0;28690:10;:21;28682:38;;;;-1:-1:-1;;;28682:38:0;;;;;;6249:2:1;6231:21;;;6288:1;6268:18;;;6261:29;-1:-1:-1;;;6321:2:1;6306:18;;6299:34;6365:2;6350:18;;6047:327;28682:38:0;28731:13;:30;;-1:-1:-1;;;;;;28731:30:0;-1:-1:-1;;;;;28731:30:0;;;;;;;;;;28613:156::o;22743:378::-;-1:-1:-1;;;;;22827:21:0;;22819:65;;;;-1:-1:-1;;;22819:65:0;;7320:2:1;22819:65:0;;;7302:21:1;7359:2;7339:18;;;7332:30;7398:33;7378:18;;;7371:61;7449:18;;22819:65:0;7118:355:1;22819:65:0;22974:12;;:24;;22991:6;22974:16;:24::i;:::-;22959:12;:39;-1:-1:-1;;;;;23030:18:0;;:9;:18;;;;;;;;;;;:30;;23053:6;23030:22;:30::i;:::-;-1:-1:-1;;;;;23009:18:0;;:9;:18;;;;;;;;;;;:51;;;;23076:37;;368:25:1;;;23009:18:0;;:9;;23076:37;;341:18:1;23076:37:0;;;;;;;;22743:378;;:::o;24310:346::-;-1:-1:-1;;;;;24412:19:0;;24404:68;;;;-1:-1:-1;;;24404:68:0;;7680:2:1;24404:68:0;;;7662:21:1;7719:2;7699:18;;;7692:30;7758:34;7738:18;;;7731:62;-1:-1:-1;;;7809:18:1;;;7802:34;7853:19;;24404:68:0;7478:400:1;24404:68:0;-1:-1:-1;;;;;24491:21:0;;24483:68;;;;-1:-1:-1;;;24483:68:0;;8085:2:1;24483:68:0;;;8067:21:1;8124:2;8104:18;;;8097:30;8163:34;8143:18;;;8136:62;-1:-1:-1;;;8214:18:1;;;8207:32;8256:19;;24483:68:0;7883:398:1;24483:68:0;-1:-1:-1;;;;;24564:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24616:32;;368:25:1;;;24616:32:0;;341:18:1;24616:32:0;;;;;;;;24310:346;;;:::o;10550:158::-;10608:7;10641:1;10636;:6;;10628:49;;;;-1:-1:-1;;;10628:49:0;;8488:2:1;10628:49:0;;;8470:21:1;8527:2;8507:18;;;8500:30;8566:32;8546:18;;;8539:60;8616:18;;10628:49:0;8286:354:1;10628:49:0;10695:5;10699:1;10695;:5;:::i;:::-;10688:12;10550:158;-1:-1:-1;;;10550:158:0:o;10967:220::-;11025:7;11049:1;11054;11049:6;11045:20;;-1:-1:-1;11064:1:0;11057:8;;11045:20;11076:9;11088:5;11092:1;11088;:5;:::i;:::-;11076:17;-1:-1:-1;11121:1:0;11112:5;11116:1;11076:17;11112:5;:::i;:::-;:10;11104:56;;;;-1:-1:-1;;;11104:56:0;;9507:2:1;11104:56:0;;;9489:21:1;9546:2;9526:18;;;9519:30;9585:34;9565:18;;;9558:62;-1:-1:-1;;;9636:18:1;;;9629:31;9677:19;;11104:56:0;9305:397:1;21922:539:0;-1:-1:-1;;;;;22028:20:0;;22020:70;;;;-1:-1:-1;;;22020:70:0;;9909:2:1;22020:70:0;;;9891:21:1;9948:2;9928:18;;;9921:30;9987:34;9967:18;;;9960:62;-1:-1:-1;;;10038:18:1;;;10031:35;10083:19;;22020:70:0;9707:401:1;22020:70:0;-1:-1:-1;;;;;22109:23:0;;22101:71;;;;-1:-1:-1;;;22101:71:0;;10315:2:1;22101:71:0;;;10297:21:1;10354:2;10334:18;;;10327:30;10393:34;10373:18;;;10366:62;-1:-1:-1;;;10444:18:1;;;10437:33;10487:19;;22101:71:0;10113:399:1;22101:71:0;22265;22287:6;22265:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22265:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;22245:17:0;;;:9;:17;;;;;;;;;;;:91;;;;22370:20;;;;;;;:32;;22395:6;22370:24;:32::i;:::-;-1:-1:-1;;;;;22347:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;22418:35;368:25:1;;;22347:20:0;;22418:35;;;;;;341:18:1;22418:35:0;222:177:1;12915:166:0;13001:7;13037:12;13029:6;;;;13021:29;;;;-1:-1:-1;;;13021:29:0;;;;;;;;:::i;:::-;-1:-1:-1;13068:5:0;13072:1;13068;:5;:::i;:::-;13061:12;12915:166;-1:-1:-1;;;;12915:166:0:o;6882:257::-;-1:-1:-1;;;;;6959:26:0;;6951:84;;;;-1:-1:-1;;;6951:84:0;;10719:2:1;6951:84:0;;;10701:21:1;10758:2;10738:18;;;10731:30;10797:34;10777:18;;;10770:62;-1:-1:-1;;;10848:18:1;;;10841:43;10901:19;;6951:84:0;10517:409:1;6951:84:0;7051:45;;-1:-1:-1;;;;;7051:45:0;;;7079:1;;7051:45;;7079:1;;7051:45;7107:9;:24;;-1:-1:-1;;;;;;7107:24:0;-1:-1:-1;;;;;7107:24:0;;;;;;;;;;6882:257::o;10088:179::-;10146:7;;10178:5;10182:1;10178;:5;:::i;:::-;10166:17;;10207:1;10202;:6;;10194:46;;;;-1:-1:-1;;;10194:46:0;;11263:2:1;10194:46:0;;;11245:21:1;11302:2;11282:18;;;11275:30;11341:29;11321:18;;;11314:57;11388:18;;10194:46:0;11061:351:1;26303:91:0;26359:27;3445:10;26379:6;23454:418;-1:-1:-1;;;;;23538:21:0;;23530:67;;;;-1:-1:-1;;;23530:67:0;;11619:2:1;23530:67:0;;;11601:21:1;11658:2;11638:18;;;11631:30;11697:34;11677:18;;;11670:62;-1:-1:-1;;;11748:18:1;;;11741:31;11789:19;;23530:67:0;11417:397:1;23530:67:0;23693:68;23716:6;23693:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23693:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;23672:18:0;;:9;:18;;;;;;;;;;:89;23787:12;;:24;;23804:6;23787:16;:24::i;:::-;23772:12;:39;23827:37;;368:25:1;;;23853:1:0;;-1:-1:-1;;;;;23827:37:0;;;;;356:2:1;341:18;23827:37:0;222:177:1;404:418;553:2;542:9;535:21;516:4;585:6;579:13;628:6;623:2;612:9;608:18;601:34;687:6;682:2;674:6;670:15;665:2;654:9;650:18;644:50;743:1;738:2;729:6;718:9;714:22;710:31;703:42;813:2;806;802:7;797:2;789:6;785:15;781:29;770:9;766:45;762:54;754:62;;;404:418;;;;:::o;827:131::-;-1:-1:-1;;;;;902:31:1;;892:42;;882:70;;948:1;945;938:12;963:247;1022:6;1075:2;1063:9;1054:7;1050:23;1046:32;1043:52;;;1091:1;1088;1081:12;1043:52;1130:9;1117:23;1149:31;1174:5;1149:31;:::i;1215:367::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;1399:9;1386:23;1418:31;1443:5;1418:31;:::i;:::-;1468:5;1546:2;1531:18;;;;1518:32;;-1:-1:-1;;;1215:367:1:o;1779:508::-;1856:6;1864;1872;1925:2;1913:9;1904:7;1900:23;1896:32;1893:52;;;1941:1;1938;1931:12;1893:52;1980:9;1967:23;1999:31;2024:5;1999:31;:::i;:::-;2049:5;-1:-1:-1;2106:2:1;2091:18;;2078:32;2119:33;2078:32;2119:33;:::i;:::-;1779:508;;2171:7;;-1:-1:-1;;;2251:2:1;2236:18;;;;2223:32;;1779:508::o;2481:226::-;2540:6;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;-1:-1:-1;2654:23:1;;2481:226;-1:-1:-1;2481:226:1:o;2712:521::-;2802:6;2810;2818;2871:2;2859:9;2850:7;2846:23;2842:32;2839:52;;;2887:1;2884;2877:12;2839:52;2926:9;2913:23;2945:31;2970:5;2945:31;:::i;:::-;2995:5;-1:-1:-1;3073:2:1;3058:18;;3045:32;;-1:-1:-1;3155:2:1;3140:18;;3127:32;3168:33;3127:32;3168:33;:::i;:::-;3220:7;3210:17;;;2712:521;;;;;:::o;3238:388::-;3306:6;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3422:9;3409:23;3441:31;3466:5;3441:31;:::i;:::-;3491:5;-1:-1:-1;3548:2:1;3533:18;;3520:32;3561:33;3520:32;3561:33;:::i;:::-;3613:7;3603:17;;;3238:388;;;;;:::o;3631:380::-;3710:1;3706:12;;;;3753;;;3774:61;;3828:4;3820:6;3816:17;3806:27;;3774:61;3881:2;3873:6;3870:14;3850:18;3847:38;3844:161;;3927:10;3922:3;3918:20;3915:1;3908:31;3962:4;3959:1;3952:15;3990:4;3987:1;3980:15;3844:161;;3631:380;;;:::o;4016:400::-;4218:2;4200:21;;;4257:2;4237:18;;;4230:30;4296:34;4291:2;4276:18;;4269:62;-1:-1:-1;;;4362:2:1;4347:18;;4340:34;4406:3;4391:19;;4016:400::o;5125:356::-;5327:2;5309:21;;;5346:18;;;5339:30;5405:34;5400:2;5385:18;;5378:62;5472:2;5457:18;;5125:356::o;5765:277::-;5832:6;5885:2;5873:9;5864:7;5860:23;5856:32;5853:52;;;5901:1;5898;5891:12;5853:52;5933:9;5927:16;5986:5;5979:13;5972:21;5965:5;5962:32;5952:60;;6008:1;6005;5998:12;8645:127;8706:10;8701:3;8697:20;8694:1;8687:31;8737:4;8734:1;8727:15;8761:4;8758:1;8751:15;8777:128;8844:9;;;8865:11;;;8862:37;;;8879:18;;:::i;8910:168::-;8983:9;;;9014;;9031:15;;;9025:22;;9011:37;9001:71;;9052:18;;:::i;9083:217::-;9123:1;9149;9139:132;;9193:10;9188:3;9184:20;9181:1;9174:31;9228:4;9225:1;9218:15;9256:4;9253:1;9246:15;9139:132;-1:-1:-1;9285:9:1;;9083:217::o;10931:125::-;10996:9;;;11017:10;;;11014:36;;;11030:18;;:::i

Swarm Source

ipfs://5808aa6f85fd2667c117800c170c440611336667bc0770381d743fed6bfd5c51
[ 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.