ETH Price: $2,447.46 (-5.93%)

Contract

0xcFF6540c125f9dEc2C5427b60E89816e840b25Ec
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit129974822021-08-10 12:46:541148 days ago1628599614IN
0xcFF6540c...e840b25Ec
0 ETH0.0046897550
Deposit126718732021-06-20 15:05:181199 days ago1624201518IN
0xcFF6540c...e840b25Ec
0 ETH0.0016325416
Withdraw126268062021-06-13 14:59:391206 days ago1623596379IN
0xcFF6540c...e840b25Ec
0 ETH0.0015249916
Withdraw126000082021-06-09 11:10:581210 days ago1623237058IN
0xcFF6540c...e840b25Ec
0 ETH0.00095310
Deposit126000052021-06-09 11:10:331210 days ago1623237033IN
0xcFF6540c...e840b25Ec
0 ETH0.0010203410
Deposit123311322021-04-28 20:35:401252 days ago1619642140IN
0xcFF6540c...e840b25Ec
0 ETH0.0085561272
Withdraw123310962021-04-28 20:27:061252 days ago1619641626IN
0xcFF6540c...e840b25Ec
0 ETH0.008005284
Withdraw123108692021-04-25 17:38:351255 days ago1619372315IN
0xcFF6540c...e840b25Ec
0 ETH0.0069673162
Withdraw119834082021-03-06 7:13:161305 days ago1615014796IN
0xcFF6540c...e840b25Ec
0 ETH0.006800567
Deposit119595532021-03-02 15:12:571309 days ago1614697977IN
0xcFF6540c...e840b25Ec
0 ETH0.01541059147
Withdraw119587002021-03-02 12:02:301309 days ago1614686550IN
0xcFF6540c...e840b25Ec
0 ETH0.007805567
Withdraw119362742021-02-27 0:59:031312 days ago1614387543IN
0xcFF6540c...e840b25Ec
0 ETH0.01096329108
Deposit118295992021-02-10 15:33:171329 days ago1612971197IN
0xcFF6540c...e840b25Ec
0 ETH0.02725684260
Deposit117682422021-02-01 4:38:431338 days ago1612154323IN
0xcFF6540c...e840b25Ec
0 ETH0.00667243116
Withdraw117297102021-01-26 6:27:011344 days ago1611642421IN
0xcFF6540c...e840b25Ec
0 ETH0.0061922361
Deposit117284482021-01-26 1:42:041344 days ago1611625324IN
0xcFF6540c...e840b25Ec
0 ETH0.0032355127
Deposit117268942021-01-25 19:54:571345 days ago1611604497IN
0xcFF6540c...e840b25Ec
0 ETH0.0063948761
Withdraw117268942021-01-25 19:54:571345 days ago1611604497IN
0xcFF6540c...e840b25Ec
0 ETH0.003588561
Deposit117268942021-01-25 19:54:571345 days ago1611604497IN
0xcFF6540c...e840b25Ec
0 ETH0.0062893260
Withdraw117250462021-01-25 13:08:301345 days ago1611580110IN
0xcFF6540c...e840b25Ec
0 ETH0.0060960
Withdraw117249162021-01-25 12:43:091345 days ago1611578589IN
0xcFF6540c...e840b25Ec
0 ETH0.0060885660
Withdraw116702392021-01-17 3:23:141353 days ago1610853794IN
0xcFF6540c...e840b25Ec
0 ETH0.004161541.00000156
Withdraw116702232021-01-17 3:19:571353 days ago1610853597IN
0xcFF6540c...e840b25Ec
0 ETH0.005073850
Withdraw116523052021-01-14 9:06:171356 days ago1610615177IN
0xcFF6540c...e840b25Ec
0 ETH0.00730872
Withdraw116465922021-01-13 12:27:111357 days ago1610540831IN
0xcFF6540c...e840b25Ec
0 ETH0.00446644
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MasterChef

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-26
*/

pragma solidity ^0.6.0;

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
    );
}

pragma solidity ^0.6.0;

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

pragma solidity ^0.6.2;

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;


            bytes32 accountHash
         = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        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"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

pragma solidity ^0.6.0;

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 {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        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 {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

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

pragma solidity ^0.6.0;

library EnumerableSet {
    // To implement this library for multiple types with as little code
    // repetition as possible, we write it in terms of a generic Set type with
    // bytes32 values.
    // The Set implementation uses private functions, and user-facing
    // implementations (such as AddressSet) are just wrappers around the
    // underlying Set.
    // This means that we can only create new EnumerableSets for types that fit
    // in bytes32.

    struct Set {
        // Storage of set values
        bytes32[] _values;
        // Position of the value in the `values` array, plus 1 because index 0
        // means a value is not in the set.
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            // The value is stored at length-1, but we add 1 to all indexes
            // and use 0 as a sentinel value
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            // Equivalent to contains(set, value)
            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in
            // the array, and then remove the last element (sometimes called as 'swap and pop').
            // This modifies the order of the array, as noted in {at}.

            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.

            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        require(
            set._values.length > index,
            "EnumerableSet: index out of bounds"
        );
        return set._values[index];
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(value)));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(value)));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(value)));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint256(_at(set._inner, index)));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index)
        internal
        view
        returns (uint256)
    {
        return uint256(_at(set._inner, index));
    }
}

