Contract 0x74b0af515031598132d7455883c97846d5e3cfb8

 

Contract Overview

Rubik Finance: Rubik DAO Rebate Treasury
Balance:
0 FTM

FTM Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7075a93640c5058b9cbf98d7ce85e103970d3580c0b19e3ca7fb0f0401a097a8Set Asset367272342022-04-22 20:50:26291 days 58 mins agoRubik Finance: Deployer IN  Rubik Finance: Rubik DAO Rebate Treasury0 FTM0.0260883925
0x32493658f7a85cc9bb0f7bea3cc684c79ad00437c978ff31e81c66fed42b9021Set Asset367257692022-04-22 20:25:56291 days 1 hr agoRubik Finance: Deployer IN  Rubik Finance: Rubik DAO Rebate Treasury0 FTM0.034046423046
0xa62204ba3d1903d949c0ca6a1486bc4a8b9618d3793c0f3c6691374c88de43b3Set Asset366553532022-04-21 23:31:28291 days 22 hrs agoRubik Finance: Deployer IN  Rubik Finance: Rubik DAO Rebate Treasury0 FTM0.033692455907
0x52b0cc1b632a14e0fde0ca032671bd557292e3ddf05b14328b77a02596a7825aSet Asset366552002022-04-21 23:29:01291 days 22 hrs agoRubik Finance: Deployer IN  Rubik Finance: Rubik DAO Rebate Treasury0 FTM0.034039335135
0xfd62deb35bba52df9bb68b5b1fa4e5978fb46d32bfd01f9e642af52e78b7442dSet Asset366550922022-04-21 23:27:21291 days 22 hrs agoRubik Finance: Deployer IN  Rubik Finance: Rubik DAO Rebate Treasury0 FTM0.030464546451
0xd5cd39cdd597679b063a92bf6db37c1d566a501144d353aadb31dc84deb3990a0x60806040366538822022-04-21 23:06:05291 days 22 hrs agoRubik Finance: Deployer IN  Create: RebateTreasury0 FTM0.584824708425
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xd5cd39cdd597679b063a92bf6db37c1d566a501144d353aadb31dc84deb3990a366538822022-04-21 23:06:05291 days 22 hrs ago Rubik Finance: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RebateTreasury

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-04-21
*/

// SPDX-License-Identifier: MIT


// OpenZeppelin Contracts v4.4.1 (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;
    }
}

// OpenZeppelin Contracts v4.4.1 (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() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

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

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

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


pragma solidity ^0.8.7;


interface IOracle {
    function update() external;
    function consult(address _token, uint256 _amountIn) external view returns (uint144 amountOut);
    function twap(address _token, uint256 _amountIn) external view returns (uint144 _amountOut);
}

