Contract 0xB20e684dE561C54021651050F4518dAa1976eB42

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe8709175102e2447fa81725f31ceef7c59779fa4c057d76eb433ef0779af82000x60c06040420678242022-11-29 5:39:00452 days 10 hrs ago0x947b7742c403f20e5faccdac5e092c943e7d0277 IN  Create: PoolUtilities0 ETH0.000309070.1
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoolUtilities

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2022-11-29
*/

// File: contracts\interfaces\IGauge.sol

// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

interface IGauge {
    function deposit(uint256) external;
    function balanceOf(address) external view returns (uint256);
    function working_balances(address) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function working_supply() external view returns (uint256);
    function withdraw(uint256) external;
    function claim_rewards() external;
    function claim_rewards(address _account) external;
    function lp_token() external view returns(address);
    function set_rewards_receiver(address _receiver) external;
    function reward_count() external view returns(uint256);
    function reward_tokens(uint256 _rid) external view returns(address _rewardToken);
    function reward_data(address _reward) external view returns(address distributor, uint256 period_finish, uint256 rate, uint256 last_update, uint256 integral);
    function claimed_reward(address _account, address _token) external view returns(uint256);
    function claimable_reward(address _account, address _token) external view returns(uint256);
    function claimable_tokens(address _account) external returns(uint256);
    function inflation_rate(uint256 _week) external view returns(uint256);
    function period() external view returns(uint256);
    function period_timestamp(uint256 _period) external view returns(uint256);
    // function claimable_reward_write(address _account, address _token) external returns(uint256);
    function add_reward(address _reward, address _distributor) external;
    function set_reward_distributor(address _reward, address _distributor) external;
    function deposit_reward_token(address _reward, uint256 _amount) external;
    function manager() external view returns(address _manager);
}

// File: contracts\interfaces\IBooster.sol

pragma solidity 0.8.10;

interface IBooster {
   function isShutdown() external view returns(bool);
   function withdrawTo(uint256,uint256,address) external;
   function claimCrv(uint256 _pid, address _gauge) external;
   function setGaugeRedirect(uint256 _pid) external returns(bool);
   function owner() external view returns(address);
   function rewardManager() external view returns(address);
   function feeDeposit() external view returns(address);
   function factoryCrv(address _factory) external view returns(address _crv);
   function calculatePlatformFees(uint256 _amount) external view returns(uint256);
   function addPool(address _lptoken, address _gauge, address _factory) external returns(bool);
   function shutdownPool(uint256 _pid) external returns(bool);
   function poolInfo(uint256) external view returns(address _lptoken, address _gauge, address _rewards,bool _shutdown, address _factory);
   function poolLength() external view returns (uint256);
   function activeMap(address) external view returns(bool);
   function fees() external view returns(uint256);
   function setPoolManager(address _poolM) external;
}

// File: contracts\interfaces\IConvexRewardPool.sol

pragma solidity 0.8.10;

interface IConvexRewardPool{
    struct EarnedData {
        address token;
        uint256 amount;
    }

    struct RewardType {
        address reward_token;
        uint128 reward_integral;
        uint128 reward_remaining;
    }

    function initialize(
        address _crv,
        address _curveGauge,
        address _convexStaker,
        address _convexBooster,
        address _convexToken,
        uint256 _poolId) external;
    function setExtraReward(address) external;
    function setRewardHook(address) external;
    function rewardHook() external view returns(address _hook);
    function getReward(address) external;
    function user_checkpoint(address) external;
    function rewardLength() external view returns(uint256);
    function totalSupply() external view returns(uint256);
    function balanceOf(address) external view returns(uint256);
    function rewards(uint256 _rewardIndex) external view returns(RewardType memory);
    function earnedView(address _account) external view returns(EarnedData[] memory claimable);
    function earned(address _account) external returns(EarnedData[] memory claimable);
    function stakeFor(address _for, uint256 _amount) external returns(bool);
    function withdraw(uint256 amount, bool claim) external returns(bool);
    function withdrawAll(bool claim) external;
}

// File: contracts\interfaces\IRewardHook.sol

pragma solidity 0.8.10;

interface IRewardHook {
    function onRewardClaim() external;
    function rewardManager() external view returns(address);
    function poolRewardLength(address _pool) external view returns(uint256);
    // function poolRewardList(address _pool) external view returns(address[] memory _rewardContractList);
    function poolRewardList(address _pool, uint256 _index) external view returns(address _rewardContract);
    function clearPoolRewardList(address _pool) external;
    function addPoolReward(address _pool, address _rewardContract) external;
}

// File: contracts\interfaces\IExtraRewardPool.sol

pragma solidity 0.8.10;

interface IExtraRewardPool{
    enum PoolType{
        Single,
        Multi
    }
    function rewardToken() external view returns(address);
    function pid() external view returns(uint256);
    function periodFinish() external view returns(uint256);
    function rewardRate() external view returns(uint256);
    function totalSupply() external view returns(uint256);
    function balanceOf(address _account) external view returns(uint256);
    function poolType() external view returns(PoolType);
    function poolVersion() external view returns(uint256);
}

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


pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: contracts\PoolUtilities.sol

