ETH Price: $2,666.01 (+2.10%)

Token

Staked yAxis (sYAX)
 

Overview

Max Total Supply

2,790.553753044436744282 sYAX

Holders

88 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 sYAX

Value
$0.00
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

yAxis is a meta yield aggregator designed to deploy capital to the best yield strategy available. yAxis is an experiment in DAO-directed yield farming where YAX holders vote regularly on which yVault/aggregator strategy to implement for user funds.

# Exchange Pair Price  24H Volume % Volume
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:
YaxisBar

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-01
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

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

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

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

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

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

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

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

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

/*
 * @dev 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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

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

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

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

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

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

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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * 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;
    using Address for address;

    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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 returns (uint8) {
        return _decimals;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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 {
        _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 {}
}

// YaxisBar is the coolest bar in town. You come in with some YAX, and leave with more! The longer you stay, the more YAX you get.
// This contract handles swapping to and from sYAX, Yaxis's staking token.
contract YaxisBar is ERC20("Staked yAxis", "sYAX"){
    using SafeMath for uint;

    IERC20 public yax;

    address public governance;

    uint public constant BLOCKS_PER_WEEK = 46500;

    // Block number when each epoch ends.
    uint[6] public epEndBlks;

    // Reward rate for each of 5 epoches:
    uint[6] public epRwdPerBlks = [129032258064516000, 96774193548387100, 64516129032258100, 32258064516129000, 16129032258064500, 0];

    uint[6] public accReleasedRwds;

    // Define the Yaxis token contract
    constructor(IERC20 _yax, uint _startBlock) public {
        require(block.number < _startBlock, "passed _startBlock");
        yax = _yax;
        epEndBlks[0] = _startBlock;
        epEndBlks[1] = epEndBlks[0] + BLOCKS_PER_WEEK * 2; // weeks 1-2
        epEndBlks[2] = epEndBlks[1] + BLOCKS_PER_WEEK * 2; // weeks 3-4
        epEndBlks[3] = epEndBlks[2] + BLOCKS_PER_WEEK * 4; // month 2
        epEndBlks[4] = epEndBlks[3] + BLOCKS_PER_WEEK * 8; // month 3-4
        epEndBlks[5] = epEndBlks[4] + BLOCKS_PER_WEEK * 8; // month 5-6
        accReleasedRwds[0] = 0;
        for (uint8 _epid = 1; _epid < 6; ++_epid) {
            // a[i] = (eb[i] - eb[i-1]) * r[i-1] + a[i-1]
            accReleasedRwds[_epid] = epEndBlks[_epid].sub(epEndBlks[_epid - 1]).mul(epRwdPerBlks[_epid - 1]).add(accReleasedRwds[_epid - 1]);
        }
        governance = msg.sender;
    }

    function setGovernance(address _governance) public {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }

    function releasedRewards() public view returns (uint) {
        uint _block = block.number;
        if (_block >= epEndBlks[5]) return accReleasedRwds[5];
        for (uint8 _epid = 5; _epid >= 1; --_epid) {
            if (_block >= epEndBlks[_epid - 1]) {
                return _block.sub(epEndBlks[_epid - 1]).mul(epRwdPerBlks[_epid - 1]).add(accReleasedRwds[_epid - 1]);
            }
        }
        return 0;
    }

    // @dev Return balance (deposited YAX + MV earning + any external yeild) plus released rewards
    // Read YIP-03, YIP-04 and YIP-05 for more details.
    function availableBalance() public view returns (uint) {
        return yax.balanceOf(address(this)).add(releasedRewards()).sub(accReleasedRwds[5]);
    }

    // Enter the bar. Pay some YAXs. Earn some shares.
    // Locks Yaxis and mints sYAX
    function enter(uint _amount) public {
        require(_amount > 0, "!_amount");

        // Gets the amount of available YAX locked in the contract
        uint _totalYaxis = availableBalance();

        // Gets the amount of sYAX in existence
        uint _totalShares = totalSupply();

        if (_totalShares == 0 || _totalYaxis == 0) { // If no sYAX exists, mint it 1:1 to the amount put in
            _mint(msg.sender, _amount);
        }
        else { // Calculate and mint the amount of sYAX the YAX is worth. The ratio will change overtime, as sYAX is burned/minted and YAX deposited + gained from fees / withdrawn.
            uint what = _amount.mul(_totalShares).div(_totalYaxis);
            _mint(msg.sender, what);
        }

        // Lock the YAX in the contract
        yax.transferFrom(msg.sender, address(this), _amount);
    }

    // Leave the bar. Claim back your YAX.
    // Unlocks the staked + gained YAX and burns sYAX
    function leave(uint _share) public {
        require(_share > 0, "!_share");

        // Gets the amount of available YAX locked in the contract
        uint _totalYaxis = availableBalance();

        // Gets the amount of sYAX in existence
        uint _totalShares = totalSupply();

        // Calculates the amount of YAX the sYAX is worth
        uint what = _share.mul(_totalYaxis).div(_totalShares);

        _burn(msg.sender, _share);
        yax.transfer(msg.sender, what);
    }

    // @dev Burn all sYAX you have and get back YAX.
    function exit() public {
        leave(balanceOf(msg.sender));
    }

    // @dev price of 1 sYAX over YAX (should increase gradiently over time)
    function getPricePerFullShare() external view returns (uint) {
        uint _ts = totalSupply();
        return (_ts == 0) ? 1e18 : availableBalance().mul(1e18).div(_ts);
    }

    // @dev expected compounded APY mul 10000 (for decimal precision)
    function compounded_apy() external view returns (uint) {
        uint _ts = totalSupply();
        if (_ts == 0) return 0;
        uint _block = block.number;
        if (_block <= epEndBlks[0]) return 0;
        uint _released = releasedRewards();
        uint _ab = availableBalance();
        uint _extraYield = (_ab <= _ts) ? 0 : _ab.sub(_ts);
        uint _earnedPerYear = _released.add(_extraYield).mul(2400000).div(_block.sub(epEndBlks[0])); // approximately 2,400,000 blocks / year
        return _earnedPerYear.mul(10000).div(_ts);
    }

    // @dev expected incentive APY (unstable) mul 10000 (for decimal precision)
    function incentive_apy() external view returns (uint) {
        uint _ts = totalSupply();
        if (_ts == 0) return 0;
        return yaxPerBlock().mul(2400000).mul(10000).div(_ts); // approximately 2,400,000 blocks / year
    }

    // @dev return current reward (YAX) per block
    function yaxPerBlock() public view returns (uint) {
        uint _block = block.number;
        if (_block <= epEndBlks[0] || _block >= epEndBlks[5]) return 0;
        for (uint8 _epid = 1; _epid < 6; ++_epid) {
            if (_block < epEndBlks[_epid]) {
                return epRwdPerBlks[_epid - 1];
            }
        }
        return 0;
    }

    // This function allows governance to take unsupported tokens (non-core) out of the contract. This is in an effort to make someone whole, should they seriously mess up.
    // There is no guarantee governance will vote to return these. It also allows for removal of airdropped tokens.
    function governanceRecoverUnsupported(IERC20 _token, uint256 _amount, address _to) external {
        require(msg.sender == governance, "!governance");
        require(address(_token) != address(yax), "YAX");
        require(address(_token) != address(this), "sYAX");
        _token.transfer(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_yax","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BLOCKS_PER_WEEK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accReleasedRwds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compounded_apy","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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"epEndBlks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"epRwdPerBlks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"incentive_apy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releasedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","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":[],"name":"yax","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yaxPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6101406040526701ca6a27b28083a06080908152670157cf9dc5e0631c60a05266e53513d940423460c05266729a89eca020e860e05266394d44f6501074610100526000610120526200005790600d9060066200043b565b503480156200006557600080fd5b5060405162001c5f38038062001c5f833981810160405260408110156200008b57600080fd5b508051602091820151604080518082018252600c81526b5374616b656420794178697360a01b818601908152825180840190935260048352630e6b282b60e31b958301959095528051939492939092620000e9916003919062000489565b508051620000ff90600490602084019062000489565b50506005805460ff191660121790555043811162000159576040805162461bcd60e51b8152602060048201526012602482015271706173736564205f7374617274426c6f636b60701b604482015290519081900360640190fd5b60058054610100600160a81b0319166101006001600160a01b03851602179055600781905562016b4881016008556202d69081016009556205ad208101600a55620b5a408101600b55621107608101600c55600060135560015b60068160ff16101562000279576200025d60136001830360ff1660068110620001d857fe5b015462000249600d6001850360ff1660068110620001f257fe5b01546200023560076001870360ff16600681106200020c57fe5b015460078760ff16600681106200021f57fe5b01546200029460201b62000f0a1790919060201c565b620002e760201b62000f531790919060201c565b6200034560201b62000fac1790919060201c565b60138260ff16600681106200026e57fe5b0155600101620001b3565b5050600680546001600160a01b031916331790555062000513565b6000620002de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620003a060201b60201c565b90505b92915050565b600082620002f857506000620002e1565b828202828482816200030657fe5b0414620002de5760405162461bcd60e51b815260040180806020018281038252602181526020018062001c3e6021913960400191505060405180910390fd5b600082820183811015620002de576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115620004335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620003f7578181015183820152602001620003dd565b50505050905090810190601f168015620004255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b826006810192821562000477579160200282015b828111156200047757825182906001600160401b03169055916020019190600101906200044f565b5062000485929150620004fc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cc57805160ff191683800117855562000477565b8280016001018555821562000477579182015b8281111562000477578251825591602001919060010190620004df565b5b80821115620004855760008155600101620004fd565b61171b80620005236000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806377c7b8fc116100f9578063ab2f0e5111610097578063dd62ed3e11610071578063dd62ed3e146104d4578063e9fad8ee14610502578063f085c7b41461050a578063fc47e20914610527576101c4565b8063ab2f0e51146104bc578063b774e0c3146104c4578063da06c1ff146104cc576101c4565b8063a457c2d7116100d3578063a457c2d714610421578063a59f3e0c1461044d578063a9059cbb1461046a578063ab033ea914610496576101c4565b806377c7b8fc1461040957806395d89b41146104115780639de0e1d314610419576101c4565b8063313ce567116101665780635aa6e675116101405780635aa6e675146103a157806367dfd4c9146103a957806370a08231146103c65780637665cd19146103ec576101c4565b8063313ce5671461031f578063395093511461033d57806354575af414610369576101c4565b806318160ddd116101a257806318160ddd146102b557806322bf6025146102bd57806323b872dd146102c55780632f2a04be146102fb576101c4565b806306fdde03146101c957806308ebd14414610246578063095ea7b314610275575b600080fd5b6101d161052f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102636004803603602081101561025c57600080fd5b50356105c6565b60408051918252519081900360200190f35b6102a16004803603604081101561028b57600080fd5b506001600160a01b0381351690602001356105da565b604080519115158252519081900360200190f35b6102636105f8565b6102636105fe565b6102a1600480360360608110156102db57600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61030361073c565b604080516001600160a01b039092168252519081900360200190f35b610327610750565b6040805160ff9092168252519081900360200190f35b6102a16004803603604081101561035357600080fd5b506001600160a01b038135169060200135610759565b61039f6004803603606081101561037f57600080fd5b506001600160a01b038135811691602081013591604090910135166107a7565b005b610303610911565b61039f600480360360208110156103bf57600080fd5b5035610920565b610263600480360360208110156103dc57600080fd5b50356001600160a01b0316610a1d565b6102636004803603602081101561040257600080fd5b5035610a38565b610263610a45565b6101d1610a85565b610263610ae6565b6102a16004803603604081101561043757600080fd5b506001600160a01b038135169060200135610b1b565b61039f6004803603602081101561046357600080fd5b5035610b83565b6102a16004803603604081101561048057600080fd5b506001600160a01b038135169060200135610c76565b61039f600480360360208110156104ac57600080fd5b50356001600160a01b0316610c8a565b610263610cf9565b610263610d9b565b610263610e19565b610263600480360360408110156104ea57600080fd5b506001600160a01b0381358116916020013516610eb9565b61039f610ee4565b6102636004803603602081101561052057600080fd5b5035610ef7565b610263610f04565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505090505b90565b600d81600681106105d357fe5b0154905081565b60006105ee6105e7611006565b848461100a565b5060015b92915050565b60025490565b6000806106096105f8565b90508061061a5760009150506105c3565b60075443908111610630576000925050506105c3565b600061063a610e19565b90506000610646610cf9565b90506000848211156106615761065c8286610f0a565b610664565b60005b9050600061069861067b6007835b01548790610f0a565b61069262249f0061068c8887610fac565b90610f53565b906110f6565b90506106aa8661069283612710610f53565b965050505050505090565b60006106c2848484611138565b610732846106ce611006565b61072d8560405180606001604052806028815260200161162f602891396001600160a01b038a1660009081526001602052604081209061070c611006565b6001600160a01b031681526020810191909152604001600020549190611293565b61100a565b5060019392505050565b60055461010090046001600160a01b031681565b60055460ff1690565b60006105ee610766611006565b8461072d8560016000610777611006565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610fac565b6006546001600160a01b031633146107f4576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b6005546001600160a01b03848116610100909204161415610842576040805162461bcd60e51b81526020600482015260036024820152620b282b60eb1b604482015290519081900360640190fd5b6001600160a01b038316301415610889576040805162461bcd60e51b815260206004808301919091526024820152630e6b282b60e31b604482015290519081900360640190fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b5050505050565b6006546001600160a01b031681565b6000811161095f576040805162461bcd60e51b8152602060048201526007602482015266215f736861726560c81b604482015290519081900360640190fd5b6000610969610cf9565b905060006109756105f8565b90506000610987826106928686610f53565b9050610993338561132a565b6005546040805163a9059cbb60e01b81523360048201526024810184905290516101009092046001600160a01b03169163a9059cbb916044808201926020929091908290030181600087803b1580156109eb57600080fd5b505af11580156109ff573d6000803e3d6000fd5b505050506040513d6020811015610a1557600080fd5b505050505050565b6001600160a01b031660009081526020819052604090205490565b600781600681106105d357fe5b600080610a506105f8565b90508015610a7557610a7081610692670de0b6b3a764000061068c610cf9565b610a7f565b670de0b6b3a76400005b91505090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105bb5780601f10610590576101008083540402835291602001916105bb565b600080610af16105f8565b905080610b025760009150506105c3565b610a7f8161069261271061068c62249f0061068c610d9b565b60006105ee610b28611006565b8461072d856040518060600160405280602581526020016116c16025913960016000610b52611006565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611293565b60008111610bc3576040805162461bcd60e51b81526020600482015260086024820152670857d85b5bdd5b9d60c21b604482015290519081900360640190fd5b6000610bcd610cf9565b90506000610bd96105f8565b9050801580610be6575081155b15610bfa57610bf53384611426565b610c18565b6000610c0a836106928685610f53565b9050610c163382611426565b505b600554604080516323b872dd60e01b81523360048201523060248201526044810186905290516101009092046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b1580156108e057600080fd5b60006105ee610c83611006565b8484611138565b6006546001600160a01b03163314610cd7576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d96601360050154610d90610d0f610e19565b600554604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b158015610d5e57600080fd5b505afa158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b505190610fac565b90610f0a565b905090565b600043600782015481111580610db35750600c548110155b15610dc25760009150506105c3565b60015b60068160ff161015610e105760078160ff1660068110610de157fe5b0154821015610e0857600d6001820360ff1660068110610dfd57fe5b0154925050506105c3565b600101610dc5565b50600091505090565b6000436007600501548110610e325750506018546105c3565b60055b60018160ff1610610e105760076001820360ff1660068110610e5357fe5b01548210610eb057610ea760136001830360ff1660068110610e7157fe5b0154610ea1600d6001850360ff1660068110610e8957fe5b015461068c60076001870360ff166006811061067257fe5b90610fac565b925050506105c3565b60001901610e35565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ef5610ef033610a1d565b610920565b565b601381600681106105d357fe5b61b5a481565b6000610f4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611293565b9392505050565b600082610f62575060006105f2565b82820282848281610f6f57fe5b0414610f4c5760405162461bcd60e51b815260040180806020018281038252602181526020018061160e6021913960400191505060405180910390fd5b600082820183811015610f4c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b03831661104f5760405162461bcd60e51b815260040180806020018281038252602481526020018061169d6024913960400191505060405180910390fd5b6001600160a01b0382166110945760405162461bcd60e51b81526004018080602001828103825260228152602001806115c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610f4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611516565b6001600160a01b03831661117d5760405162461bcd60e51b81526004018080602001828103825260258152602001806116786025913960400191505060405180910390fd5b6001600160a01b0382166111c25760405162461bcd60e51b81526004018080602001828103825260238152602001806115816023913960400191505060405180910390fd5b6111cd83838361157b565b61120a816040518060600160405280602681526020016115e8602691396001600160a01b0386166000908152602081905260409020549190611293565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546112399082610fac565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112e75781810151838201526020016112cf565b50505050905090810190601f1680156113145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661136f5760405162461bcd60e51b81526004018080602001828103825260218152602001806116576021913960400191505060405180910390fd5b61137b8260008361157b565b6113b8816040518060600160405280602281526020016115a4602291396001600160a01b0385166000908152602081905260409020549190611293565b6001600160a01b0383166000908152602081905260409020556002546113de9082610f0a565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038216611481576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61148d6000838361157b565b60025461149a9082610fac565b6002556001600160a01b0382166000908152602081905260409020546114c09082610fac565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081836115655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112e75781810151838201526020016112cf565b50600083858161157157fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d3d403f764e0ab5c5c58a19e060ba0dffb32f64c8f9cd8d1d30c44e2c458c4da64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000b1dc9124c395c1e97773ab855d66e879f053a2890000000000000000000000000000000000000000000000000000000000aa8070

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806377c7b8fc116100f9578063ab2f0e5111610097578063dd62ed3e11610071578063dd62ed3e146104d4578063e9fad8ee14610502578063f085c7b41461050a578063fc47e20914610527576101c4565b8063ab2f0e51146104bc578063b774e0c3146104c4578063da06c1ff146104cc576101c4565b8063a457c2d7116100d3578063a457c2d714610421578063a59f3e0c1461044d578063a9059cbb1461046a578063ab033ea914610496576101c4565b806377c7b8fc1461040957806395d89b41146104115780639de0e1d314610419576101c4565b8063313ce567116101665780635aa6e675116101405780635aa6e675146103a157806367dfd4c9146103a957806370a08231146103c65780637665cd19146103ec576101c4565b8063313ce5671461031f578063395093511461033d57806354575af414610369576101c4565b806318160ddd116101a257806318160ddd146102b557806322bf6025146102bd57806323b872dd146102c55780632f2a04be146102fb576101c4565b806306fdde03146101c957806308ebd14414610246578063095ea7b314610275575b600080fd5b6101d161052f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102636004803603602081101561025c57600080fd5b50356105c6565b60408051918252519081900360200190f35b6102a16004803603604081101561028b57600080fd5b506001600160a01b0381351690602001356105da565b604080519115158252519081900360200190f35b6102636105f8565b6102636105fe565b6102a1600480360360608110156102db57600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61030361073c565b604080516001600160a01b039092168252519081900360200190f35b610327610750565b6040805160ff9092168252519081900360200190f35b6102a16004803603604081101561035357600080fd5b506001600160a01b038135169060200135610759565b61039f6004803603606081101561037f57600080fd5b506001600160a01b038135811691602081013591604090910135166107a7565b005b610303610911565b61039f600480360360208110156103bf57600080fd5b5035610920565b610263600480360360208110156103dc57600080fd5b50356001600160a01b0316610a1d565b6102636004803603602081101561040257600080fd5b5035610a38565b610263610a45565b6101d1610a85565b610263610ae6565b6102a16004803603604081101561043757600080fd5b506001600160a01b038135169060200135610b1b565b61039f6004803603602081101561046357600080fd5b5035610b83565b6102a16004803603604081101561048057600080fd5b506001600160a01b038135169060200135610c76565b61039f600480360360208110156104ac57600080fd5b50356001600160a01b0316610c8a565b610263610cf9565b610263610d9b565b610263610e19565b610263600480360360408110156104ea57600080fd5b506001600160a01b0381358116916020013516610eb9565b61039f610ee4565b6102636004803603602081101561052057600080fd5b5035610ef7565b610263610f04565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505090505b90565b600d81600681106105d357fe5b0154905081565b60006105ee6105e7611006565b848461100a565b5060015b92915050565b60025490565b6000806106096105f8565b90508061061a5760009150506105c3565b60075443908111610630576000925050506105c3565b600061063a610e19565b90506000610646610cf9565b90506000848211156106615761065c8286610f0a565b610664565b60005b9050600061069861067b6007835b01548790610f0a565b61069262249f0061068c8887610fac565b90610f53565b906110f6565b90506106aa8661069283612710610f53565b965050505050505090565b60006106c2848484611138565b610732846106ce611006565b61072d8560405180606001604052806028815260200161162f602891396001600160a01b038a1660009081526001602052604081209061070c611006565b6001600160a01b031681526020810191909152604001600020549190611293565b61100a565b5060019392505050565b60055461010090046001600160a01b031681565b60055460ff1690565b60006105ee610766611006565b8461072d8560016000610777611006565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610fac565b6006546001600160a01b031633146107f4576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b6005546001600160a01b03848116610100909204161415610842576040805162461bcd60e51b81526020600482015260036024820152620b282b60eb1b604482015290519081900360640190fd5b6001600160a01b038316301415610889576040805162461bcd60e51b815260206004808301919091526024820152630e6b282b60e31b604482015290519081900360640190fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b5050505050565b6006546001600160a01b031681565b6000811161095f576040805162461bcd60e51b8152602060048201526007602482015266215f736861726560c81b604482015290519081900360640190fd5b6000610969610cf9565b905060006109756105f8565b90506000610987826106928686610f53565b9050610993338561132a565b6005546040805163a9059cbb60e01b81523360048201526024810184905290516101009092046001600160a01b03169163a9059cbb916044808201926020929091908290030181600087803b1580156109eb57600080fd5b505af11580156109ff573d6000803e3d6000fd5b505050506040513d6020811015610a1557600080fd5b505050505050565b6001600160a01b031660009081526020819052604090205490565b600781600681106105d357fe5b600080610a506105f8565b90508015610a7557610a7081610692670de0b6b3a764000061068c610cf9565b610a7f565b670de0b6b3a76400005b91505090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105bb5780601f10610590576101008083540402835291602001916105bb565b600080610af16105f8565b905080610b025760009150506105c3565b610a7f8161069261271061068c62249f0061068c610d9b565b60006105ee610b28611006565b8461072d856040518060600160405280602581526020016116c16025913960016000610b52611006565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611293565b60008111610bc3576040805162461bcd60e51b81526020600482015260086024820152670857d85b5bdd5b9d60c21b604482015290519081900360640190fd5b6000610bcd610cf9565b90506000610bd96105f8565b9050801580610be6575081155b15610bfa57610bf53384611426565b610c18565b6000610c0a836106928685610f53565b9050610c163382611426565b505b600554604080516323b872dd60e01b81523360048201523060248201526044810186905290516101009092046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b1580156108e057600080fd5b60006105ee610c83611006565b8484611138565b6006546001600160a01b03163314610cd7576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d96601360050154610d90610d0f610e19565b600554604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b158015610d5e57600080fd5b505afa158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b505190610fac565b90610f0a565b905090565b600043600782015481111580610db35750600c548110155b15610dc25760009150506105c3565b60015b60068160ff161015610e105760078160ff1660068110610de157fe5b0154821015610e0857600d6001820360ff1660068110610dfd57fe5b0154925050506105c3565b600101610dc5565b50600091505090565b6000436007600501548110610e325750506018546105c3565b60055b60018160ff1610610e105760076001820360ff1660068110610e5357fe5b01548210610eb057610ea760136001830360ff1660068110610e7157fe5b0154610ea1600d6001850360ff1660068110610e8957fe5b015461068c60076001870360ff166006811061067257fe5b90610fac565b925050506105c3565b60001901610e35565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ef5610ef033610a1d565b610920565b565b601381600681106105d357fe5b61b5a481565b6000610f4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611293565b9392505050565b600082610f62575060006105f2565b82820282848281610f6f57fe5b0414610f4c5760405162461bcd60e51b815260040180806020018281038252602181526020018061160e6021913960400191505060405180910390fd5b600082820183811015610f4c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b03831661104f5760405162461bcd60e51b815260040180806020018281038252602481526020018061169d6024913960400191505060405180910390fd5b6001600160a01b0382166110945760405162461bcd60e51b81526004018080602001828103825260228152602001806115c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610f4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611516565b6001600160a01b03831661117d5760405162461bcd60e51b81526004018080602001828103825260258152602001806116786025913960400191505060405180910390fd5b6001600160a01b0382166111c25760405162461bcd60e51b81526004018080602001828103825260238152602001806115816023913960400191505060405180910390fd5b6111cd83838361157b565b61120a816040518060600160405280602681526020016115e8602691396001600160a01b0386166000908152602081905260409020549190611293565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546112399082610fac565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112e75781810151838201526020016112cf565b50505050905090810190601f1680156113145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661136f5760405162461bcd60e51b81526004018080602001828103825260218152602001806116576021913960400191505060405180910390fd5b61137b8260008361157b565b6113b8816040518060600160405280602281526020016115a4602291396001600160a01b0385166000908152602081905260409020549190611293565b6001600160a01b0383166000908152602081905260409020556002546113de9082610f0a565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038216611481576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61148d6000838361157b565b60025461149a9082610fac565b6002556001600160a01b0382166000908152602081905260409020546114c09082610fac565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081836115655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112e75781810151838201526020016112cf565b50600083858161157157fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d3d403f764e0ab5c5c58a19e060ba0dffb32f64c8f9cd8d1d30c44e2c458c4da64736f6c634300060c0033

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

000000000000000000000000b1dc9124c395c1e97773ab855d66e879f053a2890000000000000000000000000000000000000000000000000000000000aa8070

-----Decoded View---------------
Arg [0] : _yax (address): 0xb1dC9124c395c1e97773ab855d66E879f053A289
Arg [1] : _startBlock (uint256): 11174000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b1dc9124c395c1e97773ab855d66e879f053a289
Arg [1] : 0000000000000000000000000000000000000000000000000000000000aa8070


Deployed Bytecode Sourcemap

26054:6310:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17032:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26375:129;;;;;;;;;;;;;;;;-1:-1:-1;26375:129:0;;:::i;:::-;;;;;;;;;;;;;;;;19138:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19138:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18107:100;;;:::i;30445:556::-;;;:::i;19781:321::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19781:321:0;;;;;;;;;;;;;;;;;:::i;26143:17::-;;;:::i;:::-;;;;-1:-1:-1;;;;;26143:17:0;;;;;;;;;;;;;;17959:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20511:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20511:218:0;;;;;;;;:::i;32044:317::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32044:317:0;;;;;;;;;;;;;;;;;:::i;:::-;;26169:25;;;:::i;29469:501::-;;;;;;;;;;;;;;;;-1:-1:-1;29469:501:0;;:::i;18270:119::-;;;;;;;;;;;;;;;;-1:-1:-1;18270:119:0;-1:-1:-1;;;;;18270:119:0;;:::i;26299:24::-;;;;;;;;;;;;;;;;-1:-1:-1;26299:24:0;;:::i;30187:179::-;;;:::i;17234:87::-;;;:::i;31090:235::-;;;:::i;21232:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21232:269:0;;;;;;;;:::i;28493:869::-;;;;;;;;;;;;;;;;-1:-1:-1;28493:869:0;;:::i;18602:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18602:175:0;;;;;;;;:::i;27480:153::-;;;;;;;;;;;;;;;;-1:-1:-1;27480:153:0;-1:-1:-1;;;;;27480:153:0;;:::i;28238:156::-;;;:::i;31384:361::-;;;:::i;27641:432::-;;;:::i;18840:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18840:151:0;;;;;;;;;;:::i;30032:70::-;;;:::i;26513:30::-;;;;;;;;;;;;;;;;-1:-1:-1;26513:30:0;;:::i;26203:44::-;;;:::i;17032:83::-;17102:5;17095:12;;;;;;;;-1:-1:-1;;17095:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17069:13;;17095:12;;17102:5;;17095:12;;17102:5;17095:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17032:83;;:::o;26375:129::-;;;;;;;;;;;;;-1:-1:-1;26375:129:0;:::o;19138:169::-;19221:4;19238:39;19247:12;:10;:12::i;:::-;19261:7;19270:6;19238:8;:39::i;:::-;-1:-1:-1;19295:4:0;19138:169;;;;;:::o;18107:100::-;18187:12;;18107:100;:::o;30445:556::-;30494:4;30511:8;30522:13;:11;:13::i;:::-;30511:24;-1:-1:-1;30550:8:0;30546:22;;30567:1;30560:8;;;;;30546:22;30630:9;:12;30593;;30620:22;;30616:36;;30651:1;30644:8;;;;;;30616:36;30663:14;30680:17;:15;:17::i;:::-;30663:34;;30708:8;30719:18;:16;:18::i;:::-;30708:29;;30748:16;30775:3;30768;:10;;30767:31;;30786:12;:3;30794;30786:7;:12::i;:::-;30767:31;;;30782:1;30767:31;30748:50;-1:-1:-1;30809:19:0;30831:69;30875:24;30886:9;30809:19;30886:12;;;30875:6;;:10;:24::i;:::-;30831:39;30862:7;30831:26;:9;30845:11;30831:13;:26::i;:::-;:30;;:39::i;:::-;:43;;:69::i;:::-;30809:91;-1:-1:-1;30959:34:0;30989:3;30959:25;30809:91;30978:5;30959:18;:25::i;:34::-;30952:41;;;;;;;;30445:556;:::o;19781:321::-;19887:4;19904:36;19914:6;19922:9;19933:6;19904:9;:36::i;:::-;19951:121;19960:6;19968:12;:10;:12::i;:::-;19982:89;20020:6;19982:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19982:19:0;;;;;;:11;:19;;;;;;20002:12;:10;:12::i;:::-;-1:-1:-1;;;;;19982:33:0;;;;;;;;;;;;-1:-1:-1;19982:33:0;;;:89;:37;:89::i;:::-;19951:8;:121::i;:::-;-1:-1:-1;20090:4:0;19781:321;;;;;:::o;26143:17::-;;;;;;-1:-1:-1;;;;;26143:17:0;;:::o;17959:83::-;18025:9;;;;17959:83;:::o;20511:218::-;20599:4;20616:83;20625:12;:10;:12::i;:::-;20639:7;20648:50;20687:10;20648:11;:25;20660:12;:10;:12::i;:::-;-1:-1:-1;;;;;20648:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;20648:25:0;;;:34;;;;;;;;;;;:38;:50::i;32044:317::-;32169:10;;-1:-1:-1;;;;;32169:10:0;32155;:24;32147:48;;;;;-1:-1:-1;;;32147:48:0;;;;;;;;;;;;-1:-1:-1;;;32147:48:0;;;;;;;;;;;;;;;32241:3;;-1:-1:-1;;;;;32214:31:0;;;32241:3;;;;;32214:31;;32206:47;;;;;-1:-1:-1;;;32206:47:0;;;;;;;;;;;;-1:-1:-1;;;32206:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32272:32:0;;32299:4;32272:32;;32264:49;;;;;-1:-1:-1;;;32264:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;32264:49:0;;;;;;;;;;;;;;;32324:6;-1:-1:-1;;;;;32324:15:0;;32340:3;32345:7;32324:29;;;;;;;;;;;;;-1:-1:-1;;;;;32324:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32044:317:0:o;26169:25::-;;;-1:-1:-1;;;;;26169:25:0;;:::o;29469:501::-;29532:1;29523:6;:10;29515:30;;;;;-1:-1:-1;;;29515:30:0;;;;;;;;;;;;-1:-1:-1;;;29515:30:0;;;;;;;;;;;;;;;29626:16;29645:18;:16;:18::i;:::-;29626:37;;29725:17;29745:13;:11;:13::i;:::-;29725:33;-1:-1:-1;29830:9:0;29842:41;29725:33;29842:23;:6;29853:11;29842:10;:23::i;:41::-;29830:53;;29896:25;29902:10;29914:6;29896:5;:25::i;:::-;29932:3;;:30;;;-1:-1:-1;;;29932:30:0;;29945:10;29932:30;;;;;;;;;;;;:3;;;;-1:-1:-1;;;;;29932:3:0;;:12;;:30;;;;;;;;;;;;;;;-1:-1:-1;29932:3:0;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29469:501:0:o;18270:119::-;-1:-1:-1;;;;;18363:18:0;18336:7;18363:18;;;;;;;;;;;;18270:119::o;26299:24::-;;;;;;;;;30187:179;30242:4;30259:8;30270:13;:11;:13::i;:::-;30259:24;-1:-1:-1;30302:8:0;;30301:57;;30321:37;30354:3;30321:28;30344:4;30321:18;:16;:18::i;:37::-;30301:57;;;30314:4;30301:57;30294:64;;;30187:179;:::o;17234:87::-;17306:7;17299:14;;;;;;;;-1:-1:-1;;17299:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17273:13;;17299:14;;17306:7;;17299:14;;17306:7;17299:14;;;;;;;;;;;;;;;;;;;;;;;;31090:235;31138:4;31155:8;31166:13;:11;:13::i;:::-;31155:24;-1:-1:-1;31194:8:0;31190:22;;31211:1;31204:8;;;;;31190:22;31230:46;31272:3;31230:37;31261:5;31230:26;31248:7;31230:13;:11;:13::i;21232:269::-;21325:4;21342:129;21351:12;:10;:12::i;:::-;21365:7;21374:96;21413:15;21374:96;;;;;;;;;;;;;;;;;:11;:25;21386:12;:10;:12::i;:::-;-1:-1:-1;;;;;21374:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;21374:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;28493:869::-;28558:1;28548:7;:11;28540:32;;;;;-1:-1:-1;;;28540:32:0;;;;;;;;;;;;-1:-1:-1;;;28540:32:0;;;;;;;;;;;;;;;28653:16;28672:18;:16;:18::i;:::-;28653:37;;28752:17;28772:13;:11;:13::i;:::-;28752:33;-1:-1:-1;28802:17:0;;;:37;;-1:-1:-1;28823:16:0;;28802:37;28798:451;;;28911:26;28917:10;28929:7;28911:5;:26::i;:::-;28798:451;;;29145:9;29157:42;29187:11;29157:25;:7;29169:12;29157:11;:25::i;:42::-;29145:54;;29214:23;29220:10;29232:4;29214:5;:23::i;:::-;28798:451;;29302:3;;:52;;;-1:-1:-1;;;29302:52:0;;29319:10;29302:52;;;;29339:4;29302:52;;;;;;;;;;;;:3;;;;-1:-1:-1;;;;;29302:3:0;;:16;;:52;;;;;;;;;;;;;;;-1:-1:-1;29302:3:0;:52;;;;;;;;;;18602:175;18688:4;18705:42;18715:12;:10;:12::i;:::-;18729:9;18740:6;18705:9;:42::i;27480:153::-;27564:10;;-1:-1:-1;;;;;27564:10:0;27550;:24;27542:48;;;;;-1:-1:-1;;;27542:48:0;;;;;;;;;;;;-1:-1:-1;;;27542:48:0;;;;;;;;;;;;;;;27601:10;:24;;-1:-1:-1;;;;;;27601:24:0;-1:-1:-1;;;;;27601:24:0;;;;;;;;;;27480:153::o;28238:156::-;28287:4;28311:75;28367:15;28383:1;28367:18;;28311:51;28344:17;:15;:17::i;:::-;28311:3;;:28;;;-1:-1:-1;;;28311:28:0;;28333:4;28311:28;;;;;;:3;;;;-1:-1:-1;;;;;28311:3:0;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28311:28:0;;:32;:51::i;:::-;:55;;:75::i;:::-;28304:82;;28238:156;:::o;31384:361::-;31428:4;31459:12;31496:9;31428:4;31496:12;;31486:6;:22;;:48;;;-1:-1:-1;31522:12:0;;31512:22;;;31486:48;31482:62;;;31543:1;31536:8;;;;;31482:62;31574:1;31555:164;31585:1;31577:5;:9;;;31555:164;;;31625:9;31635:5;31625:16;;;;;;;;;;;31616:6;:25;31612:96;;;31669:12;31690:1;31682:5;:9;31669:23;;;;;;;;;;;31662:30;;;;;;31612:96;31588:7;;31555:164;;;;31736:1;31729:8;;;31384:361;:::o;27641:432::-;27689:4;27720:12;27757:9;27767:1;27757:12;;27747:6;:22;27743:53;;-1:-1:-1;;27778:18:0;;27771:25;;27743:53;27826:1;27807:240;27838:1;27829:5;:10;;;27807:240;;27879:9;27897:1;27889:5;:9;27879:20;;;;;;;;;;;27869:6;:30;27865:171;;27927:93;27993:15;28017:1;28009:5;:9;27993:26;;;;;;;;;;;27927:61;27964:12;27985:1;27977:5;:9;27964:23;;;;;;;;;;;27927:32;27938:9;27956:1;27948:5;:9;27938:20;;;;;;;;27927:61;:65;;:93::i;:::-;27920:100;;;;;;27865:171;-1:-1:-1;;27841:7:0;27807:240;;18840:151;-1:-1:-1;;;;;18956:18:0;;;18929:7;18956:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18840:151::o;30032:70::-;30066:28;30072:21;30082:10;30072:9;:21::i;:::-;30066:5;:28::i;:::-;30032:70::o;26513:30::-;;;;;;;;;26203:44;26242:5;26203:44;:::o;4985:136::-;5043:7;5070:43;5074:1;5077;5070:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5063:50;4985:136;-1:-1:-1;;;4985:136:0:o;5875:471::-;5933:7;6178:6;6174:47;;-1:-1:-1;6208:1:0;6201:8;;6174:47;6245:5;;;6249:1;6245;:5;:1;6269:5;;;;;:10;6261:56;;;;-1:-1:-1;;;6261:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4521:181;4579:7;4611:5;;;4635:6;;;;4627:46;;;;;-1:-1:-1;;;4627:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:106;3406:10;3318:106;:::o;24377:346::-;-1:-1:-1;;;;;24479:19:0;;24471:68;;;;-1:-1:-1;;;24471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24558:21:0;;24550:68;;;;-1:-1:-1;;;24550:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24631:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24683:32;;;;;;;;;;;;;;;;;24377:346;;;:::o;6822:132::-;6880:7;6907:39;6911:1;6914;6907:39;;;;;;;;;;;;;;;;;:3;:39::i;21991:539::-;-1:-1:-1;;;;;22097:20:0;;22089:70;;;;-1:-1:-1;;;22089:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22178:23:0;;22170:71;;;;-1:-1:-1;;;22170:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22254:47;22275:6;22283:9;22294:6;22254:20;:47::i;:::-;22334:71;22356:6;22334:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22334:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;22314:17:0;;;:9;:17;;;;;;;;;;;:91;;;;22439:20;;;;;;;:32;;22464:6;22439:24;:32::i;:::-;-1:-1:-1;;;;;22416:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;22487:35;;;;;;;22416:20;;22487:35;;;;;;;;;;;;;21991:539;;;:::o;5424:192::-;5510:7;5546:12;5538:6;;;;5530:29;;;;-1:-1:-1;;;5530:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5582:5:0;;;5424:192::o;23521:418::-;-1:-1:-1;;;;;23605:21:0;;23597:67;;;;-1:-1:-1;;;23597:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23677:49;23698:7;23715:1;23719:6;23677:20;:49::i;:::-;23760:68;23783:6;23760:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23760:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;23739:18:0;;:9;:18;;;;;;;;;;:89;23854:12;;:24;;23871:6;23854:16;:24::i;:::-;23839:12;:39;23894:37;;;;;;;;23920:1;;-1:-1:-1;;;;;23894:37:0;;;;;;;;;;;;23521:418;;:::o;22811:378::-;-1:-1:-1;;;;;22895:21:0;;22887:65;;;;;-1:-1:-1;;;22887:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22965:49;22994:1;22998:7;23007:6;22965:20;:49::i;:::-;23042:12;;:24;;23059:6;23042:16;:24::i;:::-;23027:12;:39;-1:-1:-1;;;;;23098:18:0;;:9;:18;;;;;;;;;;;:30;;23121:6;23098:22;:30::i;:::-;-1:-1:-1;;;;;23077:18:0;;:9;:18;;;;;;;;;;;:51;;;;23144:37;;;;;;;23077:18;;:9;;23144:37;;;;;;;;;;22811:378;;:::o;7450:278::-;7536:7;7571:12;7564:5;7556:28;;;;-1:-1:-1;;;7556:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7595:9;7611:1;7607;:5;;;;;;;7450:278;-1:-1:-1;;;;;7450:278:0:o;25748:91::-;;;;:::o

Swarm Source

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