Contract 0x4b7a63837c8cf56e4dcf5140c12388c24030d7df 2

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf512bc8dbc72a4a044887e39b620f25ec7c06a4cb1e84103fb33e054165aabfcDeposit110290862021-09-18 18:37:451 hr 25 mins ago0x8fe5bf74e5afbc3d8d0dc3bd8a45dbc78b40d1ba IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00081375
0x322ab854abad70fcfa44eabd5aecdfb74648df6e8ea6d5616a84b2309d954801Deposit110275732021-09-18 17:21:382 hrs 41 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00088875
0x950544ed8de888e1519d6733c1fd9512a1fb08426d7b3d8816826776b1eed0d2Withdraw110274022021-09-18 17:12:402 hrs 50 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000933025
0xab2b1c5e328a465ce4a8793d18128b9e3c6597cba2e1a62f34ecdf0ef1da226bWithdraw110273882021-09-18 17:11:582 hrs 51 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000859025
0x484dd586dbbf90b305dec28d1896ae6e7d4498e9531376eb623169072f6a0136Withdraw110273762021-09-18 17:11:222 hrs 52 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000932905
0xc5f5d6cc398b1518a44a679bb6063e1e69cb065e5aeba8c5929c51aebede4d11Deposit110273752021-09-18 17:11:192 hrs 52 mins ago0x8fe5bf74e5afbc3d8d0dc3bd8a45dbc78b40d1ba IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00081363
0x13f18a968ef949f79f0afc984e68d385d26e297499ec3a48b47fbb5ed4212230Withdraw110273602021-09-18 17:10:342 hrs 52 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000873325
0x1cb819e6af1ff691e426b3098e87654bc3b1ffd469fab0291468640ef1407990Withdraw110273512021-09-18 17:10:072 hrs 53 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000874385
0x67e4292e38d93cf0e7e172b10797b053dcacadda1c712111fe7a6f8584ea045fWithdraw110273372021-09-18 17:09:252 hrs 54 mins ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000873325
0x72d15ed5dcb750e1645d9711a264753c3f2f2f480d5519ebb15f88f749bb08f0Withdraw110271882021-09-18 17:01:583 hrs 1 min ago0x7470269c1301569c6da41469ccb0cfc8b796febe IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000898825
0xa756105f9288fe2025e2c5dfd73e25fffa94d2c3e0dcc55a33586dcd83f1d15eDeposit110267492021-09-18 16:40:013 hrs 23 mins ago0x5c24ffa6abad563a6a8cb205724eb894ffa01d6b IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00096363
0xd397359a482e3bfc883b3f5fb41d6087b3786354401bfa8f19ef7bfa7528439cWithdraw110266732021-09-18 16:36:133 hrs 27 mins ago0x5c24ffa6abad563a6a8cb205724eb894ffa01d6b IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000823825
0xabce45e47bf90bfe2351de5ae7b202b0069cb5847f8fd5f97e327addc2cd6a24Deposit110263342021-09-18 16:19:163 hrs 44 mins ago0x73658560df014622fbe4d73eba79444c2e038cf3 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00091009
0xe836c208b7347fd1f2682a2f4c08c393c9d92499e07398ea4d983db4b356d2b3Deposit110262732021-09-18 16:16:133 hrs 47 mins ago0x8ef72ae53337c17ec3dc38976ea234c1acd9a214 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00090997
0x6cce1680a7b33d5544bc64b28c9edae5bdb34a9588617c1de8e443b05a2c0d5eDeposit110262322021-09-18 16:14:103 hrs 49 mins ago0x31358858dd0c2bac7647715b08bb082e76d1640f IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000918855
0xf210a09f23f2cb674ce3e1a1c51afc2d6f5334d220644c10d7810dce6257135bWithdraw110260582021-09-18 16:05:283 hrs 57 mins ago0xd09dfbcf697a1adc8400be58e07ef471f82c0e29 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00086157
0x44f8773dfea8761adcb75d8cf57e3ae1eebf65e765927bc0286cca4eee2599d9Deposit110250692021-09-18 15:15:394 hrs 47 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00088863
0x3957f9c53c53030606c0353b605777dbaad9ab26511330ea74b04bccf10c28abDeposit110250432021-09-18 15:14:214 hrs 49 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00099317
0xcd56fb63adec811625dc5fb4db475bd91f68cc2e953bd3ef52391d2e90c9fdb4Withdraw110249882021-09-18 15:11:364 hrs 51 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000933025
0x4053645459c3bbc9d38a4388566989b14b69986ef9eb70a8fbd6fcd9f9542dd4Withdraw110249602021-09-18 15:10:124 hrs 53 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000873325
0x113c74dd4272e72cc719516a44b93f0d6372fbc5ce4b3fae1c066da83d2890ceWithdraw110248472021-09-18 15:04:334 hrs 58 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000934025
0xffb7894847a7dc2399396974082756613f298277a900f60fd676a673a6e92580Withdraw110248292021-09-18 15:03:394 hrs 59 mins ago0x4bc55a7a652c2c12a5086d19af7c605b4eb90cde IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000874385
0x49acf452dfc56afcfbf29cac1fa6ec7b5050610e1639c6d16d125edd1a19fdbeDeposit110240522021-09-18 14:24:435 hrs 38 mins ago0x9d1f34c52c30a0d003f4caa744b6f29809be02f7 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00117315
0xaa652755ef98e52e3a04e934d6e6a400a204ffdc8590730b17b1a5aedc7ffa8bDeposit110236002021-09-18 14:00:576 hrs 2 mins ago0x5302778397a10498ad08103988b0aa1926b98179 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.00087915
0x5e8835a560fbf14f37f660c3c19394bccb31439899643c98eb82f409511dbecfDeposit110235902021-09-18 14:00:276 hrs 2 mins ago0x5302778397a10498ad08103988b0aa1926b98179 IN  0x4b7a63837c8cf56e4dcf5140c12388c24030d7df0 BNB0.000993915
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MasterChef

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-02
*/

pragma solidity >=0.7.0;
pragma experimental ABIEncoderV2;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory _n, string memory _s) {
        _name = _n;
        _symbol = _s;
        _decimals = 18;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract SushiToken is ERC20("HYFI", "HYFI"), Ownable {
    using SafeMath for uint256;

    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
    }
}