pragma solidity 0.8.10;
/*
This is a utility library which is mainly used for off chain calculations
*/
contract PoolUtilities{

    uint256 private constant WEEK = 7 * 86400;

    address public constant convexProxy = address(0x989AEb4d175e16225E39E87d0D97A3360524AD80);
    address public immutable crv;
    address public immutable booster;

    constructor(address _booster, address _crv){
        booster = _booster;
        crv = _crv;
    }


    //get boosted reward rate of user at a specific staking contract
    //returns amount user receives per second based on weight/liq ratio
    //%return = userBoostedRewardRate * timeFrame * price of reward / price of LP / 1e18
    function gaugeRewardRates(uint256 _pid, uint256 _week) public view returns (address[] memory tokens, uint256[] memory boostedRates) {
        //get pool info
        (, address gauge, , ,) = IBooster(booster).poolInfo(_pid);

        uint256 week = _week;

        if(week == 0){
            //get current period -> timestamp from period
            uint256 period = IGauge(gauge).period();
            uint256 periodTime = IGauge(gauge).period_timestamp(period);

            //get week from last checkpointed period
            week = periodTime / WEEK;
        }

        //get inflation rate
        uint256 infRate = IGauge(gauge).inflation_rate(week);

        //if inflation is 0, there might be tokens on the gauge and not checkpointed yet
        if(infRate == 0){
            infRate = IERC20(crv).balanceOf(gauge) / WEEK;
        }

        //if inflation is still 0... might have not bridged yet, or lost gauge weight


        //reduce by fees
        infRate -= (infRate * IBooster(booster).fees() / 10000);
        

        //get working supply
        uint256 wsupply = IGauge(gauge).working_supply();

        if(wsupply > 0){
            infRate = infRate * 1e18 / wsupply;
        }

        //get convex working balance
        uint256 wbalance = IGauge(gauge).working_balances(convexProxy);
        //get convex deposited balance
        uint256 dbalance = IGauge(gauge).balanceOf(convexProxy);

        //convex inflation rate
        uint256 cvxInfRate = infRate;
        //if no balance, just return a full boosted rate
        if(wbalance > 0){
            //wbalance and dbalance will cancel out if full boost
            cvxInfRate = infRate * wbalance / dbalance;
        }

        //number of gauge rewards
        uint256 gaugeRewards = IGauge(gauge).reward_count();

        //make list of reward rates
        tokens = new address[](gaugeRewards + 1);
        boostedRates = new uint256[](gaugeRewards + 1);

        //index 0 will be crv
        tokens[0] = crv;
        boostedRates[0] = cvxInfRate;

        //use total supply for rewards since no boost
        uint256 tSupply = IGauge(gauge).totalSupply();
        //loop through rewards
        for(uint256 i = 0; i < gaugeRewards; i++){
            address rt = IGauge(gauge).reward_tokens(i);
            (,, uint256 rrate,,) = IGauge(gauge).reward_data(rt);

            //get rate per total supply
            if(tSupply > 0){
                rrate = rrate * 1e18 / tSupply;
            }

            //set rate (no boost for extra rewards)
            boostedRates[i+1] = rrate;
            tokens[i+1] = rt;
        }
    }

     function externalRewardContracts(uint256 _pid) public view returns (address[] memory rewardContracts) {
        //get pool info
        (, , address rewards, ,) = IBooster(booster).poolInfo(_pid);

        //get reward hook
        address hook = IConvexRewardPool(rewards).rewardHook();

        uint256 rewardCount = IRewardHook(hook).poolRewardLength(rewards);
        rewardContracts = new address[](rewardCount);

        for(uint256 i = 0; i < rewardCount; i++){
            rewardContracts[i] = IRewardHook(hook).poolRewardList(rewards, i);
        }
    }

    function aggregateExtraRewardRates(uint256 _pid) external view returns(address[] memory tokens, uint256[] memory rates){
        address[] memory rewardContracts = externalRewardContracts(_pid);

        tokens = new address[](rewardContracts.length);
        rates = new uint256[](rewardContracts.length);

        for(uint256 i = 0; i < rewardContracts.length; i++){
            IExtraRewardPool.PoolType pt = IExtraRewardPool(rewardContracts[i]).poolType();
            if(pt == IExtraRewardPool.PoolType.Single){
                (address t, uint256 r) = singleRewardRate(_pid, rewardContracts[i]);
                tokens[i] = t;
                rates[i] = r;
            }
        }
    }

    function singleRewardRate(uint256 _pid, address _rewardContract) public view returns (address token, uint256 rate) {
        
        //set token
        token = IExtraRewardPool(_rewardContract).rewardToken();

        //check period finish
        if(IExtraRewardPool(_rewardContract).periodFinish() < block.timestamp ){
            //return early as rate is 0
            return (token,0);
        }

        //get global rate and supply
        uint256 globalRate = IExtraRewardPool(_rewardContract).rewardRate();
        uint256 totalSupply = IExtraRewardPool(_rewardContract).totalSupply();
        

        if(totalSupply > 0){
            //get pool info
            (, , address rewards, ,) = IBooster(booster).poolInfo(_pid);

            //get rate for whole pool (vs other pools)
            rate = globalRate * IExtraRewardPool(_rewardContract).balanceOf(rewards) / totalSupply;

            //get pool total supply
            uint256 poolSupply = IConvexRewardPool(rewards).totalSupply();
            if(poolSupply > 0){
                //rate per deposit
                rate = rate * 1e18 / poolSupply;
            }
        }
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_booster","type":"address"},{"internalType":"address","name":"_crv","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"aggregateExtraRewardRates","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"booster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"convexProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"externalRewardContracts","outputs":[{"internalType":"address[]","name":"rewardContracts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_week","type":"uint256"}],"name":"gaugeRewardRates","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"boostedRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_rewardContract","type":"address"}],"name":"singleRewardRate","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b506040516115f03803806115f083398101604081905261002f91610062565b6001600160a01b0391821660a05216608052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a05161150d6100e36000396000818161012b015281816101b6015281816107a00152818161093d0152610bd501526000818160b001528181610b560152610f29015261150d6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b66d99301161005b578063b66d99301461010b578063c6def07614610126578063cf85d9ce1461014d578063dfb075521461017f57600080fd5b80633c5ac467146100825780636a4874a1146100ab5780638ddaa269146100ea575b600080fd5b6100956100903660046111a2565b610192565b6040516100a291906111ff565b60405180910390f35b6100d27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a2565b6100fd6100f83660046111a2565b610403565b6040516100a2929190611219565b6100d273989aeb4d175e16225e39e87d0d97a3360524ad8081565b6100d27f000000000000000000000000000000000000000000000000000000000000000081565b61016061015b366004611288565b6105dd565b604080516001600160a01b0390931683526020830191909152016100a2565b6100fd61018d3660046112b8565b610936565b604051631526fe2760e01b8152600481018290526060906000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe279060240160a060405180830381865afa1580156101fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022191906112da565b5050925050506000816001600160a01b03166344214ecf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028b9190611354565b60405163b0de36f560e01b81526001600160a01b03848116600483015291925060009183169063b0de36f590602401602060405180830381865afa1580156102d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fb9190611371565b90508067ffffffffffffffff8111156103165761031661138a565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50935060005b818110156103fa5760405163acecbe9d60e01b81526001600160a01b0385811660048301526024820183905284169063acecbe9d90604401602060405180830381865afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190611354565b8582815181106103d0576103d06113a0565b6001600160a01b0390921660209283029190910190910152806103f2816113cc565b915050610345565b50505050919050565b606080600061041184610192565b9050805167ffffffffffffffff81111561042d5761042d61138a565b604051908082528060200260200182016040528015610456578160200160208202803683370190505b509250805167ffffffffffffffff8111156104735761047361138a565b60405190808252806020026020018201604052801561049c578160200160208202803683370190505b50915060005b81518110156105d65760008282815181106104bf576104bf6113a0565b60200260200101516001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052891906113e7565b9050600081600181111561053e5761053e611408565b14156105c35760008061056a8886868151811061055d5761055d6113a0565b60200260200101516105dd565b9150915081878581518110610581576105816113a0565b60200260200101906001600160a01b031690816001600160a01b031681525050808685815181106105b4576105b46113a0565b60200260200101818152505050505b50806105ce816113cc565b9150506104a2565b5050915091565b600080826001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106429190611354565b915042836001600160a01b031663ebe2b12b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a79190611371565b10156106b55750600061092f565b6000836001600160a01b0316637b0a47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611371565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190611371565b9050801561092c57604051631526fe2760e01b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631526fe279060240160a060405180830381865afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081391906112da565b50506040516370a0823160e01b81526001600160a01b03808316600483015291945085935090891691506370a0823190602401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611371565b610891908561141e565b61089b919061143d565b93506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190611371565b90508015610929578061091c86670de0b6b3a764000061141e565b610926919061143d565b94505b50505b50505b9250929050565b60608060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631526fe27866040518263ffffffff1660e01b815260040161098991815260200190565b60a060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca91906112da565b50919350869250505080610abf576000826001600160a01b031663ef78d4fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611371565b604051631d66042360e21b8152600481018290529091506000906001600160a01b03851690637598108c90602401602060405180830381865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab9190611371565b9050610aba62093a808261143d565b925050505b60405163fadd59ab60e01b8152600481018290526000906001600160a01b0384169063fadd59ab90602401602060405180830381865afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b9190611371565b905080610bd0576040516370a0823160e01b81526001600160a01b03848116600483015262093a80917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc39190611371565b610bcd919061143d565b90505b6127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639af1d35a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611371565b610c5f908361141e565b610c69919061143d565b610c73908261145f565b90506000836001600160a01b03166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190611371565b90508015610d015780610cf483670de0b6b3a764000061141e565b610cfe919061143d565b91505b6040516309f658e560e11b815273989aeb4d175e16225e39e87d0d97a3360524ad8060048201526000906001600160a01b038616906313ecb1ca90602401602060405180830381865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190611371565b6040516370a0823160e01b815273989aeb4d175e16225e39e87d0d97a3360524ad8060048201529091506000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190611371565b9050838215610e235781610e16848761141e565b610e20919061143d565b90505b6000876001600160a01b031663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e879190611371565b9050610e94816001611476565b67ffffffffffffffff811115610eac57610eac61138a565b604051908082528060200260200182016040528015610ed5578160200160208202803683370190505b509950610ee3816001611476565b67ffffffffffffffff811115610efb57610efb61138a565b604051908082528060200260200182016040528015610f24578160200160208202803683370190505b5098507f00000000000000000000000000000000000000000000000000000000000000008a600081518110610f5b57610f5b6113a0565b60200260200101906001600160a01b031690816001600160a01b0316815250508189600081518110610f8f57610f8f6113a0565b6020026020010181815250506000886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190611371565b905060005b82811015611191576040516354c49fe960e01b8152600481018290526000906001600160a01b038c16906354c49fe990602401602060405180830381865afa158015611054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110789190611354565b604051632474e32f60e11b81526001600160a01b0380831660048301529192506000918d16906348e9c65e9060240160a060405180830381865afa1580156110c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e8919061148e565b5050925050506000841115611117578361110a82670de0b6b3a764000061141e565b611114919061143d565b90505b808d611124856001611476565b81518110611134576111346113a0565b6020908102919091010152818e61114c856001611476565b8151811061115c5761115c6113a0565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080611189906113cc565b915050611004565b505050505050505050509250929050565b6000602082840312156111b457600080fd5b5035919050565b600081518084526020808501945080840160005b838110156111f45781516001600160a01b0316875295820195908201906001016111cf565b509495945050505050565b60208152600061121260208301846111bb565b9392505050565b60408152600061122c60408301856111bb565b82810360208481019190915284518083528582019282019060005b8181101561126357845183529383019391830191600101611247565b5090979650505050505050565b6001600160a01b038116811461128557600080fd5b50565b6000806040838503121561129b57600080fd5b8235915060208301356112ad81611270565b809150509250929050565b600080604083850312156112cb57600080fd5b50508035926020909101359150565b600080600080600060a086880312156112f257600080fd5b85516112fd81611270565b602087015190955061130e81611270565b604087015190945061131f81611270565b6060870151909350801515811461133557600080fd5b608087015190925061134681611270565b809150509295509295909350565b60006020828403121561136657600080fd5b815161121281611270565b60006020828403121561138357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156113e0576113e06113b6565b5060010190565b6000602082840312156113f957600080fd5b81516002811061121257600080fd5b634e487b7160e01b600052602160045260246000fd5b6000816000190483118215151615611438576114386113b6565b500290565b60008261145a57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611471576114716113b6565b500390565b60008219821115611489576114896113b6565b500190565b600080600080600060a086880312156114a657600080fd5b85516114b181611270565b602087015160408801516060890151608090990151929a9199509796509094509250505056fea26469706673582212209956fb24d46dff92bb3cd1e2dc06307fb7c34447982bfe9a74703ff8b2c5b2af64736f6c634300080a0033000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae3100000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa034978

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b66d99301161005b578063b66d99301461010b578063c6def07614610126578063cf85d9ce1461014d578063dfb075521461017f57600080fd5b80633c5ac467146100825780636a4874a1146100ab5780638ddaa269146100ea575b600080fd5b6100956100903660046111a2565b610192565b6040516100a291906111ff565b60405180910390f35b6100d27f00000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa03497881565b6040516001600160a01b0390911681526020016100a2565b6100fd6100f83660046111a2565b610403565b6040516100a2929190611219565b6100d273989aeb4d175e16225e39e87d0d97a3360524ad8081565b6100d27f000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae3181565b61016061015b366004611288565b6105dd565b604080516001600160a01b0390931683526020830191909152016100a2565b6100fd61018d3660046112b8565b610936565b604051631526fe2760e01b8152600481018290526060906000906001600160a01b037f000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae311690631526fe279060240160a060405180830381865afa1580156101fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022191906112da565b5050925050506000816001600160a01b03166344214ecf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028b9190611354565b60405163b0de36f560e01b81526001600160a01b03848116600483015291925060009183169063b0de36f590602401602060405180830381865afa1580156102d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fb9190611371565b90508067ffffffffffffffff8111156103165761031661138a565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50935060005b818110156103fa5760405163acecbe9d60e01b81526001600160a01b0385811660048301526024820183905284169063acecbe9d90604401602060405180830381865afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190611354565b8582815181106103d0576103d06113a0565b6001600160a01b0390921660209283029190910190910152806103f2816113cc565b915050610345565b50505050919050565b606080600061041184610192565b9050805167ffffffffffffffff81111561042d5761042d61138a565b604051908082528060200260200182016040528015610456578160200160208202803683370190505b509250805167ffffffffffffffff8111156104735761047361138a565b60405190808252806020026020018201604052801561049c578160200160208202803683370190505b50915060005b81518110156105d65760008282815181106104bf576104bf6113a0565b60200260200101516001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052891906113e7565b9050600081600181111561053e5761053e611408565b14156105c35760008061056a8886868151811061055d5761055d6113a0565b60200260200101516105dd565b9150915081878581518110610581576105816113a0565b60200260200101906001600160a01b031690816001600160a01b031681525050808685815181106105b4576105b46113a0565b60200260200101818152505050505b50806105ce816113cc565b9150506104a2565b5050915091565b600080826001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106429190611354565b915042836001600160a01b031663ebe2b12b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a79190611371565b10156106b55750600061092f565b6000836001600160a01b0316637b0a47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611371565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190611371565b9050801561092c57604051631526fe2760e01b8152600481018790526000907f000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae316001600160a01b031690631526fe279060240160a060405180830381865afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081391906112da565b50506040516370a0823160e01b81526001600160a01b03808316600483015291945085935090891691506370a0823190602401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611371565b610891908561141e565b61089b919061143d565b93506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190611371565b90508015610929578061091c86670de0b6b3a764000061141e565b610926919061143d565b94505b50505b50505b9250929050565b60608060007f000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae316001600160a01b0316631526fe27866040518263ffffffff1660e01b815260040161098991815260200190565b60a060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca91906112da565b50919350869250505080610abf576000826001600160a01b031663ef78d4fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611371565b604051631d66042360e21b8152600481018290529091506000906001600160a01b03851690637598108c90602401602060405180830381865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab9190611371565b9050610aba62093a808261143d565b925050505b60405163fadd59ab60e01b8152600481018290526000906001600160a01b0384169063fadd59ab90602401602060405180830381865afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b9190611371565b905080610bd0576040516370a0823160e01b81526001600160a01b03848116600483015262093a80917f00000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa034978909116906370a0823190602401602060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc39190611371565b610bcd919061143d565b90505b6127107f000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae316001600160a01b0316639af1d35a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611371565b610c5f908361141e565b610c69919061143d565b610c73908261145f565b90506000836001600160a01b03166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190611371565b90508015610d015780610cf483670de0b6b3a764000061141e565b610cfe919061143d565b91505b6040516309f658e560e11b815273989aeb4d175e16225e39e87d0d97a3360524ad8060048201526000906001600160a01b038616906313ecb1ca90602401602060405180830381865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190611371565b6040516370a0823160e01b815273989aeb4d175e16225e39e87d0d97a3360524ad8060048201529091506000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190611371565b9050838215610e235781610e16848761141e565b610e20919061143d565b90505b6000876001600160a01b031663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e879190611371565b9050610e94816001611476565b67ffffffffffffffff811115610eac57610eac61138a565b604051908082528060200260200182016040528015610ed5578160200160208202803683370190505b509950610ee3816001611476565b67ffffffffffffffff811115610efb57610efb61138a565b604051908082528060200260200182016040528015610f24578160200160208202803683370190505b5098507f00000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa0349788a600081518110610f5b57610f5b6113a0565b60200260200101906001600160a01b031690816001600160a01b0316815250508189600081518110610f8f57610f8f6113a0565b6020026020010181815250506000886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190611371565b905060005b82811015611191576040516354c49fe960e01b8152600481018290526000906001600160a01b038c16906354c49fe990602401602060405180830381865afa158015611054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110789190611354565b604051632474e32f60e11b81526001600160a01b0380831660048301529192506000918d16906348e9c65e9060240160a060405180830381865afa1580156110c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e8919061148e565b5050925050506000841115611117578361110a82670de0b6b3a764000061141e565b611114919061143d565b90505b808d611124856001611476565b81518110611134576111346113a0565b6020908102919091010152818e61114c856001611476565b8151811061115c5761115c6113a0565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080611189906113cc565b915050611004565b505050505050505050509250929050565b6000602082840312156111b457600080fd5b5035919050565b600081518084526020808501945080840160005b838110156111f45781516001600160a01b0316875295820195908201906001016111cf565b509495945050505050565b60208152600061121260208301846111bb565b9392505050565b60408152600061122c60408301856111bb565b82810360208481019190915284518083528582019282019060005b8181101561126357845183529383019391830191600101611247565b5090979650505050505050565b6001600160a01b038116811461128557600080fd5b50565b6000806040838503121561129b57600080fd5b8235915060208301356112ad81611270565b809150509250929050565b600080604083850312156112cb57600080fd5b50508035926020909101359150565b600080600080600060a086880312156112f257600080fd5b85516112fd81611270565b602087015190955061130e81611270565b604087015190945061131f81611270565b6060870151909350801515811461133557600080fd5b608087015190925061134681611270565b809150509295509295909350565b60006020828403121561136657600080fd5b815161121281611270565b60006020828403121561138357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156113e0576113e06113b6565b5060010190565b6000602082840312156113f957600080fd5b81516002811061121257600080fd5b634e487b7160e01b600052602160045260246000fd5b6000816000190483118215151615611438576114386113b6565b500290565b60008261145a57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611471576114716113b6565b500390565b60008219821115611489576114896113b6565b500190565b600080600080600060a086880312156114a657600080fd5b85516114b181611270565b602087015160408801516060890151608090990151929a9199509796509094509250505056fea26469706673582212209956fb24d46dff92bb3cd1e2dc06307fb7c34447982bfe9a74703ff8b2c5b2af64736f6c634300080a0033

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