pragma solidity ^0.6.0;

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

    function _msgData() internal virtual view returns (bytes memory) {
        this;
        return msg.data;
    }
}

pragma solidity ^0.6.0;

contract Ownable is Context {
    address private _owner;

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

    constructor() internal {
        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;
    }
}

pragma solidity ^0.6.0;

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 name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _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 override view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public override view 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
        virtual
        override
        view
        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 increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        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");

        _beforeTokenTransfer(sender, recipient, amount);

        _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");

        _beforeTokenTransfer(address(0), account, amount);

        _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");

        _beforeTokenTransfer(account, address(0), amount);

        _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);
    }

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

pragma solidity 0.6.12;

contract MOAR is ERC20("MOAR", "MOAR"), Ownable {
    /// @notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef).
    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
    }
}

pragma solidity 0.6.12;

// MasterChef is the master of Sushi. He can make Sushi and he is a fair guy.
//
// Note that it's ownable and the owner wields tremendous power. The ownership
// will be transferred to a governance smart contract once SUSHI is sufficiently
// distributed and the community can show to govern itself.
//
// Have fun reading it. Hopefully it's bug-free. God bless.
contract MasterChef is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // Info of each user.
    struct UserInfo {
        uint256 amount; // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
        //
        // We do some fancy math here. Basically, any point in time, the amount of SUSHIs
        // entitled to a user but is pending to be distributed is:
        //
        //   pending reward = (user.amount * pool.accSushiPerShare) - user.rewardDebt
        //
        // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens:
        //   1. The pool's `accSushiPerShare` (and `lastRewardBlock`) gets updated.
        //   2. User receives the pending reward sent to his/her address.
        //   3. User's `amount` gets updated.
        //   4. User's `rewardDebt` gets updated.
    }

    // Info of each pool.
    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.
    }

    // The SUSHI TOKEN!
    MOAR public sushi;
    // Dev address.
    address public devaddr;
    // Block number when bonus SUSHI period ends.
    uint256 public bonusEndBlock;
    // SUSHI tokens created per block.
    uint256 public sushiPerBlock;
    // Bonus muliplier for early sushi makers.
    uint256 public constant BONUS_MULTIPLIER = 1;

    // Info of each pool.
    PoolInfo[] public poolInfo;
    // Info of each user that stakes LP tokens.
    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    // Total allocation poitns. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint = 0;
    // The block number when SUSHI mining starts.
    uint256 public startBlock;

    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
    );

    constructor(
        MOAR _sushi,
        address _devaddr,
        uint256 _sushiPerBlock,
        uint256 _startBlock,
        uint256 _bonusEndBlock
    ) public {
        sushi = _sushi;
        devaddr = _devaddr;
        sushiPerBlock = _sushiPerBlock;
        bonusEndBlock = _bonusEndBlock;
        startBlock = _startBlock;
    }

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

    // Add a new lp to the pool. Can only be called by the owner.
    // XXX DO NOT add the same LP token more than once. Rewards will be messed up if you do.
    function add(
        uint256 _allocPoint,
        IERC20 _lpToken,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock
            ? block.number
            : startBlock;
        totalAllocPoint = totalAllocPoint.add(_allocPoint);
        poolInfo.push(
            PoolInfo({
                lpToken: _lpToken,
                allocPoint: _allocPoint,
                lastRewardBlock: lastRewardBlock,
                accSushiPerShare: 0
            })
        );
    }

    // Update the given pool's SUSHI allocation point. Can only be called by the owner.
    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;
    }

    // Return reward multiplier over the given _from to _to block.
    function getMultiplier(uint256 _from, uint256 _to)
        public
        view
        returns (uint256)
    {
        if (_to <= bonusEndBlock) {
            return _to.sub(_from).mul(BONUS_MULTIPLIER);
        } else if (_from >= bonusEndBlock) {
            return _to.sub(_from);
        } else {
            return
                bonusEndBlock.sub(_from).mul(BONUS_MULTIPLIER).add(
                    _to.sub(bonusEndBlock)
                );
        }
    }

    // View function to see pending SUSHIs on frontend.
    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)
            );
        }
        return user.amount.mul(accSushiPerShare).div(1e12).sub(user.rewardDebt);
    }

    // Update reward vairables for all pools. Be careful of gas spending!
    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    // Update reward variables of the given pool to be up-to-date.
    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(address(this), sushiReward);
        pool.accSushiPerShare = pool.accSushiPerShare.add(
            sushiReward.mul(1e12).div(lpSupply)
        );
        pool.lastRewardBlock = block.number;
    }

    // Deposit LP tokens to MasterChef for SUSHI allocation.
    function deposit(uint256 _pid, uint256 _amount) public {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        updatePool(_pid);
        if (user.amount > 0) {
            uint256 pending = user
                .amount
                .mul(pool.accSushiPerShare)
                .div(1e12)
                .sub(user.rewardDebt);
            safeSushiTransfer(msg.sender, pending);
        }
        pool.lpToken.safeTransferFrom(
            address(msg.sender),
            address(this),
            _amount
        );
        user.amount = user.amount.add(_amount);
        user.rewardDebt = user.amount.mul(pool.accSushiPerShare).div(1e12);
        emit Deposit(msg.sender, _pid, _amount);
    }

    // Withdraw LP tokens from MasterChef.
    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
        );
        safeSushiTransfer(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);
        emit Withdraw(msg.sender, _pid, _amount);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    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;
    }

    // Safe sushi transfer function, just in case if rounding error causes pool to not have enough SUSHIs.
    function safeSushiTransfer(address _to, uint256 _amount) internal {
        uint256 sushiBal = sushi.balanceOf(address(this));
        if (_amount > sushiBal) {
            sushi.transfer(_to, sushiBal);
        } else {
            sushi.transfer(_to, _amount);
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract MOAR","name":"_sushi","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"uint256","name":"_sushiPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_bonusEndBlock","type":"uint256"}],"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":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bonusEndBlock","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":[{"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":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","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":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushi","outputs":[{"internalType":"contract MOAR","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":[{"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"}]