contract MasterChef is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    struct UserInfo {
        uint256 amount;     // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
    }

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

    SushiToken public sushi;
    uint256 public sushiPerBlock;

    uint public constant blocksOneWeek = 201600; // 7 * 24 * 60 * 20; 14days
    uint public constant initBlockReward = 574e17;

    uint public constant blocksForCut = 403200; // 14 * 24 * 60 * 20; 14days

    PoolInfo[] public poolInfo;
    mapping (uint256 => mapping (address => UserInfo)) public userInfo;
    uint256 public totalAllocPoint = 0;

    uint256 public startBlock;
    uint public normalBlock;
    uint256 public allEndBlock;

    address public devaddr;

    uint[] public rewardOfDay;

    address public burnAddress = 0x0000000000000000000000000000000000000001;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);

    struct HarvestInfo {
        uint harvestBlock;
        uint lockedBalance;
    }

    mapping (uint => mapping (address => HarvestInfo)) public harvestInfos;

    address public investorAddr;
    address public ecosystemAddr;
    address public treasuryAddr;
    
    constructor(address _sushi, uint256 _startBlock, address _devaddr, address _investorAddr, address _ecosystemAddr, address _treasuryAddr) {
        require(_devaddr != address(0));
        require(_investorAddr != address(0));
        require(_ecosystemAddr != address(0));
        require(_treasuryAddr != address(0));
        devaddr = _devaddr;
        investorAddr = _investorAddr;
        ecosystemAddr = _ecosystemAddr;
        treasuryAddr = _treasuryAddr;

        require(ERC20(_sushi).decimals() >= 0, "!erc20");
        sushi = SushiToken(_sushi);
        sushiPerBlock = 1;
        startBlock = _startBlock;
        normalBlock = _startBlock.add(blocksOneWeek.mul(8)); // 8 weeks
        allEndBlock = _startBlock.add(blocksOneWeek.mul(104)); // 2 years

        rewardOfDay = new uint[](9); 
        rewardOfDay[0] = initBlockReward;
        for (uint i = 1; i <= 3; i++) {
            rewardOfDay[i] = rewardOfDay[i-1].mul(80).div(100);
        }
        for (uint i = 4; i <= 8; i++) {
            rewardOfDay[i] = rewardOfDay[i-1].mul(70).div(100);
        }
    }

    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    function setInvestorAddr(address a) public onlyOwner {
        require(a != address(0));
        investorAddr = a;
    }

    function setEcosystemAddr(address a) public onlyOwner {
        require(a != address(0));
        ecosystemAddr = a;
    }

    function setTreasuryAddr(address a) public onlyOwner {
        require(a != address(0));
        treasuryAddr = a;
    }

    function add(uint256 _allocPoint, address _lpToken, bool _withUpdate) public onlyOwner {
        require(IERC20(_lpToken).totalSupply() >= 0, "!erc20");
        for (uint pid = 0; pid < poolInfo.length; pid++) {
            PoolInfo storage pool = poolInfo[pid];
            require(_lpToken != address(pool.lpToken), "!dup");
        }
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
        totalAllocPoint = totalAllocPoint.add(_allocPoint);
        poolInfo.push(PoolInfo({
            lpToken: IERC20(_lpToken),
            allocPoint: _allocPoint,
            lastRewardBlock: lastRewardBlock,
            accSushiPerShare: 0
        }));
    }

    function set(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);
        poolInfo[_pid].allocPoint = _allocPoint;
    }

    function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) {
        if (_from >= _to) {
            return 0;
        }
        if (_from < startBlock || _from >= allEndBlock) {
            return 0;
        }
        if (_to > allEndBlock) {
            _to = allEndBlock;
        }
        if (_from >= normalBlock) {
            return rewardOfDay[8].mul(_to.sub(_from));
        }
        uint total = 0;
        if (_to >= normalBlock) {
            total += rewardOfDay[8].mul(_to.sub(normalBlock));     
            _to = normalBlock;
        }
        _from = _from.sub(startBlock);
        _to = _to.sub(startBlock);

        uint weekCount = _from.div(blocksOneWeek); // from 0
        uint weekEndBlock = 0;
        uint blockReward = 0;
        while (_from < _to) {
            if (weekCount > 7) {
                break;
            }
            blockReward = rewardOfDay[weekCount];
            weekEndBlock = blocksOneWeek.mul(weekCount.add(1));
            weekCount = weekCount.add(1);
            if (weekEndBlock <= _to) {
                total = total.add(blockReward.mul(weekEndBlock.sub(_from)));
            } else {
                total = total.add(blockReward.mul(_to.sub(_from)));
            }
            _from = weekEndBlock;
        }
        return total;
    }

    function pendingSushi(uint256 _pid, address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accSushiPerShare = pool.accSushiPerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
            uint256 sushiReward = multiplier.mul(sushiPerBlock).mul(pool.allocPoint).div(totalAllocPoint);
            accSushiPerShare = accSushiPerShare.add(sushiReward.mul(1e12).div(lpSupply));
        }
        uint p = user.amount.mul(accSushiPerShare).div(1e12).sub(user.rewardDebt);

        HarvestInfo storage haInfo = harvestInfos[_pid][_user];
        return p.add(haInfo.lockedBalance);
    }

    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
        uint256 sushiReward = multiplier.mul(sushiPerBlock).mul(pool.allocPoint).div(totalAllocPoint);

        sushi.mint(devaddr, sushiReward.mul(13).div(70));
        sushi.mint(investorAddr, sushiReward.mul(5).div(70));
        sushi.mint(ecosystemAddr, sushiReward.mul(5).div(70));
        sushi.mint(treasuryAddr, sushiReward.mul(5).div(70));

        sushi.mint(address(this), sushiReward);
        pool.accSushiPerShare = pool.accSushiPerShare.add(sushiReward.mul(1e12).div(lpSupply));
        pool.lastRewardBlock = block.number;
    }

    function deposit(uint256 _pid, uint256 _amount) public {
        address account = msg.sender;

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        HarvestInfo storage haInfo = harvestInfos[_pid][msg.sender];

        updatePool(_pid);
        if (user.amount > 0) {
            uint256 pending = user.amount.mul(pool.accSushiPerShare).div(1e12).sub(user.rewardDebt);
            lockSushi(_pid, account, pending);
            if (block.number.sub(haInfo.harvestBlock) >= blocksForCut) {
                _harvest(_pid);
            }
        } else {
            haInfo.harvestBlock = block.number;
        }
        pool.lpToken.safeTransferFrom(account, address(this), _amount);
        user.amount = user.amount.add(_amount);
        user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12);

        emit Deposit(account, _pid, _amount);
    }

    function canHarvestAll(uint _pid) public view returns (bool) {
        HarvestInfo storage haInfo = harvestInfos[_pid][msg.sender];
        uint lastHarvestBlock = haInfo.harvestBlock;
        return block.number.sub(lastHarvestBlock) >= blocksForCut;
    }

    function canHarvestAllBlock(uint _pid, address user) public view returns (uint) {
        HarvestInfo storage haInfo = harvestInfos[_pid][user];
        uint lastHarvestBlock = haInfo.harvestBlock;
        return lastHarvestBlock.add(blocksForCut);
    }

    function lockedBalanceOf(uint _pid) public view returns (uint) {
        HarvestInfo storage haInfo = harvestInfos[_pid][msg.sender];
        return haInfo.lockedBalance;
    }

    function _harvest(uint _pid) internal {
        HarvestInfo storage haInfo = harvestInfos[_pid][msg.sender];
        uint lastHarvestBlock = haInfo.harvestBlock;
        require(lastHarvestBlock > 0);

        if (block.number.sub(lastHarvestBlock) >= blocksForCut) {
            unlockSushi(_pid, msg.sender, false);
        } else {
            unlockSushi(_pid, msg.sender, true);
        }
    }

    function withdraw(uint256 _pid, uint256 _amount) public {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        require(user.amount >= _amount, "withdraw: not good");
        updatePool(_pid);
        uint256 pending = user.amount.mul(pool.accSushiPerShare).div(1e12).sub(user.rewardDebt);
        lockSushi(_pid, msg.sender, pending);
        user.amount = user.amount.sub(_amount);
        user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12);
        pool.lpToken.safeTransfer(address(msg.sender), _amount);
        _harvest(_pid);
        emit Withdraw(msg.sender, _pid, _amount);
    }

    function emergencyWithdraw(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        pool.lpToken.safeTransfer(address(msg.sender), user.amount);
        emit EmergencyWithdraw(msg.sender, _pid, user.amount);
        user.amount = 0;
        user.rewardDebt = 0;
    }

    function lockSushi(uint _pid, address _to, uint256 _amount) internal {
        HarvestInfo storage haInfo = harvestInfos[_pid][_to];
        uint256 sushiBal = sushi.balanceOf(address(this));
        uint amt = 0;
        if (_amount > sushiBal) {
            amt = sushiBal;
        } else {
            amt = _amount;
        }
        haInfo.lockedBalance = haInfo.lockedBalance.add(_amount);
    }

    function unlockSushi(uint _pid, address _to, bool cut) internal {
        uint256 sushiBal = sushi.balanceOf(address(this));
        uint amt = 0;
        HarvestInfo storage haInfo = harvestInfos[_pid][_to];
        uint _amount = haInfo.lockedBalance;

        haInfo.harvestBlock = block.number;
        haInfo.lockedBalance = 0;

        if (_amount > sushiBal) {
            amt = sushiBal;
        } else {
            amt = _amount;
        }
        uint burnAmt = 0;
        if (cut) {
            burnAmt = amt.div(2);
            amt = amt.sub(burnAmt);
        }
        if (amt > 0) {
            sushi.transfer(_to, amt);
        }
        if (burnAmt > 0) {
            sushi.transfer(burnAddress, burnAmt);
        }
    }

    function dev(address _devaddr) public {
        require(msg.sender == devaddr, "dev: wut?");
        devaddr = _devaddr;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_sushi","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"address","name":"_investorAddr","type":"address"},{"internalType":"address","name":"_ecosystemAddr","type":"address"},{"internalType":"address","name":"_treasuryAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksForCut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksOneWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"canHarvestAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"canHarvestAllBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"harvestInfos","outputs":[{"internalType":"uint256","name":"harvestBlock","type":"uint256"},{"internalType":"uint256","name":"lockedBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"lockedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"normalBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingSushi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accSushiPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardOfDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setEcosystemAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setInvestorAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setTreasuryAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushi","outputs":[{"internalType":"contract SushiToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushiPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600555600b80546001600160a01b03191660011790553480156200002957600080fd5b506040516200282b3803806200282b8339810160408190526200004c916200050c565b6000620000586200038e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038416620000b657600080fd5b6001600160a01b038316620000ca57600080fd5b6001600160a01b038216620000de57600080fd5b6001600160a01b038116620000f257600080fd5b600980546001600160a01b03199081166001600160a01b0387811691909117909255600d80548216868416179055600e80548216858416179055600f80549091168383161790556040805163313ce56760e01b8152905160009289169163313ce567916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b0919062000583565b60ff161015620001dd5760405162461bcd60e51b8152600401620001d49062000674565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0388161781556002556006859055620002356200022062031380600862000392602090811b6200164a17901c565b86620003db60201b6200168b1790919060201c565b600755620002586200022062031380606862000392602090811b6200164a17901c565b6008556040805160098082526101408201909252906020820161012080368337505081516200028f92600a92506020019062000488565b5068031c95c3e1bb6c0000600a600081548110620002a957fe5b60009182526020909120015560015b600381116200033457620003116064620002fd6050600a6001860381548110620002de57fe5b90600052602060002001546200039260201b6200164a1790919060201c565b6200040360201b620016b01790919060201c565b600a82815481106200031f57fe5b600091825260209091200155600101620002b8565b5060045b6008811162000381576200035e6064620002fd6046600a6001860381548110620002de57fe5b600a82815481106200036c57fe5b60009182526020909120015560010162000338565b5050505050505062000694565b3390565b600082620003a357506000620003d5565b82820282848281620003b157fe5b0414620003d25760405162461bcd60e51b8152600401620001d49062000633565b90505b92915050565b600082820183811015620003d25760405162461bcd60e51b8152600401620001d490620005fc565b6000620003d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200044d60201b60201c565b60008183620004715760405162461bcd60e51b8152600401620001d49190620005a6565b5060008385816200047e57fe5b0495945050505050565b828054828255906000526020600020908101928215620004c6579160200282015b82811115620004c6578251825591602001919060010190620004a9565b50620004d4929150620004d8565b5090565b5b80821115620004d45760008155600101620004d9565b80516001600160a01b03811681146200050757600080fd5b919050565b60008060008060008060c0878903121562000525578182fd5b6200053087620004ef565b9550602087015194506200054760408801620004ef565b93506200055760608801620004ef565b92506200056760808801620004ef565b91506200057760a08801620004ef565b90509295509295509295565b60006020828403121562000595578081fd5b815160ff81168114620003d2578182fd5b6000602080835283518082850152825b81811015620005d457858101830151858201604001528201620005b6565b81811115620005e65783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526006908201526502165726332360d41b604082015260600190565b61218780620006a46000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370d5ae0511610130578063a7e05b9c116100b8578063d49e77cd1161007c578063d49e77cd1461043f578063dcad740914610447578063e2bbb1581461045a578063f2fde38b1461046d578063fc6e2b3f1461048057610232565b8063a7e05b9c146103e9578063acc4cc50146103fc578063b0bcf42a14610404578063c12c93461461040c578063cce412a61461041f57610232565b80638da5cb5b116100ff5780638da5cb5b1461039d5780638dbb1e3a146103a557806393ed013d146103b857806393f1a40b146103c057806397e9a4c9146103e157610232565b806370d5ae0514610367578063715018a61461036f5780638bab0851146103775780638d88a90e1461038a57610232565b806334e94d0a116101be578063588d2baf11610182578063588d2baf1461032957806358bc8e221461033157806360a2a0dd14610344578063630b5ba11461034c57806364482f791461035457610232565b806334e94d0a146102e0578063441a3e70146102e857806348cd4cb1146102fb57806351eb05a6146103035780635312ea8e1461031657610232565b80631526fe27116102055780631526fe271461028757806317caf6f1146102aa578063195426ec146102b25780631eaaa045146102c557806330d9a62a146102d857610232565b8063081e3eda146102375780630a087903146102555780630c5c2e781461026a5780630f51f8ff14610272575b600080fd5b61023f610493565b60405161024c9190612100565b60405180910390f35b61025d610499565b60405161024c9190611e4a565b61023f6104a8565b610285610280366004611d10565b6104ae565b005b61029a610295366004611d46565b610521565b60405161024c9493929190611ea6565b61023f610565565b61023f6102c0366004611d76565b61056b565b6102856102d3366004611da1565b61071f565b61025d61096e565b61023f61097d565b6102856102f6366004611de0565b610983565b61023f610ab7565b610285610311366004611d46565b610abd565b610285610324366004611d46565b610e3f565b61023f610edb565b61023f61033f366004611d46565b610ee2565b61023f610f05565b610285610f0c565b610285610362366004611e01565b610f2f565b61025d610fdd565b610285610fec565b61023f610385366004611d76565b61106b565b610285610398366004611d10565b6110a5565b61025d6110f1565b61023f6103b3366004611de0565b611100565b61025d61128d565b6103d36103ce366004611d76565b61129c565b60405161024c929190612109565b61023f6112c0565b6102856103f7366004611d10565b6112cd565b61025d611337565b61023f611346565b6103d361041a366004611d76565b61134c565b61043261042d366004611d46565b611370565b60405161024c9190611e9b565b61025d6113a3565b610285610455366004611d10565b6113b2565b610285610468366004611de0565b61141c565b61028561047b366004611d10565b611573565b61023f61048e366004611d46565b611629565b60035490565b6001546001600160a01b031681565b60075481565b6104b66116f2565b6000546001600160a01b039081169116146104ec5760405162461bcd60e51b81526004016104e390611ffe565b60405180910390fd5b6001600160a01b0381166104ff57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6003818154811061053157600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60055481565b6000806003848154811061057b57fe5b60009182526020808320878452600480835260408086206001600160a01b038a8116885294528086209482029092016003810154815493516370a0823160e01b815291975094959392909216916370a08231916105da91309101611e4a565b60206040518083038186803b1580156105f257600080fd5b505afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190611d5e565b905083600201544311801561063e57508015155b156106aa576000610653856002015443611100565b90506000610686600554610680886001015461067a6002548761164a90919063ffffffff16565b9061164a565b906116b0565b90506106a561069e846106808464e8d4a5100061164a565b859061168b565b935050505b60006106da84600101546106d464e8d4a5100061068087896000015461164a90919063ffffffff16565b906116f6565b6000898152600c602090815260408083206001600160a01b038c168452909152902060018101549192509061071090839061168b565b96505050505050505b92915050565b6107276116f2565b6000546001600160a01b039081169116146107545760405162461bcd60e51b81526004016104e390611ffe565b6000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c79190611d5e565b10156107e55760405162461bcd60e51b81526004016104e3906120e0565b60005b60035481101561084a5760006003828154811061080157fe5b6000918252602090912060049091020180549091506001600160a01b03858116911614156108415760405162461bcd60e51b81526004016104e390611f45565b506001016107e8565b50801561085957610859610f0c565b6000600654431161086c5760065461086e565b435b60055490915061087e908561168b565b600555604080516080810182526001600160a01b0394851681526020810195865290810191825260006060820181815260038054600181018255925291517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600490920291820180546001600160a01b031916919096161790945593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c840155517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d8301555090517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e90910155565b600f546001600160a01b031681565b60085481565b60006003838154811061099257fe5b60009182526020808320868452600480835260408086203387529093529190932080549290910290920192508311156109dd5760405162461bcd60e51b81526004016104e39061206a565b6109e684610abd565b6000610a1482600101546106d464e8d4a510006106808760030154876000015461164a90919063ffffffff16565b9050610a21853383611738565b8154610a2d90856116f6565b8083556003840154610a4a9164e8d4a5100091610680919061164a565b60018301558254610a65906001600160a01b0316338661180b565b610a6e85611866565b84336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56886604051610aa89190612100565b60405180910390a35050505050565b60065481565b600060038281548110610acc57fe5b9060005260206000209060040201905080600201544311610aed5750610e3c565b80546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b1d903090600401611e4a565b60206040518083038186803b158015610b3557600080fd5b505afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190611d5e565b905080610b81575043600290910155610e3c565b6000610b91836002015443611100565b90506000610bb8600554610680866001015461067a6002548761164a90919063ffffffff16565b6001546009549192506001600160a01b03908116916340c10f199116610be4604661068086600d61164a565b6040518363ffffffff1660e01b8152600401610c01929190611e82565b600060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b5050600154600d546001600160a01b0391821693506340c10f19925016610c5c604661068086600561164a565b6040518363ffffffff1660e01b8152600401610c79929190611e82565b600060405180830381600087803b158015610c9357600080fd5b505af1158015610ca7573d6000803e3d6000fd5b5050600154600e546001600160a01b0391821693506340c10f19925016610cd4604661068086600561164a565b6040518363ffffffff1660e01b8152600401610cf1929190611e82565b600060405180830381600087803b158015610d0b57600080fd5b505af1158015610d1f573d6000803e3d6000fd5b5050600154600f546001600160a01b0391821693506340c10f19925016610d4c604661068086600561164a565b6040518363ffffffff1660e01b8152600401610d69929190611e82565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50506001546040516340c10f1960e01b81526001600160a01b0390911692506340c10f199150610dcd9030908590600401611e82565b600060405180830381600087803b158015610de757600080fd5b505af1158015610dfb573d6000803e3d6000fd5b50505050610e29610e1e8461068064e8d4a510008561164a90919063ffffffff16565b60038601549061168b565b6003850155505043600290920191909155505b50565b600060038281548110610e4e57fe5b60009182526020808320858452600480835260408086203380885294529094208054949093020180549094509192610e90926001600160a01b0316919061180b565b8054604051849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059591610ec491612100565b60405180910390a360008082556001909101555050565b6203138081565b6000818152600c602090815260408083203384529091529020600101545b919050565b6206270081565b60035460005b81811015610f2b57610f2381610abd565b600101610f12565b5050565b610f376116f2565b6000546001600160a01b03908116911614610f645760405162461bcd60e51b81526004016104e390611ffe565b8015610f7257610f72610f0c565b610faf82610fa960038681548110610f8657fe5b9060005260206000209060040201600101546005546116f690919063ffffffff16565b9061168b565b6005819055508160038481548110610fc357fe5b906000526020600020906004020160010181905550505050565b600b546001600160a01b031681565b610ff46116f2565b6000546001600160a01b039081169116146110215760405162461bcd60e51b81526004016104e390611ffe565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000828152600c602090815260408083206001600160a01b03851684529091528120805461109c816206270061168b565b95945050505050565b6009546001600160a01b031633146110cf5760405162461bcd60e51b81526004016104e390611f9a565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600081831061111157506000610719565b60065483108061112357506008548310155b1561113057506000610719565b6008548211156111405760085491505b60075483106111845761117d61115683856116f6565b600a60088154811061116457fe5b906000526020600020015461164a90919063ffffffff16565b9050610719565b600060075483106111ae576111a7611156600754856116f690919063ffffffff16565b6007549350015b6006546111bc9085906116f6565b93506111d3600654846116f690919063ffffffff16565b925060006111e485620313806116b0565b90506000805b8587101561128257600783111561120057611282565b600a838154811061120d57fe5b600091825260209091200154905061123361122984600161168b565b620313809061164a565b915061124083600161168b565b92508582116112675761126061069e611259848a6116f6565b839061164a565b935061127a565b61127761069e611259888a6116f6565b93505b8196506111ea565b509195945050505050565b600e546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b68031c95c3e1bb6c000081565b6112d56116f2565b6000546001600160a01b039081169116146113025760405162461bcd60e51b81526004016104e390611ffe565b6001600160a01b03811661131557600080fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031681565b60025481565b600c6020908152600092835260408084209091529082529020805460019091015482565b6000818152600c60209081526040808320338452909152812080546206270061139943836116f6565b1015949350505050565b6009546001600160a01b031681565b6113ba6116f2565b6000546001600160a01b039081169116146113e75760405162461bcd60e51b81526004016104e390611ffe565b6001600160a01b0381166113fa57600080fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600033905060006003848154811061143057fe5b6000918252602080832087845260048083526040808620338088529085528187208b8852600c8652828820918852945290942092909302909201925061147586610abd565b8154156114dd5760006114aa83600101546106d464e8d4a510006106808860030154886000015461164a90919063ffffffff16565b90506114b7878683611738565b815462062700906114c99043906116f6565b106114d7576114d787611866565b506114e1565b4381555b82546114f8906001600160a01b03168530886118bb565b8154611504908661168b565b80835560038401546115219164e8d4a5100091610680919061164a565b826001018190555085846001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15876040516115639190612100565b60405180910390a3505050505050565b61157b6116f2565b6000546001600160a01b039081169116146115a85760405162461bcd60e51b81526004016104e390611ffe565b6001600160a01b0381166115ce5760405162461bcd60e51b81526004016104e390611eff565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a818154811061163957600080fd5b600091825260209091200154905081565b60008261165957506000610719565b8282028284828161166657fe5b04146116845760405162461bcd60e51b81526004016104e390611fbd565b9392505050565b6000828201838110156116845760405162461bcd60e51b81526004016104e390611f63565b600061168483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e2565b3390565b600061168483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611919565b6000838152600c602090815260408083206001600160a01b038087168552925280832060015491516370a0823160e01b815290939291909116906370a0823190611786903090600401611e4a565b60206040518083038186803b15801561179e57600080fd5b505afa1580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190611d5e565b90506000818411156117e95750806117ec565b50825b60018301546117fb908561168b565b8360010181905550505050505050565b6118618363a9059cbb60e01b848460405160240161182a929190611e82565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611945565b505050565b6000818152600c60209081526040808320338452909152902080548061188b57600080fd5b6206270061189943836116f6565b106118af576118aa833360006119d4565b611861565b611861833360016119d4565b6118dc846323b872dd60e01b85858560405160240161182a93929190611e5e565b50505050565b600081836119035760405162461bcd60e51b81526004016104e39190611ecc565b50600083858161190f57fe5b0495945050505050565b6000818484111561193d5760405162461bcd60e51b81526004016104e39190611ecc565b505050900390565b606061199a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611be59092919063ffffffff16565b80519091501561186157808060200190518101906119b89190611d2a565b6118615760405162461bcd60e51b81526004016104e390612096565b6001546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a05903090600401611e4a565b60206040518083038186803b158015611a1d57600080fd5b505afa158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190611d5e565b6000858152600c602090815260408083206001600160a01b0388168452909152812060018101805443835590839055929350909183811115611a9957839250611a9d565b8092505b60008515611abf57611ab08460026116b0565b9050611abc84826116f6565b93505b8315611b4b5760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611af7908a908890600401611e82565b602060405180830381600087803b158015611b1157600080fd5b505af1158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190611d2a565b505b8015611bdb57600154600b5460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611b87929116908590600401611e82565b602060405180830381600087803b158015611ba157600080fd5b505af1158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190611d2a565b505b5050505050505050565b6060611bf48484600085611bfc565b949350505050565b6060611c0785611cc0565b611c235760405162461bcd60e51b81526004016104e390612033565b60006060866001600160a01b03168587604051611c409190611e2e565b60006040518083038185875af1925050503d8060008114611c7d576040519150601f19603f3d011682016040523d82523d6000602084013e611c82565b606091505b50915091508115611c96579150611bf49050565b805115611ca65780518082602001fd5b8360405162461bcd60e51b81526004016104e39190611ecc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611bf4575050151592915050565b80356001600160a01b0381168114610f0057600080fd5b600060208284031215611d21578081fd5b61168482611cf9565b600060208284031215611d3b578081fd5b815161168481612143565b600060208284031215611d57578081fd5b5035919050565b600060208284031215611d6f578081fd5b5051919050565b60008060408385031215611d88578081fd5b82359150611d9860208401611cf9565b90509250929050565b600080600060608486031215611db5578081fd5b83359250611dc560208501611cf9565b91506040840135611dd581612143565b809150509250925092565b60008060408385031215611df2578182fd5b50508035926020909101359150565b600080600060608486031215611e15578283fd5b83359250602084013591506040840135611dd581612143565b60008251611e40818460208701612117565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6000602082528251806020840152611eeb816040850160208701612117565b601f01601f19169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600490820152630216475760e41b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600990820152686465763a207775743f60b81b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252601290820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526006908201526502165726332360d41b604082015260600190565b90815260200190565b918252602082015260400190565b60005b8381101561213257818101518382015260200161211a565b838111156118dc5750506000910152565b8015158114610e3c57600080fdfea2646970667358221220092e2ee9ddf36adeadc2e79d925618e637e4bf5e427cfec3d3d6b80ded3e441464736f6c634300070400330000000000000000000000009a319b959e33369c5eaa494a770117ee3e58531800000000000000000000000000000000000000000000000000000000005ed2d40000000000000000000000004eb4cbe8504bef67342fabc67bc1d8932e1232b8000000000000000000000000956194a8cb68305ef5dabbb3a089f739f780fc5b000000000000000000000000907fc75bc01556e90fbb5c45e87d2a6a92c679fb0000000000000000000000003c369a743b923a1fcb1b96de4844033975f43cb9

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

0000000000000000000000009a319b959e33369c5eaa494a770117ee3e58531800000000000000000000000000000000000000000000000000000000005ed2d40000000000000000000000004eb4cbe8504bef67342fabc67bc1d8932e1232b8000000000000000000000000956194a8cb68305ef5dabbb3a089f739f780fc5b000000000000000000000000907fc75bc01556e90fbb5c45e87d2a6a92c679fb0000000000000000000000003c369a743b923a1fcb1b96de4844033975f43cb9

-----Decoded View---------------
Arg [0] : _sushi (address): 0x9a319b959e33369c5eaa494a770117ee3e585318
Arg [1] : _startBlock (uint256): 6214356
Arg [2] : _devaddr (address): 0x4eb4cbe8504bef67342fabc67bc1d8932e1232b8
Arg [3] : _investorAddr (address): 0x956194a8cb68305ef5dabbb3a089f739f780fc5b
Arg [4] : _ecosystemAddr (address): 0x907fc75bc01556e90fbb5c45e87d2a6a92c679fb
Arg [5] : _treasuryAddr (address): 0x3c369a743b923a1fcb1b96de4844033975f43cb9

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000009a319b959e33369c5eaa494a770117ee3e585318
Arg [1] : 00000000000000000000000000000000000000000000000000000000005ed2d4
Arg [2] : 0000000000000000000000004eb4cbe8504bef67342fabc67bc1d8932e1232b8
Arg [3] : 000000000000000000000000956194a8cb68305ef5dabbb3a089f739f780fc5b
Arg [4] : 000000000000000000000000907fc75bc01556e90fbb5c45e87d2a6a92c679fb
Arg [5] : 0000000000000000000000003c369a743b923a1fcb1b96de4844033975f43cb9


Deployed ByteCode Sourcemap

10963:12491:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13955:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11643:23;;;:::i;:::-;;;;;;;:::i;12103:::-;;;:::i;14058:123::-;;;;;;:::i;:::-;;:::i;:::-;;11922:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;12028:34::-;;;:::i;16914:882::-;;;;;;:::i;:::-;;:::i;14453:776::-;;;;;;:::i;:::-;;:::i;12803:27::-;;;:::i;12133:26::-;;;:::i;21082:678::-;;;;;;:::i;:::-;;:::i;12071:25::-;;;:::i;17992:992::-;;;;;;:::i;:::-;;:::i;21768:356::-;;;;;;:::i;:::-;;:::i;11710:43::-;;;:::i;20478:179::-;;;;;;:::i;:::-;;:::i;11842:42::-;;;:::i;17804:180::-;;;:::i;15237:304::-;;;;;;:::i;:::-;;:::i;12233:71::-;;;:::i;6968:148::-;;;:::i;20212:258::-;;;;;;:::i;:::-;;:::i;23322:129::-;;;;;;:::i;:::-;;:::i;6758:79::-;;;:::i;15549:1357::-;;;;;;:::i;:::-;;:::i;12768:28::-;;;:::i;11955:66::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;11788:45::-;;;:::i;14322:123::-;;;;;;:::i;:::-;;:::i;12734:27::-;;;:::i;11673:28::-;;;:::i;12655:70::-;;;;;;:::i;:::-;;:::i;19943:261::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12168:22::-;;;:::i;14189:125::-;;;;;;:::i;:::-;;:::i;18992:943::-;;;;;;:::i;:::-;;:::i;7122:244::-;;;;;;:::i;:::-;;:::i;12199:25::-;;;;;;:::i;:::-;;:::i;13955:95::-;14027:8;:15;13955:95;:::o;11643:23::-;;;-1:-1:-1;;;;;11643:23:0;;:::o;12103:::-;;;;:::o;14058:123::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14130:15:0;::::1;14122:24;;;::::0;::::1;;14157:12;:16:::0;;-1:-1:-1;;;;;;14157:16:0::1;-1:-1:-1::0;;;;;14157:16:0;;;::::1;::::0;;;::::1;::::0;;14058:123::o;11922:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11922:26:0;;;;-1:-1:-1;11922:26:0;;;:::o;12028:34::-;;;;:::o;16914:882::-;16988:7;17008:21;17032:8;17041:4;17032:14;;;;;;;;;;;;;;;;17081;;;17032;17081;;;;;;;-1:-1:-1;;;;;17081:21:0;;;;;;;;;;17032:14;;;;;;17140:21;;;;17191:12;;:37;;-1:-1:-1;;;17191:37:0;;17032:14;;-1:-1:-1;17081:21:0;;17032:14;17191:12;;;;;:22;;:37;;17222:4;;17191:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17172:56;;17258:4;:20;;;17243:12;:35;:52;;;;-1:-1:-1;17282:13:0;;;17243:52;17239:354;;;17312:18;17333:49;17347:4;:20;;;17369:12;17333:13;:49::i;:::-;17312:70;;17397:19;17419:71;17474:15;;17419:50;17453:4;:15;;;17419:29;17434:13;;17419:10;:14;;:29;;;;:::i;:::-;:33;;:50::i;:::-;:54;;:71::i;:::-;17397:93;-1:-1:-1;17524:57:0;17545:35;17571:8;17545:21;17397:93;17561:4;17545:15;:21::i;:35::-;17524:16;;:20;:57::i;:::-;17505:76;;17239:354;;;17603:6;17612:64;17660:4;:15;;;17612:43;17650:4;17612:33;17628:16;17612:4;:11;;;:15;;:33;;;;:::i;:43::-;:47;;:64::i;:::-;17689:26;17718:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;17718:25:0;;;;;;;;;17767:20;;;;17603:73;;-1:-1:-1;17718:25:0;17761:27;;17603:73;;17761:5;:27::i;:::-;17754:34;;;;;;;;16914:882;;;;;:::o;14453:776::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;14593:1:::1;14566:8;-1:-1:-1::0;;;;;14559:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;14551:54;;;;-1:-1:-1::0;;;14551:54:0::1;;;;;;;:::i;:::-;14621:8;14616:178;14641:8;:15:::0;14635:21;::::1;14616:178;;;14680:21;14704:8;14713:3;14704:13;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;14760:12:::0;;14704:13;;-1:-1:-1;;;;;;14740:33:0;;::::1;14760:12:::0;::::1;14740:33;;14732:50;;;;-1:-1:-1::0;;;14732:50:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;14658:5:0::1;;14616:178;;;;14808:11;14804:61;;;14836:17;:15;:17::i;:::-;14875:23;14916:10;;14901:12;:25;:53;;14944:10;;14901:53;;;14929:12;14901:53;14983:15;::::0;14875:79;;-1:-1:-1;14983:32:0::1;::::0;15003:11;14983:19:::1;:32::i;:::-;14965:15;:50:::0;15040:180:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;15040:180:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;15040:180:0;;;;;;15026:8:::1;:195:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;15026:195:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;-1:-1:-1;15026:195:0;;;;;;;14453:776::o;12803:27::-;;;-1:-1:-1;;;;;12803:27:0;;:::o;12133:26::-;;;;:::o;21082:678::-;21149:21;21173:8;21182:4;21173:14;;;;;;;;;;;;;;;;21222;;;21173;21222;;;;;;;21237:10;21222:26;;;;;;;;;21267:11;;21173:14;;;;;;;;-1:-1:-1;;;21267:22:0;21259:53;;;;-1:-1:-1;;;21259:53:0;;;;;;;:::i;:::-;21323:16;21334:4;21323:10;:16::i;:::-;21350:15;21368:69;21421:4;:15;;;21368:48;21411:4;21368:38;21384:4;:21;;;21368:4;:11;;;:15;;:38;;;;:::i;:69::-;21350:87;;21448:36;21458:4;21464:10;21476:7;21448:9;:36::i;:::-;21509:11;;:24;;21525:7;21509:15;:24::i;:::-;21495:38;;;21578:21;;;;21562:48;;21605:4;;21562:38;;21495;21562:15;:38::i;:48::-;21544:15;;;:66;21621:12;;:55;;-1:-1:-1;;;;;21621:12:0;21655:10;21668:7;21621:25;:55::i;:::-;21687:14;21696:4;21687:8;:14::i;:::-;21738:4;21726:10;-1:-1:-1;;;;;21717:35:0;;21744:7;21717:35;;;;;;:::i;:::-;;;;;;;;21082:678;;;;;:::o;12071:25::-;;;;:::o;17992:992::-;18044:21;18068:8;18077:4;18068:14;;;;;;;;;;;;;;;;;;18044:38;;18113:4;:20;;;18097:12;:36;18093:75;;18150:7;;;18093:75;18197:12;;:37;;-1:-1:-1;;;18197:37:0;;18178:16;;-1:-1:-1;;;;;18197:12:0;;:22;;:37;;18228:4;;18197:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18178:56;-1:-1:-1;18249:13:0;18245:102;;-1:-1:-1;18302:12:0;18279:20;;;;:35;18329:7;;18245:102;18357:18;18378:49;18392:4;:20;;;18414:12;18378:13;:49::i;:::-;18357:70;;18438:19;18460:71;18515:15;;18460:50;18494:4;:15;;;18460:29;18475:13;;18460:10;:14;;:29;;;;:::i;:71::-;18544:5;;18555:7;;18438:93;;-1:-1:-1;;;;;;18544:5:0;;;;:10;;18555:7;18564:27;18588:2;18564:19;18438:93;18580:2;18564:15;:19::i;:27::-;18544:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18603:5:0;;18614:12;;-1:-1:-1;;;;;18603:5:0;;;;-1:-1:-1;18603:10:0;;-1:-1:-1;18614:12:0;18628:26;18651:2;18628:18;:11;18644:1;18628:15;:18::i;:26::-;18603:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18666:5:0;;18677:13;;-1:-1:-1;;;;;18666:5:0;;;;-1:-1:-1;18666:10:0;;-1:-1:-1;18677:13:0;18692:26;18715:2;18692:18;:11;18708:1;18692:15;:18::i;:26::-;18666:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18730:5:0;;18741:12;;-1:-1:-1;;;;;18730:5:0;;;;-1:-1:-1;18730:10:0;;-1:-1:-1;18741:12:0;18755:26;18778:2;18755:18;:11;18771:1;18755:15;:18::i;:26::-;18730:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18795:5:0;;:38;;-1:-1:-1;;;18795:38:0;;-1:-1:-1;;;;;18795:5:0;;;;-1:-1:-1;18795:10:0;;-1:-1:-1;18795:38:0;;18814:4;;18821:11;;18795:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18868:62;18894:35;18920:8;18894:21;18910:4;18894:11;:15;;:21;;;;:::i;:35::-;18868:21;;;;;:25;:62::i;:::-;18844:21;;;:86;-1:-1:-1;;18964:12:0;18941:20;;;;:35;;;;-1:-1:-1;17992:992:0;;:::o;21768:356::-;21827:21;21851:8;21860:4;21851:14;;;;;;;;;;;;;;;;21900;;;21851;21900;;;;;;;21915:10;21900:26;;;;;;;;21984:11;;21851:14;;;;;21937:12;;21851:14;;-1:-1:-1;21900:26:0;;21937:59;;-1:-1:-1;;;;;21937:12:0;;21915:10;21937:25;:59::i;:::-;22048:11;;22012:48;;22042:4;;22030:10;;22012:48;;;;;:::i;:::-;;;;;;;;22085:1;22071:15;;;22097;;;;:19;-1:-1:-1;;21768:356:0:o;11710:43::-;11747:6;11710:43;:::o;20478:179::-;20535:4;20581:18;;;:12;:18;;;;;;;;20600:10;20581:30;;;;;;;20629:20;;;20478:179;;;;:::o;11842:42::-;11878:6;11842:42;:::o;17804:180::-;17866:8;:15;17849:14;17892:85;17920:6;17914:3;:12;17892:85;;;17950:15;17961:3;17950:10;:15::i;:::-;17928:5;;17892:85;;;;17804:180;:::o;15237:304::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;15335:11:::1;15331:61;;;15363:17;:15;:17::i;:::-;15420:63;15471:11;15420:46;15440:8;15449:4;15440:14;;;;;;;;;;;;;;;;;;:25;;;15420:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:63::i;:::-;15402:15;:81;;;;15522:11;15494:8;15503:4;15494:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;15237:304:::0;;;:::o;12233:71::-;;;-1:-1:-1;;;;;12233:71:0;;:::o;6968:148::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;7075:1:::1;7059:6:::0;;7038:40:::1;::::0;-1:-1:-1;;;;;7059:6:0;;::::1;::::0;7038:40:::1;::::0;7075:1;;7038:40:::1;7106:1;7089:19:::0;;-1:-1:-1;;;;;;7089:19:0::1;::::0;;6968:148::o;20212:258::-;20286:4;20332:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;20332:24:0;;;;;;;;;20391:19;;20428:34;20391:19;11878:6;20428:20;:34::i;:::-;20421:41;20212:258;-1:-1:-1;;;;;20212:258:0:o;23322:129::-;23393:7;;-1:-1:-1;;;;;23393:7:0;23379:10;:21;23371:43;;;;-1:-1:-1;;;23371:43:0;;;;;;;:::i;:::-;23425:7;:18;;-1:-1:-1;;;;;;23425:18:0;-1:-1:-1;;;;;23425:18:0;;;;;;;;;;23322:129::o;6758:79::-;6796:7;6823:6;-1:-1:-1;;;;;6823:6:0;6758:79;:::o;15549:1357::-;15621:7;15654:3;15645:5;:12;15641:53;;-1:-1:-1;15681:1:0;15674:8;;15641:53;15716:10;;15708:5;:18;:42;;;;15739:11;;15730:5;:20;;15708:42;15704:83;;;-1:-1:-1;15774:1:0;15767:8;;15704:83;15807:11;;15801:3;:17;15797:67;;;15841:11;;15835:17;;15797:67;15887:11;;15878:5;:20;15874:94;;15922:34;15941:14;:3;15949:5;15941:7;:14::i;:::-;15922:11;15934:1;15922:14;;;;;;;;;;;;;;;;:18;;:34;;;;:::i;:::-;15915:41;;;;15874:94;15978:10;16014:11;;16007:3;:18;16003:137;;16051:40;16070:20;16078:11;;16070:3;:7;;:20;;;;:::i;16051:40::-;16117:11;;;-1:-1:-1;16042:49:0;16003:137;16168:10;;16158:21;;:5;;:9;:21::i;:::-;16150:29;;16196:19;16204:10;;16196:3;:7;;:19;;;;:::i;:::-;16190:25;-1:-1:-1;16228:14:0;16245:24;:5;11747:6;16245:9;:24::i;:::-;16228:41;;16290:17;16322:16;16353:523;16368:3;16360:5;:11;16353:523;;;16404:1;16392:9;:13;16388:59;;;16426:5;;16388:59;16475:11;16487:9;16475:22;;;;;;;;;;;;;;;;;;;-1:-1:-1;16527:35:0;16545:16;:9;16559:1;16545:13;:16::i;:::-;11747:6;;16527:17;:35::i;:::-;16512:50;-1:-1:-1;16589:16:0;:9;16603:1;16589:13;:16::i;:::-;16577:28;;16640:3;16624:12;:19;16620:210;;16672:51;16682:40;16698:23;:12;16715:5;16698:16;:23::i;:::-;16682:11;;:15;:40::i;16672:51::-;16664:59;;16620:210;;;16772:42;16782:31;16798:14;:3;16806:5;16798:7;:14::i;16772:42::-;16764:50;;16620:210;16852:12;16844:20;;16353:523;;;-1:-1:-1;16893:5:0;;15549:1357;-1:-1:-1;;;;;15549:1357:0:o;12768:28::-;;;-1:-1:-1;;;;;12768:28:0;;:::o;11955:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11788:45::-;11827:6;11788:45;:::o;14322:123::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14394:15:0;::::1;14386:24;;;::::0;::::1;;14421:12;:16:::0;;-1:-1:-1;;;;;;14421:16:0::1;-1:-1:-1::0;;;;;14421:16:0;;;::::1;::::0;;;::::1;::::0;;14322:123::o;12734:27::-;;;-1:-1:-1;;;;;12734:27:0;;:::o;11673:28::-;;;;:::o;12655:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19943:261::-;19998:4;20044:18;;;:12;:18;;;;;;;;20063:10;20044:30;;;;;;;20109:19;;11878:6;20146:34;:12;20109:19;20146:16;:34::i;:::-;:50;;;19943:261;-1:-1:-1;;;;19943:261:0:o;12168:22::-;;;-1:-1:-1;;;;;12168:22:0;;:::o;14189:125::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14262:15:0;::::1;14254:24;;;::::0;::::1;;14289:13;:17:::0;;-1:-1:-1;;;;;;14289:17:0::1;-1:-1:-1::0;;;;;14289:17:0;;;::::1;::::0;;;::::1;::::0;;14189:125::o;18992:943::-;19058:15;19076:10;19058:28;;19099:21;19123:8;19132:4;19123:14;;;;;;;;;;;;;;;;19172;;;19123;19172;;;;;;;19187:10;19172:26;;;;;;;;;19238:18;;;:12;:18;;;;;:30;;;;;;;;19123:14;;;;;;;;-1:-1:-1;19281:16:0;19172:14;19281:10;:16::i;:::-;19312:11;;:15;19308:372;;19344:15;19362:69;19415:4;:15;;;19362:48;19405:4;19362:38;19378:4;:21;;;19362:4;:11;;;:15;;:38;;;;:::i;:69::-;19344:87;;19446:33;19456:4;19462:7;19471;19446:9;:33::i;:::-;19515:19;;11878:6;;19498:37;;:12;;:16;:37::i;:::-;:53;19494:108;;19572:14;19581:4;19572:8;:14::i;:::-;19308:372;;;;19656:12;19634:34;;19308:372;19690:12;;:62;;-1:-1:-1;;;;;19690:12:0;19720:7;19737:4;19744:7;19690:29;:62::i;:::-;19777:11;;:24;;19793:7;19777:15;:24::i;:::-;19763:38;;;19846:21;;;;19830:48;;19873:4;;19830:38;;19763;19830:15;:38::i;:48::-;19812:4;:15;;:66;;;;19913:4;19904:7;-1:-1:-1;;;;;19896:31:0;;19919:7;19896:31;;;;;;:::i;:::-;;;;;;;;18992:943;;;;;;:::o;7122:244::-;6893:12;:10;:12::i;:::-;6883:6;;-1:-1:-1;;;;;6883:6:0;;;:22;;;6875:67;;;;-1:-1:-1;;;6875:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7211:22:0;::::1;7203:73;;;;-1:-1:-1::0;;;7203:73:0::1;;;;;;;:::i;:::-;7313:6;::::0;;7292:38:::1;::::0;-1:-1:-1;;;;;7292:38:0;;::::1;::::0;7313:6;::::1;::::0;7292:38:::1;::::0;::::1;7341:6;:17:::0;;-1:-1:-1;;;;;;7341:17:0::1;-1:-1:-1::0;;;;;7341:17:0;;;::::1;::::0;;;::::1;::::0;;7122:244::o;12199:25::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12199:25:0;:::o;1293:250::-;1351:7;1375:6;1371:47;;-1:-1:-1;1405:1:0;1398:8;;1371:47;1442:5;;;1446:1;1442;:5;:1;1466:5;;;;;:10;1458:56;;;;-1:-1:-1;;;1458:56:0;;;;;;;:::i;:::-;1534:1;1293:250;-1:-1:-1;;;1293:250:0:o;764:179::-;822:7;854:5;;;878:6;;;;870:46;;;;-1:-1:-1;;;870:46:0;;;;;;;:::i;1551:132::-;1609:7;1636:39;1640:1;1643;1636:39;;;;;;;;;;;;;;;;;:3;:39::i;6079:115::-;6175:10;6079:115;:::o;951:136::-;1009:7;1036:43;1040:1;1043;1036:43;;;;;;;;;;;;;;;;;:3;:43::i;22132:411::-;22212:26;22241:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;22241:23:0;;;;;;;;;;22294:5;;:30;;-1:-1:-1;;;22294:30:0;;22241:23;;22212:26;22294:5;;;;;:15;;:30;;22318:4;;22294:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22275:49;;22335:8;22372;22362:7;:18;22358:111;;;-1:-1:-1;22403:8:0;22358:111;;;-1:-1:-1;22450:7:0;22358:111;22502:20;;;;:33;;22527:7;22502:24;:33::i;:::-;22479:6;:20;;:56;;;;22132:411;;;;;;:::o;4292:177::-;4375:86;4395:5;4425:23;;;4450:2;4454:5;4402:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4402:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4402:58:0;-1:-1:-1;;;;;;4402:58:0;;;;;;;;;;4375:19;:86::i;:::-;4292:177;;;:::o;20665:409::-;20714:26;20743:18;;;:12;:18;;;;;;;;20762:10;20743:30;;;;;;;20808:19;;20846:20;20838:29;;;;;;11878:6;20884:34;:12;20901:16;20884;:34::i;:::-;:50;20880:187;;20951:36;20963:4;20969:10;20981:5;20951:11;:36::i;:::-;20880:187;;;21020:35;21032:4;21038:10;21050:4;21020:11;:35::i;4477:205::-;4578:96;4598:5;4628:27;;;4657:4;4663:2;4667:5;4605:68;;;;;;;;;;:::i;4578:96::-;4477:205;;;;:::o;1691:189::-;1777:7;1812:12;1805:5;1797:28;;;;-1:-1:-1;;;1797:28:0;;;;;;;;:::i;:::-;;1836:9;1852:1;1848;:5;;;;;;;1691:189;-1:-1:-1;;;;;1691:189:0:o;1095:190::-;1181:7;1217:12;1209:6;;;;1201:29;;;;-1:-1:-1;;;1201:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1253:5:0;;;1095:190::o;5679:360::-;5760:23;5786:69;5814:4;5786:69;;;;;;;;;;;;;;;;;5794:5;-1:-1:-1;;;;;5786:27:0;;;:69;;;;;:::i;:::-;5870:17;;5760:95;;-1:-1:-1;5870:21:0;5866:166;;5954:10;5943:30;;;;;;;;;;;;:::i;:::-;5935:85;;;;-1:-1:-1;;;5935:85:0;;;;;;;:::i;22551:763::-;22645:5;;:30;;-1:-1:-1;;;22645:30:0;;22626:16;;-1:-1:-1;;;;;22645:5:0;;:15;;:30;;22669:4;;22645:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22686:8;22738:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;22738:23:0;;;;;;;;;22787:20;;;;;22842:12;22820:34;;22865:24;;;;22626:49;;-1:-1:-1;22686:8:0;;22906:18;;;22902:111;;;22947:8;22941:14;;22902:111;;;22994:7;22988:13;;22902:111;23023:12;23054:3;23050:93;;;23084:10;:3;23092:1;23084:7;:10::i;:::-;23074:20;-1:-1:-1;23115:16:0;:3;23074:20;23115:7;:16::i;:::-;23109:22;;23050:93;23157:7;;23153:64;;23181:5;;:24;;-1:-1:-1;;;23181:24:0;;-1:-1:-1;;;;;23181:5:0;;;;:14;;:24;;23196:3;;23201;;23181:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23153:64;23231:11;;23227:80;;23259:5;;23274:11;;23259:36;;-1:-1:-1;;;23259:36:0;;-1:-1:-1;;;;;23259:5:0;;;;:14;;:36;;23274:11;;;23287:7;;23259:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23227:80;22551:763;;;;;;;;:::o;2741:196::-;2844:12;2876:53;2899:6;2907:4;2913:1;2916:12;2876:22;:53::i;:::-;2869:60;2741:196;-1:-1:-1;;;;2741:196:0:o;3503:690::-;3633:12;3666:18;3677:6;3666:10;:18::i;:::-;3658:60;;;;-1:-1:-1;;;3658:60:0;;;;;;;:::i;:::-;3730:12;3744:23;3771:6;-1:-1:-1;;;;;3771:11:0;3791:8;3802:4;3771:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3729:78;;;;3822:7;3818:368;;;3853:10;-1:-1:-1;3846:17:0;;-1:-1:-1;3846:17:0;3818:368;3900:17;;:21;3896:279;;4003:10;3997:17;4064:15;4051:10;4047:2;4043:19;4036:44;3951:148;4146:12;4139:20;;-1:-1:-1;;;4139:20:0;;;;;;;;:::i;1910:317::-;1970:4;2136:20;;2036:66;2176:23;;;;;;:42;;-1:-1:-1;;2203:15:0;;;2168:51;-1:-1:-1;;1910:317:0:o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:257::-;;517:2;505:9;496:7;492:23;488:32;485:2;;;538:6;530;523:22;485:2;575:9;569:16;594:30;618:5;594:30;:::i;659:190::-;;771:2;759:9;750:7;746:23;742:32;739:2;;;792:6;784;777:22;739:2;-1:-1:-1;820:23:1;;729:120;-1:-1:-1;729:120:1:o;854:194::-;;977:2;965:9;956:7;952:23;948:32;945:2;;;998:6;990;983:22;945:2;-1:-1:-1;1026:16:1;;935:113;-1:-1:-1;935:113:1:o;1053:266::-;;;1182:2;1170:9;1161:7;1157:23;1153:32;1150:2;;;1203:6;1195;1188:22;1150:2;1244:9;1231:23;1221:33;;1273:40;1309:2;1298:9;1294:18;1273:40;:::i;:::-;1263:50;;1140:179;;;;;:::o;1324:397::-;;;;1467:2;1455:9;1446:7;1442:23;1438:32;1435:2;;;1488:6;1480;1473:22;1435:2;1529:9;1516:23;1506:33;;1558:40;1594:2;1583:9;1579:18;1558:40;:::i;:::-;1548:50;;1648:2;1637:9;1633:18;1620:32;1661:30;1685:5;1661:30;:::i;:::-;1710:5;1700:15;;;1425:296;;;;;:::o;1726:258::-;;;1855:2;1843:9;1834:7;1830:23;1826:32;1823:2;;;1876:6;1868;1861:22;1823:2;-1:-1:-1;;1904:23:1;;;1974:2;1959:18;;;1946:32;;-1:-1:-1;1813:171:1:o;1989:389::-;;;;2132:2;2120:9;2111:7;2107:23;2103:32;2100:2;;;2153:6;2145;2138:22;2100:2;2194:9;2181:23;2171:33;;2251:2;2240:9;2236:18;2223:32;2213:42;;2305:2;2294:9;2290:18;2277:32;2318:30;2342:5;2318:30;:::i;2383:274::-;;2550:6;2544:13;2566:53;2612:6;2607:3;2600:4;2592:6;2588:17;2566:53;:::i;:::-;2635:16;;;;;2520:137;-1:-1:-1;;2520:137:1:o;2662:203::-;-1:-1:-1;;;;;2826:32:1;;;;2808:51;;2796:2;2781:18;;2763:102::o;2870:375::-;-1:-1:-1;;;;;3128:15:1;;;3110:34;;3180:15;;;;3175:2;3160:18;;3153:43;3227:2;3212:18;;3205:34;;;;3060:2;3045:18;;3027:218::o;3250:274::-;-1:-1:-1;;;;;3442:32:1;;;;3424:51;;3506:2;3491:18;;3484:34;3412:2;3397:18;;3379:145::o;3529:187::-;3694:14;;3687:22;3669:41;;3657:2;3642:18;;3624:92::o;3721:430::-;-1:-1:-1;;;;;3983:32:1;;;;3965:51;;4047:2;4032:18;;4025:34;;;;4090:2;4075:18;;4068:34;4133:2;4118:18;;4111:34;3952:3;3937:19;;3919:232::o;4383:383::-;;4532:2;4521:9;4514:21;4564:6;4558:13;4607:6;4602:2;4591:9;4587:18;4580:34;4623:66;4682:6;4677:2;4666:9;4662:18;4657:2;4649:6;4645:15;4623:66;:::i;:::-;4750:2;4729:15;-1:-1:-1;;4725:29:1;4710:45;;;;4757:2;4706:54;;4504:262;-1:-1:-1;;4504:262:1:o;4771:402::-;4973:2;4955:21;;;5012:2;4992:18;;;4985:30;5051:34;5046:2;5031:18;;5024:62;-1:-1:-1;;;5117:2:1;5102:18;;5095:36;5163:3;5148:19;;4945:228::o;5178:327::-;5380:2;5362:21;;;5419:1;5399:18;;;5392:29;-1:-1:-1;;;5452:2:1;5437:18;;5430:34;5496:2;5481:18;;5352:153::o;5510:351::-;5712:2;5694:21;;;5751:2;5731:18;;;5724:30;5790:29;5785:2;5770:18;;5763:57;5852:2;5837:18;;5684:177::o;5866:332::-;6068:2;6050:21;;;6107:1;6087:18;;;6080:29;-1:-1:-1;;;6140:2:1;6125:18;;6118:39;6189:2;6174:18;;6040:158::o;6203:397::-;6405:2;6387:21;;;6444:2;6424:18;;;6417:30;6483:34;6478:2;6463:18;;6456:62;-1:-1:-1;;;6549:2:1;6534:18;;6527:31;6590:3;6575:19;;6377:223::o;6605:356::-;6807:2;6789:21;;;6826:18;;;6819:30;6885:34;6880:2;6865:18;;6858:62;6952:2;6937:18;;6779:182::o;6966:353::-;7168:2;7150:21;;;7207:2;7187:18;;;7180:30;7246:31;7241:2;7226:18;;7219:59;7310:2;7295:18;;7140:179::o;7324:342::-;7526:2;7508:21;;;7565:2;7545:18;;;7538:30;-1:-1:-1;;;7599:2:1;7584:18;;7577:48;7657:2;7642:18;;7498:168::o;7671:406::-;7873:2;7855:21;;;7912:2;7892:18;;;7885:30;7951:34;7946:2;7931:18;;7924:62;-1:-1:-1;;;8017:2:1;8002:18;;7995:40;8067:3;8052:19;;7845:232::o;8082:329::-;8284:2;8266:21;;;8323:1;8303:18;;;8296:29;-1:-1:-1;;;8356:2:1;8341:18;;8334:36;8402:2;8387:18;;8256:155::o;8416:177::-;8562:25;;;8550:2;8535:18;;8517:76::o;8598:248::-;8772:25;;;8828:2;8813:18;;8806:34;8760:2;8745:18;;8727:119::o;8851:258::-;8923:1;8933:113;8947:6;8944:1;8941:13;8933:113;;;9023:11;;;9017:18;9004:11;;;8997:39;8969:2;8962:10;8933:113;;;9064:6;9061:1;9058:13;9055:2;;;-1:-1:-1;;9099:1:1;9081:16;;9074:27;8904:205::o;9114:120::-;9202:5;9195:13;9188:21;9181:5;9178:32;9168:2;;9224:1;9221;9214:12

Swarm Source

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