000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae3100000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa034978

-----Decoded View---------------
Arg [0] : _booster (address): 0xF403C135812408BFbE8713b5A23a04b3D48AAE31
Arg [1] : _crv (address): 0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f403c135812408bfbe8713b5a23a04b3d48aae31
Arg [1] : 00000000000000000000000011cdb42b0eb46d95f990bedd4695a6e3fa034978


Deployed ByteCode Sourcemap

8828:5784:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12131:576;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9005:28;;;;;;;;-1:-1:-1;;;;;1095:32:1;;;1077:51;;1065:2;1050:18;9005:28:0;931:203:1;12715:706:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8909:89::-;;8955:42;8909:89;;9040:32;;;;;13429:1180;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;2596:32:1;;;2578:51;;2660:2;2645:18;;2638:34;;;;2551:18;13429:1180:0;2404:274:1;9425:2697:0;;;;;;:::i;:::-;;:::i;12131:576::-;12296:32;;-1:-1:-1;;;12296:32:0;;;;;3082:25:1;;;12199:32:0;;12274:15;;-1:-1:-1;;;;;12305:7:0;12296:26;;;;3055:18:1;;12296:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12269:59;;;;;;12368:12;12401:7;-1:-1:-1;;;;;12383:37:0;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12457:43;;-1:-1:-1;;;12457:43:0;;-1:-1:-1;;;;;1095:32:1;;;12457:43:0;;;1077:51:1;12368:54:0;;-1:-1:-1;12435:19:0;;12457:34;;;;;1050:18:1;;12457:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12435:65;;12543:11;12529:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12529:26:0;;12511:44;;12572:9;12568:132;12591:11;12587:1;:15;12568:132;;;12644:44;;-1:-1:-1;;;12644:44:0;;-1:-1:-1;;;;;2596:32:1;;;12644:44:0;;;2578:51:1;2645:18;;;2638:34;;;12644:32:0;;;;;2551:18:1;;12644:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12623:15;12639:1;12623:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12623:65:0;;;:18;;;;;;;;;;;:65;12604:3;;;;:::i;:::-;;;;12568:132;;;;12233:474;;;12131:576;;;:::o;12715:706::-;12786:23;12811:22;12845:32;12880:29;12904:4;12880:23;:29::i;:::-;12845:64;;12945:15;:22;12931:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12931:37:0;;12922:46;;13001:15;:22;12987:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12987:37:0;;12979:45;;13041:9;13037:377;13060:15;:22;13056:1;:26;13037:377;;;13103:28;13151:15;13167:1;13151:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13134:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13103:78;-1:-1:-1;13205:32:0;13199:2;:38;;;;;;;;:::i;:::-;;13196:207;;;13258:9;13269;13282:42;13299:4;13305:15;13321:1;13305:18;;;;;;;;:::i;:::-;;;;;;;13282:16;:42::i;:::-;13257:67;;;;13355:1;13343:6;13350:1;13343:9;;;;;;;;:::i;:::-;;;;;;:13;-1:-1:-1;;;;;13343:13:0;;;-1:-1:-1;;;;;13343:13:0;;;;;13386:1;13375:5;13381:1;13375:8;;;;;;;;:::i;:::-;;;;;;:12;;;;;13238:165;;13196:207;-1:-1:-1;13084:3:0;;;;:::i;:::-;;;;13037:377;;;;12834:587;12715:706;;;:::o;13429:1180::-;13515:13;13530:12;13611:15;-1:-1:-1;;;;;13594:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13586:55;;13739:15;13705;-1:-1:-1;;;;;13688:46:0;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;13685:155;;;-1:-1:-1;13826:1:0;13812:16;;13685:155;13890:18;13928:15;-1:-1:-1;;;;;13911:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13890:67;;13968:19;14007:15;-1:-1:-1;;;;;13990:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13968:69;-1:-1:-1;14063:15:0;;14060:542;;14150:32;;-1:-1:-1;;;14150:32:0;;;;;3082:25:1;;;14128:15:0;;14159:7;-1:-1:-1;;;;;14150:26:0;;;;3055:18:1;;14150:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;14275:52:0;;-1:-1:-1;;;14275:52:0;;-1:-1:-1;;;;;1095:32:1;;;14275:52:0;;;1077:51:1;14123:59:0;;-1:-1:-1;14330:11:0;;-1:-1:-1;14275:43:0;;;;-1:-1:-1;14275:43:0;;1050:18:1;;14275:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14262:65;;:10;:65;:::i;:::-;:79;;;;:::i;:::-;14255:86;;14395:18;14434:7;-1:-1:-1;;;;;14416:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14395:61;-1:-1:-1;14474:14:0;;14471:120;;14565:10;14551:11;:4;14558;14551:11;:::i;:::-;:24;;;;:::i;:::-;14544:31;;14471:120;14079:523;;14060:542;13544:1065;;13429:1180;;;;;;:::o;9425:2697::-;9501:23;9526:29;9596:13;9627:7;-1:-1:-1;;;;;9618:26:0;;9645:4;9618:32;;;;;;;;;;;;;3082:25:1;;3070:2;3055:18;;2936:177;9618:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9593:57:0;;-1:-1:-1;9678:5:0;;-1:-1:-1;;;9699:9:0;9696:307;;9783:14;9807:5;-1:-1:-1;;;;;9800:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9858:38;;-1:-1:-1;;;9858:38:0;;;;;3082:25:1;;;9783:39:0;;-1:-1:-1;9837:18:0;;-1:-1:-1;;;;;9858:30:0;;;;;3055:18:1;;9858:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9837:59;-1:-1:-1;9974:17:0;8891:9;9837:59;9974:17;:::i;:::-;9967:24;;9709:294;;9696:307;10063:34;;-1:-1:-1;;;10063:34:0;;;;;3082:25:1;;;10045:15:0;;-1:-1:-1;;;;;10063:28:0;;;;;3055:18:1;;10063:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10045:52;-1:-1:-1;10203:12:0;10200:88;;10241:28;;-1:-1:-1;;;10241:28:0;;-1:-1:-1;;;;;1095:32:1;;;10241:28:0;;;1077:51:1;8891:9:0;;10248:3;10241:21;;;;;;1050:18:1;;10241:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;;;:::i;:::-;10231:45;;10200:88;10466:5;10448:7;-1:-1:-1;;;;;10439:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10429:34;;:7;:34;:::i;:::-;:42;;;;:::i;:::-;10417:55;;;;:::i;:::-;;;10525:15;10550:5;-1:-1:-1;;;;;10543:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10525:48;-1:-1:-1;10589:11:0;;10586:76;;10643:7;10626:14;:7;10636:4;10626:14;:::i;:::-;:24;;;;:::i;:::-;10616:34;;10586:76;10731:43;;-1:-1:-1;;;10731:43:0;;8955:42;10731:43;;;1077:51:1;10712:16:0;;-1:-1:-1;;;;;10731:30:0;;;;;1050:18:1;;10731:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10844:36;;-1:-1:-1;;;10844:36:0;;8955:42;10844:36;;;1077:51:1;10712:62:0;;-1:-1:-1;10825:16:0;;-1:-1:-1;;;;;10844:23:0;;;;;1050:18:1;;10844:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10825:55;-1:-1:-1;10947:7:0;11026:12;;11023:152;;11155:8;11134:18;11144:8;11134:7;:18;:::i;:::-;:29;;;;:::i;:::-;11121:42;;11023:152;11222:20;11252:5;-1:-1:-1;;;;;11245:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11222:51;-1:-1:-1;11346:16:0;11222:51;11361:1;11346:16;:::i;:::-;11332:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11332:31:0;-1:-1:-1;11323:40:0;-1:-1:-1;11403:16:0;:12;11418:1;11403:16;:::i;:::-;11389:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11389:31:0;;11374:46;;11476:3;11464:6;11471:1;11464:9;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;11464:15:0;;;-1:-1:-1;;;;;11464:15:0;;;;;11508:10;11490:12;11503:1;11490:15;;;;;;;;:::i;:::-;;;;;;:28;;;;;11586:15;11611:5;-1:-1:-1;;;;;11604:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11586:45;;11678:9;11674:441;11697:12;11693:1;:16;11674:441;;;11743:30;;-1:-1:-1;;;11743:30:0;;;;;3082:25:1;;;11730:10:0;;-1:-1:-1;;;;;11743:27:0;;;;;3055:18:1;;11743:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11811:29;;-1:-1:-1;;;11811:29:0;;-1:-1:-1;;;;;1095:32:1;;;11811:29:0;;;1077:51:1;11730:43:0;;-1:-1:-1;11792:13:0;;11811:25;;;;;1050:18:1;;11811:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11788:52;;;;;;11911:1;11901:7;:11;11898:80;;;11955:7;11940:12;:5;11948:4;11940:12;:::i;:::-;:22;;;;:::i;:::-;11932:30;;11898:80;12067:5;12047:12;12060:3;:1;12062;12060:3;:::i;:::-;12047:17;;;;;;;;:::i;:::-;;;;;;;;;;:25;12101:2;12087:6;12094:3;:1;12096;12094:3;:::i;:::-;12087:11;;;;;;;;:::i;:::-;;;;;;:16;-1:-1:-1;;;;;12087:16:0;;;-1:-1:-1;;;;;12087:16:0;;;;;11715:400;;11711:3;;;;;:::i;:::-;;;;11674:441;;;;9557:2565;;;;;;;;;9425:2697;;;;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:461::-;252:3;290:5;284:12;317:6;312:3;305:19;343:4;372:2;367:3;363:12;356:19;;409:2;402:5;398:14;430:1;440:195;454:6;451:1;448:13;440:195;;;519:13;;-1:-1:-1;;;;;515:39:1;503:52;;575:12;;;;610:15;;;;551:1;469:9;440:195;;;-1:-1:-1;651:3:1;;199:461;-1:-1:-1;;;;;199:461:1:o;665:261::-;844:2;833:9;826:21;807:4;864:56;916:2;905:9;901:18;893:6;864:56;:::i;:::-;856:64;665:261;-1:-1:-1;;;665:261:1:o;1139:804::-;1396:2;1385:9;1378:21;1359:4;1422:56;1474:2;1463:9;1459:18;1451:6;1422:56;:::i;:::-;1535:22;;;1497:2;1515:18;;;1508:50;;;;1607:13;;1629:22;;;1705:15;;;;1667;;;1738:1;1748:169;1762:6;1759:1;1756:13;1748:169;;;1823:13;;1811:26;;1892:15;;;;1857:12;;;;1784:1;1777:9;1748:169;;;-1:-1:-1;1934:3:1;;1139:804;-1:-1:-1;;;;;;;1139:804:1:o;1948:131::-;-1:-1:-1;;;;;2023:31:1;;2013:42;;2003:70;;2069:1;2066;2059:12;2003:70;1948:131;:::o;2084:315::-;2152:6;2160;2213:2;2201:9;2192:7;2188:23;2184:32;2181:52;;;2229:1;2226;2219:12;2181:52;2265:9;2252:23;2242:33;;2325:2;2314:9;2310:18;2297:32;2338:31;2363:5;2338:31;:::i;:::-;2388:5;2378:15;;;2084:315;;;;;:::o;2683:248::-;2751:6;2759;2812:2;2800:9;2791:7;2787:23;2783:32;2780:52;;;2828:1;2825;2818:12;2780:52;-1:-1:-1;;2851:23:1;;;2921:2;2906:18;;;2893:32;;-1:-1:-1;2683:248:1:o;3118:817::-;3221:6;3229;3237;3245;3253;3306:3;3294:9;3285:7;3281:23;3277:33;3274:53;;;3323:1;3320;3313:12;3274:53;3355:9;3349:16;3374:31;3399:5;3374:31;:::i;:::-;3474:2;3459:18;;3453:25;3424:5;;-1:-1:-1;3487:33:1;3453:25;3487:33;:::i;:::-;3591:2;3576:18;;3570:25;3539:7;;-1:-1:-1;3604:33:1;3570:25;3604:33;:::i;:::-;3708:2;3693:18;;3687:25;3656:7;;-1:-1:-1;3750:15:1;;3743:23;3731:36;;3721:64;;3781:1;3778;3771:12;3721:64;3856:3;3841:19;;3835:26;3804:7;;-1:-1:-1;3870:33:1;3835:26;3870:33;:::i;:::-;3922:7;3912:17;;;3118:817;;;;;;;;:::o;3940:251::-;4010:6;4063:2;4051:9;4042:7;4038:23;4034:32;4031:52;;;4079:1;4076;4069:12;4031:52;4111:9;4105:16;4130:31;4155:5;4130:31;:::i;4196:184::-;4266:6;4319:2;4307:9;4298:7;4294:23;4290:32;4287:52;;;4335:1;4332;4325:12;4287:52;-1:-1:-1;4358:16:1;;4196:184;-1:-1:-1;4196:184:1:o;4385:127::-;4446:10;4441:3;4437:20;4434:1;4427:31;4477:4;4474:1;4467:15;4501:4;4498:1;4491:15;4517:127;4578:10;4573:3;4569:20;4566:1;4559:31;4609:4;4606:1;4599:15;4633:4;4630:1;4623:15;4649:127;4710:10;4705:3;4701:20;4698:1;4691:31;4741:4;4738:1;4731:15;4765:4;4762:1;4755:15;4781:135;4820:3;-1:-1:-1;;4841:17:1;;4838:43;;;4861:18;;:::i;:::-;-1:-1:-1;4908:1:1;4897:13;;4781:135::o;4921:272::-;5003:6;5056:2;5044:9;5035:7;5031:23;5027:32;5024:52;;;5072:1;5069;5062:12;5024:52;5104:9;5098:16;5143:1;5136:5;5133:12;5123:40;;5159:1;5156;5149:12;5198:127;5259:10;5254:3;5250:20;5247:1;5240:31;5290:4;5287:1;5280:15;5314:4;5311:1;5304:15;5330:168;5370:7;5436:1;5432;5428:6;5424:14;5421:1;5418:21;5413:1;5406:9;5399:17;5395:45;5392:71;;;5443:18;;:::i;:::-;-1:-1:-1;5483:9:1;;5330:168::o;5503:217::-;5543:1;5569;5559:132;;5613:10;5608:3;5604:20;5601:1;5594:31;5648:4;5645:1;5638:15;5676:4;5673:1;5666:15;5559:132;-1:-1:-1;5705:9:1;;5503:217::o;5725:125::-;5765:4;5793:1;5790;5787:8;5784:34;;;5798:18;;:::i;:::-;-1:-1:-1;5835:9:1;;5725:125::o;5855:128::-;5895:3;5926:1;5922:6;5919:1;5916:13;5913:39;;;5932:18;;:::i;:::-;-1:-1:-1;5968:9:1;;5855:128::o;5988:497::-;6094:6;6102;6110;6118;6126;6179:3;6167:9;6158:7;6154:23;6150:33;6147:53;;;6196:1;6193;6186:12;6147:53;6228:9;6222:16;6247:31;6272:5;6247:31;:::i;:::-;6342:2;6327:18;;6321:25;6386:2;6371:18;;6365:25;6430:2;6415:18;;6409:25;6474:3;6459:19;;;6453:26;6297:5;;6321:25;;-1:-1:-1;6365:25:1;6409;-1:-1:-1;6453:26:1;;-1:-1:-1;5988:497:1;-1:-1:-1;;;5988:497:1:o

Metadata Hash

9956fb24d46dff92bb3cd1e2dc06307fb7c34447982bfe9a74703ff8b2c5b2af
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.