Contract 0xf731202A3cf7EfA9368C2d7bD613926f7A144dB5 4

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1fd18da0cb71dbfb1eb01986c2799cce48c7376fbeddec835ee1227085407e90Deposit552251732023-02-06 22:53:4645 mins ago0xeb4576fe753dab07635c0bb6c8f0a355e1db5d31 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.016703389
0x16f1aff19f77a5ebe05a1f2beba20a320996d7b14c2701e8f5afb5d937e0a26eDeposit552128662023-02-06 18:49:074 hrs 50 mins ago0x6c2693f5a936f37ed03cfa8465bf2d8beff19a0f IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.020883741
0x161232f0a609dd2c6f57b32bd50c4a68e60d268682ee0541c1af4a91439f72e9Harvest552125632023-02-06 18:43:224 hrs 56 mins ago0x238f24101876377e9178d125d0747de7fad9c3b2 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.013297142971
0xab86a58c0c1795b4ee34635f1c5c2fd4a5f2f5e775b9b0abb4b51b5099522805Deposit552106762023-02-06 18:03:425 hrs 35 mins ago0x4e0bf09a1fc6e1bf4680e629a9d73ee3eecab4db IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.012887808416
0x02eee2c2c8d96c07878c328bd9343e5a0562ee1c04915e658a6dfaefee5cb930Deposit551869302023-02-06 9:01:5014 hrs 37 mins ago0xc3ad78caa7984ecabb06c6bd4934c3d8e9efd593 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.006373467208
0xdf35cfd0d785278bae12128ecd53218636e713a457c5e90626d261346db68350Harvest551848212023-02-06 7:49:1715 hrs 50 mins ago0x6648b5554632ed5d6ec27ec6737e98a0a3dbbc94 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.006362209045
0xc28156454707d489c1a9fd0fb5527c27fe1f824a10f0abe4fa3689446ab92272Deposit551769492023-02-06 3:07:1720 hrs 32 mins ago0x56ad35e8c4a4535400a795109c08b34f46004787 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.014038358601
0xe00668fa5a3e350caa0f08eebe3d4f00cd9aa51a07cea837b278100822b03eb4Harvest551767022023-02-06 2:55:4620 hrs 43 mins ago0x56ad35e8c4a4535400a795109c08b34f46004787 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.0089366231
0x8fc1cd2909a97a2c28b8795143a24a31fa2ca756189f4682688288447cefb53dHarvest551692392023-02-05 23:01:391 day 37 mins ago0x238f24101876377e9178d125d0747de7fad9c3b2 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.012296008806
0xbdd2f94af1fa12e9c390cb65e4a1df3acea8e48b65715f94ebeb558827aec120Harvest551686342023-02-05 22:50:491 day 48 mins ago0x7b81ca41ca1442cc5c9d7a00cf23b3c45a7b766a IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.010307762157
0x3a17cf19993f73d10ec03bc49d56e84e9150c001c4af236f35b1013be0c2641dDeposit551686132023-02-05 22:50:201 day 49 mins ago0x7b81ca41ca1442cc5c9d7a00cf23b3c45a7b766a IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.014028972206
0x21a7b26885f16df37169b6f5727d011afb11aa28e047d32bca0eb781c3612dc4Withdraw And Har...551681502023-02-05 22:42:051 day 57 mins ago0x7b81ca41ca1442cc5c9d7a00cf23b3c45a7b766a IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.014413043261
0xedd613f24361817b59ae25713ec799c124087bf1299cb30302e69be4f61444a0Deposit551676182023-02-05 22:32:171 day 1 hr ago0x7b81ca41ca1442cc5c9d7a00cf23b3c45a7b766a IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.014215844143
0xbd15421311af1be9cfcbc06e14ead25d7190db75f6a9b613f97882c4f165fe90Deposit551629262023-02-05 21:05:161 day 2 hrs ago0x51fe62b6d7dea5fcce686004fbe86ff854aa673b IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.019063367158
0xa9ced25735587d2d20ce2cc2c9ef690b21c9de410255ef9502e6a241a004c8bbHarvest551623602023-02-05 20:54:581 day 2 hrs ago0xa971a854246fef20d852e19e56ac5a7d370bc539 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.018328138963
0xb6e025db48b96b445d813fcfc4b6b099740659099cc45d54e9f0c1580d131febWithdraw And Har...551622912023-02-05 20:53:421 day 2 hrs ago0x51fe62b6d7dea5fcce686004fbe86ff854aa673b IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.02034698821
0x04c9daddd55c7be01dd2e1cd7961209c4308681ee3f0833ee298bae23460f5eeHarvest551563892023-02-05 19:08:251 day 4 hrs ago0xac631895576ba6d3945f37a9910a715107987a80 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.018525541556
0x3c14c111aaef8880bb2e5e2fc28b9f310a4b393e4eec9620637992750ff7542fHarvest551545922023-02-05 18:37:251 day 5 hrs ago0xef4ecbd00aa7188b2dc005f421e9c142699be8e1 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.024687736345
0x8b00aeb9be64656dfc01d0583b63940e9e34be8c1963f89b46cfe50a0540db14Harvest551520622023-02-05 17:53:431 day 5 hrs ago0x8f5ac5101df394eb744ae23f05149a79a4ba07c1 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.024689335022
0x42bc03a08d9fa75c9f89f4671c575bf357d8a99762b3c828fe72feb0dc41e74dDeposit551486512023-02-05 16:54:531 day 6 hrs ago0x51fe62b6d7dea5fcce686004fbe86ff854aa673b IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.024562373544
0x63cc927a1eb679e1f5e9d96ff8cda7cdd3f57415652634fcc26eb3b03a661fbbDeposit551474072023-02-05 16:33:371 day 7 hrs ago0x4e0bf09a1fc6e1bf4680e629a9d73ee3eecab4db IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.019506023832
0xe6149ae19dfd3f3a78af7dd47330f07dd07ee331e17b4f703b711e969a84ecf3Withdraw And Har...551470532023-02-05 16:27:151 day 7 hrs ago0x4e0bf09a1fc6e1bf4680e629a9d73ee3eecab4db IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.024512268041
0x882d939166acbbf47f87021e3f88c4e845d533d6d4ef053527c31104e3c6c5f4Deposit551422882023-02-05 15:04:071 day 8 hrs ago0xdb1b5c8bc755d2fe94bc6969cd064a2953dcbfb5 IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.019339615746
0x9e3d33b9ad4f86d60cc1e61b68fe0fb7b3b6d5a81c98ddc255f6f7d18d8f2b59Withdraw And Har...551338342023-02-05 12:03:591 day 11 hrs ago0x7cd8f4207ea70a608b10bd65a28c838f5f6e133c IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.012182119755
0xacf6f2ef363922f4fe5090c17d6592b621835e628943b000f8969d8acf39386dHarvest551332222023-02-05 11:53:481 day 11 hrs ago0x7cd8f4207ea70a608b10bd65a28c838f5f6e133c IN  0xf731202a3cf7efa9368c2d7bd613926f7a144db50 FTM0.011002030218
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2f0afada5965a2cbe1095c9f8eccc324167fc5d82d85e52167b2470ce822470a287712002022-01-23 0:30:35379 days 23 hrs ago 0x4bb4c1b0745ef7b4642feeccd0740dec417ca0a0  Contract Creation0 FTM
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
MiniChefV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-01-23
*/

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)
library BoringMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, "BoringMath: Mul Overflow");}
    function to128(uint256 a) internal pure returns (uint128 c) {
        require(a <= uint128(-1), "BoringMath: uint128 Overflow");
        c = uint128(a);
    }
    function to64(uint256 a) internal pure returns (uint64 c) {
        require(a <= uint64(-1), "BoringMath: uint64 Overflow");
        c = uint64(a);
    }
    function to32(uint256 a) internal pure returns (uint32 c) {
        require(a <= uint32(-1), "BoringMath: uint32 Overflow");
        c = uint32(a);
    }
}

library BoringMath128 {
    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}

library BoringMath64 {
    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}

library BoringMath32 {
    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}


// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]

pragma solidity 0.6.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // EIP 2612
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
}


// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]

pragma solidity 0.6.12;
library BoringERC20 {
    function safeSymbol(IERC20 token) internal view returns(string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeName(IERC20 token) internal view returns(string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeDecimals(IERC20 token) internal view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    function safeTransfer(IERC20 token, address to, uint256 amount) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed");
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed");
    }
}


// File @boringcrypto/boring-solidity/contracts/[email protected]

// Audit on 5-Jan-2021 by Keno and BoringCrypto

// P1 - P3: OK
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
// solhint-disable avoid-low-level-calls
// T1 - T4: OK
contract BaseBoringBatchable {
    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {
        // If the _res length is less than 68, then the transaction failed silently (without a revert message)
        if (_returnData.length < 68) return "Transaction reverted silently";

        assembly {
            // Slice the sighash.
            _returnData := add(_returnData, 0x04)
        }
        return abi.decode(_returnData, (string)); // All that remains is the revert string
    }    
    
    // F3 - F9: OK
    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense
    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value
    // C1 - C21: OK
    // C3: The length of the loop is fully under user control, so can't be exploited
    // C7: Delegatecall is only used on the same contract, so it's safe
    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {
        // Interactions
        successes = new bool[](calls.length);
        results = new bytes[](calls.length);
        for (uint256 i = 0; i < calls.length; i++) {
            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);
            require(success || !revertOnFail, _getRevertMsg(result));
            successes[i] = success;
            results[i] = result;
        }
    }
}

// T1 - T4: OK
contract BoringBatchable is BaseBoringBatchable {
    // F1 - F9: OK
    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)
    //     if part of a batch this could be used to grief once as the second call would not need the permit
    // C1 - C21: OK
    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
        // Interactions
        // X1 - X5
        token.permit(from, to, amount, deadline, v, r, s);
    }
}


// File @boringcrypto/boring-solidity/contracts/[email protected]

// Audit on 5-Jan-2021 by Keno and BoringCrypto

// P1 - P3: OK
pragma solidity 0.6.12;

// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol
// Edited by BoringCrypto

// T1 - T4: OK
contract BoringOwnableData {
    // V1 - V5: OK
    address public owner;
    // V1 - V5: OK
    address public pendingOwner;
}

// T1 - T4: OK
contract BoringOwnable is BoringOwnableData {
    // E1: OK
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () public {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {
        if (direct) {
            // Checks
            require(newOwner != address(0) || renounce, "Ownable: zero address");

            // Effects
            emit OwnershipTransferred(owner, newOwner);
            owner = newOwner;
            pendingOwner = address(0);
        } else {
            // Effects
            pendingOwner = newOwner;
        }
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function claimOwnership() public {
        address _pendingOwner = pendingOwner;
        
        // Checks
        require(msg.sender == _pendingOwner, "Ownable: caller != pending owner");

        // Effects
        emit OwnershipTransferred(owner, _pendingOwner);
        owner = _pendingOwner;
        pendingOwner = address(0);
    }

    // M1 - M5: OK
    // C1 - C21: OK
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }
}


// File contracts/libraries/SignedSafeMath.sol


pragma solidity 0.6.12;

library SignedSafeMath {
    int256 constant private _INT256_MIN = -2**255;

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

        require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow");

        int256 c = a * b;
        require(c / a == b, "SignedSafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two signed integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != 0, "SignedSafeMath: division by zero");
        require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow");

        int256 c = a / b;

        return c;
    }

    /**
     * @dev Returns the subtraction of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow");

        return c;
    }

    function toUInt256(int256 a) internal pure returns (uint256) {
        require(a >= 0, "Integer < 0");
        return uint256(a);
    }
}


// File contracts/interfaces/IRewarder.sol

pragma solidity 0.6.12;

interface IRewarder {
    using BoringERC20 for IERC20;
    function onSushiReward(uint256 pid, address user, address recipient, uint256 sushiAmount, uint256 newLpAmount) external;
    function pendingTokens(uint256 pid, address user, uint256 sushiAmount) external view returns (IERC20[] memory, uint256[] memory);
}


// File contracts/interfaces/IMasterChef.sol

pragma solidity 0.6.12;

interface IMasterChef {
    using BoringERC20 for IERC20;
    struct UserInfo {
        uint256 amount;     // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
    }

    struct PoolInfo {
        IERC20 lpToken;           // Address of LP token contract.
        uint256 allocPoint;       // How many allocation points assigned to this pool. SUSHI to distribute per block.
        uint256 lastRewardBlock;  // Last block number that SUSHI distribution occurs.
        uint256 accSushiPerShare; // Accumulated SUSHI per share, times 1e12. See below.
    }

    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);
    function totalAllocPoint() external view returns (uint256);
    function deposit(uint256 _pid, uint256 _amount) external;
}


// File contracts/MiniChefV2.sol

pragma solidity 0.6.12;

interface IMigratorChef {
    // Take the current LP token address and return the new LP token address.
    // Migrator should have full access to the caller's LP token.
    function migrate(IERC20 token) external returns (IERC20);
}

/// @notice The (older) MasterChef contract gives out a constant number of SUSHI tokens per block.
/// It is the only address with minting rights for SUSHI.
/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token
/// that is deposited into the MasterChef V1 (MCV1) contract.
/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.
contract MiniChefV2 is BoringOwnable, BoringBatchable {
    using BoringMath for uint256;
    using BoringMath128 for uint128;
    using BoringERC20 for IERC20;
    using SignedSafeMath for int256;

    /// @notice Info of each MCV2 user.
    /// `amount` LP token amount the user has provided.
    /// `rewardDebt` The amount of SUSHI entitled to the user.
    struct UserInfo {
        uint256 amount;
        int256 rewardDebt;
    }

    /// @notice Info of each MCV2 pool.
    /// `allocPoint` The amount of allocation points assigned to the pool.
    /// Also known as the amount of SUSHI to distribute per block.
    struct PoolInfo {
        uint128 accSushiPerShare;
        uint64 lastRewardTime;
        uint64 allocPoint;
    }

    /// @notice Address of SUSHI contract.
    IERC20 public immutable SUSHI;
    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).
    IMigratorChef public migrator;

    /// @notice Info of each MCV2 pool.
    PoolInfo[] public poolInfo;
    /// @notice Address of the LP token for each MCV2 pool.
    IERC20[] public lpToken;
    /// @notice Address of each `IRewarder` contract in MCV2.
    IRewarder[] public rewarder;

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

    /// @dev Tokens added
    mapping (address => bool) public addedTokens;

    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint;

    uint256 public sushiPerSecond;
    uint256 private constant ACC_SUSHI_PRECISION = 1e12;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);
    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);
    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);
    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accSushiPerShare);
    event LogSushiPerSecond(uint256 sushiPerSecond);

    /// @param _sushi The SUSHI token contract address.
    constructor(IERC20 _sushi) public {
        SUSHI = _sushi;
    }

    /// @notice Returns the number of MCV2 pools.
    function poolLength() public view returns (uint256 pools) {
        pools = poolInfo.length;
    }

    /// @notice Add a new LP to the pool. Can only be called by the owner.
    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.
    /// @param allocPoint AP of the new pool.
    /// @param _lpToken Address of the LP ERC-20 token.
    /// @param _rewarder Address of the rewarder delegate.
    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {
        require(addedTokens[address(_lpToken)] == false, "Token already added");
        totalAllocPoint = totalAllocPoint.add(allocPoint);
        lpToken.push(_lpToken);
        rewarder.push(_rewarder);

        poolInfo.push(PoolInfo({
            allocPoint: allocPoint.to64(),
            lastRewardTime: block.timestamp.to64(),
            accSushiPerShare: 0
        }));
        addedTokens[address(_lpToken)] = true;
        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);
    }

    /// @notice Update the given pool's SUSHI allocation point and `IRewarder` contract. Can only be called by the owner.
    /// @param _pid The index of the pool. See `poolInfo`.
    /// @param _allocPoint New AP of the pool.
    /// @param _rewarder Address of the rewarder delegate.
    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.
    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {
        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);
        poolInfo[_pid].allocPoint = _allocPoint.to64();
        if (overwrite) { rewarder[_pid] = _rewarder; }
        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);
    }

    /// @notice Sets the sushi per second to be distributed. Can only be called by the owner.
    /// @param _sushiPerSecond The amount of Sushi to be distributed per second.
    function setSushiPerSecond(uint256 _sushiPerSecond) public onlyOwner {
        sushiPerSecond = _sushiPerSecond;
        emit LogSushiPerSecond(_sushiPerSecond);
    }

    /// @notice Set the `migrator` contract. Can only be called by the owner.
    /// @param _migrator The contract address to set.
    function setMigrator(IMigratorChef _migrator) public onlyOwner {
        migrator = _migrator;
    }

    /// @notice Migrate LP token to another LP contract through the `migrator` contract.
    /// @param _pid The index of the pool. See `poolInfo`.
    function migrate(uint256 _pid) public {
        require(address(migrator) != address(0), "MasterChefV2: no migrator set");
        IERC20 _lpToken = lpToken[_pid];
        uint256 bal = _lpToken.balanceOf(address(this));
        _lpToken.approve(address(migrator), bal);
        IERC20 newLpToken = migrator.migrate(_lpToken);
        require(bal == newLpToken.balanceOf(address(this)), "MasterChefV2: migrated balance must match");
        require(addedTokens[address(newLpToken)] == false, "Token already added");
        addedTokens[address(newLpToken)] = true;
        addedTokens[address(_lpToken)] = false;
        lpToken[_pid] = newLpToken;
    }

    /// @notice View function to see pending SUSHI on frontend.
    /// @param _pid The index of the pool. See `poolInfo`.
    /// @param _user Address of user.
    /// @return pending SUSHI reward for a given user.
    function pendingSushi(uint256 _pid, address _user) external view returns (uint256 pending) {
        PoolInfo memory pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accSushiPerShare = pool.accSushiPerShare;
        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));
        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {
            uint256 time = block.timestamp.sub(pool.lastRewardTime);
            uint256 sushiReward = time.mul(sushiPerSecond).mul(pool.allocPoint) / totalAllocPoint;
            accSushiPerShare = accSushiPerShare.add(sushiReward.mul(ACC_SUSHI_PRECISION) / lpSupply);
        }
        pending = int256(user.amount.mul(accSushiPerShare) / ACC_SUSHI_PRECISION).sub(user.rewardDebt).toUInt256();
    }

    /// @notice Update reward variables for all pools. Be careful of gas spending!
    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.
    function massUpdatePools(uint256[] calldata pids) external {
        uint256 len = pids.length;
        for (uint256 i = 0; i < len; ++i) {
            updatePool(pids[i]);
        }
    }

    /// @notice Update reward variables of the given pool.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @return pool Returns the pool that was updated.
    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {
        pool = poolInfo[pid];
        if (block.timestamp > pool.lastRewardTime) {
            uint256 lpSupply = lpToken[pid].balanceOf(address(this));
            if (lpSupply > 0) {
                uint256 time = block.timestamp.sub(pool.lastRewardTime);
                uint256 sushiReward = time.mul(sushiPerSecond).mul(pool.allocPoint) / totalAllocPoint;
                pool.accSushiPerShare = pool.accSushiPerShare.add((sushiReward.mul(ACC_SUSHI_PRECISION) / lpSupply).to128());
            }
            pool.lastRewardTime = block.timestamp.to64();
            poolInfo[pid] = pool;
            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accSushiPerShare);
        }
    }

    /// @notice Deposit LP tokens to MCV2 for SUSHI allocation.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to deposit.
    /// @param to The receiver of `amount` deposit benefit.
    function deposit(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][to];

        // Effects
        user.amount = user.amount.add(amount);
        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION));

        // Interactions
        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onSushiReward(pid, to, to, 0, user.amount);
        }

        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);

        emit Deposit(msg.sender, pid, amount, to);
    }

    /// @notice Withdraw LP tokens from MCV2.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to withdraw.
    /// @param to Receiver of the LP tokens.
    function withdraw(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];

        // Effects
        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION));
        user.amount = user.amount.sub(amount);

        // Interactions
        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onSushiReward(pid, msg.sender, to, 0, user.amount);
        }

        lpToken[pid].safeTransfer(to, amount);

        emit Withdraw(msg.sender, pid, amount, to);
    }

    /// @notice Harvest proceeds for transaction sender to `to`.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param to Receiver of SUSHI rewards.
    function harvest(uint256 pid, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];
        int256 accumulatedSushi = int256(user.amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION);
        uint256 _pendingSushi = accumulatedSushi.sub(user.rewardDebt).toUInt256();

        // Effects
        user.rewardDebt = accumulatedSushi;

        // Interactions
        if (_pendingSushi != 0) {
            SUSHI.safeTransfer(to, _pendingSushi);
        }

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onSushiReward( pid, msg.sender, to, _pendingSushi, user.amount);
        }

        emit Harvest(msg.sender, pid, _pendingSushi);
    }

    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to withdraw.
    /// @param to Receiver of the LP tokens and SUSHI rewards.
    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];
        int256 accumulatedSushi = int256(user.amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION);
        uint256 _pendingSushi = accumulatedSushi.sub(user.rewardDebt).toUInt256();

        // Effects
        user.rewardDebt = accumulatedSushi.sub(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION));
        user.amount = user.amount.sub(amount);

        // Interactions
        SUSHI.safeTransfer(to, _pendingSushi);

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onSushiReward(pid, msg.sender, to, _pendingSushi, user.amount);
        }

        lpToken[pid].safeTransfer(to, amount);

        emit Withdraw(msg.sender, pid, amount, to);
        emit Harvest(msg.sender, pid, _pendingSushi);
    }

    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param to Receiver of the LP tokens.
    function emergencyWithdraw(uint256 pid, address to) public {
        UserInfo storage user = userInfo[pid][msg.sender];
        uint256 amount = user.amount;
        user.amount = 0;
        user.rewardDebt = 0;

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onSushiReward(pid, msg.sender, to, 0, 0);
        }

        // Note: transfer can fail or succeed if `amount` is zero.
        lpToken[pid].safeTransfer(to, amount);
        emit EmergencyWithdraw(msg.sender, pid, amount, to);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_sushi","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IERC20","name":"lpToken","type":"address"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"name":"LogPoolAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"indexed":false,"internalType":"bool","name":"overwrite","type":"bool"}],"name":"LogSetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sushiPerSecond","type":"uint256"}],"name":"LogSushiPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accSushiPerShare","type":"uint256"}],"name":"LogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"SUSHI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"bool","name":"revertOnFail","type":"bool"}],"name":"batch","outputs":[{"internalType":"bool[]","name":"successes","type":"bool[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pids","type":"uint256[]"}],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"contract IMigratorChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingSushi","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permitToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint128","name":"accSushiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"pools","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewarder","outputs":[{"internalType":"contract IRewarder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMigratorChef","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sushiPerSecond","type":"uint256"}],"name":"setSushiPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sushiPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint128","name":"accSushiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"internalType":"struct MiniChefV2.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAndHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162002d7738038062002d77833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c612c96620000e1600039806108cd52806118015280611b245250612c966000f3fe6080604052600436106101c25760003560e01c806379d12ffb116100f75780639baf58c311610095578063c346253d11610064578063c346253d146104f6578063d1abb90714610516578063d2423b5114610536578063e30c397814610557576101c2565b80639baf58c31461048c578063a06e408b146104ac578063ab560e10146104c1578063ab7de098146104d6576101c2565b806388bba42f116100d157806388bba42f146104095780638da5cb5b146104295780638dbdbe6d1461043e57806393f1a40b1461045e576101c2565b806379d12ffb146103a75780637c516e94146103d45780637cd07e47146103f4576101c2565b806323cf3118116101645780634e71e0c81161013e5780634e71e0c81461031857806351eb05a61461032d57806357a5b58c1461035a57806378ed5d1f1461037a576101c2565b806323cf3118146102b85780632f940c70146102d8578063454b0608146102f8576101c2565b80631526fe27116101a05780631526fe271461023457806317caf6f11461026357806318fccc7614610278578063195426ec14610298576101c2565b8063078dfbe7146101c7578063081e3eda146101e95780630ad58d2f14610214575b600080fd5b3480156101d357600080fd5b506101e76101e23660046122a8565b61056c565b005b3480156101f557600080fd5b506101fe61065b565b60405161020b9190612b4a565b60405180910390f35b34801561022057600080fd5b506101e761022f366004612568565b610661565b34801561024057600080fd5b5061025461024f3660046124d3565b6107f1565b60405161020b93929190612b20565b34801561026f57600080fd5b506101fe610833565b34801561028457600080fd5b506101e7610293366004612503565b610839565b3480156102a457600080fd5b506101fe6102b3366004612503565b6109d3565b3480156102c457600080fd5b506101e76102d336600461228c565b610bd3565b3480156102e457600080fd5b506101e76102f3366004612503565b610c1f565b34801561030457600080fd5b506101e76103133660046124d3565b610d40565b34801561032457600080fd5b506101e761105e565b34801561033957600080fd5b5061034d6103483660046124d3565b6110eb565b60405161020b9190612ae7565b34801561036657600080fd5b506101e761037536600461233b565b61136f565b34801561038657600080fd5b5061039a6103953660046124d3565b6113a5565b60405161020b9190612636565b3480156103b357600080fd5b506103c76103c236600461228c565b6113cc565b60405161020b9190612762565b3480156103e057600080fd5b506101e76103ef3660046123b2565b6113e1565b34801561040057600080fd5b5061039a611455565b34801561041557600080fd5b506101e7610424366004612595565b611464565b34801561043557600080fd5b5061039a6115d1565b34801561044a57600080fd5b506101e7610459366004612568565b6115e0565b34801561046a57600080fd5b5061047e610479366004612503565b61176b565b60405161020b929190612b92565b34801561049857600080fd5b506101e76104a73660046124d3565b61178f565b3480156104b857600080fd5b506101fe6117f9565b3480156104cd57600080fd5b5061039a6117ff565b3480156104e257600080fd5b506101e76104f1366004612532565b611823565b34801561050257600080fd5b5061039a6105113660046124d3565b611a49565b34801561052257600080fd5b506101e7610531366004612568565b611a56565b6105496105443660046122f2565b611c89565b60405161020b9291906126c8565b34801561056357600080fd5b5061039a611e19565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260040161059690612932565b60405180910390fd5b811561063a576001600160a01b0383161515806105b95750805b6105d55760405162461bcd60e51b81526004016105969061284c565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610656565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b610669612224565b610672846110eb565b600085815260066020908152604080832033845290915290208151919250906106c49064e8d4a51000906106b09087906001600160801b0316611e28565b816106b757fe5b6001840154919004611e65565b600182015580546106d59085611eb2565b81556005805460009190879081106106e957fe5b6000918252602090912001546001600160a01b03169050801561076f5781546040516345fb1ba160e11b81526001600160a01b03831691638bf637429161073c918a9133918a9160009190600401612b53565b600060405180830381600087803b15801561075657600080fd5b505af115801561076a573d6000803e3d6000fd5b505050505b61079d84866004898154811061078157fe5b6000918252602090912001546001600160a01b03169190611ed5565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516107e19190612b4a565b60405180910390a4505050505050565b600381815481106107fe57fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60085481565b610841612224565b61084a836110eb565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a510009161088691906001600160801b0316611e28565b8161088d57fe5b04905060006108b16108ac846001015484611e6590919063ffffffff16565b611fc3565b60018401839055905080156108f4576108f46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611ed5565b60006005878154811061090357fe5b6000918252602090912001546001600160a01b0316905080156109885783546040516345fb1ba160e11b81526001600160a01b03831691638bf6374291610955918b9133918c91899190600401612b53565b600060405180830381600087803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109c29190612b4a565b60405180910390a350505050505050565b60006109dd612224565b600384815481106109ea57fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b0389168652909252918320825160048054949650919492169288908110610a6857fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa1903090600401612636565b60206040518083038186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af191906124eb565b905083602001516001600160401b031642118015610b0e57508015155b15610b9a576000610b3585602001516001600160401b031642611eb290919063ffffffff16565b90506000600854610b6887604001516001600160401b0316610b6260095486611e2890919063ffffffff16565b90611e28565b81610b6f57fe5b049050610b9583610b858364e8d4a51000611e28565b81610b8c57fe5b86919004611fe9565b935050505b60018301548354610bc8916108ac9164e8d4a5100090610bba9087611e28565b81610bc157fe5b0490611e65565b979650505050505050565b6000546001600160a01b03163314610bfd5760405162461bcd60e51b815260040161059690612932565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610c5657fe5b6000918252602090912001546001600160a01b031690508015610cdb576040516345fb1ba160e11b81526001600160a01b03821690638bf6374290610ca8908890339089906000908190600401612b53565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050505b610ced84836004888154811061078157fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610d319190612b4a565b60405180910390a45050505050565b6002546001600160a01b0316610d685760405162461bcd60e51b815260040161059690612a00565b600060048281548110610d7757fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610db2903090600401612636565b60206040518083038186803b158015610dca57600080fd5b505afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0291906124eb565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610e3792169085906004016126af565b602060405180830381600087803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e89919061237a565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610ebb908690600401612636565b602060405180830381600087803b158015610ed557600080fd5b505af1158015610ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0d9190612396565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610f3c903090600401612636565b60206040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c91906124eb565b8214610faa5760405162461bcd60e51b81526004016105969061287b565b6001600160a01b03811660009081526007602052604090205460ff1615610fe35760405162461bcd60e51b81526004016105969061299c565b6001600160a01b03808216600090815260076020526040808220805460ff199081166001179091559286168252902080549091169055600480548291908690811061102a57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b03163381146110895760405162461bcd60e51b815260040161059690612967565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6110f3612224565b6003828154811061110057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915042111561136a5760006004838154811061116257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a082319061119b903090600401612636565b60206040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb91906124eb565b9050801561128e57600061121583602001516001600160401b031642611eb290919063ffffffff16565b9050600060085461124285604001516001600160401b0316610b6260095486611e2890919063ffffffff16565b8161124957fe5b04905061128061126f846112628464e8d4a51000611e28565b8161126957fe5b0461200c565b85516001600160801b031690612035565b6001600160801b0316845250505b61129742612064565b6001600160401b0316602083015260038054839190859081106112b657fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926113609290918691612ba0565b60405180910390a2505b919050565b8060005b8181101561139f5761139684848381811061138a57fe5b905060200201356110eb565b50600101611373565b50505050565b600481815481106113b257fe5b6000918252602090912001546001600160a01b0316905081565b60076020526000908152604090205460ff1681565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611419908a908a908a908a908a908a908a9060040161266e565b600060405180830381600087803b15801561143357600080fd5b505af1158015611447573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b0316331461148e5760405162461bcd60e51b815260040161059690612932565b6114cd836114c7600387815481106114a257fe5b60009182526020909120015460085490600160c01b90046001600160401b0316611eb2565b90611fe9565b6008556114d983612064565b600385815481106114e657fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561155a57816005858154811061152b57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611586576005848154811061156c57fe5b6000918252602090912001546001600160a01b0316611588565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516115c3929190612b82565b60405180910390a350505050565b6000546001600160a01b031681565b6115e8612224565b6115f1846110eb565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906116239085611fe9565b8155815161165a9064e8d4a51000906116469087906001600160801b0316611e28565b8161164d57fe5b600184015491900461208d565b816001018190555060006005868154811061167157fe5b6000918252602090912001546001600160a01b0316905080156116f75781546040516345fb1ba160e11b81526001600160a01b03831691638bf63742916116c4918a918991829160009190600401612b53565b600060405180830381600087803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b505050505b61172733308760048a8154811061170a57fe5b6000918252602090912001546001600160a01b03169291906120d3565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516107e19190612b4a565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b031633146117b95760405162461bcd60e51b815260040161059690612932565b60098190556040517fc6ce5eff3291fb2c1517b943daa5067ea76c83816bbf674307fbc7fea3b311d0906117ee908390612b4a565b60405180910390a150565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316331461184d5760405162461bcd60e51b815260040161059690612932565b6001600160a01b03821660009081526007602052604090205460ff16156118865760405162461bcd60e51b81526004016105969061299c565b6008546118939084611fe9565b6008556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161194042612064565b6001600160401b0316815260200161195786612064565b6001600160401b0390811690915282546001818101855560009485526020808620855193018054828701516040978801518716600160c01b026001600160c01b0391909716600160801b0267ffffffffffffffff60801b196001600160801b039097166001600160801b031990931692909217959095161793909316939093179091556001600160a01b03808716808652600790935292909320805460ff191684179055600454918416929091611a0d91611eb2565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e586604051611a3c9190612b4a565b60405180910390a4505050565b600581815481106113b257fe5b611a5e612224565b611a67846110eb565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611aa391906001600160801b0316611e28565b81611aaa57fe5b0490506000611ac96108ac846001015484611e6590919063ffffffff16565b9050611b0464e8d4a51000611af486600001516001600160801b031689611e2890919063ffffffff16565b81611afb57fe5b84919004611e65565b60018401558254611b159087611eb2565b8355611b4b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611ed5565b600060058881548110611b5a57fe5b6000918252602090912001546001600160a01b031690508015611bdf5783546040516345fb1ba160e11b81526001600160a01b03831691638bf6374291611bac918c9133918c91899190600401612b53565b600060405180830381600087803b158015611bc657600080fd5b505af1158015611bda573d6000803e3d6000fd5b505050505b611bf1868860048b8154811061078157fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611c359190612b4a565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611c779190612b4a565b60405180910390a35050505050505050565b606080836001600160401b0381118015611ca257600080fd5b50604051908082528060200260200182016040528015611ccc578160200160208202803683370190505b509150836001600160401b0381118015611ce557600080fd5b50604051908082528060200260200182016040528015611d1957816020015b6060815260200190600190039081611d045790505b50905060005b84811015611e10576000606030888885818110611d3857fe5b9050602002810190611d4a9190612bca565b604051611d5892919061260a565b600060405180830381855af49150503d8060008114611d93576040519150601f19603f3d011682016040523d82523d6000602084013e611d98565b606091505b50915091508180611da7575085155b611db0826121c4565b90611dce5760405162461bcd60e51b8152600401610596919061276d565b5081858481518110611ddc57fe5b60200260200101901515908115158152505080848481518110611dfb57fe5b60209081029190910101525050600101611d1f565b50935093915050565b6001546001600160a01b031681565b6000811580611e4357505080820282828281611e4057fe5b04145b611e5f5760405162461bcd60e51b815260040161059690612ab0565b92915050565b6000818303818312801590611e7a5750838113155b80611e8f5750600083128015611e8f57508381135b611eab5760405162461bcd60e51b815260040161059690612a37565b9392505050565b80820382811115611e5f5760405162461bcd60e51b815260040161059690612780565b60006060846001600160a01b031663a9059cbb8585604051602401611efb9291906126af565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611f34919061261a565b6000604051808303816000865af19150503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b5091509150818015611fa0575080511580611fa0575080806020019051810190611fa0919061237a565b611fbc5760405162461bcd60e51b8152600401610596906127d4565b5050505050565b600080821215611fe55760405162461bcd60e51b8152600401610596906127af565b5090565b81810181811015611e5f5760405162461bcd60e51b8152600401610596906128fb565b60006001600160801b03821115611fe55760405162461bcd60e51b8152600401610596906128c4565b8181016001600160801b038083169082161015611e5f5760405162461bcd60e51b8152600401610596906128fb565b60006001600160401b03821115611fe55760405162461bcd60e51b8152600401610596906129c9565b60008282018183128015906120a25750838112155b806120b757506000831280156120b757508381125b611eab5760405162461bcd60e51b81526004016105969061280b565b60006060856001600160a01b03166323b872dd8686866040516024016120fb9392919061264a565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612134919061261a565b6000604051808303816000865af19150503d8060008114612171576040519150601f19603f3d011682016040523d82523d6000602084013e612176565b606091505b50915091508180156121a05750805115806121a05750808060200190518101906121a0919061237a565b6121bc5760405162461bcd60e51b815260040161059690612a7b565b505050505050565b606060448251101561220a575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261136a565b60048201915081806020019051810190611e5f9190612439565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612255578182fd5b5081356001600160401b0381111561226b578182fd5b602083019150836020808302850101111561228557600080fd5b9250929050565b60006020828403121561229d578081fd5b8135611eab81612c3a565b6000806000606084860312156122bc578182fd5b83356122c781612c3a565b925060208401356122d781612c52565b915060408401356122e781612c52565b809150509250925092565b600080600060408486031215612306578283fd5b83356001600160401b0381111561231b578384fd5b61232786828701612244565b90945092505060208401356122e781612c52565b6000806020838503121561234d578182fd5b82356001600160401b03811115612362578283fd5b61236e85828601612244565b90969095509350505050565b60006020828403121561238b578081fd5b8151611eab81612c52565b6000602082840312156123a7578081fd5b8151611eab81612c3a565b600080600080600080600080610100898b0312156123ce578384fd5b88356123d981612c3a565b975060208901356123e981612c3a565b965060408901356123f981612c3a565b9550606089013594506080890135935060a089013560ff8116811461241c578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561244a578081fd5b81516001600160401b0380821115612460578283fd5b818401915084601f830112612473578283fd5b815181811115612481578384fd5b604051601f8201601f1916810160200183811182821017156124a1578586fd5b6040528181528382016020018710156124b8578485fd5b6124c9826020830160208701612c0e565b9695505050505050565b6000602082840312156124e4578081fd5b5035919050565b6000602082840312156124fc578081fd5b5051919050565b60008060408385031215612515578182fd5b82359150602083013561252781612c3a565b809150509250929050565b600080600060608486031215612546578081fd5b83359250602084013561255881612c3a565b915060408401356122e781612c3a565b60008060006060848603121561257c578081fd5b833592506020840135915060408401356122e781612c3a565b600080600080608085870312156125aa578182fd5b843593506020850135925060408501356125c381612c3a565b915060608501356125d381612c52565b939692955090935050565b600081518084526125f6816020860160208601612c0e565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161262c818460208701612c0e565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156127035781511515845292840192908401906001016126e5565b5050508381038285015280855161271a8184612b4a565b91508192508381028201848801865b838110156127535785830385526127418383516125de565b94870194925090860190600101612729565b50909998505050505050505050565b901515815260200190565b600060208252611eab60208301846125de565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b602080825260139082015272151bdad95b88185b1c9958591e481859191959606a1b604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612be0578283fd5b8301803591506001600160401b03821115612bf9578283fd5b60200191503681900382131561228557600080fd5b60005b83811015612c29578181015183820152602001612c11565b8381111561139f5750506000910152565b6001600160a01b0381168114612c4f57600080fd5b50565b8015158114612c4f57600080fdfea26469706673582212202156532f4bf5c6f3816a81bc985ea859923ed9c51fc276cda83cc35aa83960dc64736f6c634300060c0033000000000000000000000000ae75a438b2e0cb8bb01ec1e1e376de11d44477cc

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

000000000000000000000000ae75a438b2e0cb8bb01ec1e1e376de11d44477cc

-----Decoded View---------------
Arg [0] : _sushi (address): 0xae75a438b2e0cb8bb01ec1e1e376de11d44477cc

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae75a438b2e0cb8bb01ec1e1e376de11d44477cc


Deployed ByteCode Sourcemap

13555:13171:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7625:472;;;;;;;;;;-1:-1:-1;7625:472:0;;;;;:::i;:::-;;:::i;:::-;;16222:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23027:679;;;;;;;;;;-1:-1:-1;23027:679:0;;;;;:::i;:::-;;:::i;14588:26::-;;;;;;;;;;-1:-1:-1;14588:26:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15118:30::-;;;;;;;;;;;;;:::i;23885:800::-;;;;;;;;;;-1:-1:-1;23885:800:0;;;;;:::i;:::-;;:::i;19737:802::-;;;;;;;;;;-1:-1:-1;19737:802:0;;;;;:::i;:::-;;:::i;18584:102::-;;;;;;;;;;-1:-1:-1;18584:102:0;;;;;:::i;:::-;;:::i;26148:575::-;;;;;;;;;;-1:-1:-1;26148:575:0;;;;;:::i;:::-;;:::i;18844:665::-;;;;;;;;;;-1:-1:-1;18844:665:0;;;;;:::i;:::-;;:::i;8146:348::-;;;;;;;;;;;;;:::i;21098:785::-;;;;;;;;;;-1:-1:-1;21098:785:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20721:193::-;;;;;;;;;;-1:-1:-1;20721:193:0;;;;;:::i;:::-;;:::i;14682:23::-;;;;;;;;;;-1:-1:-1;14682:23:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14971:44::-;;;;;;;;;;-1:-1:-1;14971:44:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6553:246::-;;;;;;;;;;-1:-1:-1;6553:246:0;;;;;:::i;:::-;;:::i;14509:29::-;;;;;;;;;;;;;:::i;17676:411::-;;;;;;;;;;-1:-1:-1;17676:411:0;;;;;:::i;:::-;;:::i;7201:20::-;;;;;;;;;;;;;:::i;22127:688::-;;;;;;;;;;-1:-1:-1;22127:688:0;;;;;:::i;:::-;;:::i;14869:66::-;;;;;;;;;;-1:-1:-1;14869:66:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;18272:170::-;;;;;;;;;;-1:-1:-1;18272:170:0;;;;;:::i;:::-;;:::i;15157:29::-;;;;;;;;;;;;;:::i;14367:::-;;;;;;;;;;;;;:::i;16661:621::-;;;;;;;;;;-1:-1:-1;16661:621:0;;;;;:::i;:::-;;:::i;14775:27::-;;;;;;;;;;-1:-1:-1;14775:27:0;;;;;:::i;:::-;;:::i;24967:996::-;;;;;;;;;;-1:-1:-1;24967:996:0;;;;;:::i;:::-;;:::i;5652:554::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7248:27::-;;;;;;;;;;;;;:::i;7625:472::-;8597:5;;-1:-1:-1;;;;;8597:5:0;8583:10;:19;8575:64;;;;-1:-1:-1;;;8575:64:0;;;;;;;:::i;:::-;;;;;;;;;7730:6:::1;7726:364;;;-1:-1:-1::0;;;;;7784:22:0;::::1;::::0;::::1;::::0;:34:::1;;;7810:8;7784:34;7776:68;;;;-1:-1:-1::0;;;7776:68:0::1;;;;;;;:::i;:::-;7911:5;::::0;;7890:37:::1;::::0;-1:-1:-1;;;;;7890:37:0;;::::1;::::0;7911:5;::::1;::::0;7890:37:::1;::::0;::::1;7942:5;:16:::0;;-1:-1:-1;;;;;7942:16:0;::::1;-1:-1:-1::0;;;;;;7942:16:0;;::::1;;::::0;;;;7973:25;;;;::::1;::::0;;7726:364:::1;;;8055:12;:23:::0;;-1:-1:-1;;;;;;8055:23:0::1;-1:-1:-1::0;;;;;8055:23:0;::::1;;::::0;;7726:364:::1;7625:472:::0;;;:::o;16222:100::-;16299:8;:15;;16222:100::o;23027:679::-;23104:20;;:::i;:::-;23127:15;23138:3;23127:10;:15::i;:::-;23153:21;23177:13;;;:8;:13;;;;;;;;23191:10;23177:25;;;;;;;23291:21;;23104:38;;-1:-1:-1;23177:25:0;23253:84;;15240:4;;23280:33;;:6;;-1:-1:-1;;;;;23280:33:0;:10;:33::i;:::-;:55;;;;;23253:15;;;;;23280:55;;23253:19;:84::i;:::-;23235:15;;;:102;23362:11;;:23;;23378:6;23362:15;:23::i;:::-;23348:37;;23445:8;:13;;23348:11;;23445:8;23454:3;;23445:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23445:13:0;;-1:-1:-1;23473:32:0;;23469:125;;23570:11;;23522:60;;-1:-1:-1;;;23522:60:0;;-1:-1:-1;;;;;23522:23:0;;;;;:60;;23546:3;;23551:10;;23563:2;;23567:1;;23570:11;23522:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23469:125;23606:37;23632:2;23636:6;23606:7;23614:3;23606:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23606:12:0;;:37;:25;:37::i;:::-;23695:2;-1:-1:-1;;;;;23661:37:0;23682:3;23670:10;-1:-1:-1;;;;;23661:37:0;;23687:6;23661:37;;;;;;:::i;:::-;;;;;;;;23027:679;;;;;;:::o;14588:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14588:26:0;;;-1:-1:-1;;;;;;;;;14588:26:0;;;;;-1:-1:-1;;;14588:26:0;;;;:::o;15118:30::-;;;;:::o;23885:800::-;23945:20;;:::i;:::-;23968:15;23979:3;23968:10;:15::i;:::-;23994:21;24018:13;;;:8;:13;;;;;;;;24032:10;24018:25;;;;;;;24103:21;;24087:11;;23945:38;;-1:-1:-1;24018:25:0;;15240:4;;24087:38;;:11;-1:-1:-1;;;;;24087:38:0;:15;:38::i;:::-;:60;;;;;;24054:94;;24159:21;24183:49;:37;24204:4;:15;;;24183:16;:20;;:37;;;;:::i;:::-;:47;:49::i;:::-;24265:15;;;:34;;;24159:73;-1:-1:-1;24341:18:0;;24337:88;;24376:37;-1:-1:-1;;;;;24376:5:0;:18;24395:2;24399:13;24376:18;:37::i;:::-;24437:19;24459:8;24468:3;24459:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24459:13:0;;-1:-1:-1;24487:32:0;;24483:138;;24597:11;;24536:73;;-1:-1:-1;;;24536:73:0;;-1:-1:-1;;;;;24536:23:0;;;;;:73;;24561:3;;24566:10;;24578:2;;24582:13;;24597:11;24536:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24483:138;24658:3;24646:10;-1:-1:-1;;;;;24638:39:0;;24663:13;24638:39;;;;;;:::i;:::-;;;;;;;;23885:800;;;;;;;:::o;19737:802::-;19811:15;19839:20;;:::i;:::-;19862:8;19871:4;19862:14;;;;;;;;;;;;;;;;19839:37;;;;;;;;19862:14;;;;19839:37;-1:-1:-1;;;;;19839:37:0;;;;;-1:-1:-1;;;;;;;;19839:37:0;;;;;;;;-1:-1:-1;;;19839:37:0;;;;;;;;;;19911:14;;;:8;:14;;;;;-1:-1:-1;;;;;19911:21:0;;;;;;;;;;19970;;20021:7;:13;;19839:37;;-1:-1:-1;19911:21:0;;19943:48;;;19920:4;;20021:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;20021:38:0;;-1:-1:-1;;;;;20021:13:0;;;;:23;;:38;;20053:4;;20021:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20002:57;;20092:4;:19;;;-1:-1:-1;;;;;20074:37:0;:15;:37;:54;;;;-1:-1:-1;20115:13:0;;;20074:54;20070:345;;;20145:12;20160:40;20180:4;:19;;;-1:-1:-1;;;;;20160:40:0;:15;:19;;:40;;;;:::i;:::-;20145:55;;20215:19;20285:15;;20237:45;20266:4;:15;;;-1:-1:-1;;;;;20237:45:0;:24;20246:14;;20237:4;:8;;:24;;;;:::i;:::-;:28;;:45::i;:::-;:63;;;;;;;-1:-1:-1;20334:69:0;20394:8;20355:36;20237:63;15240:4;20355:15;:36::i;:::-;:47;;;;;20334:16;;20355:47;;20334:20;:69::i;:::-;20315:88;;20070:345;;;20503:15;;;;20442:11;;20435:96;;:84;;15240:4;;20442:33;;20458:16;20442:15;:33::i;:::-;:55;;;;;;;20435:67;:84::i;:96::-;20425:106;19737:802;-1:-1:-1;;;;;;;19737:802:0:o;18584:102::-;8597:5;;-1:-1:-1;;;;;8597:5:0;8583:10;:19;8575:64;;;;-1:-1:-1;;;8575:64:0;;;;;;;:::i;:::-;18658:8:::1;:20:::0;;-1:-1:-1;;;;;;18658:20:0::1;-1:-1:-1::0;;;;;18658:20:0;;;::::1;::::0;;;::::1;::::0;;18584:102::o;26148:575::-;26218:21;26242:13;;;:8;:13;;;;;;;;26256:10;26242:25;;;;;;;26295:11;;26317:15;;;-1:-1:-1;26343:15:0;;:19;;;26397:8;:13;;26242:25;;26295:11;;26251:3;;26397:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26397:13:0;;-1:-1:-1;26425:32:0;;26421:115;;26474:50;;-1:-1:-1;;;26474:50:0;;-1:-1:-1;;;;;26474:23:0;;;;;:50;;26498:3;;26503:10;;26515:2;;26519:1;;;;26474:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26421:115;26616:37;26642:2;26646:6;26616:7;26624:3;26616:12;;;;;;;:37;26712:2;-1:-1:-1;;;;;26669:46:0;26699:3;26687:10;-1:-1:-1;;;;;26669:46:0;;26704:6;26669:46;;;;;;:::i;:::-;;;;;;;;26148:575;;;;;:::o;18844:665::-;18909:8;;-1:-1:-1;;;;;18909:8:0;18893:73;;;;-1:-1:-1;;;18893:73:0;;;;;;;:::i;:::-;18977:15;18995:7;19003:4;18995:13;;;;;;;;;;;;;;;;;19033:33;;-1:-1:-1;;;19033:33:0;;-1:-1:-1;;;;;18995:13:0;;;;-1:-1:-1;18995:13:0;;19033:18;;:33;;19060:4;;19033:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19102:8;;19077:40;;-1:-1:-1;;;19077:40:0;;19019:47;;-1:-1:-1;;;;;;19077:16:0;;;;;;:40;;19102:8;;19019:47;;19077:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19148:8:0;;:26;;-1:-1:-1;;;19148:26:0;;19128:17;;-1:-1:-1;;;;;19148:8:0;;:16;;:26;;19165:8;;19148:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19200:35;;-1:-1:-1;;;19200:35:0;;19128:46;;-1:-1:-1;;;;;;19200:20:0;;;;;:35;;19229:4;;19200:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19193:3;:42;19185:96;;;;-1:-1:-1;;;19185:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19300:32:0;;;;;;:11;:32;;;;;;;;:41;19292:73;;;;-1:-1:-1;;;19292:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19376:32:0;;;;;;;:11;:32;;;;;;:39;;-1:-1:-1;;19376:39:0;;;19411:4;19376:39;;;;19426:30;;;;;;;:38;;;;;;;19475:7;:13;;19396:10;;19475:7;19483:4;;19475:13;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;19475:26:0;;;;;-1:-1:-1;;;;;19475:26:0;;;;;;18844:665;;;;:::o;8146:348::-;8214:12;;-1:-1:-1;;;;;8214:12:0;8274:10;:27;;8266:72;;;;-1:-1:-1;;;8266:72:0;;;;;;;:::i;:::-;8397:5;;;8376:42;;-1:-1:-1;;;;;8376:42:0;;;;8397:5;;;8376:42;;;8429:5;:21;;-1:-1:-1;;;;;8429:21:0;;;-1:-1:-1;;;;;;8429:21:0;;;;;;;8461:25;;;;;;;8146:348::o;21098:785::-;21147:20;;:::i;:::-;21187:8;21196:3;21187:13;;;;;;;;;;;;;;;;;21180:20;;;;;;;;21187:13;;;;21180:20;-1:-1:-1;;;;;21180:20:0;;;;-1:-1:-1;;;;;;;;21180:20:0;;;;;;;;;;-1:-1:-1;;;21180:20:0;;;;;;;;;-1:-1:-1;21215:15:0;:37;21211:665;;;21269:16;21288:7;21296:3;21288:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;21288:37:0;;-1:-1:-1;;;;;21288:12:0;;;;:22;;:37;;21319:4;;21288:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21269:56;-1:-1:-1;21344:12:0;;21340:339;;21377:12;21392:40;21412:4;:19;;;-1:-1:-1;;;;;21392:40:0;:15;:19;;:40;;;;:::i;:::-;21377:55;;21451:19;21521:15;;21473:45;21502:4;:15;;;-1:-1:-1;;;;;21473:45:0;:24;21482:14;;21473:4;:8;;:24;;;;:::i;:45::-;:63;;;;;;;-1:-1:-1;21579:84:0;21605:57;21645:8;21606:36;21473:63;15240:4;21606:15;:36::i;:::-;:47;;;;;;21605:55;:57::i;:::-;21579:21;;-1:-1:-1;;;;;21579:25:0;;;:84::i;:::-;-1:-1:-1;;;;;21555:108:0;;;-1:-1:-1;;21340:339:0;21715:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;21693:44:0;:19;;;:44;21752:8;:13;;21693:4;;21752:8;21761:3;;21752:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;21752:20:0;;;-1:-1:-1;;;;;21752:20:0;;;;;;;-1:-1:-1;;;;21752:20:0;-1:-1:-1;;;;;;;;21752:20:0;;;;;-1:-1:-1;;;;;21752:20:0;-1:-1:-1;;;21752:20:0;;;;;;;;;;;;;;21811:19;;;21842:21;;21792:72;;21806:3;;21792:72;;;;21811:19;;21832:8;;21792:72;:::i;:::-;;;;;;;;21211:665;;21098:785;;;:::o;20721:193::-;20805:4;20791:11;20827:80;20851:3;20847:1;:7;20827:80;;;20876:19;20887:4;;20892:1;20887:7;;;;;;;;;;;;;20876:10;:19::i;:::-;-1:-1:-1;20856:3:0;;20827:80;;;;20721:193;;;:::o;14682:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14682:23:0;;-1:-1:-1;14682:23:0;:::o;14971:44::-;;;;;;;;;;;;;;;:::o;6553:246::-;6742:49;;-1:-1:-1;;;6742:49:0;;-1:-1:-1;;;;;6742:12:0;;;;;:49;;6755:4;;6761:2;;6765:6;;6773:8;;6783:1;;6786;;6789;;6742:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6553:246;;;;;;;;:::o;14509:29::-;;;-1:-1:-1;;;;;14509:29:0;;:::o;17676:411::-;8597:5;;-1:-1:-1;;;;;8597:5:0;8583:10;:19;8575:64;;;;-1:-1:-1;;;8575:64:0;;;;;;;:::i;:::-;17807:63:::1;17858:11;17807:46;17827:8;17836:4;17827:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;17807:15:::1;::::0;;-1:-1:-1;;;17827:25:0;::::1;-1:-1:-1::0;;;;;17827:25:0::1;17807:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;17789:15;:81:::0;17909:18:::1;:11:::0;:16:::1;:18::i;:::-;17881:8;17890:4;17881:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;17881:46:0::1;;;;;-1:-1:-1::0;;;;;17881:46:0::1;;;;;;17942:9;17938:46;;;17972:9;17955:8;17964:4;17955:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;17955:26:0::1;;;;;-1:-1:-1::0;;;;;17955:26:0::1;;;;;;17938:46;18029:9;:38;;18053:8;18062:4;18053:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18053:14:0::1;18029:38;;;18041:9;18029:38;-1:-1:-1::0;;;;;17999:80:0::1;18010:4;17999:80;18016:11;18069:9;17999:80;;;;;;;:::i;:::-;;;;;;;;17676:411:::0;;;;:::o;7201:20::-;;;-1:-1:-1;;;;;7201:20:0;;:::o;22127:688::-;22203:20;;:::i;:::-;22226:15;22237:3;22226:10;:15::i;:::-;22252:21;22276:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;22276:17:0;;;;;;;;;22340:11;;22203:38;;-1:-1:-1;22276:17:0;22340:23;;22356:6;22340:15;:23::i;:::-;22326:37;;22430:21;;22392:84;;15240:4;;22419:33;;:6;;-1:-1:-1;;;;;22419:33:0;:10;:33::i;:::-;:55;;;;;22392:15;;;;;22419:55;;22392:19;:84::i;:::-;22374:4;:15;;:102;;;;22514:19;22536:8;22545:3;22536:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22536:13:0;;-1:-1:-1;22564:32:0;;22560:117;;22653:11;;22613:52;;-1:-1:-1;;;22613:52:0;;-1:-1:-1;;;;;22613:23:0;;;;;:52;;22637:3;;22642:2;;;;22650:1;;22653:11;22613:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22560:117;22689:64;22719:10;22739:4;22746:6;22689:7;22697:3;22689:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22689:12:0;;:64;;:29;:64::i;:::-;22804:2;-1:-1:-1;;;;;22771:36:0;22791:3;22779:10;-1:-1:-1;;;;;22771:36:0;;22796:6;22771:36;;;;;;:::i;14869:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18272:170::-;8597:5;;-1:-1:-1;;;;;8597:5:0;8583:10;:19;8575:64;;;;-1:-1:-1;;;8575:64:0;;;;;;;:::i;:::-;18352:14:::1;:32:::0;;;18400:34:::1;::::0;::::1;::::0;::::1;::::0;18369:15;;18400:34:::1;:::i;:::-;;;;;;;;18272:170:::0;:::o;15157:29::-;;;;:::o;14367:::-;;;:::o;16661:621::-;8597:5;;-1:-1:-1;;;;;8597:5:0;8583:10;:19;8575:64;;;;-1:-1:-1;;;8575:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16768:30:0;::::1;;::::0;;;:11:::1;:30;::::0;;;;;::::1;;:39;16760:71;;;;-1:-1:-1::0;;;16760:71:0::1;;;;;;;:::i;:::-;16860:15;::::0;:31:::1;::::0;16880:10;16860:19:::1;:31::i;:::-;16842:15;:49:::0;16902:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;16902:22:0;;::::1;-1:-1:-1::0;;;;;;16902:22:0;;::::1;;::::0;;;16935:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;16935:24:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16986:152:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;16972:8:::1;::::0;16902:22:::1;16986:152:::0;::::1;17070:22;:15;:20;:22::i;:::-;-1:-1:-1::0;;;;;16986:152:0::1;;;;;17022:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;16986:152:0;;::::1;::::0;;;16972:167;;::::1;::::0;;::::1;::::0;;-1:-1:-1;16972:167:0;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;16972:167:0::1;-1:-1:-1::0;;;;;16972:167:0;;;::::1;-1:-1:-1::0;;;16972:167:0::1;-1:-1:-1::0;;;;;;;;;16972:167:0;;::::1;-1:-1:-1::0;;;;;;16972:167:0;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;17150:30:0;;::::1;::::0;;;:11:::1;:30:::0;;;;;;;:37;;-1:-1:-1;;17150:37:0::1;::::0;::::1;::::0;;17219:7:::1;:14:::0;17203:71;;::::1;::::0;17150:30;;17219:21:::1;::::0;:18:::1;:21::i;:::-;17203:71;17242:10;17203:71;;;;;;:::i;:::-;;;;;;;;16661:621:::0;;;:::o;14775:27::-;;;;;;;;;;24967:996;25054:20;;:::i;:::-;25077:15;25088:3;25077:10;:15::i;:::-;25103:21;25127:13;;;:8;:13;;;;;;;;25141:10;25127:25;;;;;;;25212:21;;25196:11;;25054:38;;-1:-1:-1;25127:25:0;;15240:4;;25196:38;;:11;-1:-1:-1;;;;;25196:38:0;:15;:38::i;:::-;:60;;;;;;25163:94;;25268:21;25292:49;:37;25313:4;:15;;;25292:16;:20;;:37;;;;:::i;:49::-;25268:73;;25392:85;15240:4;25420:33;25431:4;:21;;;-1:-1:-1;;;;;25420:33:0;:6;:10;;:33;;;;:::i;:::-;:55;;;;;25392:16;;25420:55;;25392:20;:85::i;:::-;25374:15;;;:103;25502:11;;:23;;25518:6;25502:15;:23::i;:::-;25488:37;;25563;-1:-1:-1;;;;;25563:5:0;:18;25582:2;25586:13;25563:18;:37::i;:::-;25613:19;25635:8;25644:3;25635:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25635:13:0;;-1:-1:-1;25663:32:0;;25659:137;;25772:11;;25712:72;;-1:-1:-1;;;25712:72:0;;-1:-1:-1;;;;;25712:23:0;;;;;:72;;25736:3;;25741:10;;25753:2;;25757:13;;25772:11;25712:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25659:137;25808:37;25834:2;25838:6;25808:7;25816:3;25808:12;;;;;;;:37;25897:2;-1:-1:-1;;;;;25863:37:0;25884:3;25872:10;-1:-1:-1;;;;;25863:37:0;;25889:6;25863:37;;;;;;:::i;:::-;;;;;;;;25936:3;25924:10;-1:-1:-1;;;;;25916:39:0;;25941:13;25916:39;;;;;;:::i;:::-;;;;;;;;24967:996;;;;;;;;:::o;5652:554::-;5735:23;;5843:5;-1:-1:-1;;;;;5832:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5832:24:0;-1:-1:-1;5820:36:0;-1:-1:-1;5889:5:0;-1:-1:-1;;;;;5877:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5867:35;;5918:9;5913:286;5933:16;;;5913:286;;;5972:12;5986:19;6017:4;6036:5;;6042:1;6036:8;;;;;;;;;;;;;;;;;;:::i;:::-;6009:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5971:74;;;;6068:7;:24;;;;6080:12;6079:13;6068:24;6094:21;6108:6;6094:13;:21::i;:::-;6060:56;;;;;-1:-1:-1;;;6060:56:0;;;;;;;;:::i;:::-;;6146:7;6131:9;6141:1;6131:12;;;;;;;;;;;;;:22;;;;;;;;;;;6181:6;6168:7;6176:1;6168:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;5951:3:0;;5913:286;;;;5652:554;;;;;;:::o;7248:27::-;;;-1:-1:-1;;;;;7248:27:0;;:::o;553:137::-;611:9;631:6;;;:28;;-1:-1:-1;;646:5:0;;;658:1;653;646:5;653:1;641:13;;;;;:18;631:28;623:65;;;;-1:-1:-1;;;623:65:0;;;;;;;:::i;:::-;553:137;;;;:::o;10644:218::-;10700:6;10730:5;;;10755:6;;;;;;:16;;;10770:1;10765;:6;;10755:16;10754:38;;;;10781:1;10777;:5;:14;;;;;10790:1;10786;:5;10777:14;10746:87;;;;-1:-1:-1;;;10746:87:0;;;;;;;:::i;:::-;10853:1;10644:218;-1:-1:-1;;;10644:218:0:o;425:122::-;508:5;;;503:16;;;;495:50;;;;-1:-1:-1;;;495:50:0;;;;;;;:::i;3744:304::-;3829:12;3843:17;3872:5;-1:-1:-1;;;;;3864:19:0;3907:10;3919:2;3923:6;3884:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3884:46:0;;;;;;;;;;;3864:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3828:103;;;;3950:7;:57;;;;-1:-1:-1;3962:11:0;;:16;;:44;;;3993:4;3982:24;;;;;;;;;;;;:::i;:::-;3942:98;;;;-1:-1:-1;;;3942:98:0;;;;;;;:::i;:::-;3744:304;;;;;:::o;11330:138::-;11382:7;11415:1;11410;:6;;11402:30;;;;-1:-1:-1;;;11402:30:0;;;;;;;:::i;:::-;-1:-1:-1;11458:1:0;11330:138::o;294:125::-;377:5;;;372:16;;;;364:53;;;;-1:-1:-1;;;364:53:0;;;;;;;:::i;696:161::-;745:9;-1:-1:-1;;;;;775:16:0;;;767:57;;;;-1:-1:-1;;;767:57:0;;;;;;;:::i;1217:125::-;1300:5;;;-1:-1:-1;;;;;1295:16:0;;;;;;;;1287:53;;;;-1:-1:-1;;;1287:53:0;;;;;;;:::i;863:156::-;911:8;-1:-1:-1;;;;;940:15:0;;;932:55;;;;-1:-1:-1;;;932:55:0;;;;;;;:::i;11107:215::-;11163:6;11193:5;;;11218:6;;;;;;:16;;;11233:1;11228;:6;;11218:16;11217:38;;;;11244:1;11240;:5;:14;;;;;11253:1;11249;:5;11240:14;11209:84;;;;-1:-1:-1;;;11209:84:0;;;;;;;:::i;4056:332::-;4159:12;4173:17;4202:5;-1:-1:-1;;;;;4194:19:0;4237:10;4249:4;4255:2;4259:6;4214:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4214:52:0;;;;;;;;;;;4194:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4158:109;;;;4286:7;:57;;;;-1:-1:-1;4298:11:0;;:16;;:44;;;4329:4;4318:24;;;;;;;;;;;;:::i;:::-;4278:102;;;;-1:-1:-1;;;4278:102:0;;;;;;;:::i;:::-;4056:332;;;;;;:::o;4696:496::-;4768:13;4931:2;4910:11;:18;:23;4906:67;;;-1:-1:-1;4935:38:0;;;;;;;;;;;;;;;;;;;4906:67;5077:4;5064:11;5060:22;5045:37;;5121:11;5110:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;2862:241::-;;2966:2;2954:9;2945:7;2941:23;2937:32;2934:2;;;-1:-1;;2972:12;2934:2;85:6;72:20;97:33;124:5;97:33;:::i;3110:479::-;;;;3242:2;3230:9;3221:7;3217:23;3213:32;3210:2;;;-1:-1;;3248:12;3210:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3300:63;-1:-1;3400:2;3436:22;;971:20;996:30;971:20;996:30;:::i;:::-;3408:60;-1:-1;3505:2;3541:22;;971:20;996:30;971:20;996:30;:::i;:::-;3513:60;;;;3204:385;;;;;:::o;3596:538::-;;;;3760:2;3748:9;3739:7;3735:23;3731:32;3728:2;;;-1:-1;;3766:12;3728:2;3824:17;3811:31;-1:-1;;;;;3854:6;3851:30;3848:2;;;-1:-1;;3884:12;3848:2;3922:91;4005:7;3996:6;3985:9;3981:22;3922:91;:::i;:::-;3904:109;;-1:-1;3904:109;-1:-1;;4050:2;4086:22;;971:20;996:30;971:20;996:30;:::i;4141:397::-;;;4280:2;4268:9;4259:7;4255:23;4251:32;4248:2;;;-1:-1;;4286:12;4248:2;4344:17;4331:31;-1:-1;;;;;4374:6;4371:30;4368:2;;;-1:-1;;4404:12;4368:2;4442:80;4514:7;4505:6;4494:9;4490:22;4442:80;:::i;:::-;4424:98;;;;-1:-1;4242:296;-1:-1;;;;4242:296::o;4545:257::-;;4657:2;4645:9;4636:7;4632:23;4628:32;4625:2;;;-1:-1;;4663:12;4625:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4809:291::-;;4938:2;4926:9;4917:7;4913:23;4909:32;4906:2;;;-1:-1;;4944:12;4906:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;5107:1145::-;;;;;;;;;5342:3;5330:9;5321:7;5317:23;5313:33;5310:2;;;-1:-1;;5349:12;5310:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;5401:77;-1:-1;5515:2;5554:22;;72:20;97:33;72:20;97:33;:::i;:::-;5523:63;-1:-1;5623:2;5662:22;;72:20;97:33;72:20;97:33;:::i;:::-;5631:63;-1:-1;5731:2;5770:22;;2518:20;;-1:-1;5839:3;5879:22;;2518:20;;-1:-1;5948:3;5986:22;;2794:20;41797:4;41786:16;;44885:33;;44875:2;;-1:-1;;44922:12;44875:2;5304:948;;;;-1:-1;5304:948;;;;;;5957:61;;-1:-1;;;6055:3;6095:22;;1240:20;;6164:3;6204:22;1240:20;;5304:948::o;6551:362::-;;6676:2;6664:9;6655:7;6651:23;6647:32;6644:2;;;-1:-1;;6682:12;6644:2;6733:17;6727:24;-1:-1;;;;;6771:18;6763:6;6760:30;6757:2;;;-1:-1;;6793:12;6757:2;6880:6;6869:9;6865:22;;;2112:3;2105:4;2097:6;2093:17;2089:27;2079:2;;-1:-1;;2120:12;2079:2;2160:6;2154:13;6771:18;38433:6;38430:30;38427:2;;;-1:-1;;38463:12;38427:2;38096;38090:9;38536;38517:17;;-1:-1;;38513:33;38122:17;;6676:2;38122:17;38182:34;;;38218:22;;;38179:62;38176:2;;;-1:-1;;38244:12;38176:2;38096;38263:22;2253:21;;;2353:16;;;6676:2;2353:16;2350:25;-1:-1;2347:2;;;-1:-1;;2378:12;2347:2;2398:39;2430:6;6676:2;2329:5;2325:16;6676:2;2295:6;2291:17;2398:39;:::i;:::-;6813:84;6638:275;-1:-1;;;;;;6638:275::o;6920:241::-;;7024:2;7012:9;7003:7;6999:23;6995:32;6992:2;;;-1:-1;;7030:12;6992:2;-1:-1;2518:20;;6986:175;-1:-1;6986:175::o;7168:263::-;;7283:2;7271:9;7262:7;7258:23;7254:32;7251:2;;;-1:-1;;7289:12;7251:2;-1:-1;2666:13;;7245:186;-1:-1;7245:186::o;7438:366::-;;;7559:2;7547:9;7538:7;7534:23;7530:32;7527:2;;;-1:-1;;7565:12;7527:2;2531:6;2518:20;7617:63;;7717:2;7760:9;7756:22;72:20;97:33;124:5;97:33;:::i;:::-;7725:63;;;;7521:283;;;;;:::o;7811:555::-;;;;7981:2;7969:9;7960:7;7956:23;7952:32;7949:2;;;-1:-1;;7987:12;7949:2;2531:6;2518:20;8039:63;;8139:2;8196:9;8192:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;8147:77;-1:-1;8261:2;8318:22;;1910:20;1935:51;1910:20;1935:51;:::i;8373:491::-;;;;8511:2;8499:9;8490:7;8486:23;8482:32;8479:2;;;-1:-1;;8517:12;8479:2;2531:6;2518:20;8569:63;;8669:2;8712:9;8708:22;2518:20;8677:63;;8777:2;8820:9;8816:22;72:20;97:33;124:5;97:33;:::i;8871:647::-;;;;;9041:3;9029:9;9020:7;9016:23;9012:33;9009:2;;;-1:-1;;9048:12;9009:2;2531:6;2518:20;9100:63;;9200:2;9243:9;9239:22;2518:20;9208:63;;9308:2;9369:9;9365:22;1910:20;1935:51;1980:5;1935:51;:::i;:::-;9316:81;-1:-1;9434:2;9470:22;;971:20;996:30;971:20;996:30;:::i;:::-;9003:515;;;;-1:-1;9003:515;;-1:-1;;9003:515::o;12489:323::-;;12621:5;39048:12;39863:6;39858:3;39851:19;12704:52;12749:6;39900:4;39895:3;39891:14;39900:4;12730:5;12726:16;12704:52;:::i;:::-;38536:9;43821:14;-1:-1;;43817:28;12768:39;;;;39900:4;12768:39;;12569:243;-1:-1;;12569:243::o;21349:291::-;;43404:6;43399:3;43394;43381:30;43442:16;;43435:27;;;43442:16;21493:147;-1:-1;21493:147::o;21647:271::-;;12979:5;39048:12;13090:52;13135:6;13130:3;13123:4;13116:5;13112:16;13090:52;:::i;:::-;13154:16;;;;;21781:137;-1:-1;;21781:137::o;21925:222::-;-1:-1;;;;;41478:54;;;;10113:37;;22052:2;22037:18;;22023:124::o;22154:444::-;-1:-1;;;;;41478:54;;;10113:37;;41478:54;;;;22501:2;22486:18;;10113:37;22584:2;22569:18;;12099:37;;;;22337:2;22322:18;;22308:290::o;22605:884::-;-1:-1;;;;;41478:54;;;10113:37;;41478:54;;;;23061:2;23046:18;;10113:37;23144:2;23129:18;;12099:37;;;;23227:2;23212:18;;12099:37;;;;41797:4;41786:16;23306:3;23291:19;;21302:35;41489:42;23375:19;;12099:37;23474:3;23459:19;;12099:37;;;;22896:3;22881:19;;22867:622::o;23496:333::-;-1:-1;;;;;41478:54;;;;10113:37;;23815:2;23800:18;;12099:37;23651:2;23636:18;;23622:207::o;23836:653::-;24103:2;24117:47;;;39048:12;;24088:18;;;39851:19;;;23836:653;;39900:4;;39891:14;;;;38738;;;23836:653;10580:251;10605:6;10602:1;10599:13;10580:251;;;10666:13;;40765;40758:21;11871:34;;9667:14;;;;39585;;;;10627:1;10620:9;10580:251;;;10584:14;;;24328:9;24322:4;24318:20;39900:4;24302:9;24298:18;24291:48;24353:126;11108:5;39048:12;11127:95;11215:6;11210:3;11127:95;:::i;:::-;11120:102;;;;;39900:4;11279:6;11275:17;11270:3;11266:27;39900:4;11373:5;38738:14;-1:-1;11412:357;11437:6;11434:1;11431:13;11412:357;;;11499:9;11493:4;11489:20;11484:3;11477:33;9815:64;9875:3;11544:6;11538:13;9815:64;:::i;:::-;11748:14;;;;11558:90;-1:-1;39585:14;;;;10627:1;11452:9;11412:357;;;-1:-1;24345:134;;24074:415;-1:-1;;;;;;;;;24074:415::o;24496:210::-;40765:13;;40758:21;11871:34;;24617:2;24602:18;;24588:118::o;25508:310::-;;25655:2;25676:17;25669:47;25730:78;25655:2;25644:9;25640:18;25794:6;25730:78;:::i;25825:416::-;26025:2;26039:47;;;14534:2;26010:18;;;39851:19;-1:-1;;;39891:14;;;14550:44;14613:12;;;25996:245::o;26248:416::-;26448:2;26462:47;;;14864:2;26433:18;;;39851:19;-1:-1;;;39891:14;;;14880:34;14933:12;;;26419:245::o;26671:416::-;26871:2;26885:47;;;15184:2;26856:18;;;39851:19;15220:30;39891:14;;;15200:51;15270:12;;;26842:245::o;27094:416::-;27294:2;27308:47;;;15521:2;27279:18;;;39851:19;15557:34;39891:14;;;15537:55;-1:-1;;;15612:12;;;15605:25;15649:12;;;27265:245::o;27517:416::-;27717:2;27731:47;;;15900:2;27702:18;;;39851:19;-1:-1;;;39891:14;;;15916:44;15979:12;;;27688:245::o;27940:416::-;28140:2;28154:47;;;16230:2;28125:18;;;39851:19;16266:34;39891:14;;;16246:55;-1:-1;;;16321:12;;;16314:33;16366:12;;;28111:245::o;28363:416::-;28563:2;28577:47;;;16617:2;28548:18;;;39851:19;16653:30;39891:14;;;16633:51;16703:12;;;28534:245::o;28786:416::-;28986:2;29000:47;;;16954:2;28971:18;;;39851:19;16990:26;39891:14;;;16970:47;17036:12;;;28957:245::o;29209:416::-;29409:2;29423:47;;;29394:18;;;39851:19;17323:34;39891:14;;;17303:55;17377:12;;;29380:245::o;29632:416::-;29832:2;29846:47;;;29817:18;;;39851:19;17664:34;39891:14;;;17644:55;17718:12;;;29803:245::o;30055:416::-;30255:2;30269:47;;;17969:2;30240:18;;;39851:19;-1:-1;;;39891:14;;;17985:42;18046:12;;;30226:245::o;30478:416::-;30678:2;30692:47;;;18297:2;30663:18;;;39851:19;18333:29;39891:14;;;18313:50;18382:12;;;30649:245::o;30901:416::-;31101:2;31115:47;;;18633:2;31086:18;;;39851:19;18669:31;39891:14;;;18649:52;18720:12;;;31072:245::o;31324:416::-;31524:2;31538:47;;;18971:2;31509:18;;;39851:19;19007:34;39891:14;;;18987:55;-1:-1;;;19062:12;;;19055:28;19102:12;;;31495:245::o;31747:416::-;31947:2;31961:47;;;31932:18;;;39851:19;19389:34;39891:14;;;19369:55;19443:12;;;31918:245::o;32170:416::-;32370:2;32384:47;;;19694:2;32355:18;;;39851:19;19730:26;39891:14;;;19710:47;19776:12;;;32341:245::o;32593:326::-;20088:23;;-1:-1;;;;;41358:46;20589:37;;20269:4;20258:16;;;20252:23;-1:-1;;;;;41684:30;;;20327:14;;;21070:36;;;;20427:4;20416:16;;;20410:23;41684:30;20485:14;;;21070:36;;;;32772:2;32757:18;;32743:176::o;32926:436::-;-1:-1;;;;;41358:46;;;;20589:37;;-1:-1;;;;;41684:30;;;33267:2;33252:18;;21070:36;41684:30;33348:2;33333:18;;21070:36;33105:2;33090:18;;33076:286::o;33369:222::-;12099:37;;;33496:2;33481:18;;33467:124::o;33598:716::-;12099:37;;;-1:-1;;;;;41478:54;;;34034:2;34019:18;;9972:58;41478:54;;;;34117:2;34102:18;;10113:37;34208:2;34193:18;;13885:58;;;;34299:3;34284:19;;13885:58;33861:3;33846:19;;33832:482::o;36410:321::-;12099:37;;;40765:13;40758:21;36717:2;36702:18;;11871:34;36559:2;36544:18;;36530:201::o;36738:329::-;12099:37;;;37053:2;37038:18;;12099:37;36891:2;36876:18;;36862:205::o;37074:440::-;-1:-1;;;;;41684:30;;;;21070:36;;37417:2;37402:18;;12099:37;;;;-1:-1;;;;;41358:46;37500:2;37485:18;;20829:50;37255:2;37240:18;;37226:288::o;37521:506::-;;;37656:11;37643:25;37707:48;;37731:8;37715:14;37711:29;37707:48;37687:18;37683:73;37673:2;;-1:-1;;37760:12;37673:2;37787:33;;37841:18;;;-1:-1;;;;;;37868:30;;37865:2;;;-1:-1;;37901:12;37865:2;37746:4;37929:13;;-1:-1;37715:14;37961:38;;;37951:49;;37948:2;;;38013:1;;38003:12;43477:268;43542:1;43549:101;43563:6;43560:1;43557:13;43549:101;;;43630:11;;;43624:18;43611:11;;;43604:39;43585:2;43578:10;43549:101;;;43665:6;43662:1;43659:13;43656:2;;;-1:-1;;43542:1;43712:16;;43705:27;43526:219::o;43858:117::-;-1:-1;;;;;41478:54;;43917:35;;43907:2;;43966:1;;43956:12;43907:2;43901:74;:::o;43982:111::-;44063:5;40765:13;40758:21;44041:5;44038:32;44028:2;;44084:1;;44074:12

Swarm Source

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