interface ITreasury {
    function epoch() external view returns (uint256);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

contract RebateTreasury is Ownable {

    struct Asset {
        bool isAdded;
        uint256 multiplier;
        address oracle;
        bool isLP;
        address pair;
    }

    struct VestingSchedule {
        uint256 amount;
        uint256 period;
        uint256 end;
        uint256 claimed;
        uint256 lastClaimed;
    }

    IERC20 public Rubik;
    IOracle public RubikOracle;
    ITreasury public Treasury;

    mapping (address => Asset) public assets;
    mapping (address => VestingSchedule) public vesting;

    uint256 public bondThreshold = 20 * 1e4;
    uint256 public bondFactor = 80 * 1e4;
    uint256 public secondaryThreshold = 70 * 1e4;
    uint256 public secondaryFactor = 15 * 1e4;

    uint256 public bondVesting = 3 days;
    uint256 public totalVested = 0;

    uint256 public lastBuyback;
    uint256 public buybackAmount = 100 * 1e4;

    address public constant WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83;
    uint256 public constant DENOMINATOR = 1e6;

    /*
     * ---------
     * MODIFIERS
     * ---------
     */
    
    // Only allow a function to be called with a bondable asset

    modifier onlyAsset(address token) {
        require(assets[token].isAdded, "RebateTreasury: token is not a bondable asset");
        _;
    }

    /*
     * ------------------
     * EXTERNAL FUNCTIONS
     * ------------------
     */

    // Initialize parameters

    constructor(address rubik, address rubikOracle, address treasury) {
        Rubik = IERC20(rubik);
        RubikOracle = IOracle(rubikOracle);
        Treasury = ITreasury(treasury);
    }
    
    // Bond asset for discounted Rubik at bond rate

    function bond(address token, uint256 amount) external onlyAsset(token) {
        require(amount > 0, "RebateTreasury: invalid bond amount");
        uint256 rubikAmount = getRubikReturn(token, amount);
        require(rubikAmount <= Rubik.balanceOf(address(this)) - totalVested, "RebateTreasury: insufficient rubik balance");

        IERC20(token).transferFrom(msg.sender, address(this), amount);
        _claimVested(msg.sender);

        VestingSchedule storage schedule = vesting[msg.sender];
        schedule.amount = schedule.amount - schedule.claimed + rubikAmount;
        schedule.period = bondVesting;
        schedule.end = block.timestamp + bondVesting;
        schedule.claimed = 0;
        schedule.lastClaimed = block.timestamp;
        totalVested += rubikAmount;
    }

    // Claim available Rubik rewards from bonding

    function claimRewards() external {
        _claimVested(msg.sender);
    }

    /*
     * --------------------
     * RESTRICTED FUNCTIONS
     * --------------------
     */
    
    // Set Rubik token

    function setRubik(address rubik) external onlyOwner {
        Rubik = IERC20(rubik);
    }

    // Set Rubik oracle

    function setRubikOracle(address oracle) external onlyOwner {
        RubikOracle = IOracle(oracle);
    }

    // Set Rubik treasury

    function setTreasury(address treasury) external onlyOwner {
        Treasury = ITreasury(treasury);
    }
    
    // Set bonding parameters of token
    
    function setAsset(
        address token,
        bool isAdded,
        uint256 multiplier,
        address oracle,
        bool isLP,
        address pair
    ) external onlyOwner {
        assets[token].isAdded = isAdded;
        assets[token].multiplier = multiplier;
        assets[token].oracle = oracle;
        assets[token].isLP = isLP;
        assets[token].pair = pair;
    }

    // Set bond pricing parameters

    function setBondParameters(
        uint256 primaryThreshold,
        uint256 primaryFactor,
        uint256 secondThreshold,
        uint256 secondFactor,
        uint256 vestingPeriod
    ) external onlyOwner {
        bondThreshold = primaryThreshold;
        bondFactor = primaryFactor;
        secondaryThreshold = secondThreshold;
        secondaryFactor = secondFactor;
        bondVesting = vestingPeriod;
    }

    // Redeem assets for buyback under peg

    function redeemAssetsForBuyback(address[] calldata tokens) external onlyOwner {

        uint256 epoch = Treasury.epoch();
        require(lastBuyback != epoch, "RebateTreasury: already bought back");
        lastBuyback = epoch;

        for (uint256 t = 0; t < tokens.length; t ++) {
            require(assets[tokens[t]].isAdded, "RebateTreasury: invalid token");
            IERC20 Token = IERC20(tokens[t]);
            Token.transfer(owner(), Token.balanceOf(address(this)) * buybackAmount / DENOMINATOR);
        }
    }

    /*
     * ------------------
     * INTERNAL FUNCTIONS
     * ------------------
     */

    function _claimVested(address account) internal {
        VestingSchedule storage schedule = vesting[account];
        if (schedule.amount == 0 || schedule.amount == schedule.claimed) return;
        if (block.timestamp <= schedule.lastClaimed || schedule.lastClaimed >= schedule.end) return;

        uint256 duration = (block.timestamp > schedule.end ? schedule.end : block.timestamp) - schedule.lastClaimed;
        uint256 claimable = schedule.amount * duration / schedule.period;
        if (claimable == 0) return;

        schedule.claimed += claimable;
        schedule.lastClaimed = block.timestamp > schedule.end ? schedule.end : block.timestamp;
        totalVested -= claimable;
        Rubik.transfer(account, claimable);
    }

    /*
     * --------------
     * VIEW FUNCTIONS
     * --------------
     */

    // Calculate Rubik return of bonding amount of token

    function getRubikReturn(address token, uint256 amount) public view onlyAsset(token) returns (uint256) {
        uint256 rubikPrice = getRubikPrice();
        uint256 tokenPrice = getTokenPrice(token);
        uint256 bondPremium = getBondPremium();
        return amount * tokenPrice * (bondPremium + DENOMINATOR) * assets[token].multiplier / (DENOMINATOR * DENOMINATOR) / rubikPrice;
    }

    // Calculate premium for bonds based on bonding curve

    function getBondPremium() public view returns (uint256) {
        uint256 rubikPrice = getRubikPrice();
        if (rubikPrice < 1e18) return 0;

        uint256 rubikPremium = rubikPrice * DENOMINATOR / 1e18 - DENOMINATOR;
        if (rubikPremium < bondThreshold) return 0;
        if (rubikPremium <= secondaryThreshold) {
            return (rubikPremium - bondThreshold) * bondFactor / DENOMINATOR;
        } else {
            uint256 primaryPremium = (secondaryThreshold - bondThreshold) * bondFactor / DENOMINATOR;
            return primaryPremium + (rubikPremium - secondaryThreshold) * secondaryFactor / DENOMINATOR;
        }
    }

    // Get REBEL price from Oracle

    function getRubikPrice() public view returns (uint256) {
        return RubikOracle.consult(address(Rubik), 1e18);
    }

    // Get token price from Oracle

    function getTokenPrice(address token) public view onlyAsset(token) returns (uint256) {
        Asset memory asset = assets[token];
        IOracle Oracle = IOracle(asset.oracle);
        if (!asset.isLP) {
            return Oracle.consult(token, 1e18);
        }

        IUniswapV2Pair Pair = IUniswapV2Pair(asset.pair);
        uint256 totalPairSupply = Pair.totalSupply();
        address token0 = Pair.token0();
        address token1 = Pair.token1();
        (uint256 reserve0, uint256 reserve1,) = Pair.getReserves();

        if (token1 == WFTM) {
            uint256 tokenPrice = Oracle.consult(token0, 1e18);
            return tokenPrice * reserve0 / totalPairSupply +
                   reserve1 * 1e18 / totalPairSupply;
        } else {
            uint256 tokenPrice = Oracle.consult(token1, 1e18);
            return tokenPrice * reserve1 / totalPairSupply +
                   reserve0 * 1e18 / totalPairSupply;
        }
    }

    // Get claimable vested Rubik for account

    function claimableRubik(address account) external view returns (uint256) {
        VestingSchedule memory schedule = vesting[account];
        if (block.timestamp <= schedule.lastClaimed || schedule.lastClaimed >= schedule.end) return 0;
        uint256 duration = (block.timestamp > schedule.end ? schedule.end : block.timestamp) - schedule.lastClaimed;
        return schedule.amount * duration / schedule.period;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"rubik","type":"address"},{"internalType":"address","name":"rubikOracle","type":"address"},{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Rubik","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RubikOracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Treasury","outputs":[{"internalType":"contract ITreasury","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WFTM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assets","outputs":[{"internalType":"bool","name":"isAdded","type":"bool"},{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"bool","name":"isLP","type":"bool"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bondThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bondVesting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimableRubik","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBondPremium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRubikPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getRubikReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"redeemAssetsForBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"secondaryFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondaryThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"isAdded","type":"bool"},{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"bool","name":"isLP","type":"bool"},{"internalType":"address","name":"pair","type":"address"}],"name":"setAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"primaryThreshold","type":"uint256"},{"internalType":"uint256","name":"primaryFactor","type":"uint256"},{"internalType":"uint256","name":"secondThreshold","type":"uint256"},{"internalType":"uint256","name":"secondFactor","type":"uint256"},{"internalType":"uint256","name":"vestingPeriod","type":"uint256"}],"name":"setBondParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rubik","type":"address"}],"name":"setRubik","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"setRubikOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vesting","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimed","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405262030d40600655620c3500600755620aae60600855620249f06009556203f480600a556000600b55620f4240600d553480156200004057600080fd5b5060405162001c9038038062001c9083398101604081905262000063916200011e565b6200006e33620000b1565b600180546001600160a01b039485166001600160a01b03199182161790915560028054938516938216939093179092556003805491909316911617905562000168565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200011957600080fd5b919050565b6000806000606084860312156200013457600080fd5b6200013f8462000101565b92506200014f6020850162000101565b91506200015f6040850162000101565b90509250925092565b611b1880620001786000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806392bc9a6c1161010f578063d02641a0116100a2578063e388c42311610071578063e388c42314610399578063f0f44260146103fe578063f11b818814610411578063f2fde38b1461049a57600080fd5b8063d02641a014610361578063d411401d14610374578063d688763d1461037d578063db0a9c3d1461039057600080fd5b8063a515366a116100de578063a515366a1461032b578063b26df41c1461033e578063bf855e8714610351578063c31cbdeb1461035957600080fd5b806392bc9a6c146102df57806399a2faaf146102f25780639f882bd514610305578063a3a82e291461031857600080fd5b80635f390ec011610187578063715018a611610156578063715018a6146102b35780638da5cb5b146102bb578063918f8674146102cc5780639235f197146102d657600080fd5b80635f390ec01461027b578063613e98711461028e57806363fd7f49146102a157806367f77e9b146102aa57600080fd5b806333920e29116101c357806333920e291461024e578063372500ab146102575780633dd788a11461025f578063563df32f1461026857600080fd5b8063199cbc54146101ea57806321dbe8761461020657806324d17e3b14610239575b600080fd5b6101f3600b5481565b6040519081526020015b60405180910390f35b6102217321be370d5312f44cb42ce377bc9b8a0cef1a4c8381565b6040516001600160a01b0390911681526020016101fd565b61024c610247366004611741565b6104ad565b005b6101f3600a5481565b61024c610502565b6101f3600c5481565b600354610221906001600160a01b031681565b61024c610289366004611827565b61050d565b6101f361029c366004611741565b610831565b6101f360065481565b6101f360095481565b61024c6108fa565b6000546001600160a01b0316610221565b6101f3620f424081565b6101f360085481565b600254610221906001600160a01b031681565b61024c61030036600461194b565b61092e565b61024c610313366004611782565b61096f565b6101f36103263660046117fb565b610a0b565b61024c6103393660046117fb565b610ade565b61024c61034c366004611741565b610d72565b6101f3610dbe565b6101f3610ec8565b6101f361036f366004611741565b610f68565b6101f360075481565b600154610221906001600160a01b031681565b6101f3600d5481565b6103d66103a7366004611741565b600560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101fd565b61024c61040c366004611741565b611463565b61046261041f366004611741565b600460205260009081526040902080546001820154600283015460039093015460ff9283169391926001600160a01b0380841693600160a01b9004909116911685565b60408051951515865260208601949094526001600160a01b03928316938501939093521515606084015216608082015260a0016101fd565b61024c6104a8366004611741565b6114af565b6000546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d7906119d3565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61050b3361154a565b565b6000546001600160a01b031633146105375760405162461bcd60e51b81526004016104d7906119d3565b6003546040805163900cf0cf60e01b815290516000926001600160a01b03169163900cf0cf916004808301926020929190829003018186803b15801561057c57600080fd5b505afa158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b49190611932565b905080600c5414156106145760405162461bcd60e51b815260206004820152602360248201527f52656261746554726561737572793a20616c726561647920626f75676874206260448201526261636b60e81b60648201526084016104d7565b600c81905560005b8281101561082b576004600085858481811061063a5761063a611aa9565b905060200201602081019061064f9190611741565b6001600160a01b0316815260208101919091526040016000205460ff166106b85760405162461bcd60e51b815260206004820152601d60248201527f52656261746554726561737572793a20696e76616c696420746f6b656e00000060448201526064016104d7565b60008484838181106106cc576106cc611aa9565b90506020020160208101906106e19190611741565b9050806001600160a01b031663a9059cbb6107046000546001600160a01b031690565b600d546040516370a0823160e01b8152306004820152620f424091906001600160a01b038716906370a082319060240160206040518083038186803b15801561074c57600080fd5b505afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190611932565b61078e9190611a42565b6107989190611a20565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156107de57600080fd5b505af11580156107f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610816919061189c565b5050808061082390611a78565b91505061061c565b50505050565b6001600160a01b0381166000908152600560209081526040808320815160a081018352815481526001820154938101939093526002810154918301919091526003810154606083015260040154608082018190524211158061089b57508060400151816080015110155b156108a95750600092915050565b60008160800151826040015142116108c157426108c7565b82604001515b6108d19190611a61565b905081602001518183600001516108e89190611a42565b6108f29190611a20565b949350505050565b6000546001600160a01b031633146109245760405162461bcd60e51b81526004016104d7906119d3565b61050b60006116d5565b6000546001600160a01b031633146109585760405162461bcd60e51b81526004016104d7906119d3565b600694909455600792909255600855600955600a55565b6000546001600160a01b031633146109995760405162461bcd60e51b81526004016104d7906119d3565b6001600160a01b039586166000908152600460205260409020805460ff191695151595909517855560018501939093556002840180549286166001600160a81b031990931692909217600160a01b91151591909102179055600390910180546001600160a01b03191691909216179055565b6001600160a01b038216600090815260046020526040812054839060ff16610a455760405162461bcd60e51b81526004016104d790611986565b6000610a4f610ec8565b90506000610a5c86610f68565b90506000610a68610dbe565b905082610a78620f424080611a42565b6001600160a01b038916600090815260046020526040902060010154610aa1620f424085611a08565b610aab868b611a42565b610ab59190611a42565b610abf9190611a42565b610ac99190611a20565b610ad39190611a20565b979650505050505050565b6001600160a01b038216600090815260046020526040902054829060ff16610b185760405162461bcd60e51b81526004016104d790611986565b60008211610b745760405162461bcd60e51b815260206004820152602360248201527f52656261746554726561737572793a20696e76616c696420626f6e6420616d6f6044820152621d5b9d60ea1b60648201526084016104d7565b6000610b808484610a0b565b600b546001546040516370a0823160e01b815230600482015292935090916001600160a01b03909116906370a082319060240160206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190611932565b610c0d9190611a61565b811115610c6f5760405162461bcd60e51b815260206004820152602a60248201527f52656261746554726561737572793a20696e73756666696369656e7420727562604482015269696b2062616c616e636560b01b60648201526084016104d7565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf5919061189c565b50610cff3361154a565b336000908152600560205260409020600381015481548391610d2091611a61565b610d2a9190611a08565b8155600a5460018201819055610d409042611a08565b6002820155600060038201819055426004830155600b8054849290610d66908490611a08565b90915550505050505050565b6000546001600160a01b03163314610d9c5760405162461bcd60e51b81526004016104d7906119d3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080610dc9610ec8565b9050670de0b6b3a7640000811015610de357600091505090565b6000620f4240670de0b6b3a7640000610dfc8285611a42565b610e069190611a20565b610e109190611a61565b9050600654811015610e255760009250505090565b6008548111610e5e57620f424060075460065483610e439190611a61565b610e4d9190611a42565b610e579190611a20565b9250505090565b6000620f4240600754600654600854610e779190611a61565b610e819190611a42565b610e8b9190611a20565b9050620f424060095460085484610ea29190611a61565b610eac9190611a42565b610eb69190611a20565b610ec09082611a08565b935050505090565b600254600154604051633ddac95360e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201526000929190911690633ddac9539060440160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a9190611909565b6001600160901b0316905090565b6001600160a01b038116600090815260046020526040812054829060ff16610fa25760405162461bcd60e51b81526004016104d790611986565b6001600160a01b03808416600090815260046020908152604091829020825160a081018452815460ff908116151582526001830154938201939093526002820154808616948201859052600160a01b90049092161515606083018190526003909101549093166080820152916110ab57604051633ddac95360e01b81526001600160a01b038681166004830152670de0b6b3a76400006024830152821690633ddac9539060440160206040518083038186803b15801561106157600080fd5b505afa158015611075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190611909565b6001600160901b03169350505061145d565b6000826080015190506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ef57600080fd5b505afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111279190611932565b90506000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561116457600080fd5b505afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190611765565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112119190611765565b9050600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561124f57600080fd5b505afa158015611263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128791906118b9565b506001600160701b0391821693501690506001600160a01b0383167321be370d5312f44cb42ce377bc9b8a0cef1a4c83141561139f57604051633ddac95360e01b81526001600160a01b038581166004830152670de0b6b3a7640000602483015260009190891690633ddac9539060440160206040518083038186803b15801561131057600080fd5b505afa158015611324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113489190611909565b6001600160901b031690508561136683670de0b6b3a7640000611a42565b6113709190611a20565b8661137b8584611a42565b6113859190611a20565b61138f9190611a08565b9a5050505050505050505061145d565b604051633ddac95360e01b81526001600160a01b038481166004830152670de0b6b3a7640000602483015260009190891690633ddac9539060440160206040518083038186803b1580156113f257600080fd5b505afa158015611406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142a9190611909565b6001600160901b031690508561144884670de0b6b3a7640000611a42565b6114529190611a20565b8661137b8484611a42565b50919050565b6000546001600160a01b0316331461148d5760405162461bcd60e51b81526004016104d7906119d3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114d95760405162461bcd60e51b81526004016104d7906119d3565b6001600160a01b03811661153e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d7565b611547816116d5565b50565b6001600160a01b038116600090815260056020526040902080541580611574575060038101548154145b1561157d575050565b80600401544211158061159857508060020154816004015410155b156115a1575050565b60008160040154826002015442116115b957426115bf565b82600201545b6115c99190611a61565b9050600082600101548284600001546115e29190611a42565b6115ec9190611a20565b9050806115f95750505050565b8083600301600082825461160d9190611a08565b9091555050600283015442116116235742611629565b82600201545b836004018190555080600b60008282546116439190611a61565b909155505060015460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561169657600080fd5b505af11580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061189c565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160701b038116811461173c57600080fd5b919050565b60006020828403121561175357600080fd5b813561175e81611abf565b9392505050565b60006020828403121561177757600080fd5b815161175e81611abf565b60008060008060008060c0878903121561179b57600080fd5b86356117a681611abf565b955060208701356117b681611ad4565b94506040870135935060608701356117cd81611abf565b925060808701356117dd81611ad4565b915060a08701356117ed81611abf565b809150509295509295509295565b6000806040838503121561180e57600080fd5b823561181981611abf565b946020939093013593505050565b6000806020838503121561183a57600080fd5b823567ffffffffffffffff8082111561185257600080fd5b818501915085601f83011261186657600080fd5b81358181111561187557600080fd5b8660208260051b850101111561188a57600080fd5b60209290920196919550909350505050565b6000602082840312156118ae57600080fd5b815161175e81611ad4565b6000806000606084860312156118ce57600080fd5b6118d784611725565b92506118e560208501611725565b9150604084015163ffffffff811681146118fe57600080fd5b809150509250925092565b60006020828403121561191b57600080fd5b81516001600160901b038116811461175e57600080fd5b60006020828403121561194457600080fd5b5051919050565b600080600080600060a0868803121561196357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6020808252602d908201527f52656261746554726561737572793a20746f6b656e206973206e6f742061206260408201526c1bdb9918589b1948185cdcd95d609a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611a1b57611a1b611a93565b500190565b600082611a3d57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611a5c57611a5c611a93565b500290565b600082821015611a7357611a73611a93565b500390565b6000600019821415611a8c57611a8c611a93565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461154757600080fd5b801515811461154757600080fdfea264697066735822122051200a7868216227c51acacd761d481a38334006f9add372f07faf7bfd64cf9764736f6c63430008070033000000000000000000000000a4db7f3b07c7bf1b5e8283bf9e8aa889569fc2e70000000000000000000000000e0d5e5f7411737ad598ad1553b7b811485822e500000000000000000000000065767a3eb149fefb9af0dc91d79983b7bb6a3cb0

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

