FTM Price: $0.577771 (+0.50%)
Gas: 3 GWei
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Value
Set Governance161653742021-09-02 15:42:001024 days ago1630597320IN
0xf13Cd688...c5E627fe0
0 FTM0.001534352.9199
0x60806040161647212021-09-02 15:32:081024 days ago1630596728IN
 Create: CommonHealthCheck
0 FTM0.0841010361.18085

Latest 1 internal transaction

Parent Transaction Hash Block From To Value
161647212021-09-02 15:32:081024 days ago1630596728  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CommonHealthCheck

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license
/**
 *Submitted for verification at ftmscan.com on 2021-09-02
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

// Global Enums and Structs



struct Limits {
    uint256 profitLimitRatio;
    uint256 lossLimitRatio;
    bool exists;
}
struct StrategyParams {
    uint256 performanceFee;
    uint256 activation;
    uint256 debtRatio;
    uint256 minDebtPerHarvest;
    uint256 maxDebtPerHarvest;
    uint256 lastReport;
    uint256 totalDebt;
    uint256 totalGain;
    uint256 totalLoss;
}

// Part: ICustomHealthCheck

interface ICustomHealthCheck {
    function check(
        address callerStrategy,
        uint256 profit,
        uint256 loss,
        uint256 debtPayment,
        uint256 debtOutstanding
    ) external view returns (bool);
}

// Part: StrategyAPI

/**
 * This interface is here for the keeper bot to use.
 */
interface StrategyAPI {
    function name() external view returns (string memory);

    function vault() external view returns (address);

    function want() external view returns (address);

    function apiVersion() external pure returns (string memory);

    function keeper() external view returns (address);

    function isActive() external view returns (bool);

    function delegatedAssets() external view returns (uint256);

    function estimatedTotalAssets() external view returns (uint256);

    function tendTrigger(uint256 callCost) external view returns (bool);

    function tend() external;

    function harvestTrigger(uint256 callCost) external view returns (bool);

    function harvest() external;

    event Harvested(uint256 profit, uint256 loss, uint256 debtPayment, uint256 debtOutstanding);
}

// File: CommonHealthCheck.sol

