Contract 0x10400eB8f8A44630cb703cd3A6DF4Ba0aFCB6E60

 

Contract Overview

Balance:
0 ETH

EtherValue:
$0.00

Token:
Txn Hash Method
Block
From
To
Value
0x33efe19ad5ae6a406b5f32efc9f54c3d89741d0aecdcec171821d88049b213f6Update Pool89800572022-05-25 14:09:15672 days 18 hrs ago0x1f427a6fcdb95a7393c58552093e10a932890fa8 IN  0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600 ETH0.0001409467870.001
0x1994b92aa16d7f0f3bda8aaad115cf84a22aa2c0957a1cdc8bf317d337e054d0Update Pool57035302022-04-12 6:45:24716 days 2 hrs ago0x1f427a6fcdb95a7393c58552093e10a932890fa8 IN  0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600 ETH0.0001059030980.001
0x8c08eb9c5afab409d728c5f27ffe5cd6211a4e07b21267059d7d272f0dd17511Transfer Ownersh...40470442022-03-02 6:44:35757 days 2 hrs agoZipSwap: Deployer IN  0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600 ETH0.0001763801860.001
0xe34df8cbc9dc96c4b42438aaab0f2f3d15a3c2216789c2f28e32de84696a0010Owner Set Master...40469732022-03-02 6:39:33757 days 2 hrs agoZipSwap: Deployer IN  0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600 ETH0.0001688907340.001
0x33936abcec12e58a403e142cc2ca3e7a3dc2bb2219792d7ec8fd258f79de4d260x60c0604040469692022-03-02 6:39:33757 days 2 hrs agoZipSwap: Deployer IN  Create: SecondaryRewards0 ETH0.0048769851570.001
[ Download CSV Export 
Latest 3 internal transactions
Parent Txn Hash Block From To Value
0xedb722519d41e8d0d2cdc697b22655befa2dd72de56c0a95b429840d98c788e389229882022-05-24 15:39:19673 days 17 hrs ago Synapse: Bridge 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600.002 ETH
0x8cbaa3f7a1dfede7f666e445fefbdaa385d195e06c6a4693cfcb4faed90cbd9453724722022-04-05 20:47:31722 days 12 hrs ago Synapse: Bridge 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600.002 ETH
0x3ebb9c0b338b33fe9fde7a10a925dff57de6bcfdad637803dc9a54f24803815542229172022-03-08 0:06:21751 days 8 hrs ago Synapse: Bridge 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e600.002 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SecondaryRewards

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 500 runs

Other Settings:
istanbul EvmVersion, MIT license
File 1 of 4 : SecondaryRewards.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import { Ownable } from "Ownable.sol";
import "BoringERC20.sol";
import "IERC20.sol";

interface IZipRewards {
    struct UserInfo {
        uint128 amount;
        int128 rewardDebt;
    }
    function userInfo(uint pid, address user) external view returns (UserInfo memory);
}

abstract contract SecondaryRewarder {
    function notify_onDeposit(uint pid, uint depositedAmount, uint finalBalance, address sender, address to) virtual external;
    //to may be a zapper contract
    function notify_onWithdrawal(uint pid, uint withdrawnAmount, uint remainingAmount, address user, address to) virtual external;
    function notify_onHarvest(uint pid, uint zipAmount, address user, address recipient) virtual external;
    //view functions for the gui
    function pendingTokens(address user) virtual external view returns (IERC20[] memory, uint256[] memory);
    function rewardRates() virtual external view returns (IERC20[] memory, uint256[] memory);
}

// note: withdrawals can't be paused
contract SecondaryRewards is SecondaryRewarder, Ownable  {
    using BoringERC20 for IERC20;

    /// @notice Info of each user.
    /// `amount` LP token amount the user has provided.
    /// `rewardDebt` The amount of zipToken entitled to the user.
    struct UserInfo {
        uint128 amount;
        int128 rewardDebt;
    }

    /// @notice Address of zipToken contract.
    IERC20 public immutable zipToken;
    /// @notice Address of the master farm contract.
    IZipRewards public immutable zipRewards;

    uint public accZipPerShare;
    uint public lastRewardTime;
    uint public zipPerSecond;
    //total sum of all current deposits
    uint public lpSupply;
    //only needed for forceSyncDeposits
    uint public masterFarmPid;

    /// @notice Info of each user that stakes LP tokens.
    mapping (address => UserInfo) public userInfo;

    //note: maximum theoretically possible balance of Uni2 LP is 2**112-1
    //accZipPerShare is 256 bit. therefore, the maximum supported reward balance is ~10^25 units (*18 decimals)
    uint private constant ACC_ZIP_PRECISION = 2**112-1;

    event SecondaryDeposit(address indexed user, uint256 amount, address indexed to);
    event SecondaryWithdraw(address indexed user, uint256 amount);
    event SecondaryHarvest(address indexed user, address recipient, uint256 amount);
    event SecondaryLogZipPerSecond(uint256 zipPerSecond);
    event SecondaryLogUpdatePool(uint256 lastRewardTime, uint256 lpSupply, uint256 accZipPerShare);

    modifier onlyFromZipRewards() {
        require(msg.sender == address(zipRewards), "must be called by ZipRewards");
        _;
    }

    /// @param _rewardToken The rewardToken token contract address.
    constructor(IERC20 _rewardToken, IZipRewards _zipRewards) {
        zipToken = _rewardToken;
        assert(ACC_ZIP_PRECISION != 0);
        lastRewardTime = block.timestamp;
        zipRewards = _zipRewards;
        masterFarmPid = type(uint).max;
    }

    // GUI VIEW FUNCTIONS START
    function pendingTokens(address user) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {
        IERC20[] memory _rewardTokens = new IERC20[](1);
        _rewardTokens[0] = (zipToken);
        uint256[] memory _rewardAmounts = new uint256[](1);
        _rewardAmounts[0] = pendingReward(user);
        return (_rewardTokens, _rewardAmounts);
    }
    
    function rewardRates() external view override returns (IERC20[] memory, uint256[] memory) {
        IERC20[] memory _rewardTokens = new IERC20[](1);
        _rewardTokens[0] = (zipToken);
        uint256[] memory _rewardRates = new uint256[](1);
        _rewardRates[0] = zipPerSecond;
        return (_rewardTokens, _rewardRates);
    }

    /// @notice View function to see pending zipToken on frontend.
    /// @param _user Address of user.
    /// @return pending zipToken reward for a given user.
    function pendingReward(address _user) internal view returns (uint pending) {
        UserInfo storage user = userInfo[_user];
        uint _accZipPerShare = accZipPerShare;

        if (lpSupply > 0) {
            uint time;
            if(block.timestamp > zipRewardsSpentTime) {
                if(lastRewardTime < zipRewardsSpentTime) {
                    time = zipRewardsSpentTime - lastRewardTime;
                }
                else {
                    time = 0;
                }
            }
            else {
                    time = block.timestamp - lastRewardTime;
            }
            uint tokenReward = time*zipPerSecond;
            _accZipPerShare += tokenReward*ACC_ZIP_PRECISION / lpSupply;
        }
        pending = uint(int(uint(user.amount)*_accZipPerShare/ACC_ZIP_PRECISION) - user.rewardDebt);
    }

    // GUI VIEW FUNCTIONS END

    function notify_onDeposit(uint pid, uint depositedAmount, uint _finalBalance, address sender, address to) external override onlyFromZipRewards {
        require(depositedAmount == uint(uint128(depositedAmount)));
        deposit(sender, uint128(depositedAmount), to);
    }

    function notify_onWithdrawal(uint pid, uint withdrawnAmount, uint remainingAmount, address user, address to) external override onlyFromZipRewards {
        require(withdrawnAmount == uint(uint128(withdrawnAmount)));
        withdraw(user, uint128(withdrawnAmount));
    }

    function notify_onHarvest(uint pid, uint zipAmount, address user, address recipient) external override onlyFromZipRewards {
        harvest(user, recipient);
    }

    /*
      in case some deposits happen before rewarder is set on the master farm contract
      or rewarder is removed on the main contract and then reenabled
    */
    function forceSyncDeposit(address who) external {
        require(masterFarmPid < type(uint).max);
        uint128 externalAmount = zipRewards.userInfo(masterFarmPid, who).amount;
        UserInfo storage user = userInfo[who];
        uint128 localAmount = user.amount;
        require(externalAmount != localAmount, 'balance correct');
        if(localAmount < externalAmount) {
            deposit(who, externalAmount-localAmount, who);
        }
        else {
            withdraw(who, localAmount-externalAmount);
        }
    }

    /// @notice Update reward variables of the pool.
    function updatePool() public {
        if (block.timestamp > lastRewardTime) {
            if (lpSupply > 0) {
                uint time;
                if(block.timestamp > zipRewardsSpentTime) {
                    if(lastRewardTime < zipRewardsSpentTime) {
                        time = zipRewardsSpentTime - lastRewardTime;
                    }
                    else {
                        time = 0;
                    }
                }
                else {
                    time = block.timestamp - lastRewardTime;
                }
                uint tokenReward = time*zipPerSecond;
                accZipPerShare += tokenReward*ACC_ZIP_PRECISION / lpSupply;
            }
            lastRewardTime = block.timestamp;
            emit SecondaryLogUpdatePool(lastRewardTime, lpSupply, accZipPerShare);
        }
    }

    /// @notice Deposit LP tokens for zipToken allocation.
    /// @param amount LP token amount to deposit.
    /// @param to The receiver of `amount` deposit benefit.
    function deposit(address who, uint128 amount, address to) internal {
        updatePool();
        UserInfo storage user = userInfo[to];

        user.amount += amount;
        lpSupply += amount;
        uint rewardDebtChange = uint(amount)*accZipPerShare / ACC_ZIP_PRECISION;
        user.rewardDebt += int128(uint128(rewardDebtChange));
        emit SecondaryDeposit(who, amount, to);
    }

    /// @notice Withdraw LP tokens.
    /// @param amount LP token amount to withdraw.
    function withdraw(address who, uint128 amount) internal {
        (UserInfo storage user, uint accumulatedZip, uint pendingZip) = getUserDataUpdatePool(who);

        user.rewardDebt -= int128(uint128(uint(amount)*accZipPerShare / ACC_ZIP_PRECISION));
        user.amount -= amount;
        lpSupply -= amount;

        emit SecondaryWithdraw(who, amount);
    }

    function harvest(address who, address to) internal {
        (UserInfo storage user, uint accumulatedZip, uint pendingZip) = getUserDataUpdatePool(who);
        user.rewardDebt = int128(uint128(accumulatedZip));
        if(pendingZip != 0) {
            totalPaidRewards += pendingZip;
            zipToken.safeTransfer(to, pendingZip);
        }

        emit SecondaryHarvest(who, to, pendingZip);
    }

    function getUserDataUpdatePool(address who) internal returns (UserInfo storage user, uint accumulatedZip, uint pendingZip) {
        updatePool();
        user = userInfo[who];
        accumulatedZip = uint(user.amount)*accZipPerShare / ACC_ZIP_PRECISION;
        pendingZip = uint(int(accumulatedZip)-int(user.rewardDebt));
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////
    // OWNER FUNCTIONS                                                                                  //
    //////////////////////////////////////////////////////////////////////////////////////////////////////
    // note: owner can't transfer users' deposits or block withdrawals

    uint public totalPaidRewards;
    //timestamp when zip rewards run out given current balance
    uint64 public zipRewardsSpentTime;
    uint64 public totalAccumulatedRewardsLastSetTimestamp;
    uint public totalAccumulatedZipRewards;
    
    /// @notice Sets the zipToken per second to be distributed. Can only be called by the owner.
    /// @param newZipPerSecond The amount of zipToken to be distributed per second.
    /// uint128 because that makes overflow while multiplying zipPerSecond (as uint256) impossible.
    function setRewardTokenPerSecond(uint128 newZipPerSecond) external onlyOwner {
        updatePool();
        if(block.timestamp <= zipRewardsSpentTime) {
            //contract didn't run out of rewards
            totalAccumulatedZipRewards += zipPerSecond*(block.timestamp-uint(totalAccumulatedRewardsLastSetTimestamp));
        }
        else {
            //contract has run out of rewards
            if(totalAccumulatedRewardsLastSetTimestamp < zipRewardsSpentTime) {
                totalAccumulatedZipRewards += zipPerSecond*uint(zipRewardsSpentTime-totalAccumulatedRewardsLastSetTimestamp);
            }
        }
        uint unclaimedZip = totalAccumulatedZipRewards-totalPaidRewards;
        uint zipForNewRewards = zipToken.balanceOf(address(this))-unclaimedZip;
        uint secondsRewardsCanLast = zipForNewRewards/newZipPerSecond;
        zipRewardsSpentTime = uint64(block.timestamp+secondsRewardsCanLast);
        zipPerSecond = uint(newZipPerSecond);
        totalAccumulatedRewardsLastSetTimestamp = uint64(block.timestamp);

        lastRewardTime = block.timestamp;
        emit SecondaryLogZipPerSecond(newZipPerSecond);
    }

    function ownerWithdrawToken(IERC20 _token, address recipient, uint amount) external onlyOwner returns (uint) {
        if(amount == 0) {
            amount = _token.balanceOf(address(this));
        }
        BoringERC20.safeTransfer(_token, recipient, amount);
        return amount;
    }

    function ownerSetMasterFarmPid(uint _masterFarmPid) external onlyOwner {
        masterFarmPid = _masterFarmPid;
    }
}

File 2 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

abstract contract Ownable {
    address private _owner;
    address private newOwner;

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

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

    /**
     * @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() == msg.sender, "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");
        newOwner = _newOwner;
    }

    function acceptOwnership() public virtual {
        require(msg.sender == newOwner, "Ownable: sender != newOwner");
        _transferOwnership(msg.sender);
    }

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

File 3 of 4 : BoringERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
import "IERC20.sol";

// solhint-disable avoid-low-level-calls

library BoringERC20 {
    bytes4 private constant SIG_SYMBOL = 0x95d89b41; // symbol()
    bytes4 private constant SIG_NAME = 0x06fdde03; // name()
    bytes4 private constant SIG_DECIMALS = 0x313ce567; // decimals()
    bytes4 private constant SIG_BALANCE_OF = 0x70a08231; // balanceOf(address)
    bytes4 private constant SIG_TRANSFER = 0xa9059cbb; // transfer(address,uint256)
    bytes4 private constant SIG_TRANSFER_FROM = 0x23b872dd; // transferFrom(address,address,uint256)

    function returnDataToString(bytes memory data) internal pure returns (string memory) {
        unchecked {
            if (data.length >= 64) {
                return abi.decode(data, (string));
            } else if (data.length == 32) {
                uint8 i = 0;
                while (i < 32 && data[i] != 0) {
                    i++;
                }
                bytes memory bytesArray = new bytes(i);
                for (i = 0; i < 32 && data[i] != 0; i++) {
                    bytesArray[i] = data[i];
                }
                return string(bytesArray);
            } else {
                return "???";
            }
        }
    }

    /// @notice Provides a safe ERC20.symbol version which returns '???' as fallback string.
    /// @param token The address of the ERC-20 token contract.
    /// @return (string) Token symbol.
    function safeSymbol(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_SYMBOL));
        return success ? returnDataToString(data) : "???";
    }

    /// @notice Provides a safe ERC20.name version which returns '???' as fallback string.
    /// @param token The address of the ERC-20 token contract.
    /// @return (string) Token name.
    function safeName(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_NAME));
        return success ? returnDataToString(data) : "???";
    }

    /// @notice Provides a safe ERC20.decimals version which returns '18' as fallback value.
    /// @param token The address of the ERC-20 token contract.
    /// @return (uint8) Token decimals.
    function safeDecimals(IERC20 token) internal view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_DECIMALS));
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    /// @notice Provides a gas-optimized balance check to avoid a redundant extcodesize check in addition to the returndatasize check.
    /// @param token The address of the ERC-20 token.
    /// @param to The address of the user to check.
    /// @return amount The token amount.
    function safeBalanceOf(IERC20 token, address to) internal view returns (uint256 amount) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_BALANCE_OF, to));
        require(success && data.length >= 32, "BoringERC20: BalanceOf failed");
        amount = abi.decode(data, (uint256));
    }

    /// @notice Provides a safe ERC20.transfer version for different ERC-20 implementations.
    /// Reverts on a failed transfer.
    /// @param token The address of the ERC-20 token.
    /// @param to Transfer tokens to.
    /// @param amount The token amount.
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed");
    }

    /// @notice Provides a safe ERC20.transferFrom version for different ERC-20 implementations.
    /// Reverts on a failed transfer.
    /// @param token The address of the ERC-20 token.
    /// @param from Transfer tokens from.
    /// @param to Transfer tokens to.
    /// @param amount The token amount.
    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER_FROM, from, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed");
    }
}

File 4 of 4 : IERC20.sol
pragma solidity >=0.5.0;

interface IERC20 {
    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;
}

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 500
  },
  "libraries": {
    "SecondaryRewards.sol": {}
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IZipRewards","name":"_zipRewards","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"SecondaryDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SecondaryHarvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accZipPerShare","type":"uint256"}],"name":"SecondaryLogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"zipPerSecond","type":"uint256"}],"name":"SecondaryLogZipPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SecondaryWithdraw","type":"event"},{"inputs":[],"name":"accZipPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"forceSyncDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterFarmPid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"_finalBalance","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"notify_onDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"zipAmount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"notify_onHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"withdrawnAmount","type":"uint256"},{"internalType":"uint256","name":"remainingAmount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"notify_onWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_masterFarmPid","type":"uint256"}],"name":"ownerSetMasterFarmPid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"pendingTokens","outputs":[{"internalType":"contract IERC20[]","name":"rewardTokens","type":"address[]"},{"internalType":"uint256[]","name":"rewardAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRates","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"newZipPerSecond","type":"uint128"}],"name":"setRewardTokenPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAccumulatedRewardsLastSetTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAccumulatedZipRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPaidRewards","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":[],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"int128","name":"rewardDebt","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipRewards","outputs":[{"internalType":"contract IZipRewards","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipRewardsSpentTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c06040523480156200001157600080fd5b5060405162001c4438038062001c448339810160408190526200003491620000ca565b6200003f3362000061565b6001600160a01b03918216608052426003551660a05260001960065562000109565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000c757600080fd5b50565b60008060408385031215620000de57600080fd5b8251620000eb81620000b1565b6020840151909250620000fe81620000b1565b809150509250929050565b60805160a051611add62000167600039600081816101b8015281816106b30152818161080d015281816109f10152610b3501526000818161032b0152818161056901528181610a9101528181610beb01526112b20152611add6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806379ba5097116100ee578063bbe70ace11610097578063e4438ce711610071578063e4438ce7146103be578063e8741b2a146103c7578063f2fde38b146103d0578063f585b64f146103e357600080fd5b8063bbe70ace14610390578063c031a66f146103a3578063e3161ddd146103b657600080fd5b80638da5cb5b116100c85780638da5cb5b146103605780639231cf7414610371578063a88a5c161461037a57600080fd5b806379ba50971461031e5780637f37b4101461032657806386c9956a1461034d57600080fd5b8063449163241161015b5780635ce31d0b116101355780635ce31d0b146102d557806362c962a2146102f057806365e4080f14610303578063715018a61461031657600080fd5b806344916324146102b05780634e9fcfcb146102b957806355f6b7d3146102cc57600080fd5b80632a7907201161018c5780632a790720146102635780633b22fc031461027a578063425d1c991461028357600080fd5b80630a1aef7c146101b35780631959a002146101f757806319bdbd5a1461024e575b600080fd5b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61022c6102053660046115e2565b6007602052600090815260409020546001600160801b03811690600160801b9004600f0b82565b604080516001600160801b039093168352600f9190910b6020830152016101ee565b61026161025c36600461161b565b6103f6565b005b61026c60065481565b6040519081526020016101ee565b61026c60055481565b6009546102979067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ee565b61026c60045481565b6102616102c73660046115e2565b610686565b61026c60085481565b60095461029790600160401b900467ffffffffffffffff1681565b6102616102fe366004611638565b610802565b61026161031136600461168e565b6108a0565b61026161090e565b610261610983565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61026161035b3660046116a7565b6109e6565b6000546001600160a01b03166101da565b61026c60035481565b610382610a68565b6040516101ee9291906116f1565b61026161039e366004611638565b610b2a565b6103826103b13660046115e2565b610bc2565b610261610c8b565b61026c600a5481565b61026c60025481565b6102616103de3660046115e2565b610d9b565b61026c6103f1366004611775565b610e98565b336104096000546001600160a01b031690565b6001600160a01b0316146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61046c610c8b565b60095467ffffffffffffffff1642116104c65760095461049d90600160401b900467ffffffffffffffff16426117cc565b6004546104aa91906117e3565b600a60008282546104bb9190611802565b909155506105329050565b60095467ffffffffffffffff808216600160401b909204161015610532576009546105049067ffffffffffffffff600160401b82048116911661181a565b67ffffffffffffffff1660045461051b91906117e3565b600a600082825461052c9190611802565b90915550505b6000600854600a5461054491906117cc565b6040516370a0823160e01b815230600482015290915060009082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190611843565b6105de91906117cc565b905060006105f56001600160801b0385168361185c565b90506106018142611802565b600980546001600160801b038716600481905567ffffffffffffffff9384166fffffffffffffffffffffffffffffffff1990921691909117600160401b4294851602179091556003919091556040519081527f3d5c20aef7f62af877eb5dd5fe5e4b7c9f2bece3abb562f6a5eec4ec7eee9b999060200160405180910390a150505050565b6000196006541061069657600080fd5b6006546040516393f1a40b60e01b81526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916393f1a40b916106fa9186906004019182526001600160a01b0316602082015260400190565b6040805180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a919061187e565b516001600160a01b03831660009081526007602052604090208054919250906001600160801b039081169083168114156107b65760405162461bcd60e51b815260206004820152600f60248201527f62616c616e636520636f72726563740000000000000000000000000000000000604482015260640161045b565b826001600160801b0316816001600160801b031610156107e9576107e4846107de83866118f2565b86610f85565b6107fc565b6107fc846107f785846118f2565b6110db565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461087a5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b0316841461088f57600080fd5b61089982856110db565b5050505050565b336108b36000546001600160a01b031690565b6001600160a01b0316146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b600655565b336109216000546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b61098160006111fd565b565b6001546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820152601b60248201527f4f776e61626c653a2073656e64657220213d206e65774f776e65720000000000604482015260640161045b565b610981336111fd565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5e5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b6107fc828261125a565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ac357610ac3611912565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060045481600081518110610b1657610b16611912565b602090810291909101015290939092509050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ba25760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b03168414610bb757600080fd5b610899828583610f85565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c1d57610c1d611912565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050610c638561131c565b81600081518110610c7657610c76611912565b60209081029190910101529094909350915050565b6003544211156109815760055415610d4f5760095460009067ffffffffffffffff16421115610cf55760095460035467ffffffffffffffff9091161115610ced57600354600954610ce6919067ffffffffffffffff166117cc565b9050610d05565b506000610d05565b600354610d0290426117cc565b90505b600060045482610d1591906117e3565b600554909150610d2c6001600160701b03836117e3565b610d36919061185c565b60026000828254610d479190611802565b909155505050505b42600381905560055460025460408051938452602084019290925282820152517f8fab20431759bff599200e12ec1be9fa0d583aca6434239ee51902b0d1bef8579181900360600190a1565b33610dae6000546001600160a01b031690565b6001600160a01b031614610e045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610ead6000546001600160a01b031690565b6001600160a01b031614610f035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b81610f73576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611843565b91505b610f7e84848461142d565b5092915050565b610f8d610c8b565b6001600160a01b0381166000908152600760205260408120805490918491839190610fc29084906001600160801b0316611928565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826001600160801b0316600560008282546110019190611802565b90915550506002546000906001600160701b0390611028906001600160801b0387166117e3565b611032919061185c565b825490915081908390601090611053908490600160801b9004600f0b611953565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550826001600160a01b0316856001600160a01b03167f8b877e6b1064b5889e5540ad45c5e217984c5654267002d78b18d907af50ca2d866040516110cc91906001600160801b0391909116815260200190565b60405180910390a35050505050565b60008060006110e985611556565b9250925092506001600160701b03600254856001600160801b031661110e91906117e3565b611118919061185c565b83548490601090611134908490600160801b9004600f0b6119a2565b82546101009290920a6001600160801b038181021990931691831602179091558454869250859160009161116a918591166118f2565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550836001600160801b0316600560008282546111a991906117cc565b90915550506040516001600160801b03851681526001600160a01b038616907f2688d1d3fc5dea3571ef8bfe771ccbfd5f847fbc451f1127d8463d70defb4b77906020015b60405180910390a25050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600061126885611556565b82546001600160801b03808416600160801b0291161783559194509250905080156112d957806008600082825461129f9190611802565b909155506112d990506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858361142d565b604080516001600160a01b038681168252602082018490528716917ff2cae54821e786d228c3656c39d8551ac64edd1282545091850211b60146644491016111ee565b6001600160a01b0381166000908152600760205260408120600254600554156113e75760095460009067ffffffffffffffff164211156113975760095460035467ffffffffffffffff909116111561138f57600354600954611388919067ffffffffffffffff166117cc565b90506113a7565b5060006113a7565b6003546113a490426117cc565b90505b6000600454826113b791906117e3565b6005549091506113ce6001600160701b03836117e3565b6113d8919061185c565b6113e29084611802565b925050505b8154600160801b8104600f0b906001600160701b03906114119084906001600160801b03166117e3565b61141b919061185c565b61142591906119f2565b949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052915160009283929087169161149e9190611a4a565b6000604051808303816000865af19150503d80600081146114db576040519150601f19603f3d011682016040523d82523d6000602084013e6114e0565b606091505b509150915081801561150a57508051158061150a57508080602001905181019061150a9190611a85565b6108995760405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260640161045b565b6000806000611563610c8b565b6001600160a01b038416600090815260076020526040902060025481549194506001600160701b039161159f91906001600160801b03166117e3565b6115a9919061185c565b83549092506115c290600160801b9004600f0b836119f2565b929491935050565b6001600160a01b03811681146115df57600080fd5b50565b6000602082840312156115f457600080fd5b81356115ff816115ca565b9392505050565b6001600160801b03811681146115df57600080fd5b60006020828403121561162d57600080fd5b81356115ff81611606565b600080600080600060a0868803121561165057600080fd5b8535945060208601359350604086013592506060860135611670816115ca565b91506080860135611680816115ca565b809150509295509295909350565b6000602082840312156116a057600080fd5b5035919050565b600080600080608085870312156116bd57600080fd5b843593506020850135925060408501356116d6816115ca565b915060608501356116e6816115ca565b939692955090935050565b604080825283519082018190526000906020906060840190828701845b828110156117335781516001600160a01b03168452928401929084019060010161170e565b5050508381038285015284518082528583019183019060005b818110156117685783518352928401929184019160010161174c565b5090979650505050505050565b60008060006060848603121561178a57600080fd5b8335611795816115ca565b925060208401356117a5816115ca565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b6000828210156117de576117de6117b6565b500390565b60008160001904831182151516156117fd576117fd6117b6565b500290565b60008219821115611815576118156117b6565b500190565b600067ffffffffffffffff8381169083168181101561183b5761183b6117b6565b039392505050565b60006020828403121561185557600080fd5b5051919050565b60008261187957634e487b7160e01b600052601260045260246000fd5b500490565b60006040828403121561189057600080fd5b6040516040810181811067ffffffffffffffff821117156118c157634e487b7160e01b600052604160045260246000fd5b60405282516118cf81611606565b81526020830151600f81900b81146118e657600080fd5b60208201529392505050565b60006001600160801b038381169083168181101561183b5761183b6117b6565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b0380831681851680830382111561194a5761194a6117b6565b01949350505050565b600081600f0b83600f0b600082128260016001607f1b030382138115161561197d5761197d6117b6565b8260016001607f1b0319038212811615611999576119996117b6565b50019392505050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156119cd576119cd6117b6565b8160016001607f1b030183138116156119e8576119e86117b6565b5090039392505050565b60008083128015600160ff1b850184121615611a1057611a106117b6565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611a4457611a446117b6565b50500390565b6000825160005b81811015611a6b5760208186018101518583015201611a51565b81811115611a7a576000828501525b509190910192915050565b600060208284031215611a9757600080fd5b815180151581146115ff57600080fdfea2646970667358221220b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f64736f6c634300080c00330000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806379ba5097116100ee578063bbe70ace11610097578063e4438ce711610071578063e4438ce7146103be578063e8741b2a146103c7578063f2fde38b146103d0578063f585b64f146103e357600080fd5b8063bbe70ace14610390578063c031a66f146103a3578063e3161ddd146103b657600080fd5b80638da5cb5b116100c85780638da5cb5b146103605780639231cf7414610371578063a88a5c161461037a57600080fd5b806379ba50971461031e5780637f37b4101461032657806386c9956a1461034d57600080fd5b8063449163241161015b5780635ce31d0b116101355780635ce31d0b146102d557806362c962a2146102f057806365e4080f14610303578063715018a61461031657600080fd5b806344916324146102b05780634e9fcfcb146102b957806355f6b7d3146102cc57600080fd5b80632a7907201161018c5780632a790720146102635780633b22fc031461027a578063425d1c991461028357600080fd5b80630a1aef7c146101b35780631959a002146101f757806319bdbd5a1461024e575b600080fd5b6101da7f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c81565b6040516001600160a01b0390911681526020015b60405180910390f35b61022c6102053660046115e2565b6007602052600090815260409020546001600160801b03811690600160801b9004600f0b82565b604080516001600160801b039093168352600f9190910b6020830152016101ee565b61026161025c36600461161b565b6103f6565b005b61026c60065481565b6040519081526020016101ee565b61026c60055481565b6009546102979067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ee565b61026c60045481565b6102616102c73660046115e2565b610686565b61026c60085481565b60095461029790600160401b900467ffffffffffffffff1681565b6102616102fe366004611638565b610802565b61026161031136600461168e565b6108a0565b61026161090e565b610261610983565b6101da7f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81565b61026161035b3660046116a7565b6109e6565b6000546001600160a01b03166101da565b61026c60035481565b610382610a68565b6040516101ee9291906116f1565b61026161039e366004611638565b610b2a565b6103826103b13660046115e2565b610bc2565b610261610c8b565b61026c600a5481565b61026c60025481565b6102616103de3660046115e2565b610d9b565b61026c6103f1366004611775565b610e98565b336104096000546001600160a01b031690565b6001600160a01b0316146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61046c610c8b565b60095467ffffffffffffffff1642116104c65760095461049d90600160401b900467ffffffffffffffff16426117cc565b6004546104aa91906117e3565b600a60008282546104bb9190611802565b909155506105329050565b60095467ffffffffffffffff808216600160401b909204161015610532576009546105049067ffffffffffffffff600160401b82048116911661181a565b67ffffffffffffffff1660045461051b91906117e3565b600a600082825461052c9190611802565b90915550505b6000600854600a5461054491906117cc565b6040516370a0823160e01b815230600482015290915060009082906001600160a01b037f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb16906370a0823190602401602060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190611843565b6105de91906117cc565b905060006105f56001600160801b0385168361185c565b90506106018142611802565b600980546001600160801b038716600481905567ffffffffffffffff9384166fffffffffffffffffffffffffffffffff1990921691909117600160401b4294851602179091556003919091556040519081527f3d5c20aef7f62af877eb5dd5fe5e4b7c9f2bece3abb562f6a5eec4ec7eee9b999060200160405180910390a150505050565b6000196006541061069657600080fd5b6006546040516393f1a40b60e01b81526000916001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c16916393f1a40b916106fa9186906004019182526001600160a01b0316602082015260400190565b6040805180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a919061187e565b516001600160a01b03831660009081526007602052604090208054919250906001600160801b039081169083168114156107b65760405162461bcd60e51b815260206004820152600f60248201527f62616c616e636520636f72726563740000000000000000000000000000000000604482015260640161045b565b826001600160801b0316816001600160801b031610156107e9576107e4846107de83866118f2565b86610f85565b6107fc565b6107fc846107f785846118f2565b6110db565b50505050565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c161461087a5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b0316841461088f57600080fd5b61089982856110db565b5050505050565b336108b36000546001600160a01b031690565b6001600160a01b0316146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b600655565b336109216000546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b61098160006111fd565b565b6001546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820152601b60248201527f4f776e61626c653a2073656e64657220213d206e65774f776e65720000000000604482015260640161045b565b610981336111fd565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c1614610a5e5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b6107fc828261125a565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81600081518110610ac357610ac3611912565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060045481600081518110610b1657610b16611912565b602090810291909101015290939092509050565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c1614610ba25760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b03168414610bb757600080fd5b610899828583610f85565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81600081518110610c1d57610c1d611912565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050610c638561131c565b81600081518110610c7657610c76611912565b60209081029190910101529094909350915050565b6003544211156109815760055415610d4f5760095460009067ffffffffffffffff16421115610cf55760095460035467ffffffffffffffff9091161115610ced57600354600954610ce6919067ffffffffffffffff166117cc565b9050610d05565b506000610d05565b600354610d0290426117cc565b90505b600060045482610d1591906117e3565b600554909150610d2c6001600160701b03836117e3565b610d36919061185c565b60026000828254610d479190611802565b909155505050505b42600381905560055460025460408051938452602084019290925282820152517f8fab20431759bff599200e12ec1be9fa0d583aca6434239ee51902b0d1bef8579181900360600190a1565b33610dae6000546001600160a01b031690565b6001600160a01b031614610e045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610ead6000546001600160a01b031690565b6001600160a01b031614610f035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b81610f73576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611843565b91505b610f7e84848461142d565b5092915050565b610f8d610c8b565b6001600160a01b0381166000908152600760205260408120805490918491839190610fc29084906001600160801b0316611928565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826001600160801b0316600560008282546110019190611802565b90915550506002546000906001600160701b0390611028906001600160801b0387166117e3565b611032919061185c565b825490915081908390601090611053908490600160801b9004600f0b611953565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550826001600160a01b0316856001600160a01b03167f8b877e6b1064b5889e5540ad45c5e217984c5654267002d78b18d907af50ca2d866040516110cc91906001600160801b0391909116815260200190565b60405180910390a35050505050565b60008060006110e985611556565b9250925092506001600160701b03600254856001600160801b031661110e91906117e3565b611118919061185c565b83548490601090611134908490600160801b9004600f0b6119a2565b82546101009290920a6001600160801b038181021990931691831602179091558454869250859160009161116a918591166118f2565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550836001600160801b0316600560008282546111a991906117cc565b90915550506040516001600160801b03851681526001600160a01b038616907f2688d1d3fc5dea3571ef8bfe771ccbfd5f847fbc451f1127d8463d70defb4b77906020015b60405180910390a25050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600061126885611556565b82546001600160801b03808416600160801b0291161783559194509250905080156112d957806008600082825461129f9190611802565b909155506112d990506001600160a01b037f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb16858361142d565b604080516001600160a01b038681168252602082018490528716917ff2cae54821e786d228c3656c39d8551ac64edd1282545091850211b60146644491016111ee565b6001600160a01b0381166000908152600760205260408120600254600554156113e75760095460009067ffffffffffffffff164211156113975760095460035467ffffffffffffffff909116111561138f57600354600954611388919067ffffffffffffffff166117cc565b90506113a7565b5060006113a7565b6003546113a490426117cc565b90505b6000600454826113b791906117e3565b6005549091506113ce6001600160701b03836117e3565b6113d8919061185c565b6113e29084611802565b925050505b8154600160801b8104600f0b906001600160701b03906114119084906001600160801b03166117e3565b61141b919061185c565b61142591906119f2565b949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052915160009283929087169161149e9190611a4a565b6000604051808303816000865af19150503d80600081146114db576040519150601f19603f3d011682016040523d82523d6000602084013e6114e0565b606091505b509150915081801561150a57508051158061150a57508080602001905181019061150a9190611a85565b6108995760405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260640161045b565b6000806000611563610c8b565b6001600160a01b038416600090815260076020526040902060025481549194506001600160701b039161159f91906001600160801b03166117e3565b6115a9919061185c565b83549092506115c290600160801b9004600f0b836119f2565b929491935050565b6001600160a01b03811681146115df57600080fd5b50565b6000602082840312156115f457600080fd5b81356115ff816115ca565b9392505050565b6001600160801b03811681146115df57600080fd5b60006020828403121561162d57600080fd5b81356115ff81611606565b600080600080600060a0868803121561165057600080fd5b8535945060208601359350604086013592506060860135611670816115ca565b91506080860135611680816115ca565b809150509295509295909350565b6000602082840312156116a057600080fd5b5035919050565b600080600080608085870312156116bd57600080fd5b843593506020850135925060408501356116d6816115ca565b915060608501356116e6816115ca565b939692955090935050565b604080825283519082018190526000906020906060840190828701845b828110156117335781516001600160a01b03168452928401929084019060010161170e565b5050508381038285015284518082528583019183019060005b818110156117685783518352928401929184019160010161174c565b5090979650505050505050565b60008060006060848603121561178a57600080fd5b8335611795816115ca565b925060208401356117a5816115ca565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b6000828210156117de576117de6117b6565b500390565b60008160001904831182151516156117fd576117fd6117b6565b500290565b60008219821115611815576118156117b6565b500190565b600067ffffffffffffffff8381169083168181101561183b5761183b6117b6565b039392505050565b60006020828403121561185557600080fd5b5051919050565b60008261187957634e487b7160e01b600052601260045260246000fd5b500490565b60006040828403121561189057600080fd5b6040516040810181811067ffffffffffffffff821117156118c157634e487b7160e01b600052604160045260246000fd5b60405282516118cf81611606565b81526020830151600f81900b81146118e657600080fd5b60208201529392505050565b60006001600160801b038381169083168181101561183b5761183b6117b6565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b0380831681851680830382111561194a5761194a6117b6565b01949350505050565b600081600f0b83600f0b600082128260016001607f1b030382138115161561197d5761197d6117b6565b8260016001607f1b0319038212811615611999576119996117b6565b50019392505050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156119cd576119cd6117b6565b8160016001607f1b030183138116156119e8576119e86117b6565b5090039392505050565b60008083128015600160ff1b850184121615611a1057611a106117b6565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611a4457611a446117b6565b50500390565b6000825160005b81811015611a6b5760208186018101518583015201611a51565b81811115611a7a576000828501525b509190910192915050565b600060208284031215611a9757600080fd5b815180151581146115ff57600080fdfea2646970667358221220b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f64736f6c634300080c0033

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

0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c

-----Decoded View---------------
Arg [0] : _rewardToken (address): 0x0b5740c6b4a97f90eF2F0220651Cca420B868FfB
Arg [1] : _zipRewards (address): 0x1e2F8e5f94f366eF5Dc041233c0738b1c1C2Cb0c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb
Arg [1] : 0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c


Deployed ByteCode Sourcemap

1050:10377:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1522:39;;;;;;;;-1:-1:-1;;;;;197:55:4;;;179:74;;167:2;152:18;1522:39:3;;;;;;;;1857:45;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1857:45:3;;;-1:-1:-1;;;1857:45:3;;;;;;;;;;-1:-1:-1;;;;;865:47:4;;;847:66;;960:2;949:22;;;;944:2;929:18;;922:50;820:18;1857:45:3;675:303:4;9855:1150:3;;;;;;:::i;:::-;;:::i;:::-;;1768:25;;;;;;;;;1532::4;;;1520:2;1505:18;1768:25:3;1386:177:4;1702:20:3;;;;;;9427:33;;;;;;;;;;;;1742:18:4;1730:31;;;1712:50;;1700:2;1685:18;9427:33:3;1568:200:4;1632:24:3;;;;;;5725:534;;;;;;:::i;:::-;;:::i;9330:28::-;;;;;;9466:53;;;;;-1:-1:-1;;;9466:53:3;;;;;;5110:271;;;;;;:::i;:::-;;:::i;11307:118::-;;;;;;:::i;:::-;;:::i;1102:101:2:-;;;:::i;1550:161::-;;;:::i;1431:32:3:-;;;;;5387:163;;;;;;:::i;:::-;;:::i;472:85:2:-;518:7;544:6;-1:-1:-1;;;;;544:6:2;472:85;;1600:26:3;;;;;;3448:337;;;:::i;:::-;;;;;;;;:::i;4831:273::-;;;;;;:::i;:::-;;:::i;3047:391::-;;;;;;:::i;:::-;;:::i;6318:843::-;;;:::i;9525:38::-;;;;;;1568:26;;;;;;1352:192:2;;;;;;:::i;:::-;;:::i;11011:290:3:-;;;;;;:::i;:::-;;:::i;9855:1150::-;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;;;;;;;;;9942:12:3::1;:10;:12::i;:::-;9986:19;::::0;::::1;;9967:15;:38;9964:514;;10135:39;::::0;10114:61:::1;::::0;-1:-1:-1;;;10135:39:3;::::1;;;10114:15;:61;:::i;:::-;10100:12;;:76;;;;:::i;:::-;10070:26;;:106;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;9964:514:3::1;::::0;-1:-1:-1;9964:514:3::1;;10306:19;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;10264:39:3;;::::1;;:61;10261:207;;;10413:39;::::0;10393:59:::1;::::0;10413:39:::1;-1:-1:-1::0;;;10413:39:3;::::1;::::0;::::1;::::0;10393:19:::1;:59;:::i;:::-;10388:65;;10375:12;;:78;;;;:::i;:::-;10345:26;;:108;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10261:207:3::1;10487:17;10534:16;;10507:26;;:43;;;;:::i;:::-;10584:33;::::0;-1:-1:-1;;;10584:33:3;;10611:4:::1;10584:33;::::0;::::1;179:74:4::0;10487:63:3;;-1:-1:-1;10560:21:3::1;::::0;10487:63;;-1:-1:-1;;;;;10584:8:3::1;:18;::::0;::::1;::::0;152::4;;10584:33:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;10560:70:::0;-1:-1:-1;10640:26:3::1;10669:32;-1:-1:-1::0;;;;;10669:32:3;::::1;10560:70:::0;10669:32:::1;:::i;:::-;10640:61:::0;-1:-1:-1;10740:37:3::1;10640:61:::0;10740:15:::1;:37;:::i;:::-;10711:19;:67:::0;;-1:-1:-1;;;;;10803:21:3;::::1;10788:12;:36:::0;;;10711:67:::1;::::0;;::::1;-1:-1:-1::0;;10834:65:3;;;;;;;-1:-1:-1;;;10883:15:3::1;10834:65:::0;;::::1;;;::::0;;;10910:14:::1;:32:::0;;;;10957:41:::1;::::0;6978:66:4;;;10957:41:3::1;::::0;6966:2:4;6951:18;10957:41:3::1;;;;;;;9932:1073;;;9855:1150:::0;:::o;5725:534::-;-1:-1:-1;;5791:13:3;;:30;5783:39;;;;;;5877:13;;5857:39;;-1:-1:-1;;;5857:39:3;;5832:22;;-1:-1:-1;;;;;5857:10:3;:19;;;;:39;;5892:3;;5857:39;;7229:25:4;;;-1:-1:-1;;;;;7290:55:4;7285:2;7270:18;;7263:83;7217:2;7202:18;;7055:297;5857:39:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;-1:-1:-1;;;;;5937:13:3;;5857:46;5937:13;;;:8;:13;;;;;5982:11;;5857:46;;-1:-1:-1;5937:13:3;-1:-1:-1;;;;;5982:11:3;;;;6011:29;;;;;6003:57;;;;-1:-1:-1;;;6003:57:3;;8465:2:4;6003:57:3;;;8447:21:4;8504:2;8484:18;;;8477:30;8543:17;8523:18;;;8516:45;8578:18;;6003:57:3;8263:339:4;6003:57:3;6087:14;-1:-1:-1;;;;;6073:28:3;:11;-1:-1:-1;;;;;6073:28:3;;6070:183;;;6117:45;6125:3;6130:26;6145:11;6130:14;:26;:::i;:::-;6158:3;6117:7;:45::i;:::-;6070:183;;;6201:41;6210:3;6215:26;6227:14;6215:11;:26;:::i;:::-;6201:8;:41::i;:::-;5773:486;;;5725:534;:::o;5110:271::-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5306:15:::1;-1:-1:-1::0;;;;;5293:30:3::1;5274:15;:49;5266:58;;;::::0;::::1;;5334:40;5343:4;5357:15;5334:8;:40::i;:::-;5110:271:::0;;;;;:::o;11307:118::-;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;11388:13:3::1;:30:::0;11307:118::o;1102:101:2:-;695:10;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;1166:30:::1;1193:1;1166:18;:30::i;:::-;1102:101::o:0;1550:161::-;1624:8;;-1:-1:-1;;;;;1624:8:2;1610:10;:22;1602:62;;;;-1:-1:-1;;;1602:62:2;;9417:2:4;1602:62:2;;;9399:21:4;9456:2;9436:18;;;9429:30;9495:29;9475:18;;;9468:57;9542:18;;1602:62:2;9215:351:4;1602:62:2;1674:30;1693:10;1674:18;:30::i;5387:163:3:-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5519:24:::1;5527:4;5533:9;5519:7;:24::i;3448:337::-:0;3580:15;;;3593:1;3580:15;;;;;;;;;3503;;;;3548:29;;3580:15;;;;;;;;;;;-1:-1:-1;3580:15:3;3548:47;;3625:8;3605:13;3619:1;3605:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3605:29:3;;;;:16;;;;;;;;;;;:29;3676:16;;;3690:1;3676:16;;;;;;;;;3644:29;;3676:16;;;;;;;;;;;;-1:-1:-1;3676:16:3;3644:48;;3720:12;;3702;3715:1;3702:15;;;;;;;;:::i;:::-;;;;;;;;;;:30;3750:13;;3765:12;;-1:-1:-1;3448:337:3;-1:-1:-1;3448:337:3:o;4831:273::-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5024:15:::1;-1:-1:-1::0;;;;;5011:30:3::1;4992:15;:49;4984:58;;;::::0;::::1;;5052:45;5060:6;5076:15;5094:2;5052:7;:45::i;3047:391::-:0;3220:15;;;3233:1;3220:15;;;;;;;;;3116:28;;;;3188:29;;3220:15;;;;;;;;;;;-1:-1:-1;3220:15:3;3188:47;;3265:8;3245:13;3259:1;3245:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3245:29:3;;;;:16;;;;;;;;;;;:29;3318:16;;;3332:1;3318:16;;;;;;;;;3284:31;;3318:16;;;;;;;;;;;;-1:-1:-1;3318:16:3;3284:50;;3364:19;3378:4;3364:13;:19::i;:::-;3344:14;3359:1;3344:17;;;;;;;;:::i;:::-;;;;;;;;;;:39;3401:13;;3416:14;;-1:-1:-1;3047:391:3;-1:-1:-1;;3047:391:3:o;6318:843::-;6379:14;;6361:15;:32;6357:798;;;6413:8;;:12;6409:607;;6493:19;;6445:9;;6493:19;;6475:15;:37;6472:400;;;6556:19;;6539:14;;6556:19;;;;-1:-1:-1;6536:216:3;;;6632:14;;6610:19;;:36;;6632:14;6610:19;;:36;:::i;:::-;6603:43;;6472:400;;6536:216;-1:-1:-1;6728:1:3;6472:400;;;6839:14;;6821:32;;:15;:32;:::i;:::-;6814:39;;6472:400;6889:16;6913:12;;6908:4;:17;;;;:::i;:::-;6993:8;;6889:36;;-1:-1:-1;6961:29:3;-1:-1:-1;;;;;6889:36:3;6961:29;:::i;:::-;:40;;;;:::i;:::-;6943:14;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;6409:607:3;7046:15;7029:14;:32;;;7119:8;;7129:14;;7080:64;;;9905:25:4;;;9961:2;9946:18;;9939:34;;;;9989:18;;;9982:34;7080:64:3;;;;;;9893:2:4;7080:64:3;;;6318:843::o;1352:192:2:-;695:10;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;-1:-1:-1;;;;;1441:23:2;::::1;1433:74;;;::::0;-1:-1:-1;;;1433:74:2;;10229:2:4;1433:74:2::1;::::0;::::1;10211:21:4::0;10268:2;10248:18;;;10241:30;10307:34;10287:18;;;10280:62;-1:-1:-1;;;10358:18:4;;;10351:36;10404:19;;1433:74:2::1;10027:402:4::0;1433:74:2::1;1517:8;:20:::0;;-1:-1:-1;;1517:20:2::1;-1:-1:-1::0;;;;;1517:20:2;;;::::1;::::0;;;::::1;::::0;;1352:192::o;11011:290:3:-;11114:4;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;11133:11:3;11130:81:::1;;11169:31;::::0;-1:-1:-1;;;11169:31:3;;11194:4:::1;11169:31;::::0;::::1;179:74:4::0;-1:-1:-1;;;;;11169:16:3;::::1;::::0;::::1;::::0;152:18:4;;11169:31:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11160:40;;11130:81;11220:51;11245:6;11253:9;11264:6;11220:24;:51::i;:::-;-1:-1:-1::0;11288:6:3;11011:290;-1:-1:-1;;11011:290:3:o;7336:393::-;7413:12;:10;:12::i;:::-;-1:-1:-1;;;;;7459:12:3;;7435:21;7459:12;;;:8;:12;;;;;7482:21;;7459:12;;7497:6;;7459:12;;7435:21;7482;;7497:6;;-1:-1:-1;;;;;7482:21:3;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7482:21:3;;;;;-1:-1:-1;;;;;7482:21:3;;;;;;7525:6;-1:-1:-1;;;;;7513:18:3;:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;7578:14:3;;7541:21;;-1:-1:-1;;;;;2137:8:3;7565:27;;-1:-1:-1;;;;;7565:12:3;;:27;:::i;:::-;:47;;;;:::i;:::-;7622:52;;7541:71;;-1:-1:-1;7541:71:3;;7622:4;;:15;;:52;;7541:71;;-1:-1:-1;;;7622:52:3;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7622:52:3;;;;;;;-1:-1:-1;;;;;7622:52:3;;;;;;7719:2;-1:-1:-1;;;;;7689:33:3;7706:3;-1:-1:-1;;;;;7689:33:3;;7711:6;7689:33;;;;;-1:-1:-1;;;;;6996:47:4;;;;6978:66;;6966:2;6951:18;;6832:218;7689:33:3;;;;;;;;7403:326;;7336:393;;;:::o;7822:362::-;7889:21;7912:19;7933:15;7952:26;7974:3;7952:21;:26::i;:::-;7888:90;;;;;;-1:-1:-1;;;;;8036:14:3;;8028:6;-1:-1:-1;;;;;8023:12:3;:27;;;;:::i;:::-;:47;;;;:::i;:::-;7989:83;;:4;;:15;;:83;;;;-1:-1:-1;;;7989:83:3;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7989:83:3;;;;;;;;;;;;;;;8082:21;;8097:6;;-1:-1:-1;8082:21:3;;-1:-1:-1;;8082:21:3;;8097:6;;8082:21;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8082:21:3;;;;;-1:-1:-1;;;;;8082:21:3;;;;;;8125:6;-1:-1:-1;;;;;8113:18:3;:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;8147:30:3;;-1:-1:-1;;;;;6996:47:4;;6978:66;;-1:-1:-1;;;;;8147:30:3;;;;;6966:2:4;6951:18;8147:30:3;;;;;;;;7878:306;;;7822:362;;:::o;1865:190:2:-;1939:16;1958:6;;-1:-1:-1;;;;;1974:18:2;;;-1:-1:-1;;1974:18:2;;;;;;2007:41;;1958:6;;;;;;;2007:41;;1939:16;2007:41;1929:126;1865:190;:::o;8190:405:3:-;8252:21;8275:19;8296:15;8315:26;8337:3;8315:21;:26::i;:::-;8351:49;;-1:-1:-1;;;;;8351:49:3;;;-1:-1:-1;;;8351:49:3;;;;;;8251:90;;-1:-1:-1;8251:90:3;-1:-1:-1;8251:90:3;-1:-1:-1;8413:15:3;;8410:126;;8464:10;8444:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;8488:37:3;;-1:-1:-1;;;;;;8488:8:3;:21;8510:2;8514:10;8488:21;:37::i;:::-;8551;;;-1:-1:-1;;;;;11688:55:4;;;11670:74;;11775:2;11760:18;;11753:34;;;8551:37:3;;;;;11643:18:4;8551:37:3;11496:297:4;3954:840:3;-1:-1:-1;;;;;4063:15:3;;4015:12;4063:15;;;:8;:15;;;;;4111:14;;4140:8;;:12;4136:552;;4212:19;;4168:9;;4212:19;;4194:15;:37;4191:364;;;4271:19;;4254:14;;4271:19;;;;-1:-1:-1;4251:196:3;;;4343:14;;4321:19;;:36;;4343:14;4321:19;;:36;:::i;:::-;4314:43;;4191:364;;4251:196;-1:-1:-1;4427:1:3;4191:364;;;4526:14;;4508:32;;:15;:32;:::i;:::-;4501:39;;4191:364;4568:16;4592:12;;4587:4;:17;;;;:::i;:::-;4669:8;;4568:36;;-1:-1:-1;4637:29:3;-1:-1:-1;;;;;4568:36:3;4637:29;:::i;:::-;:40;;;;:::i;:::-;4618:59;;;;:::i;:::-;;;4154:534;;4136:552;4771:15;;-1:-1:-1;;;4771:15:3;;;;;-1:-1:-1;;;;;2137:8:3;4716:33;;4734:15;;-1:-1:-1;;;;;4721:11:3;4716:33;:::i;:::-;:51;;;;:::i;:::-;4712:74;;;;:::i;:::-;4697:90;3954:840;-1:-1:-1;;;;3954:840:3:o;3507:333:0:-;3676:48;;;-1:-1:-1;;;;;11688:55:4;;;3676:48:0;;;11670:74:4;11760:18;;;;11753:34;;;3676:48:0;;;;;;;;;;11643:18:4;;;;3676:48:0;;;;;;;;;-1:-1:-1;;;3676:48:0;;;3656:69;;-1:-1:-1;;;;3656:19:0;;;;:69;;3676:48;3656:69;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3620:105;;;;3743:7;:57;;;;-1:-1:-1;3755:11:0;;:16;;:44;;;3786:4;3775:24;;;;;;;;;;;;:::i;:::-;3735:98;;;;-1:-1:-1;;;3735:98:0;;13032:2:4;3735:98:0;;;13014:21:4;13071:2;13051:18;;;13044:30;13110;13090:18;;;13083:58;13158:18;;3735:98:0;12830:352:4;8601:330:3;8663:21;8686:19;8707:15;8734:12;:10;:12::i;:::-;-1:-1:-1;;;;;8763:13:3;;;;;;:8;:13;;;;;8821:14;;8808:11;;8763:13;;-1:-1:-1;;;;;;2137:8:3;8803:32;;8821:14;-1:-1:-1;;;;;8808:11:3;8803:32;:::i;:::-;:52;;;;:::i;:::-;8907:15;;8786:69;;-1:-1:-1;8883:40:3;;-1:-1:-1;;;8907:15:3;;;;8786:69;8883:40;:::i;:::-;8601:330;;;;-1:-1:-1;;8601:330:3:o;264:154:4:-;-1:-1:-1;;;;;343:5:4;339:54;332:5;329:65;319:93;;408:1;405;398:12;319:93;264:154;:::o;423:247::-;482:6;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;590:9;577:23;609:31;634:5;609:31;:::i;:::-;659:5;423:247;-1:-1:-1;;;423:247:4:o;983:146::-;-1:-1:-1;;;;;1062:5:4;1058:46;1051:5;1048:57;1038:85;;1119:1;1116;1109:12;1134:247;1193:6;1246:2;1234:9;1225:7;1221:23;1217:32;1214:52;;;1262:1;1259;1252:12;1214:52;1301:9;1288:23;1320:31;1345:5;1320:31;:::i;1773:594::-;1868:6;1876;1884;1892;1900;1953:3;1941:9;1932:7;1928:23;1924:33;1921:53;;;1970:1;1967;1960:12;1921:53;2006:9;1993:23;1983:33;;2063:2;2052:9;2048:18;2035:32;2025:42;;2114:2;2103:9;2099:18;2086:32;2076:42;;2168:2;2157:9;2153:18;2140:32;2181:31;2206:5;2181:31;:::i;:::-;2231:5;-1:-1:-1;2288:3:4;2273:19;;2260:33;2302;2260;2302;:::i;:::-;2354:7;2344:17;;;1773:594;;;;;;;;:::o;2372:180::-;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;-1:-1:-1;2523:23:4;;2372:180;-1:-1:-1;2372:180:4:o;2802:525::-;2888:6;2896;2904;2912;2965:3;2953:9;2944:7;2940:23;2936:33;2933:53;;;2982:1;2979;2972:12;2933:53;3018:9;3005:23;2995:33;;3075:2;3064:9;3060:18;3047:32;3037:42;;3129:2;3118:9;3114:18;3101:32;3142:31;3167:5;3142:31;:::i;:::-;3192:5;-1:-1:-1;3249:2:4;3234:18;;3221:32;3262:33;3221:32;3262:33;:::i;:::-;2802:525;;;;-1:-1:-1;2802:525:4;;-1:-1:-1;;2802:525:4:o;3563:1215::-;3845:2;3857:21;;;3927:13;;3830:18;;;3949:22;;;3797:4;;4024;;4002:2;3987:18;;;4051:15;;;3797:4;4094:218;4108:6;4105:1;4102:13;4094:218;;;4173:13;;-1:-1:-1;;;;;4169:62:4;4157:75;;4252:12;;;;4287:15;;;;4130:1;4123:9;4094:218;;;-1:-1:-1;;;4348:19:4;;;4328:18;;;4321:47;4418:13;;4440:21;;;4516:15;;;;4479:12;;;4551:1;4561:189;4577:8;4572:3;4569:17;4561:189;;;4646:15;;4632:30;;4723:17;;;;4684:14;;;;4605:1;4596:11;4561:189;;;-1:-1:-1;4767:5:4;;3563:1215;-1:-1:-1;;;;;;;3563:1215:4:o;4783:470::-;4874:6;4882;4890;4943:2;4931:9;4922:7;4918:23;4914:32;4911:52;;;4959:1;4956;4949:12;4911:52;4998:9;4985:23;5017:31;5042:5;5017:31;:::i;:::-;5067:5;-1:-1:-1;5124:2:4;5109:18;;5096:32;5137:33;5096:32;5137:33;:::i;:::-;4783:470;;5189:7;;-1:-1:-1;;;5243:2:4;5228:18;;;;5215:32;;4783:470::o;5619:127::-;5680:10;5675:3;5671:20;5668:1;5661:31;5711:4;5708:1;5701:15;5735:4;5732:1;5725:15;5751:125;5791:4;5819:1;5816;5813:8;5810:34;;;5824:18;;:::i;:::-;-1:-1:-1;5861:9:4;;5751:125::o;5881:168::-;5921:7;5987:1;5983;5979:6;5975:14;5972:1;5969:21;5964:1;5957:9;5950:17;5946:45;5943:71;;;5994:18;;:::i;:::-;-1:-1:-1;6034:9:4;;5881:168::o;6054:128::-;6094:3;6125:1;6121:6;6118:1;6115:13;6112:39;;;6131:18;;:::i;:::-;-1:-1:-1;6167:9:4;;6054:128::o;6187:229::-;6226:4;6255:18;6323:10;;;;6293;;6345:12;;;6342:38;;;6360:18;;:::i;:::-;6397:13;;6187:229;-1:-1:-1;;;6187:229:4:o;6421:184::-;6491:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:52;;;6560:1;6557;6550:12;6512:52;-1:-1:-1;6583:16:4;;6421:184;-1:-1:-1;6421:184:4:o;6610:217::-;6650:1;6676;6666:132;;6720:10;6715:3;6711:20;6708:1;6701:31;6755:4;6752:1;6745:15;6783:4;6780:1;6773:15;6666:132;-1:-1:-1;6812:9:4;;6610:217::o;7489:769::-;7584:6;7637:2;7625:9;7616:7;7612:23;7608:32;7605:52;;;7653:1;7650;7643:12;7605:52;7686:2;7680:9;7728:2;7720:6;7716:15;7797:6;7785:10;7782:22;7761:18;7749:10;7746:34;7743:62;7740:185;;;7847:10;7842:3;7838:20;7835:1;7828:31;7882:4;7879:1;7872:15;7910:4;7907:1;7900:15;7740:185;7941:2;7934:22;7978:16;;8003:31;7978:16;8003:31;:::i;:::-;8043:21;;8109:2;8094:18;;8088:25;8155:2;8144:23;;;8132:36;;8122:64;;8182:1;8179;8172:12;8122:64;8214:2;8202:15;;8195:32;8206:6;7489:769;-1:-1:-1;;;7489:769:4:o;8607:246::-;8647:4;-1:-1:-1;;;;;8760:10:4;;;;8730;;8782:12;;;8779:38;;;8797:18;;:::i;9571:127::-;9632:10;9627:3;9623:20;9620:1;9613:31;9663:4;9660:1;9653:15;9687:4;9684:1;9677:15;10434:253;10474:3;-1:-1:-1;;;;;10563:2:4;10560:1;10556:10;10593:2;10590:1;10586:10;10624:3;10620:2;10616:12;10611:3;10608:21;10605:47;;;10632:18;;:::i;:::-;10668:13;;10434:253;-1:-1:-1;;;;10434:253:4:o;10692:396::-;10731:3;10775:1;10771:2;10760:17;10812:1;10808:2;10797:17;10842:1;10837:3;10833:11;10921:3;-1:-1:-1;;;;;10881:44:4;10876:3;10872:54;10867:2;10860:10;10856:71;10853:97;;;10930:18;;:::i;:::-;11024:3;-1:-1:-1;;;;;10983:39:4;10979:49;10974:3;10970:59;10966:2;10962:68;10959:94;;;11033:18;;:::i;:::-;-1:-1:-1;11069:13:4;;10692:396;-1:-1:-1;;;10692:396:4:o;11093:398::-;11132:4;11177:1;11173:2;11162:17;11214:1;11210:2;11199:17;11244:1;11239:3;11235:11;11328:3;-1:-1:-1;;;;;11287:39:4;11283:49;11278:3;11274:59;11269:2;11262:10;11258:76;11255:102;;;11337:18;;:::i;:::-;11426:3;-1:-1:-1;;;;;11386:44:4;11381:3;11377:54;11373:2;11369:63;11366:89;;;11435:18;;:::i;:::-;-1:-1:-1;11472:13:4;;;11093:398;-1:-1:-1;;;11093:398:4:o;11798:314::-;11837:4;11866:9;;;11891:10;;-1:-1:-1;;;11910:19:4;;11903:27;;11887:44;11884:70;;;11934:18;;:::i;:::-;12053:1;11985:66;11981:74;11978:1;11974:82;11970:2;11966:91;11963:117;;;12060:18;;:::i;:::-;-1:-1:-1;;12097:9:4;;11798:314::o;12117:426::-;12246:3;12284:6;12278:13;12309:1;12319:129;12333:6;12330:1;12327:13;12319:129;;;12431:4;12415:14;;;12411:25;;12405:32;12392:11;;;12385:53;12348:12;12319:129;;;12466:6;12463:1;12460:13;12457:48;;;12501:1;12492:6;12487:3;12483:16;12476:27;12457:48;-1:-1:-1;12521:16:4;;;;;12117:426;-1:-1:-1;;12117:426:4:o;12548:277::-;12615:6;12668:2;12656:9;12647:7;12643:23;12639:32;12636:52;;;12684:1;12681;12674:12;12636:52;12716:9;12710:16;12769:5;12762:13;12755:21;12748:5;12745:32;12735:60;;12791:1;12788;12781:12

Swarm Source

ipfs://b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f
Block Transaction Difficulty Gas Used Reward
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.