000000000000000000000000a4db7f3b07c7bf1b5e8283bf9e8aa889569fc2e70000000000000000000000000e0d5e5f7411737ad598ad1553b7b811485822e500000000000000000000000065767a3eb149fefb9af0dc91d79983b7bb6a3cb0

-----Decoded View---------------
Arg [0] : rubik (address): 0xa4db7f3b07c7bf1b5e8283bf9e8aa889569fc2e7
Arg [1] : rubikOracle (address): 0x0e0d5e5f7411737ad598ad1553b7b811485822e5
Arg [2] : treasury (address): 0x65767a3eb149fefb9af0dc91d79983b7bb6a3cb0

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a4db7f3b07c7bf1b5e8283bf9e8aa889569fc2e7
Arg [1] : 0000000000000000000000000e0d5e5f7411737ad598ad1553b7b811485822e5
Arg [2] : 00000000000000000000000065767a3eb149fefb9af0dc91d79983b7bb6a3cb0


Deployed ByteCode Sourcemap

9005:8518:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9797:30;;;;;;;;;9488:25:1;;;9476:2;9461:18;9797:30:0;;;;;;;;9918:73;;9949:42;9918:73;;;;;-1:-1:-1;;;;;4361:32:1;;;4343:51;;4331:2;4316:18;9918:73:0;4197:203:1;11816:92:0;;;;;;:::i;:::-;;:::i;:::-;;9755:35;;;;;;11596:76;;;:::i;9836:26::-;;;;;;9424:25;;;;;-1:-1:-1;;;;;9424:25:0;;;13181:538;;;;;;:::i;:::-;;:::i;17092:426::-;;;;;;:::i;:::-;;:::i;9565:39::-;;;;;;9705:41;;;;;;2532:103;;;:::i;1881:87::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;1881:87;;9998:41;;10036:3;9998:41;;9654:44;;;;;;9391:26;;;;;-1:-1:-1;;;;;9391:26:0;;;12696:431;;;;;;:::i;:::-;;:::i;12252:398::-;;;;;;:::i;:::-;;:::i;14736:395::-;;;;;;:::i;:::-;;:::i;10735:800::-;;;;;;:::i;:::-;;:::i;11943:107::-;;;;;;:::i;:::-;;:::i;15200:655::-;;;:::i;15901:122::-;;;:::i;16069:966::-;;;;;;:::i;:::-;;:::i;9611:36::-;;;;;;9365:19;;;;;-1:-1:-1;;;;;9365:19:0;;;9869:40;;;;;;9505:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9783:25:1;;;9839:2;9824:18;;9817:34;;;;9867:18;;;9860:34;;;;9925:2;9910:18;;9903:34;9968:3;9953:19;;9946:35;9770:3;9755:19;9505:51:0;9524:463:1;12087:107:0;;;;;;:::i;:::-;;:::i;9458:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9458:40:0;;;;-1:-1:-1;;;9458:40:0;;;;;;;;;;;;;5641:14:1;;5634:22;5616:41;;5688:2;5673:18;;5666:34;;;;-1:-1:-1;;;;;5774:15:1;;;5754:18;;;5747:43;;;;5833:14;5826:22;5821:2;5806:18;;5799:50;5886:15;5880:3;5865:19;;5858:44;5603:3;5588:19;9458:40:0;5369:539:1;2790:201:0;;;;;;:::i;:::-;;:::i;11816:92::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;;;;;;;;;11879:5:::1;:21:::0;;-1:-1:-1;;;;;;11879:21:0::1;-1:-1:-1::0;;;;;11879:21:0;;;::::1;::::0;;;::::1;::::0;;11816:92::o;11596:76::-;11640:24;11653:10;11640:12;:24::i;:::-;11596:76::o;13181:538::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;13288:8:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;13288:16:0;;;;13272:13:::1;::::0;-1:-1:-1;;;;;13288:8:0::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:32;;13338:5;13323:11;;:20;;13315:68;;;::::0;-1:-1:-1;;;13315:68:0;;8375:2:1;13315:68:0::1;::::0;::::1;8357:21:1::0;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;-1:-1:-1;;;8504:18:1;;;8497:33;8547:19;;13315:68:0::1;8173:399:1::0;13315:68:0::1;13394:11;:19:::0;;;13431:9:::1;13426:286;13446:17:::0;;::::1;13426:286;;;13494:6;:17;13501:6;;13508:1;13501:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13494:17:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13494:17:0;:25;::::1;;13486:67;;;::::0;-1:-1:-1;;;13486:67:0;;7192:2:1;13486:67:0::1;::::0;::::1;7174:21:1::0;7231:2;7211:18;;;7204:30;7270:31;7250:18;;;7243:59;7319:18;;13486:67:0::1;6990:353:1::0;13486:67:0::1;13568:12;13590:6;;13597:1;13590:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13568:32;;13615:5;-1:-1:-1::0;;;;;13615:14:0::1;;13630:7;1927::::0;1954:6;-1:-1:-1;;;;;1954:6:0;;1881:87;13630:7:::1;13672:13;::::0;13639:30:::1;::::0;-1:-1:-1;;;13639:30:0;;13663:4:::1;13639:30;::::0;::::1;4343:51:1::0;10036:3:0::1;::::0;13672:13;-1:-1:-1;;;;;13639:15:0;::::1;::::0;::::1;::::0;4316:18:1;;13639:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;:60;;;;:::i;:::-;13615:85;::::0;-1:-1:-1;;;;;;13615:85:0::1;::::0;;;;;;-1:-1:-1;;;;;5003:32:1;;;13615:85:0::1;::::0;::::1;4985:51:1::0;5052:18;;;5045:34;4958:18;;13615:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13471:241;13465:4;;;;;:::i;:::-;;;;13426:286;;;;13259:460;13181:538:::0;;:::o;17092:426::-;-1:-1:-1;;;;;17210:16:0;;17156:7;17210:16;;;:7;:16;;;;;;;;17176:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17241:15;:39;;;:79;;;17308:8;:12;;;17284:8;:20;;;:36;;17241:79;17237:93;;;-1:-1:-1;17329:1:0;;17092:426;-1:-1:-1;;17092:426:0:o;17237:93::-;17341:16;17428:8;:20;;;17379:8;:12;;;17361:15;:30;:63;;17409:15;17361:63;;;17394:8;:12;;;17361:63;17360:88;;;;:::i;:::-;17341:107;;17495:8;:15;;;17484:8;17466;:15;;;:26;;;;:::i;:::-;:44;;;;:::i;:::-;17459:51;17092:426;-1:-1:-1;;;;17092:426:0:o;2532:103::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;2597:30:::1;2624:1;2597:18;:30::i;12696:431::-:0;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;12924:13:::1;:32:::0;;;;12967:10:::1;:26:::0;;;;13004:18:::1;:36:::0;13051:15:::1;:30:::0;13092:11:::1;:27:::0;12696:431::o;12252:398::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12451:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;:31;;-1:-1:-1;;12451:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12493:24:0;::::1;:37:::0;;;;12541:20:::1;::::0;::::1;:29:::0;;;;::::1;-1:-1:-1::0;;;;;;12581:25:0;;;;;;;-1:-1:-1;;;12581:25:0;::::1;;::::0;;;::::1;;::::0;;12617:18:::1;::::0;;::::1;:25:::0;;-1:-1:-1;;;;;;12617:25:0::1;::::0;;;::::1;;::::0;;12252:398::o;14736:395::-;-1:-1:-1;;;;;10245:13:0;;14829:7;10245:13;;;:6;:13;;;;;:21;14813:5;;10245:21;;10237:79;;;;-1:-1:-1;;;10237:79:0;;;;;;;:::i;:::-;14849:18:::1;14870:15;:13;:15::i;:::-;14849:36;;14896:18;14917:20;14931:5;14917:13;:20::i;:::-;14896:41;;14948:19;14970:16;:14;:16::i;:::-;14948:38:::0;-1:-1:-1;15113:10:0;15084:25:::1;10036:3;::::0;15084:25:::1;:::i;:::-;-1:-1:-1::0;;;;;15056:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;:24:::1;;::::0;15027:25:::1;10036:3;15027:11:::0;:25:::1;:::i;:::-;15004:19;15013:10:::0;15004:6;:19:::1;:::i;:::-;:49;;;;:::i;:::-;:76;;;;:::i;:::-;:106;;;;:::i;:::-;:119;;;;:::i;:::-;14997:126:::0;14736:395;-1:-1:-1;;;;;;;14736:395:0:o;10735:800::-;-1:-1:-1;;;;;10245:13:0;;;;;;:6;:13;;;;;:21;10799:5;;10245:21;;10237:79;;;;-1:-1:-1;;;10237:79:0;;;;;;;:::i;:::-;10834:1:::1;10825:6;:10;10817:58;;;::::0;-1:-1:-1;;;10817:58:0;;9140:2:1;10817:58:0::1;::::0;::::1;9122:21:1::0;9179:2;9159:18;;;9152:30;9218:34;9198:18;;;9191:62;-1:-1:-1;;;9269:18:1;;;9262:33;9312:19;;10817:58:0::1;8938:399:1::0;10817:58:0::1;10886:19;10908:29;10923:5;10930:6;10908:14;:29::i;:::-;11004:11;::::0;10971:5:::1;::::0;:30:::1;::::0;-1:-1:-1;;;10971:30:0;;10995:4:::1;10971:30;::::0;::::1;4343:51:1::0;10886::0;;-1:-1:-1;11004:11:0;;-1:-1:-1;;;;;10971:5:0;;::::1;::::0;:15:::1;::::0;4316:18:1;;10971:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;;:::i;:::-;10956:11;:59;;10948:114;;;::::0;-1:-1:-1;;;10948:114:0;;7964:2:1;10948:114:0::1;::::0;::::1;7946:21:1::0;8003:2;7983:18;;;7976:30;8042:34;8022:18;;;8015:62;-1:-1:-1;;;8093:18:1;;;8086:40;8143:19;;10948:114:0::1;7762:406:1::0;10948:114:0::1;11075:61;::::0;-1:-1:-1;;;11075:61:0;;11102:10:::1;11075:61;::::0;::::1;4645:34:1::0;11122:4:0::1;4695:18:1::0;;;4688:43;4747:18;;;4740:34;;;-1:-1:-1;;;;;11075:26:0;::::1;::::0;::::1;::::0;4580:18:1;;11075:61:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11147:24;11160:10;11147:12;:24::i;:::-;11227:10;11184:32;11219:19:::0;;;:7:::1;:19;::::0;;;;11285:16:::1;::::0;::::1;::::0;11267:15;;11304:11;;11267:34:::1;::::0;::::1;:::i;:::-;:48;;;;:::i;:::-;11249:66:::0;;11344:11:::1;::::0;11326:15:::1;::::0;::::1;:29:::0;;;11381::::1;::::0;:15:::1;:29;:::i;:::-;11366:12;::::0;::::1;:44:::0;11440:1:::1;11421:16;::::0;::::1;:20:::0;;;11475:15:::1;11452:20;::::0;::::1;:38:::0;11501:11:::1;:26:::0;;11516:11;;11440:1;11501:26:::1;::::0;11516:11;;11501:26:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;10735:800:0:o;11943:107::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;12013:11:::1;:29:::0;;-1:-1:-1;;;;;;12013:29:0::1;-1:-1:-1::0;;;;;12013:29:0;;;::::1;::::0;;;::::1;::::0;;11943:107::o;15200:655::-;15247:7;15267:18;15288:15;:13;:15::i;:::-;15267:36;;15331:4;15318:10;:17;15314:31;;;15344:1;15337:8;;;15200:655;:::o;15314:31::-;15358:20;10036:3;15408:4;15381:24;10036:3;15381:10;:24;:::i;:::-;:31;;;;:::i;:::-;:45;;;;:::i;:::-;15358:68;;15456:13;;15441:12;:28;15437:42;;;15478:1;15471:8;;;;15200:655;:::o;15437:42::-;15510:18;;15494:12;:34;15490:358;;10036:3;15585:10;;15568:13;;15553:12;:28;;;;:::i;:::-;15552:43;;;;:::i;:::-;:57;;;;:::i;:::-;15545:64;;;;15200:655;:::o;15490:358::-;15642:22;10036:3;15706:10;;15689:13;;15668:18;;:34;;;;:::i;:::-;15667:49;;;;:::i;:::-;:63;;;;:::i;:::-;15642:88;;10036:3;15807:15;;15785:18;;15770:12;:33;;;;:::i;:::-;15769:53;;;;:::i;:::-;:67;;;;:::i;:::-;15752:84;;:14;:84;:::i;:::-;15745:91;;;;;15200:655;:::o;15901:122::-;15974:11;;;16002:5;15974:41;;-1:-1:-1;;;15974:41:0;;-1:-1:-1;;;;;16002:5:0;;;15974:41;;;4985:51:1;16010:4:0;5052:18:1;;;5045:34;15947:7:0;;15974:11;;;;;:19;;4958:18:1;;15974:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15967:48:0;;;15901:122;:::o;16069:966::-;-1:-1:-1;;;;;10245:13:0;;16145:7;10245:13;;;:6;:13;;;;;:21;16129:5;;10245:21;;10237:79;;;;-1:-1:-1;;;10237:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16186:13:0;;::::1;16165:18;16186:13:::0;;;:6:::1;:13;::::0;;;;;;;;16165:34;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;;;::::0;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;;;16165:34:0;::::1;::::0;;::::1;;;::::0;;;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;16259:78:::1;;16298:27;::::0;-1:-1:-1;;;16298:27:0;;-1:-1:-1;;;;;5003:32:1;;;16298:27:0::1;::::0;::::1;4985:51:1::0;16320:4:0::1;5052:18:1::0;;;5045:34;16298:14:0;::::1;::::0;::::1;::::0;4958:18:1;;16298:27:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16291:34:0::1;;;;;;;16259:78;16349:19;16386:5;:10;;;16349:48;;16408:23;16434:4;-1:-1:-1::0;;;;;16434:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16408:44;;16463:14;16480:4;-1:-1:-1::0;;;;;16480:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16463:30;;16504:14;16521:4;-1:-1:-1::0;;;;;16521:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16504:30;;16546:16;16564::::0;16585:4:::1;-1:-1:-1::0;;;;;16585:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;16545:58:0;;::::1;::::0;-1:-1:-1;16545:58:0::1;::::0;-1:-1:-1;;;;;;16620:14:0;::::1;9949:42;16620:14;16616:412;;;16672:28;::::0;-1:-1:-1;;;16672:28:0;;-1:-1:-1;;;;;5003:32:1;;;16672:28:0::1;::::0;::::1;4985:51:1::0;16695:4:0::1;5052:18:1::0;;;5045:34;16651:18:0::1;::::0;16672:14;;::::1;::::0;::::1;::::0;4958:18:1;;16672:28:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16651:49:0::1;::::0;-1:-1:-1;16802:15:0;16784::::1;:8:::0;16795:4:::1;16784:15;:::i;:::-;:33;;;;:::i;:::-;16746:15:::0;16722:21:::1;16735:8:::0;16722:10;:21:::1;:::i;:::-;:39;;;;:::i;:::-;:95;;;;:::i;:::-;16715:102;;;;;;;;;;;;;16616:412;16871:28;::::0;-1:-1:-1;;;16871:28:0;;-1:-1:-1;;;;;5003:32:1;;;16871:28:0::1;::::0;::::1;4985:51:1::0;16894:4:0::1;5052:18:1::0;;;5045:34;16850:18:0::1;::::0;16871:14;;::::1;::::0;::::1;::::0;4958:18:1;;16871:28:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16850:49:0::1;::::0;-1:-1:-1;17001:15:0;16983::::1;:8:::0;16994:4:::1;16983:15;:::i;:::-;:33;;;;:::i;:::-;16945:15:::0;16921:21:::1;16934:8:::0;16921:10;:21:::1;:::i;10327:1::-;16069:966:::0;;;;:::o;12087:107::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;12156:8:::1;:30:::0;;-1:-1:-1;;;;;;12156:30:0::1;-1:-1:-1::0;;;;;12156:30:0;;;::::1;::::0;;;::::1;::::0;;12087:107::o;2790:201::-;1927:7;1954:6;-1:-1:-1;;;;;1954:6:0;740:10;2101:23;2093:68;;;;-1:-1:-1;;;2093:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2879:22:0;::::1;2871:73;;;::::0;-1:-1:-1;;;2871:73:0;;6785:2:1;2871:73:0::1;::::0;::::1;6767:21:1::0;6824:2;6804:18;;;6797:30;6863:34;6843:18;;;6836:62;-1:-1:-1;;;6914:18:1;;;6907:36;6960:19;;2871:73:0::1;6583:402:1::0;2871:73:0::1;2955:28;2974:8;2955:18;:28::i;:::-;2790:201:::0;:::o;13827:753::-;-1:-1:-1;;;;;13921:16:0;;13886:32;13921:16;;;:7;:16;;;;;13952:15;;:20;;:59;;-1:-1:-1;13995:16:0;;;;13976:15;;:35;13952:59;13948:72;;;14013:7;13827:753;:::o;13948:72::-;14053:8;:20;;;14034:15;:39;;:79;;;;14101:8;:12;;;14077:8;:20;;;:36;;14034:79;14030:92;;;14115:7;13827:753;:::o;14030:92::-;14134:16;14221:8;:20;;;14172:8;:12;;;14154:15;:30;:63;;14202:15;14154:63;;;14187:8;:12;;;14154:63;14153:88;;;;:::i;:::-;14134:107;;14252:17;14301:8;:15;;;14290:8;14272;:15;;;:26;;;;:::i;:::-;:44;;;;:::i;:::-;14252:64;-1:-1:-1;14331:14:0;14327:27;;14347:7;;;13827:753;:::o;14327:27::-;14386:9;14366:8;:16;;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;14447:12:0;;;;14429:15;:30;:63;;14477:15;14429:63;;;14462:8;:12;;;14429:63;14406:8;:20;;:86;;;;14518:9;14503:11;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;14538:5:0;;:34;;-1:-1:-1;;;14538:34:0;;-1:-1:-1;;;;;5003:32:1;;;14538:34:0;;;4985:51:1;5052:18;;;5045:34;;;14538:5:0;;;;:14;;4958:18:1;;14538:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13875:705;;;13827:753;:::o;3151:191::-;3225:16;3244:6;;-1:-1:-1;;;;;3261:17:0;;;-1:-1:-1;;;;;;3261:17:0;;;;;;3294:40;;3244:6;;;;;;;3294:40;;3225:16;3294:40;3214:128;3151:191;:::o;14:188:1:-;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:81;;192:1;189;182:12;115:81;14:188;;;:::o;207:247::-;266:6;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;:::-;443:5;207:247;-1:-1:-1;;;207:247:1:o;459:251::-;529:6;582:2;570:9;561:7;557:23;553:32;550:52;;;598:1;595;588:12;550:52;630:9;624:16;649:31;674:5;649:31;:::i;715:870::-;813:6;821;829;837;845;853;906:3;894:9;885:7;881:23;877:33;874:53;;;923:1;920;913:12;874:53;962:9;949:23;981:31;1006:5;981:31;:::i;:::-;1031:5;-1:-1:-1;1088:2:1;1073:18;;1060:32;1101:30;1060:32;1101:30;:::i;:::-;1150:7;-1:-1:-1;1204:2:1;1189:18;;1176:32;;-1:-1:-1;1260:2:1;1245:18;;1232:32;1273:33;1232:32;1273:33;:::i;:::-;1325:7;-1:-1:-1;1384:3:1;1369:19;;1356:33;1398:30;1356:33;1398:30;:::i;:::-;1447:7;-1:-1:-1;1506:3:1;1491:19;;1478:33;1520;1478;1520;:::i;:::-;1572:7;1562:17;;;715:870;;;;;;;;:::o;1590:315::-;1658:6;1666;1719:2;1707:9;1698:7;1694:23;1690:32;1687:52;;;1735:1;1732;1725:12;1687:52;1774:9;1761:23;1793:31;1818:5;1793:31;:::i;:::-;1843:5;1895:2;1880:18;;;;1867:32;;-1:-1:-1;;;1590:315:1:o;1910:615::-;1996:6;2004;2057:2;2045:9;2036:7;2032:23;2028:32;2025:52;;;2073:1;2070;2063:12;2025:52;2113:9;2100:23;2142:18;2183:2;2175:6;2172:14;2169:34;;;2199:1;2196;2189:12;2169:34;2237:6;2226:9;2222:22;2212:32;;2282:7;2275:4;2271:2;2267:13;2263:27;2253:55;;2304:1;2301;2294:12;2253:55;2344:2;2331:16;2370:2;2362:6;2359:14;2356:34;;;2386:1;2383;2376:12;2356:34;2439:7;2434:2;2424:6;2421:1;2417:14;2413:2;2409:23;2405:32;2402:45;2399:65;;;2460:1;2457;2450:12;2399:65;2491:2;2483:11;;;;;2513:6;;-1:-1:-1;1910:615:1;;-1:-1:-1;;;;1910:615:1:o;2530:245::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2698:9;2692:16;2717:28;2739:5;2717:28;:::i;2780:450::-;2867:6;2875;2883;2936:2;2924:9;2915:7;2911:23;2907:32;2904:52;;;2952:1;2949;2942:12;2904:52;2975:40;3005:9;2975:40;:::i;:::-;2965:50;;3034:49;3079:2;3068:9;3064:18;3034:49;:::i;:::-;3024:59;;3126:2;3115:9;3111:18;3105:25;3170:10;3163:5;3159:22;3152:5;3149:33;3139:61;;3196:1;3193;3186:12;3139:61;3219:5;3209:15;;;2780:450;;;;;:::o;3235:309::-;3305:6;3358:2;3346:9;3337:7;3333:23;3329:32;3326:52;;;3374:1;3371;3364:12;3326:52;3406:9;3400:16;-1:-1:-1;;;;;3449:5:1;3445:50;3438:5;3435:61;3425:89;;3510:1;3507;3500:12;3549:184;3619:6;3672:2;3660:9;3651:7;3647:23;3643:32;3640:52;;;3688:1;3685;3678:12;3640:52;-1:-1:-1;3711:16:1;;3549:184;-1:-1:-1;3549:184:1:o;3738:454::-;3833:6;3841;3849;3857;3865;3918:3;3906:9;3897:7;3893:23;3889:33;3886:53;;;3935:1;3932;3925:12;3886:53;-1:-1:-1;;3958:23:1;;;4028:2;4013:18;;4000:32;;-1:-1:-1;4079:2:1;4064:18;;4051:32;;4130:2;4115:18;;4102:32;;-1:-1:-1;4181:3:1;4166:19;4153:33;;-1:-1:-1;3738:454:1;-1:-1:-1;3738:454:1:o;7348:409::-;7550:2;7532:21;;;7589:2;7569:18;;;7562:30;7628:34;7623:2;7608:18;;7601:62;-1:-1:-1;;;7694:2:1;7679:18;;7672:43;7747:3;7732:19;;7348:409::o;8577:356::-;8779:2;8761:21;;;8798:18;;;8791:30;8857:34;8852:2;8837:18;;8830:62;8924:2;8909:18;;8577:356::o;9992:128::-;10032:3;10063:1;10059:6;10056:1;10053:13;10050:39;;;10069:18;;:::i;:::-;-1:-1:-1;10105:9:1;;9992:128::o;10125:217::-;10165:1;10191;10181:132;;10235:10;10230:3;10226:20;10223:1;10216:31;10270:4;10267:1;10260:15;10298:4;10295:1;10288:15;10181:132;-1:-1:-1;10327:9:1;;10125:217::o;10347:168::-;10387:7;10453:1;10449;10445:6;10441:14;10438:1;10435:21;10430:1;10423:9;10416:17;10412:45;10409:71;;;10460:18;;:::i;:::-;-1:-1:-1;10500:9:1;;10347:168::o;10520:125::-;10560:4;10588:1;10585;10582:8;10579:34;;;10593:18;;:::i;:::-;-1:-1:-1;10630:9:1;;10520:125::o;10650:135::-;10689:3;-1:-1:-1;;10710:17:1;;10707:43;;;10730:18;;:::i;:::-;-1:-1:-1;10777:1:1;10766:13;;10650:135::o;10790:127::-;10851:10;10846:3;10842:20;10839:1;10832:31;10882:4;10879:1;10872:15;10906:4;10903:1;10896:15;10922:127;10983:10;10978:3;10974:20;10971:1;10964:31;11014:4;11011:1;11004:15;11038:4;11035:1;11028:15;11054:131;-1:-1:-1;;;;;11129:31:1;;11119:42;;11109:70;;11175:1;11172;11165:12;11190:118;11276:5;11269:13;11262:21;11255:5;11252:32;11242:60;;11298:1;11295;11288:12

Swarm Source

ipfs://51200a7868216227c51acacd761d481a38334006f9add372f07faf7bfd64cf97
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.