6080604052600060075534801561001557600080fd5b50604051620026e6380380620026e6833981810160405260a081101561003a57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505060006100836101c260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600481905550806003819055508160088190555050505050506101ca565b600033905090565b61250c80620001da6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063630b5ba1116100c35780638dbb1e3a1161007c5780638dbb1e3a146104a957806393f1a40b146104f5578063b0bcf42a1461055e578063d49e77cd1461057c578063e2bbb158146105b0578063f2fde38b146105e85761014d565b8063630b5ba1146103bb57806364482f79146103c5578063715018a6146104095780638aa28550146104135780638d88a90e146104315780638da5cb5b146104755761014d565b80631aed6553116101155780631aed6553146102915780631eaaa045146102af578063441a3e701461030957806348cd4cb11461034157806351eb05a61461035f5780635312ea8e1461038d5761014d565b8063081e3eda146101525780630a087903146101705780631526fe27146101a457806317caf6f114610211578063195426ec1461022f575b600080fd5b61015a61062c565b6040518082815260200191505060405180910390f35b610178610639565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101d0600480360360208110156101ba57600080fd5b810190808035906020019092919050505061065f565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6102196106bc565b6040518082815260200191505060405180910390f35b61027b6004803603604081101561024557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c2565b6040518082815260200191505060405180910390f35b610299610908565b6040518082815260200191505060405180910390f35b610307600480360360608110156102c557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061090e565b005b61033f6004803603604081101561031f57600080fd5b810190808035906020019092919080359060200190929190505050610ae7565b005b610349610d31565b6040518082815260200191505060405180910390f35b61038b6004803603602081101561037557600080fd5b8101908080359060200190929190505050610d37565b005b6103b9600480360360208110156103a357600080fd5b8101908080359060200190929190505050610fa3565b005b6103c36110d5565b005b610407600480360360608110156103db57600080fd5b810190808035906020019092919080359060200190929190803515159060200190929190505050611102565b005b61041161124c565b005b61041b6113d2565b6040518082815260200191505060405180910390f35b6104736004803603602081101561044757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d7565b005b61047d6114de565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104df600480360360408110156104bf57600080fd5b810190808035906020019092919080359060200190929190505050611507565b6040518082815260200191505060405180910390f35b6105416004803603604081101561050b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b9565b604051808381526020018281526020019250505060405180910390f35b6105666115ea565b6040518082815260200191505060405180910390f35b6105846115f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e6600480360360408110156105c657600080fd5b810190808035906020019092919080359060200190929190505050611616565b005b61062a600480360360208110156105fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f6565b005b6000600580549050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005818154811061066c57fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60075481565b600080600584815481106106d257fe5b9060005260206000209060040201905060006006600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b8101908080519060200190929190505050905083600201544311801561081d575060008114155b156108b8576000610832856002015443611507565b90506000610875600754610867886001015461085960045487611a0190919063ffffffff16565b611a0190919063ffffffff16565b611a8790919063ffffffff16565b90506108b36108a48461089664e8d4a5100085611a0190919063ffffffff16565b611a8790919063ffffffff16565b85611ad190919063ffffffff16565b935050505b6108fc83600101546108ee64e8d4a510006108e0868860000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b94505050505092915050565b60035481565b610916611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156109e5576109e46110d5565b5b600060085443116109f8576008546109fa565b435b9050610a1184600754611ad190919063ffffffff16565b600781905550600560405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030155505050505050565b600060058381548110610af657fe5b9060005260206000209060040201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610bd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b610bdd84610d37565b6000610c278260010154610c1964e8d4a51000610c0b87600301548760000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b9050610c333382611bab565b610c4a848360000154611b5990919063ffffffff16565b8260000181905550610c8464e8d4a51000610c7685600301548560000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b8260010181905550610cdb33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e249092919063ffffffff16565b843373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568866040518082815260200191505060405180910390a35050505050565b60085481565b600060058281548110610d4657fe5b9060005260206000209060040201905080600201544311610d675750610fa0565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b810190808051906020019092919050505090506000811415610e4a574382600201819055505050610fa0565b6000610e5a836002015443611507565b90506000610e9d600754610e8f8660010154610e8160045487611a0190919063ffffffff16565b611a0190919063ffffffff16565b611a8790919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b50505050610f8a610f7784610f6964e8d4a5100085611a0190919063ffffffff16565b611a8790919063ffffffff16565b8560030154611ad190919063ffffffff16565b8460030181905550438460020181905550505050505b50565b600060058281548110610fb257fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506110693382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e249092919063ffffffff16565b823373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059583600001546040518082815260200191505060405180910390a36000816000018190555060008160010181905550505050565b6000600580549050905060005b818110156110fe576110f381610d37565b8060010190506110e2565b5050565b61110a611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156111d9576111d86110d5565b5b61121e82611210600586815481106111ed57fe5b906000526020600020906004020160010154600754611b5990919063ffffffff16565b611ad190919063ffffffff16565b600781905550816005848154811061123257fe5b906000526020600020906004020160010181905550505050565b611254611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600181565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6465763a207775743f000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600354821161153f57611538600161152a8585611b5990919063ffffffff16565b611a0190919063ffffffff16565b90506115b3565b60035483106115625761155b8383611b5990919063ffffffff16565b90506115b3565b6115b061157a60035484611b5990919063ffffffff16565b6115a2600161159487600354611b5990919063ffffffff16565b611a0190919063ffffffff16565b611ad190919063ffffffff16565b90505b92915050565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005838154811061162557fe5b9060005260206000209060040201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061169284610d37565b6000816000015411156116f75760006116e982600101546116db64e8d4a510006116cd87600301548760000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b90506116f53382611bab565b505b6117483330858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ec6909392919063ffffffff16565b61175f838260000154611ad190919063ffffffff16565b816000018190555061179964e8d4a5100061178b84600301548460000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15856040518082815260200191505060405180910390a350505050565b6117fe611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611944576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806124666026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415611a145760009050611a81565b6000828402905082848281611a2557fe5b0414611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061248c6021913960400191505060405180910390fd5b809150505b92915050565b6000611ac983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f87565b905092915050565b600080828401905083811015611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611b9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061204d565b905092915050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c3657600080fd5b505afa158015611c4a573d6000803e3d6000fd5b505050506040513d6020811015611c6057600080fd5b8101908080519060200190929190505050905080821115611d4f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b505050506040513d6020811015611d3857600080fd5b810190808051906020019092919050505050611e1f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611de257600080fd5b505af1158015611df6573d6000803e3d6000fd5b505050506040513d6020811015611e0c57600080fd5b8101908080519060200190929190505050505b505050565b611ec18363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061210d565b505050565b611f81846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061210d565b50505050565b60008083118290612033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff8578082015181840152602081019050611fdd565b50505050905090810190601f1680156120255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161203f57fe5b049050809150509392505050565b60008383111582906120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120bf5780820151818401526020810190506120a4565b50505050905090810190601f1680156120ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b606061216f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121fc9092919063ffffffff16565b90506000815111156121f75780806020019051602081101561219057600080fd5b81019080805190602001909291905050506121f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806124ad602a913960400191505060405180910390fd5b5b505050565b606061220b8484600085612214565b90509392505050565b606061221f8561241a565b612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106122e157805182526020820191506020810190506020830392506122be565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612343576040519150601f19603f3d011682016040523d82523d6000602084013e612348565b606091505b5091509150811561235d578092505050612412565b6000815111156123705780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123d75780820151818401526020810190506123bc565b50505050905090810190601f1680156124045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561245c57506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122095fd25307b8cdb6dcfa48596872b5384cca8857c138d796ded6e3457fc854d1864736f6c634300060c0033000000000000000000000000bf131dcbe3436dab8a7c82d9c3666d652ca38eab000000000000000000000000eea2ba1e8b1cf3eae7cdc924d843e85a287d6b5f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000a6fae10000000000000000000000000000000000000000000000000000000000a6fae2

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063630b5ba1116100c35780638dbb1e3a1161007c5780638dbb1e3a146104a957806393f1a40b146104f5578063b0bcf42a1461055e578063d49e77cd1461057c578063e2bbb158146105b0578063f2fde38b146105e85761014d565b8063630b5ba1146103bb57806364482f79146103c5578063715018a6146104095780638aa28550146104135780638d88a90e146104315780638da5cb5b146104755761014d565b80631aed6553116101155780631aed6553146102915780631eaaa045146102af578063441a3e701461030957806348cd4cb11461034157806351eb05a61461035f5780635312ea8e1461038d5761014d565b8063081e3eda146101525780630a087903146101705780631526fe27146101a457806317caf6f114610211578063195426ec1461022f575b600080fd5b61015a61062c565b6040518082815260200191505060405180910390f35b610178610639565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101d0600480360360208110156101ba57600080fd5b810190808035906020019092919050505061065f565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6102196106bc565b6040518082815260200191505060405180910390f35b61027b6004803603604081101561024557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c2565b6040518082815260200191505060405180910390f35b610299610908565b6040518082815260200191505060405180910390f35b610307600480360360608110156102c557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061090e565b005b61033f6004803603604081101561031f57600080fd5b810190808035906020019092919080359060200190929190505050610ae7565b005b610349610d31565b6040518082815260200191505060405180910390f35b61038b6004803603602081101561037557600080fd5b8101908080359060200190929190505050610d37565b005b6103b9600480360360208110156103a357600080fd5b8101908080359060200190929190505050610fa3565b005b6103c36110d5565b005b610407600480360360608110156103db57600080fd5b810190808035906020019092919080359060200190929190803515159060200190929190505050611102565b005b61041161124c565b005b61041b6113d2565b6040518082815260200191505060405180910390f35b6104736004803603602081101561044757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d7565b005b61047d6114de565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104df600480360360408110156104bf57600080fd5b810190808035906020019092919080359060200190929190505050611507565b6040518082815260200191505060405180910390f35b6105416004803603604081101561050b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b9565b604051808381526020018281526020019250505060405180910390f35b6105666115ea565b6040518082815260200191505060405180910390f35b6105846115f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e6600480360360408110156105c657600080fd5b810190808035906020019092919080359060200190929190505050611616565b005b61062a600480360360208110156105fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f6565b005b6000600580549050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005818154811061066c57fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60075481565b600080600584815481106106d257fe5b9060005260206000209060040201905060006006600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b8101908080519060200190929190505050905083600201544311801561081d575060008114155b156108b8576000610832856002015443611507565b90506000610875600754610867886001015461085960045487611a0190919063ffffffff16565b611a0190919063ffffffff16565b611a8790919063ffffffff16565b90506108b36108a48461089664e8d4a5100085611a0190919063ffffffff16565b611a8790919063ffffffff16565b85611ad190919063ffffffff16565b935050505b6108fc83600101546108ee64e8d4a510006108e0868860000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b94505050505092915050565b60035481565b610916611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156109e5576109e46110d5565b5b600060085443116109f8576008546109fa565b435b9050610a1184600754611ad190919063ffffffff16565b600781905550600560405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030155505050505050565b600060058381548110610af657fe5b9060005260206000209060040201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610bd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b610bdd84610d37565b6000610c278260010154610c1964e8d4a51000610c0b87600301548760000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b9050610c333382611bab565b610c4a848360000154611b5990919063ffffffff16565b8260000181905550610c8464e8d4a51000610c7685600301548560000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b8260010181905550610cdb33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e249092919063ffffffff16565b843373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568866040518082815260200191505060405180910390a35050505050565b60085481565b600060058281548110610d4657fe5b9060005260206000209060040201905080600201544311610d675750610fa0565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b810190808051906020019092919050505090506000811415610e4a574382600201819055505050610fa0565b6000610e5a836002015443611507565b90506000610e9d600754610e8f8660010154610e8160045487611a0190919063ffffffff16565b611a0190919063ffffffff16565b611a8790919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b50505050610f8a610f7784610f6964e8d4a5100085611a0190919063ffffffff16565b611a8790919063ffffffff16565b8560030154611ad190919063ffffffff16565b8460030181905550438460020181905550505050505b50565b600060058281548110610fb257fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506110693382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e249092919063ffffffff16565b823373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059583600001546040518082815260200191505060405180910390a36000816000018190555060008160010181905550505050565b6000600580549050905060005b818110156110fe576110f381610d37565b8060010190506110e2565b5050565b61110a611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156111d9576111d86110d5565b5b61121e82611210600586815481106111ed57fe5b906000526020600020906004020160010154600754611b5990919063ffffffff16565b611ad190919063ffffffff16565b600781905550816005848154811061123257fe5b906000526020600020906004020160010181905550505050565b611254611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600181565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6465763a207775743f000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600354821161153f57611538600161152a8585611b5990919063ffffffff16565b611a0190919063ffffffff16565b90506115b3565b60035483106115625761155b8383611b5990919063ffffffff16565b90506115b3565b6115b061157a60035484611b5990919063ffffffff16565b6115a2600161159487600354611b5990919063ffffffff16565b611a0190919063ffffffff16565b611ad190919063ffffffff16565b90505b92915050565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005838154811061162557fe5b9060005260206000209060040201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061169284610d37565b6000816000015411156116f75760006116e982600101546116db64e8d4a510006116cd87600301548760000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b611b5990919063ffffffff16565b90506116f53382611bab565b505b6117483330858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ec6909392919063ffffffff16565b61175f838260000154611ad190919063ffffffff16565b816000018190555061179964e8d4a5100061178b84600301548460000154611a0190919063ffffffff16565b611a8790919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15856040518082815260200191505060405180910390a350505050565b6117fe611ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611944576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806124666026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415611a145760009050611a81565b6000828402905082848281611a2557fe5b0414611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061248c6021913960400191505060405180910390fd5b809150505b92915050565b6000611ac983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f87565b905092915050565b600080828401905083811015611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611b9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061204d565b905092915050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c3657600080fd5b505afa158015611c4a573d6000803e3d6000fd5b505050506040513d6020811015611c6057600080fd5b8101908080519060200190929190505050905080821115611d4f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b505050506040513d6020811015611d3857600080fd5b810190808051906020019092919050505050611e1f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611de257600080fd5b505af1158015611df6573d6000803e3d6000fd5b505050506040513d6020811015611e0c57600080fd5b8101908080519060200190929190505050505b505050565b611ec18363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061210d565b505050565b611f81846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061210d565b50505050565b60008083118290612033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff8578082015181840152602081019050611fdd565b50505050905090810190601f1680156120255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161203f57fe5b049050809150509392505050565b60008383111582906120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120bf5780820151818401526020810190506120a4565b50505050905090810190601f1680156120ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b606061216f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121fc9092919063ffffffff16565b90506000815111156121f75780806020019051602081101561219057600080fd5b81019080805190602001909291905050506121f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806124ad602a913960400191505060405180910390fd5b5b505050565b606061220b8484600085612214565b90509392505050565b606061221f8561241a565b612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106122e157805182526020820191506020810190506020830392506122be565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612343576040519150601f19603f3d011682016040523d82523d6000602084013e612348565b606091505b5091509150811561235d578092505050612412565b6000815111156123705780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123d75780820151818401526020810190506123bc565b50505050905090810190601f1680156124045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561245c57506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122095fd25307b8cdb6dcfa48596872b5384cca8857c138d796ded6e3457fc854d1864736f6c634300060c0033

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