contract CommonHealthCheck {
    // Default Settings for all strategies
    uint256 constant MAX_BPS = 10_000;
    uint256 public profitLimitRatio;
    uint256 public lossLimitRatio;
    mapping(address => Limits) public strategiesLimits;

    address public governance;
    address public management;

    mapping(address => address) public checks;
    mapping(address => bool) public disabledCheck;

    modifier onlyGovernance() {
        require(msg.sender == governance, "!authorized");
        _;
    }

    modifier onlyAuthorized() {
        require(msg.sender == governance || msg.sender == management, "!authorized");
        _;
    }

    modifier onlyVault(address strategy) {
        require(msg.sender == StrategyAPI(strategy).vault(), "!authorized");
        _;
    }

    constructor() public {
        governance = msg.sender;
        management = msg.sender;
        profitLimitRatio = 100;
        lossLimitRatio = 1;
    }

    function setGovernance(address _governance) external onlyGovernance {
        require(_governance != address(0));
        governance = _governance;
    }

    function setManagement(address _management) external onlyGovernance {
        require(_management != address(0));
        management = _management;
    }

    function setProfitLimitRatio(uint256 _profitLimitRatio) external onlyAuthorized {
        require(_profitLimitRatio < MAX_BPS);
        profitLimitRatio = _profitLimitRatio;
    }

    function setlossLimitRatio(uint256 _lossLimitRatio) external onlyAuthorized {
        require(_lossLimitRatio < MAX_BPS);
        lossLimitRatio = _lossLimitRatio;
    }

    function setStrategyLimits(
        address _strategy,
        uint256 _profitLimitRatio,
        uint256 _lossLimitRatio
    ) external onlyAuthorized {
        require(_lossLimitRatio < MAX_BPS);
        require(_profitLimitRatio < MAX_BPS);
        strategiesLimits[_strategy] = Limits(_profitLimitRatio, _lossLimitRatio, true);
    }

    function setCheck(address _strategy, address _check) external onlyAuthorized {
        checks[_strategy] = _check;
    }

    function enableCheck(address _strategy) external onlyVault(_strategy) {
        disabledCheck[_strategy] = false;
    }

    function setDisabledCheck(address _strategy, bool disabled) external onlyAuthorized {
        disabledCheck[_strategy] = disabled;
    }

    function doHealthCheck(address _strategy) external view returns (bool) {
        return !disabledCheck[_strategy];
    }

    function check(
        uint256 profit,
        uint256 loss,
        uint256 debtPayment,
        uint256 debtOutstanding,
        uint256 totalDebt
    ) external view returns (bool) {
        address strategy = msg.sender;

        return _runChecks(strategy, profit, loss, debtPayment, debtOutstanding, totalDebt);
    }

    function check(
        address strategy,
        uint256 profit,
        uint256 loss,
        uint256 debtPayment,
        uint256 debtOutstanding,
        uint256 totalDebt
    ) external view returns (bool) {
        require(strategy != address(0));

        return _runChecks(strategy, profit, loss, debtPayment, debtOutstanding, totalDebt);
    }

    function _runChecks(
        address strategy,
        uint256 profit,
        uint256 loss,
        uint256 debtPayment,
        uint256 debtOutstanding,
        uint256 totalDebt
    ) internal view returns (bool) {
        address customCheck = checks[strategy];

        if (customCheck == address(0)) {
            return _executeDefaultCheck(strategy, profit, loss, totalDebt);
        }

        return ICustomHealthCheck(customCheck).check(strategy, profit, loss, debtPayment, debtOutstanding);
    }

    function _executeDefaultCheck(
        address strategy,
        uint256 _profit,
        uint256 _loss,
        uint256 _totalDebt
    ) internal view returns (bool) {
        Limits memory limits = strategiesLimits[strategy];
        uint256 _profitLimitRatio;
        uint256 _lossLimitRatio;
        if (limits.exists) {
            _profitLimitRatio = limits.profitLimitRatio;
            _lossLimitRatio = limits.lossLimitRatio;
        } else {
            _profitLimitRatio = profitLimitRatio;
            _lossLimitRatio = lossLimitRatio;
        }

        if (_profit > ((_totalDebt * _profitLimitRatio) / MAX_BPS)) {
            return false;
        }
        if (_loss > ((_totalDebt * _lossLimitRatio) / MAX_BPS)) {
            return false;
        }
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"strategy","type":"address"},{"internalType":"uint256","name":"profit","type":"uint256"},{"internalType":"uint256","name":"loss","type":"uint256"},{"internalType":"uint256","name":"debtPayment","type":"uint256"},{"internalType":"uint256","name":"debtOutstanding","type":"uint256"},{"internalType":"uint256","name":"totalDebt","type":"uint256"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"profit","type":"uint256"},{"internalType":"uint256","name":"loss","type":"uint256"},{"internalType":"uint256","name":"debtPayment","type":"uint256"},{"internalType":"uint256","name":"debtOutstanding","type":"uint256"},{"internalType":"uint256","name":"totalDebt","type":"uint256"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checks","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disabledCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"doHealthCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"enableCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lossLimitRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"management","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitLimitRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_check","type":"address"}],"name":"setCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"bool","name":"disabled","type":"bool"}],"name":"setDisabledCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_management","type":"address"}],"name":"setManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_profitLimitRatio","type":"uint256"}],"name":"setProfitLimitRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_profitLimitRatio","type":"uint256"},{"internalType":"uint256","name":"_lossLimitRatio","type":"uint256"}],"name":"setStrategyLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lossLimitRatio","type":"uint256"}],"name":"setlossLimitRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"strategiesLimits","outputs":[{"internalType":"uint256","name":"profitLimitRatio","type":"uint256"},{"internalType":"uint256","name":"lossLimitRatio","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460008190555060018081905550611672806100b16000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636e905e17116100a25780639abf315b116100715780639abf315b146102de578063ab033ea9146102fa578063c70fa00b14610316578063c935433714610346578063d4a22bde1461037857610115565b80636e905e17146102565780637d9699321461028657806388a8d602146102a4578063950b3d73146102c257610115565b80631afdc5a2116100e95780631afdc5a21461019e57806327fff0db146101ba578063458add98146101ea5780634a5d09431461021a5780635aa6e6751461023857610115565b8062fd31f01461011a578063039aa2501461013657806306bfaf04146101525780630ef5ee0214610182575b600080fd5b610134600480360381019061012f9190611295565b610394565b005b610150600480360381019061014b91906111cb565b610531565b005b61016c600480360381019061016791906112e4565b610679565b6040516101799190611511565b60405180910390f35b61019c60048036038101906101979190611396565b6106ce565b005b6101b860048036038101906101b3919061121d565b6107ce565b005b6101d460048036038101906101cf91906111cb565b610938565b6040516101e191906114a3565b60405180910390f35b61020460048036038101906101ff91906111cb565b61096b565b6040516102119190611511565b60405180910390f35b61022261098b565b60405161022f919061154c565b60405180910390f35b610240610991565b60405161024d91906114a3565b60405180910390f35b610270600480360381019061026b91906111cb565b6109b7565b60405161027d9190611511565b60405180910390f35b61028e610a0e565b60405161029b919061154c565b60405180910390f35b6102ac610a14565b6040516102b991906114a3565b60405180910390f35b6102dc60048036038101906102d79190611396565b610a3a565b005b6102f860048036038101906102f39190611259565b610b3a565b005b610314600480360381019061030f91906111cb565b610c7d565b005b610330600480360381019061032b91906113bf565b610d8b565b60405161033d9190611511565b60405180910390f35b610360600480360381019061035b91906111cb565b610dab565b60405161036f93929190611567565b60405180910390f35b610392600480360381019061038d91906111cb565b610de2565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061043d5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61047c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104739061152c565b60405180910390fd5b612710811061048a57600080fd5b612710821061049857600080fd5b604051806060016040528083815260200182815260200160011515815250600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050505050565b808073ffffffffffffffffffffffffffffffffffffffff1663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057857600080fd5b505afa15801561058c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b091906111f4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106149061152c565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156106b457600080fd5b6106c2878787878787610ef0565b90509695505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107775750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad9061152c565b60405180910390fd5b61271081106107c457600080fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108775750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad9061152c565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60005481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60015481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ae35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061152c565b60405180910390fd5b6127108110610b3057600080fd5b8060008190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610be35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061152c565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d049061152c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4757600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610d9f818888888888610ef0565b91505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061152c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eac57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f9e57610f968888888661103d565b915050611033565b8073ffffffffffffffffffffffffffffffffffffffff166345901be089898989896040518663ffffffff1660e01b8152600401610fdf9594939291906114be565b60206040518083038186803b158015610ff757600080fd5b505afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f919061136d565b9150505b9695505050505050565b600061104761113f565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff16151515158152505090506000808260400151156110e25782600001519150826020015190506110ed565b600054915060015490505b612710828602816110fa57fe5b0487111561110e5760009350505050611137565b6127108186028161111b57fe5b0486111561112f5760009350505050611137565b600193505050505b949350505050565b604051806060016040528060008152602001600081526020016000151581525090565b600081359050611171816115f7565b92915050565b600081519050611186816115f7565b92915050565b60008135905061119b8161160e565b92915050565b6000815190506111b08161160e565b92915050565b6000813590506111c581611625565b92915050565b6000602082840312156111dd57600080fd5b60006111eb84828501611162565b91505092915050565b60006020828403121561120657600080fd5b600061121484828501611177565b91505092915050565b6000806040838503121561123057600080fd5b600061123e85828601611162565b925050602061124f85828601611162565b9150509250929050565b6000806040838503121561126c57600080fd5b600061127a85828601611162565b925050602061128b8582860161118c565b9150509250929050565b6000806000606084860312156112aa57600080fd5b60006112b886828701611162565b93505060206112c9868287016111b6565b92505060406112da868287016111b6565b9150509250925092565b60008060008060008060c087890312156112fd57600080fd5b600061130b89828a01611162565b965050602061131c89828a016111b6565b955050604061132d89828a016111b6565b945050606061133e89828a016111b6565b935050608061134f89828a016111b6565b92505060a061136089828a016111b6565b9150509295509295509295565b60006020828403121561137f57600080fd5b600061138d848285016111a1565b91505092915050565b6000602082840312156113a857600080fd5b60006113b6848285016111b6565b91505092915050565b600080600080600060a086880312156113d757600080fd5b60006113e5888289016111b6565b95505060206113f6888289016111b6565b9450506040611407888289016111b6565b9350506060611418888289016111b6565b9250506080611429888289016111b6565b9150509295509295909350565b61143f816115af565b82525050565b61144e816115c1565b82525050565b6000611461600b8361159e565b91507f21617574686f72697a65640000000000000000000000000000000000000000006000830152602082019050919050565b61149d816115ed565b82525050565b60006020820190506114b86000830184611436565b92915050565b600060a0820190506114d36000830188611436565b6114e06020830187611494565b6114ed6040830186611494565b6114fa6060830185611494565b6115076080830184611494565b9695505050505050565b60006020820190506115266000830184611445565b92915050565b6000602082019050818103600083015261154581611454565b9050919050565b60006020820190506115616000830184611494565b92915050565b600060608201905061157c6000830186611494565b6115896020830185611494565b6115966040830184611445565b949350505050565b600082825260208201905092915050565b60006115ba826115cd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b611600816115af565b811461160b57600080fd5b50565b611617816115c1565b811461162257600080fd5b50565b61162e816115ed565b811461163957600080fd5b5056fea2646970667358221220ba223365900f7dc013e6bd5d3220a10f381b3aca3c475bde905e2b9002af90a864736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636e905e17116100a25780639abf315b116100715780639abf315b146102de578063ab033ea9146102fa578063c70fa00b14610316578063c935433714610346578063d4a22bde1461037857610115565b80636e905e17146102565780637d9699321461028657806388a8d602146102a4578063950b3d73146102c257610115565b80631afdc5a2116100e95780631afdc5a21461019e57806327fff0db146101ba578063458add98146101ea5780634a5d09431461021a5780635aa6e6751461023857610115565b8062fd31f01461011a578063039aa2501461013657806306bfaf04146101525780630ef5ee0214610182575b600080fd5b610134600480360381019061012f9190611295565b610394565b005b610150600480360381019061014b91906111cb565b610531565b005b61016c600480360381019061016791906112e4565b610679565b6040516101799190611511565b60405180910390f35b61019c60048036038101906101979190611396565b6106ce565b005b6101b860048036038101906101b3919061121d565b6107ce565b005b6101d460048036038101906101cf91906111cb565b610938565b6040516101e191906114a3565b60405180910390f35b61020460048036038101906101ff91906111cb565b61096b565b6040516102119190611511565b60405180910390f35b61022261098b565b60405161022f919061154c565b60405180910390f35b610240610991565b60405161024d91906114a3565b60405180910390f35b610270600480360381019061026b91906111cb565b6109b7565b60405161027d9190611511565b60405180910390f35b61028e610a0e565b60405161029b919061154c565b60405180910390f35b6102ac610a14565b6040516102b991906114a3565b60405180910390f35b6102dc60048036038101906102d79190611396565b610a3a565b005b6102f860048036038101906102f39190611259565b610b3a565b005b610314600480360381019061030f91906111cb565b610c7d565b005b610330600480360381019061032b91906113bf565b610d8b565b60405161033d9190611511565b60405180910390f35b610360600480360381019061035b91906111cb565b610dab565b60405161036f93929190611567565b60405180910390f35b610392600480360381019061038d91906111cb565b610de2565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061043d5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61047c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104739061152c565b60405180910390fd5b612710811061048a57600080fd5b612710821061049857600080fd5b604051806060016040528083815260200182815260200160011515815250600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050505050565b808073ffffffffffffffffffffffffffffffffffffffff1663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057857600080fd5b505afa15801561058c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b091906111f4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106149061152c565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156106b457600080fd5b6106c2878787878787610ef0565b90509695505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107775750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad9061152c565b60405180910390fd5b61271081106107c457600080fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108775750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad9061152c565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60005481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60015481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ae35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061152c565b60405180910390fd5b6127108110610b3057600080fd5b8060008190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610be35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061152c565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d049061152c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4757600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610d9f818888888888610ef0565b91505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061152c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eac57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f9e57610f968888888661103d565b915050611033565b8073ffffffffffffffffffffffffffffffffffffffff166345901be089898989896040518663ffffffff1660e01b8152600401610fdf9594939291906114be565b60206040518083038186803b158015610ff757600080fd5b505afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f919061136d565b9150505b9695505050505050565b600061104761113f565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff16151515158152505090506000808260400151156110e25782600001519150826020015190506110ed565b600054915060015490505b612710828602816110fa57fe5b0487111561110e5760009350505050611137565b6127108186028161111b57fe5b0486111561112f5760009350505050611137565b600193505050505b949350505050565b604051806060016040528060008152602001600081526020016000151581525090565b600081359050611171816115f7565b92915050565b600081519050611186816115f7565b92915050565b60008135905061119b8161160e565b92915050565b6000815190506111b08161160e565b92915050565b6000813590506111c581611625565b92915050565b6000602082840312156111dd57600080fd5b60006111eb84828501611162565b91505092915050565b60006020828403121561120657600080fd5b600061121484828501611177565b91505092915050565b6000806040838503121561123057600080fd5b600061123e85828601611162565b925050602061124f85828601611162565b9150509250929050565b6000806040838503121561126c57600080fd5b600061127a85828601611162565b925050602061128b8582860161118c565b9150509250929050565b6000806000606084860312156112aa57600080fd5b60006112b886828701611162565b93505060206112c9868287016111b6565b92505060406112da868287016111b6565b9150509250925092565b60008060008060008060c087890312156112fd57600080fd5b600061130b89828a01611162565b965050602061131c89828a016111b6565b955050604061132d89828a016111b6565b945050606061133e89828a016111b6565b935050608061134f89828a016111b6565b92505060a061136089828a016111b6565b9150509295509295509295565b60006020828403121561137f57600080fd5b600061138d848285016111a1565b91505092915050565b6000602082840312156113a857600080fd5b60006113b6848285016111b6565b91505092915050565b600080600080600060a086880312156113d757600080fd5b60006113e5888289016111b6565b95505060206113f6888289016111b6565b9450506040611407888289016111b6565b9350506060611418888289016111b6565b9250506080611429888289016111b6565b9150509295509295909350565b61143f816115af565b82525050565b61144e816115c1565b82525050565b6000611461600b8361159e565b91507f21617574686f72697a65640000000000000000000000000000000000000000006000830152602082019050919050565b61149d816115ed565b82525050565b60006020820190506114b86000830184611436565b92915050565b600060a0820190506114d36000830188611436565b6114e06020830187611494565b6114ed6040830186611494565b6114fa6060830185611494565b6115076080830184611494565b9695505050505050565b60006020820190506115266000830184611445565b92915050565b6000602082019050818103600083015261154581611454565b9050919050565b60006020820190506115616000830184611494565b92915050565b600060608201905061157c6000830186611494565b6115896020830185611494565b6115966040830184611445565b949350505050565b600082825260208201905092915050565b60006115ba826115cd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b611600816115af565b811461160b57600080fd5b50565b611617816115c1565b811461162257600080fd5b50565b61162e816115ed565b811461163957600080fd5b5056fea2646970667358221220ba223365900f7dc013e6bd5d3220a10f381b3aca3c475bde905e2b9002af90a864736f6c634300060c0033

Deployed Bytecode Sourcemap

1744:4633:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:345;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3908:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4655:363;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3245:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3778:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2061:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2109:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1862:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1995:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4183:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1900:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3055:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4037:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2727:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4313:334;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1936:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2891:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3425:345;2335:10;;;;;;;;;;;2321:24;;:10;:24;;;:52;;;;2363:10;;;;;;;;;;;2349:24;;:10;:24;;;2321:52;2313:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1849:6:::1;3600:15;:25;3592:34;;;::::0;::::1;;1849:6;3645:17;:27;3637:36;;;::::0;::::1;;3714:48;;;;;;;;3721:17;3714:48;;;;3740:15;3714:48;;;;3757:4;3714:48;;;;::::0;3684:16:::1;:27;3701:9;3684:27;;;;;;;;;;;;;;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:345:::0;;;:::o;3908:121::-;3967:9;2499:8;2487:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2473:43;;:10;:43;;;2465:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4016:5:::1;3989:13;:24;4003:9;3989:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3908:121:::0;;:::o;4655:363::-;4867:4;4912:1;4892:22;;:8;:22;;;;4884:31;;;;;;4935:75;4946:8;4956:6;4964:4;4970:11;4983:15;5000:9;4935:10;:75::i;:::-;4928:82;;4655:363;;;;;;;;:::o;3245:172::-;2335:10;;;;;;;;;;;2321:24;;:10;:24;;;:52;;;;2363:10;;;;;;;;;;;2349:24;;:10;:24;;;2321:52;2313:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1849:6:::1;3340:15;:25;3332:34;;;::::0;::::1;;3394:15;3377:14;:32;;;;3245:172:::0;:::o;3778:122::-;2335:10;;;;;;;;;;;2321:24;;:10;:24;;;:52;;;;2363:10;;;;;;;;;;;2349:24;;:10;:24;;;2321:52;2313:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3886:6:::1;3866;:17;3873:9;3866:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3778:122:::0;;:::o;2061:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2109:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;1862:31::-;;;;:::o;1995:25::-;;;;;;;;;;;;;:::o;4183:122::-;4248:4;4273:13;:24;4287:9;4273:24;;;;;;;;;;;;;;;;;;;;;;;;;4272:25;4265:32;;4183:122;;;:::o;1900:29::-;;;;:::o;2027:25::-;;;;;;;;;;;;;:::o;3055:182::-;2335:10;;;;;;;;;;;2321:24;;:10;:24;;;:52;;;;2363:10;;;;;;;;;;;2349:24;;:10;:24;;;2321:52;2313:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1849:6:::1;3154:17;:27;3146:36;;;::::0;::::1;;3212:17;3193:16;:36;;;;3055:182:::0;:::o;4037:138::-;2335:10;;;;;;;;;;;2321:24;;:10;:24;;;:52;;;;2363:10;;;;;;;;;;;2349:24;;:10;:24;;;2321:52;2313:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;4159:8:::1;4132:13;:24;4146:9;4132:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4037:138:::0;;:::o;2727:156::-;2222:10;;;;;;;;;;;2208:24;;:10;:24;;;2200:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2837:1:::1;2814:25;;:11;:25;;;;2806:34;;;::::0;::::1;;2864:11;2851:10;;:24;;;;;;;;;;;;;;;;;;2727:156:::0;:::o;4313:334::-;4498:4;4515:16;4534:10;4515:29;;4564:75;4575:8;4585:6;4593:4;4599:11;4612:15;4629:9;4564:10;:75::i;:::-;4557:82;;;4313:334;;;;;;;:::o;1936:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2891:156::-;2222:10;;;;;;;;;;;2208:24;;:10;:24;;;2200:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;3001:1:::1;2978:25;;:11;:25;;;;2970:34;;;::::0;::::1;;3028:11;3015:10;;:24;;;;;;;;;;;;;;;;;;2891:156:::0;:::o;5026:523::-;5243:4;5260:19;5282:6;:16;5289:8;5282:16;;;;;;;;;;;;;;;;;;;;;;;;;5260:38;;5338:1;5315:25;;:11;:25;;;5311:120;;;5364:55;5385:8;5395:6;5403:4;5409:9;5364:20;:55::i;:::-;5357:62;;;;;5311:120;5469:11;5450:37;;;5488:8;5498:6;5506:4;5512:11;5525:15;5450:91;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5443:98;;;5026:523;;;;;;;;;:::o;5557:817::-;5723:4;5740:20;;:::i;:::-;5763:16;:26;5780:8;5763:26;;;;;;;;;;;;;;;5740:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5800:25;5836:23;5874:6;:13;;;5870:259;;;5924:6;:23;;;5904:43;;5980:6;:21;;;5962:39;;5870:259;;;6054:16;;6034:36;;6103:14;;6085:32;;5870:259;1849:6;6170:17;6157:10;:30;6156:42;;;;;;6145:7;:54;6141:99;;;6223:5;6216:12;;;;;;;6141:99;1849:6;6277:15;6264:10;:28;6263:40;;;;;;6254:5;:50;6250:95;;;6328:5;6321:12;;;;;;;6250:95;6362:4;6355:11;;;;;5557:817;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:134::-;;226:6;220:13;211:22;;238:33;265:5;238:33;:::i;:::-;205:71;;;;:::o;283:124::-;;360:6;347:20;338:29;;372:30;396:5;372:30;:::i;:::-;332:75;;;;:::o;414:128::-;;495:6;489:13;480:22;;507:30;531:5;507:30;:::i;:::-;474:68;;;;:::o;549:130::-;;629:6;616:20;607:29;;641:33;668:5;641:33;:::i;:::-;601:78;;;;:::o;686:241::-;;790:2;778:9;769:7;765:23;761:32;758:2;;;806:1;803;796:12;758:2;841:1;858:53;903:7;894:6;883:9;879:22;858:53;:::i;:::-;848:63;;820:97;752:175;;;;:::o;934:263::-;;1049:2;1037:9;1028:7;1024:23;1020:32;1017:2;;;1065:1;1062;1055:12;1017:2;1100:1;1117:64;1173:7;1164:6;1153:9;1149:22;1117:64;:::i;:::-;1107:74;;1079:108;1011:186;;;;:::o;1204:366::-;;;1325:2;1313:9;1304:7;1300:23;1296:32;1293:2;;;1341:1;1338;1331:12;1293:2;1376:1;1393:53;1438:7;1429:6;1418:9;1414:22;1393:53;:::i;:::-;1383:63;;1355:97;1483:2;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1462:98;1287:283;;;;;:::o;1577:360::-;;;1695:2;1683:9;1674:7;1670:23;1666:32;1663:2;;;1711:1;1708;1701:12;1663:2;1746:1;1763:53;1808:7;1799:6;1788:9;1784:22;1763:53;:::i;:::-;1753:63;;1725:97;1853:2;1871:50;1913:7;1904:6;1893:9;1889:22;1871:50;:::i;:::-;1861:60;;1832:95;1657:280;;;;;:::o;1944:491::-;;;;2082:2;2070:9;2061:7;2057:23;2053:32;2050:2;;;2098:1;2095;2088:12;2050:2;2133:1;2150:53;2195:7;2186:6;2175:9;2171:22;2150:53;:::i;:::-;2140:63;;2112:97;2240:2;2258:53;2303:7;2294:6;2283:9;2279:22;2258:53;:::i;:::-;2248:63;;2219:98;2348:2;2366:53;2411:7;2402:6;2391:9;2387:22;2366:53;:::i;:::-;2356:63;;2327:98;2044:391;;;;;:::o;2442:869::-;;;;;;;2631:3;2619:9;2610:7;2606:23;2602:33;2599:2;;;2648:1;2645;2638:12;2599:2;2683:1;2700:53;2745:7;2736:6;2725:9;2721:22;2700:53;:::i;:::-;2690:63;;2662:97;2790:2;2808:53;2853:7;2844:6;2833:9;2829:22;2808:53;:::i;:::-;2798:63;;2769:98;2898:2;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2877:98;3006:2;3024:53;3069:7;3060:6;3049:9;3045:22;3024:53;:::i;:::-;3014:63;;2985:98;3114:3;3133:53;3178:7;3169:6;3158:9;3154:22;3133:53;:::i;:::-;3123:63;;3093:99;3223:3;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3202:99;2593:718;;;;;;;;:::o;3318:257::-;;3430:2;3418:9;3409:7;3405:23;3401:32;3398:2;;;3446:1;3443;3436:12;3398:2;3481:1;3498:61;3551:7;3542:6;3531:9;3527:22;3498:61;:::i;:::-;3488:71;;3460:105;3392:183;;;;:::o;3582:241::-;;3686:2;3674:9;3665:7;3661:23;3657:32;3654:2;;;3702:1;3699;3692:12;3654:2;3737:1;3754:53;3799:7;3790:6;3779:9;3775:22;3754:53;:::i;:::-;3744:63;;3716:97;3648:175;;;;:::o;3830:743::-;;;;;;4002:3;3990:9;3981:7;3977:23;3973:33;3970:2;;;4019:1;4016;4009:12;3970:2;4054:1;4071:53;4116:7;4107:6;4096:9;4092:22;4071:53;:::i;:::-;4061:63;;4033:97;4161:2;4179:53;4224:7;4215:6;4204:9;4200:22;4179:53;:::i;:::-;4169:63;;4140:98;4269:2;4287:53;4332:7;4323:6;4312:9;4308:22;4287:53;:::i;:::-;4277:63;;4248:98;4377:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4356:98;4485:3;4504:53;4549:7;4540:6;4529:9;4525:22;4504:53;:::i;:::-;4494:63;;4464:99;3964:609;;;;;;;;:::o;4580:113::-;4663:24;4681:5;4663:24;:::i;:::-;4658:3;4651:37;4645:48;;:::o;4700:104::-;4777:21;4792:5;4777:21;:::i;:::-;4772:3;4765:34;4759:45;;:::o;4812:311::-;;4972:67;5036:2;5031:3;4972:67;:::i;:::-;4965:74;;5072:13;5068:1;5063:3;5059:11;5052:34;5114:2;5109:3;5105:12;5098:19;;4958:165;;;:::o;5131:113::-;5214:24;5232:5;5214:24;:::i;:::-;5209:3;5202:37;5196:48;;:::o;5251:222::-;;5378:2;5367:9;5363:18;5355:26;;5392:71;5460:1;5449:9;5445:17;5436:6;5392:71;:::i;:::-;5349:124;;;;:::o;5480:668::-;;5719:3;5708:9;5704:19;5696:27;;5734:71;5802:1;5791:9;5787:17;5778:6;5734:71;:::i;:::-;5816:72;5884:2;5873:9;5869:18;5860:6;5816:72;:::i;:::-;5899;5967:2;5956:9;5952:18;5943:6;5899:72;:::i;:::-;5982;6050:2;6039:9;6035:18;6026:6;5982:72;:::i;:::-;6065:73;6133:3;6122:9;6118:19;6109:6;6065:73;:::i;:::-;5690:458;;;;;;;;:::o;6155:210::-;;6276:2;6265:9;6261:18;6253:26;;6290:65;6352:1;6341:9;6337:17;6328:6;6290:65;:::i;:::-;6247:118;;;;:::o;6372:416::-;;6572:2;6561:9;6557:18;6549:26;;6622:9;6616:4;6612:20;6608:1;6597:9;6593:17;6586:47;6647:131;6773:4;6647:131;:::i;:::-;6639:139;;6543:245;;;:::o;6795:222::-;;6922:2;6911:9;6907:18;6899:26;;6936:71;7004:1;6993:9;6989:17;6980:6;6936:71;:::i;:::-;6893:124;;;;:::o;7024:432::-;;7201:2;7190:9;7186:18;7178:26;;7215:71;7283:1;7272:9;7268:17;7259:6;7215:71;:::i;:::-;7297:72;7365:2;7354:9;7350:18;7341:6;7297:72;:::i;:::-;7380:66;7442:2;7431:9;7427:18;7418:6;7380:66;:::i;:::-;7172:284;;;;;;:::o;7464:163::-;;7579:6;7574:3;7567:19;7616:4;7611:3;7607:14;7592:29;;7560:67;;;;:::o;7635:91::-;;7697:24;7715:5;7697:24;:::i;:::-;7686:35;;7680:46;;;:::o;7733:85::-;;7806:5;7799:13;7792:21;7781:32;;7775:43;;;:::o;7825:121::-;;7898:42;7891:5;7887:54;7876:65;;7870:76;;;:::o;7953:72::-;;8015:5;8004:16;;7998:27;;;:::o;8032:117::-;8101:24;8119:5;8101:24;:::i;:::-;8094:5;8091:35;8081:2;;8140:1;8137;8130:12;8081:2;8075:74;:::o;8156:111::-;8222:21;8237:5;8222:21;:::i;:::-;8215:5;8212:32;8202:2;;8258:1;8255;8248:12;8202:2;8196:71;:::o;8274:117::-;8343:24;8361:5;8343:24;:::i;:::-;8336:5;8333:35;8323:2;;8382:1;8379;8372:12;8323:2;8317:74;:::o

Swarm Source

ipfs://ba223365900f7dc013e6bd5d3220a10f381b3aca3c475bde905e2b9002af90a8

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.