000000000000000000000000bf131dcbe3436dab8a7c82d9c3666d652ca38eab000000000000000000000000eea2ba1e8b1cf3eae7cdc924d843e85a287d6b5f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000a6fae10000000000000000000000000000000000000000000000000000000000a6fae2

-----Decoded View---------------
Arg [0] : _sushi (address): 0xBf131dCbE3436dab8a7c82D9C3666d652ca38eaB
Arg [1] : _devaddr (address): 0xeEa2ba1e8b1CF3EAE7CdC924D843E85a287D6b5f
Arg [2] : _sushiPerBlock (uint256): 1000000000000000000
Arg [3] : _startBlock (uint256): 10943201
Arg [4] : _bonusEndBlock (uint256): 10943202

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf131dcbe3436dab8a7c82d9c3666d652ca38eab
Arg [1] : 000000000000000000000000eea2ba1e8b1cf3eae7cdc924d843e85a287d6b5f
Arg [2] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000a6fae1
Arg [4] : 0000000000000000000000000000000000000000000000000000000000a6fae2


Deployed Bytecode Sourcemap

21477:9381:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24219:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22847:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23210:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23451:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26181:935;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22972:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24483:618;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29163:679;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23543:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27455:805;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29913:356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27199:180;;;:::i;:::-;;25198:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15381:148;;;:::i;:::-;;23130:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30726:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15167:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25636:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23292:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;23047:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22892:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28330:781;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15537:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24219:95;24264:7;24291:8;:15;;;;24284:22;;24219:95;:::o;22847:17::-;;;;;;;;;;;;;:::o;23210:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23451:34::-;;;;:::o;26181:935::-;26282:7;26307:21;26331:8;26340:4;26331:14;;;;;;;;;;;;;;;;;;26307:38;;26356:21;26380:8;:14;26389:4;26380:14;;;;;;;;;;;:21;26395:5;26380:21;;;;;;;;;;;;;;;26356:45;;26412:24;26439:4;:21;;;26412:48;;26471:16;26490:4;:12;;;;;;;;;;;;:22;;;26521:4;26490:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26471:56;;26557:4;:20;;;26542:12;:35;:52;;;;;26593:1;26581:8;:13;;26542:52;26538:489;;;26611:18;26632:98;26664:4;:20;;;26703:12;26632:13;:98::i;:::-;26611:119;;26745:19;26767:125;26876:15;;26767:86;26837:4;:15;;;26767:47;26800:13;;26767:10;:32;;:47;;;;:::i;:::-;:69;;:86;;;;:::i;:::-;:108;;:125;;;;:::i;:::-;26745:147;;26926:89;26965:35;26991:8;26965:21;26981:4;26965:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;26926:16;:20;;:89;;;;:::i;:::-;26907:108;;26538:489;;;27044:64;27092:4;:15;;;27044:43;27082:4;27044:33;27060:16;27044:4;:11;;;:15;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;:47;;:64;;;;:::i;:::-;27037:71;;;;;;26181:935;;;;:::o;22972:28::-;;;;:::o;24483:618::-;15304:12;:10;:12::i;:::-;15294:22;;:6;;;;;;;;;;:22;;;15286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24618:11:::1;24614:61;;;24646:17;:15;:17::i;:::-;24614:61;24685:23;24726:10;;24711:12;:25;:79;;24780:10;;24711:79;;;24752:12;24711:79;24685:105;;24819:32;24839:11;24819:15;;:19;;:32;;;;:::i;:::-;24801:15;:50;;;;24862:8;24890:192;;;;;;;;24927:8;24890:192;;;;;;24966:11;24890:192;;;;25013:15;24890:192;;;;25065:1;24890:192;;::::0;24862:231:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15364:1;24483:618:::0;;;:::o;29163:679::-;29230:21;29254:8;29263:4;29254:14;;;;;;;;;;;;;;;;;;29230:38;;29279:21;29303:8;:14;29312:4;29303:14;;;;;;;;;;;:26;29318:10;29303:26;;;;;;;;;;;;;;;29279:50;;29363:7;29348:4;:11;;;:22;;29340:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29404:16;29415:4;29404:10;:16::i;:::-;29431:15;29449:93;29516:4;:15;;;29449:48;29492:4;29449:38;29465:4;:21;;;29449:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;:52;;:93;;;;:::i;:::-;29431:111;;29553:38;29571:10;29583:7;29553:17;:38::i;:::-;29616:24;29632:7;29616:4;:11;;;:15;;:24;;;;:::i;:::-;29602:4;:11;;:38;;;;29669:48;29712:4;29669:38;29685:4;:21;;;29669:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;29651:4;:15;;:66;;;;29728:55;29762:10;29775:7;29728:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;29820:4;29808:10;29799:35;;;29826:7;29799:35;;;;;;;;;;;;;;;;;;29163:679;;;;;:::o;23543:25::-;;;;:::o;27455:805::-;27507:21;27531:8;27540:4;27531:14;;;;;;;;;;;;;;;;;;27507:38;;27576:4;:20;;;27560:12;:36;27556:75;;27613:7;;;27556:75;27641:16;27660:4;:12;;;;;;;;;;;;:22;;;27691:4;27660:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27641:56;;27724:1;27712:8;:13;27708:102;;;27765:12;27742:4;:20;;:35;;;;27792:7;;;;27708:102;27820:18;27841:49;27855:4;:20;;;27877:12;27841:13;:49::i;:::-;27820:70;;27901:19;27923:113;28020:15;;27923:78;27985:4;:15;;;27923:43;27952:13;;27923:10;:28;;:43;;;;:::i;:::-;:61;;:78;;;;:::i;:::-;:96;;:113;;;;:::i;:::-;27901:135;;28047:5;;;;;;;;;;;:10;;;28066:4;28073:11;28047:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28120:86;28160:35;28186:8;28160:21;28176:4;28160:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;28120:4;:21;;;:25;;:86;;;;:::i;:::-;28096:4;:21;;:110;;;;28240:12;28217:4;:20;;:35;;;;27455:805;;;;;;:::o;29913:356::-;29972:21;29996:8;30005:4;29996:14;;;;;;;;;;;;;;;;;;29972:38;;30021:21;30045:8;:14;30054:4;30045:14;;;;;;;;;;;:26;30060:10;30045:26;;;;;;;;;;;;;;;30021:50;;30082:59;30116:10;30129:4;:11;;;30082:4;:12;;;;;;;;;;;;:25;;;;:59;;;;;:::i;:::-;30187:4;30175:10;30157:48;;;30193:4;:11;;;30157:48;;;;;;;;;;;;;;;;;;30230:1;30216:4;:11;;:15;;;;30260:1;30242:4;:15;;:19;;;;29913:356;;;:::o;27199:180::-;27244:14;27261:8;:15;;;;27244:32;;27292:11;27287:85;27315:6;27309:3;:12;27287:85;;;27345:15;27356:3;27345:10;:15::i;:::-;27323:5;;;;;27287:85;;;;27199:180;:::o;25198:362::-;15304:12;:10;:12::i;:::-;15294:22;;:6;;;;;;;;;;:22;;;15286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25330:11:::1;25326:61;;;25358:17;:15;:17::i;:::-;25326:61;25415:87;25480:11;25415:46;25435:8;25444:4;25435:14;;;;;;;;;;;;;;;;;;:25;;;25415:15;;:19;;:46;;;;:::i;:::-;:50;;:87;;;;:::i;:::-;25397:15;:105;;;;25541:11;25513:8;25522:4;25513:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;25198:362:::0;;;:::o;15381:148::-;15304:12;:10;:12::i;:::-;15294:22;;:6;;;;;;;;;;:22;;;15286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15488:1:::1;15451:40;;15472:6;::::0;::::1;;;;;;;;15451:40;;;;;;;;;;;;15519:1;15502:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15381:148::o:0;23130:44::-;23173:1;23130:44;:::o;30726:129::-;30797:7;;;;;;;;;;;30783:21;;:10;:21;;;30775:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30839:8;30829:7;;:18;;;;;;;;;;;;;;;;;;30726:129;:::o;15167:79::-;15205:7;15232:6;;;;;;;;;;;15225:13;;15167:79;:::o;25636:480::-;25735:7;25771:13;;25764:3;:20;25760:349;;25808:36;23173:1;25808:14;25816:5;25808:3;:7;;:14;;;;:::i;:::-;:18;;:36;;;;:::i;:::-;25801:43;;;;25760:349;25875:13;;25866:5;:22;25862:247;;25912:14;25920:5;25912:3;:7;;:14;;;;:::i;:::-;25905:21;;;;25862:247;25983:114;26056:22;26064:13;;26056:3;:7;;:22;;;;:::i;:::-;25983:46;23173:1;25983:24;26001:5;25983:13;;:17;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;:50;;:114;;;;:::i;:::-;25959:138;;25636:480;;;;;:::o;23292:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23047:28::-;;;;:::o;22892:22::-;;;;;;;;;;;;;:::o;28330:781::-;28396:21;28420:8;28429:4;28420:14;;;;;;;;;;;;;;;;;;28396:38;;28445:21;28469:8;:14;28478:4;28469:14;;;;;;;;;;;:26;28484:10;28469:26;;;;;;;;;;;;;;;28445:50;;28506:16;28517:4;28506:10;:16::i;:::-;28551:1;28537:4;:11;;;:15;28533:260;;;28569:15;28587:141;28712:4;:15;;;28587:102;28684:4;28587:74;28639:4;:21;;;28587:4;:29;;;:51;;:74;;;;:::i;:::-;:96;;:102;;;;:::i;:::-;:124;;:141;;;;:::i;:::-;28569:159;;28743:38;28761:10;28773:7;28743:17;:38::i;:::-;28533:260;;28803:124;28855:10;28889:4;28909:7;28803:4;:12;;;;;;;;;;;;:29;;;;:124;;;;;;:::i;:::-;28952:24;28968:7;28952:4;:11;;;:15;;:24;;;;:::i;:::-;28938:4;:11;;:38;;;;29005:48;29048:4;29005:38;29021:4;:21;;;29005:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;28987:4;:15;;:66;;;;29089:4;29077:10;29069:34;;;29095:7;29069:34;;;;;;;;;;;;;;;;;;28330:781;;;;:::o;15537:281::-;15304:12;:10;:12::i;:::-;15294:22;;:6;;;;;;;;;;:22;;;15286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15660:1:::1;15640:22;;:8;:22;;;;15618:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15773:8;15744:38;;15765:6;::::0;::::1;;;;;;;;15744:38;;;;;;;;;;;;15802:8;15793:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15537:281:::0;:::o;1449:471::-;1507:7;1757:1;1752;:6;1748:47;;;1782:1;1775:8;;;;1748:47;1807:9;1823:1;1819;:5;1807:17;;1852:1;1847;1843;:5;;;;;;:10;1835:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1911:1;1904:8;;;1449:471;;;;;:::o;1928:132::-;1986:7;2013:39;2017:1;2020;2013:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2006:46;;1928:132;;;;:::o;882:181::-;940:7;960:9;976:1;972;:5;960:17;;1001:1;996;:6;;988:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:1;1047:8;;;882:181;;;;:::o;1071:136::-;1129:7;1156:43;1160:1;1163;1156:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1149:50;;1071:136;;;;:::o;14552:106::-;14605:15;14640:10;14633:17;;14552:106;:::o;30385:285::-;30462:16;30481:5;;;;;;;;;;;:15;;;30505:4;30481:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30462:49;;30536:8;30526:7;:18;30522:141;;;30561:5;;;;;;;;;;;:14;;;30576:3;30581:8;30561:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30522:141;;;30623:5;;;;;;;;;;;:14;;;30638:3;30643:7;30623:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30522:141;30385:285;;;:::o;6309:248::-;6426:123;6460:5;6503:23;;;6528:2;6532:5;6480:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6426:19;:123::i;:::-;6309:248;;;:::o;6565:285::-;6709:133;6743:5;6786:27;;;6815:4;6821:2;6825:5;6763:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6709:19;:133::i;:::-;6565:285;;;;:::o;2068:312::-;2188:7;2220:1;2216;:5;2223:12;2208:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2247:9;2263:1;2259;:5;;;;;;2247:17;;2371:1;2364:8;;;2068:312;;;;;:::o;1215:226::-;1335:7;1368:1;1363;:6;;1371:12;1355:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1395:9;1411:1;1407;:5;1395:17;;1432:1;1425:8;;;1215:226;;;;;:::o;8541:860::-;8965:23;8991:106;9033:4;8991:106;;;;;;;;;;;;;;;;;8999:5;8991:27;;;;:106;;;;;:::i;:::-;8965:132;;9132:1;9112:10;:17;:21;9108:286;;;9285:10;9274:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9248:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9108:286;8541:860;;;:::o;4133:230::-;4270:12;4302:53;4325:6;4333:4;4339:1;4342:12;4302:22;:53::i;:::-;4295:60;;4133:230;;;;;:::o;5139:1044::-;5312:12;5345:18;5356:6;5345:10;:18::i;:::-;5337:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5471:12;5485:23;5512:6;:11;;5531:8;5555:4;5512:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5470:100;;;;5585:7;5581:595;;;5616:10;5609:17;;;;;;5581:595;5750:1;5730:10;:17;:21;5726:439;;;5993:10;5987:17;6054:15;6041:10;6037:2;6033:19;6026:44;5941:148;6136:12;6129:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:1044;;;;;;;:::o;2783:659::-;2843:4;3105:16;3140:19;3172:66;3140:98;;;;3354:7;3342:20;3330:32;;3403:11;3391:8;:23;;:42;;;;;3430:3;3418:15;;:8;:15;;3391:42;3383:51;;;;2783:659;;;:::o

Swarm Source

ipfs://95fd25307b8cdb6dcfa48596872b5384cca8857c138d796ded6e3457fc854d18

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.