Contract 0xc4dc26677aef3fe8a0b615d2080f044289901b7f

 
 
Txn Hash
Block
From
To
Value [Txn Fee]
0xe9d3a37aab1b2abaec208571ce27ca8719b0e48a8efdf69f31712d67689b743197435462021-08-04 14:39:201 hr 24 mins ago0x74023d943674df67ad9596e14bf93a3cee77b04e IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.000653105
0x27695a604accf4ed008fb84b6f7ad7b8f7696bed1d4333ed8c3217dd67d37bdf97236162021-08-03 21:26:2218 hrs 37 mins ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x6bc2a6bc391ba16520dc6e09cdfd42b35113452edfe28d36db7cf2a1623fc4a197163582021-08-03 15:14:391 day 49 mins ago0x3242e71a60769203e8e4917bdf93af1fdd1cee80 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.0005815326
0xeb30d18acbd56834328703b16f9323efcd0315484d5445deb95d55c43193ef0597135742021-08-03 12:44:351 day 3 hrs ago0x96406e7fb61a34b5bfde008cbccc074e7f63c8a4 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00042793
0xb7939b05e886727c31b1a56a9d938d56dadfbc7421e7b01928caa1bf9add2a1196825922021-08-02 9:24:012 days 6 hrs ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x515bbadbf97a07ff04ea4d0a28a54a4bbe0065852cd23330828632304833360c96695862021-08-01 22:17:092 days 17 hrs ago0xf0cf5ba63bd385b9e1c8562a06a6f4657c9c61b1 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00050287
0x70492d266476f165760acb94f42edfa384da6356abb5a7adcc4f5891b839e1c796620032021-08-01 15:42:133 days 21 mins ago0x96406e7fb61a34b5bfde008cbccc074e7f63c8a4 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00057001
0xa7a210e11ff0e7337a0b41eaeb46fa96e2935160516db1be281001a19be13ba296554402021-08-01 9:57:023 days 6 hrs ago0xba133cdb8c6e7806cea2540b93aaf35c5ced2817 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00042787
0x851b7707f35fca3fe25fcf889906521f9e3e016c84dfd20249ebee787e862cc996492022021-08-01 4:37:563 days 11 hrs ago0x8d2c05cc16a965580c7c250b7cba38affbcfa1d0 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00035287
0xdbcdb6195d5017757d0da153a1b8993ea04fc4190fd17e4b59aae3dfa526194696370172021-07-31 18:12:053 days 21 hrs ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x042871a4b71281109e88e292f7cfb9d87f0f79b92a1522e069fe9b6236f67d2296062472021-07-30 16:03:215 days ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x7e0cfc45ac4e6d90f6aa149348ed0055f25a681f648b9487a910a33d2b1d71a395984882021-07-30 9:23:475 days 6 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00042793
0x5ee24cddfef78d2c7f99fb3425e74510bd1ebd985ea71568d0ae98f73652c67b95870252021-07-29 23:40:275 days 16 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00057013
0x2f1ff118b94799e691944e06eb635b7eb376425d4792515754db416898a79cf795869492021-07-29 23:36:325 days 16 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0xdc5e2d1e21bcf96bae243327775ece6ea88ac53c2d87510b77dacfa01b0e735895717122021-07-29 9:46:586 days 6 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00057007
0x4babb6e89994709b8c6aa2fb10e593a2c311161ff761714481959e876f8b0d7d95716782021-07-29 9:45:166 days 6 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00064495
0xda3854be43a65d23e5c81ecb88a212067653846fdb5df6b45daf52a052f72ad895673112021-07-29 5:58:526 days 10 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00045626
0xdcf4eca6478ae445e59047b3a92275f430cc6796d9399e02deef1efa706f5e2e95672572021-07-29 5:55:556 days 10 hrs ago0x609917fc7ff28e78ba4c8452c59ff526e230b96b IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00045626
0xcbf5500d883d3bd9c09299ba1d32913bb5e7dfa1d284fb725c003422b8b11a9695640512021-07-29 3:04:256 days 12 hrs ago0x553f79ffcdda26e04505f2ae96a0cc5cedde66cf IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.0006074
0xd0241fe7a88a5e67a0e84cd531bae9f4fbc1176c519aa36e875c46bb95472e4795562112021-07-28 20:25:436 days 19 hrs ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x0e4ad3f63d3fc8e9be26e35c8ece5ac4f2c1003b3fc00ff9763b00f062ca886a95277992021-07-27 18:32:377 days 21 hrs ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0x2f11bb6f8217435545b0be661a1b83e8d40ddd84e501c3c9c0cc3107cfd92dba95012282021-07-26 18:58:228 days 21 hrs ago0x323e930d5e9eb5ce608c3e90dae885cf44666f74 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0xfa9d29d2d71e2722470b4e015118871050fd7272e65d4894cf7e6aebcfdef87e94955112021-07-26 14:01:019 days 2 hrs ago0x0131bb1e8165b391f104ebb5b0a6df4b29fdc8f5 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00042787
0x48983d35193ccede778a8636075cc70c6dc2541b56d0e033a1df20095b5ebc8794955012021-07-26 14:00:309 days 2 hrs ago0x0131bb1e8165b391f104ebb5b0a6df4b29fdc8f5 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00038126
0xbe3f741aabcc0d7534a6d1a0c0dcc479f861701dc541836e496c408c9dd3a6b394676602021-07-25 14:18:2610 days 1 hr ago0x96406e7fb61a34b5bfde008cbccc074e7f63c8a4 IN  0xc4dc26677aef3fe8a0b615d2080f044289901b7f0 BNB0.00056995
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CafeChefSafeP

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
CafeSwap Safe Protocol Staking Pool
*/

pragma solidity >=0.4.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) {

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

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}




pragma solidity >=0.4.0;

interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    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.2;


library Address {
   
    function isContract(address account) internal view returns (bool) {

        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 SafeBEP20 {
    using SafeMath for uint256;
    using Address for address;

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

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

    function safeApprove(
        IBEP20 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),
            'SafeBEP20: approve from non-zero to non-zero allowance'
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IBEP20 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(
        IBEP20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            'SafeBEP20: decreased allowance below zero'
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

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




pragma solidity >=0.4.0;

contract Context {

    constructor() internal {}

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

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




pragma solidity >=0.4.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 onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
pragma solidity 0.6.12;




contract CafeChefSafeP is Ownable {
    using SafeMath for uint256;
    using SafeBEP20 for IBEP20;

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

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

    // The BREW TOKEN!
    IBEP20 public brew;
    IBEP20 public rewardToken;
    
    // Deployer address where fee% will be sent on BREW deposit
    address public feeAddress;

    // Reward tokens created per block.
    uint256 public rewardPerBlock;

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

    // Fee calculations
    uint constant public FEE = 5;
    uint constant public MAX_FEE = 1000;

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

    constructor(
        IBEP20 _brew,
        IBEP20 _rewardToken,
        uint256 _rewardPerBlock,
        uint256 _startBlock,
        uint256 _bonusEndBlock,
        address _feeAddress
    ) public {
        brew = _brew;
        rewardToken = _rewardToken;
        rewardPerBlock = _rewardPerBlock;
        startBlock = _startBlock;
        bonusEndBlock = _bonusEndBlock;
        feeAddress = _feeAddress;

        // staking pool
        poolInfo.push(PoolInfo({
            lpToken: _brew,
            allocPoint: 1000,
            lastRewardBlock: startBlock,
            accRewardTokenPerShare: 0
        }));

        totalAllocPoint = 1000;

    }

    function stopReward() public onlyOwner {
        bonusEndBlock = block.number;
    }


    // 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);
        } else if (_from >= bonusEndBlock) {
            return 0;
        } else {
            return bonusEndBlock.sub(_from);
        }
    }

    // View function to see pending Reward on frontend.
    function pendingReward(address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[0];
        UserInfo storage user = userInfo[_user];
        uint256 accRewardTokenPerShare = pool.accRewardTokenPerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
            uint256 brewReward = multiplier.mul(rewardPerBlock).mul(pool.allocPoint).div(totalAllocPoint);
            accRewardTokenPerShare = accRewardTokenPerShare.add(brewReward.mul(1e22).div(lpSupply));
        }
        return user.amount.mul(accRewardTokenPerShare).div(1e22).sub(user.rewardDebt);
    }

    // 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 brewReward = multiplier.mul(rewardPerBlock).mul(pool.allocPoint).div(totalAllocPoint);
        pool.accRewardTokenPerShare = pool.accRewardTokenPerShare.add(brewReward.mul(1e22).div(lpSupply));
        pool.lastRewardBlock = block.number;
    }

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


    // Stake BREW tokens to CafeChef
    function deposit(uint256 _amount) public {
        PoolInfo storage pool = poolInfo[0];
        UserInfo storage user = userInfo[msg.sender];

        uint256 newAmount;
    
        updatePool(0);
        if (user.amount > 0) {
            uint256 pending = user.amount.mul(pool.accRewardTokenPerShare).div(1e22).sub(user.rewardDebt);
            if(pending > 0) {
                rewardToken.safeTransfer(address(msg.sender), pending);
            }
        }
        if(_amount > 0) {
            // Calculate the fee amount and send it to the feeAddress
            uint256 feeAmount = calculateFee(_amount);
            pool.lpToken.safeTransferFrom(address(msg.sender), address(feeAddress), feeAmount);
            
            // Calculate the new amount and deposit it here
            newAmount = _amount.sub(feeAmount);
            pool.lpToken.safeTransferFrom(address(msg.sender), address(this), newAmount);
            user.amount = user.amount.add(newAmount);
        }
        user.rewardDebt = user.amount.mul(pool.accRewardTokenPerShare).div(1e22);

        emit Deposit(msg.sender, newAmount);
    }

    // Withdraw BREW tokens from STAKING.
    function withdraw(uint256 _amount) public {
        PoolInfo storage pool = poolInfo[0];
        UserInfo storage user = userInfo[msg.sender];
        require(user.amount >= _amount, "withdraw: not good");
        updatePool(0);
        uint256 pending = user.amount.mul(pool.accRewardTokenPerShare).div(1e22).sub(user.rewardDebt);
        if(pending > 0) {
            rewardToken.safeTransfer(address(msg.sender), pending);
        }
        if(_amount > 0) {
            user.amount = user.amount.sub(_amount);
            pool.lpToken.safeTransfer(address(msg.sender), _amount);
        }
        user.rewardDebt = user.amount.mul(pool.accRewardTokenPerShare).div(1e22);

        emit Withdraw(msg.sender, _amount);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    function emergencyWithdraw() public {
        PoolInfo storage pool = poolInfo[0];
        UserInfo storage user = userInfo[msg.sender];
        pool.lpToken.safeTransfer(address(msg.sender), user.amount);
        user.amount = 0;
        user.rewardDebt = 0;
        emit EmergencyWithdraw(msg.sender, user.amount);
    }

    // Withdraw reward. EMERGENCY ONLY.
    function emergencyRewardWithdraw(uint256 _amount) public onlyOwner {
        require(_amount < rewardToken.balanceOf(address(this)), 'not enough token');
        rewardToken.safeTransfer(address(msg.sender), _amount);
    }

    // Function to change the deployer address
    function changeFeeAddress(address _newFeeAddress) public onlyOwner {
        feeAddress = _newFeeAddress;
    }

    // Calculate Fee % of the amount
    function calculateFee(uint256 _amount) public view returns (uint256) {
        return _amount.mul(FEE).div(MAX_FEE);
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IBEP20","name":"_brew","type":"address"},{"internalType":"contract IBEP20","name":"_rewardToken","type":"address"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_bonusEndBlock","type":"uint256"},{"internalType":"address","name":"_feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"brew","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newFeeAddress","type":"address"}],"name":"changeFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyRewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IBEP20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accRewardTokenPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopReward","outputs":[],"stateMutability":"nonpayable","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":"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":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600060075534801561001557600080fd5b506040516125a73803806125a7833981810160405260c081101561003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600061008b6102e360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35085600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600481905550826008819055508160098190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560405180608001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020016103e8815260200160085481526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550506103e86007819055505050505050506102eb565b600033905090565b6122ad806102fa6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806380dc0672116100c3578063bc063e1a1161007c578063bc063e1a146104c7578063c57981b5146104e5578063db2e21bc14610503578063f2fde38b1461050d578063f40f0f5214610551578063f7c618c1146105a957610158565b806380dc0672146103af5780638ae39cac146103b95780638da5cb5b146103d75780638dbb1e3a1461040b57806399a5d74714610457578063b6b55f251461049957610158565b80633279beab116101155780633279beab146102ed578063412753581461031b57806348cd4cb11461034f57806351eb05a61461036d578063630b5ba11461039b578063715018a6146103a557610158565b80631526fe271461015d578063176f0c47146101ca5780631959a002146101fe5780631aed65531461025d578063285e14061461027b5780632e1a7d4d146102bf575b600080fd5b6101896004803603602081101561017357600080fd5b81019080803590602001909291905050506105dd565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6101d261063a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102406004803603602081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610660565b604051808381526020018281526020019250505060405180910390f35b610265610684565b6040518082815260200191505060405180910390f35b6102bd6004803603602081101561029157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061068a565b005b6102eb600480360360208110156102d557600080fd5b8101908080359060200190929190505050610796565b005b6103196004803603602081101561030357600080fd5b8101908080359060200190929190505050610a30565b005b610323610c80565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610357610ca6565b6040518082815260200191505060405180910390f35b6103996004803603602081101561038357600080fd5b8101908080359060200190929190505050610cac565b005b6103a3610e72565b005b6103ad610e9f565b005b6103b7611025565b005b6103c16110f6565b6040518082815260200191505060405180910390f35b6103df6110fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104416004803603604081101561042157600080fd5b810190808035906020019092919080359060200190929190505050611125565b6040518082815260200191505060405180910390f35b6104836004803603602081101561046d57600080fd5b810190808035906020019092919050505061117a565b6040518082815260200191505060405180910390f35b6104c5600480360360208110156104af57600080fd5b81019080803590602001909291905050506111ab565b005b6104cf611474565b6040518082815260200191505060405180910390f35b6104ed61147a565b6040518082815260200191505060405180910390f35b61050b61147f565b005b61054f6004803603602081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061159f565b005b6105936004803603602081101561056757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611673565b6040518082815260200191505060405180910390f35b6105b16118b2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600581815481106105ea57fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154905082565b60095481565b6106926118d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060056000815481106107a657fe5b906000526020600020906004020190506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610873576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b61087d6000610cac565b60006108cc82600101546108be69021e19e0c9bab24000006108b0876003015487600001546118e090919063ffffffff16565b61196690919063ffffffff16565b6119b090919063ffffffff16565b90506000811115610925576109243382600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b5b600084111561099d576109458483600001546119b090919063ffffffff16565b826000018190555061099c33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b5b6109d469021e19e0c9bab24000006109c6856003015485600001546118e090919063ffffffff16565b61196690919063ffffffff16565b82600101819055503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364856040518082815260200191505060405180910390a250505050565b610a386118d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6020811015610bab57600080fd5b81019080805190602001909291905050508110610c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6e6f7420656e6f75676820746f6b656e0000000000000000000000000000000081525060200191505060405180910390fd5b610c7d3382600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600060058281548110610cbb57fe5b9060005260206000209060040201905080600201544311610cdc5750610e6f565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d6957600080fd5b505afa158015610d7d573d6000803e3d6000fd5b505050506040513d6020811015610d9357600080fd5b810190808051906020019092919050505090506000811415610dbf574382600201819055505050610e6f565b6000610dcf836002015443611125565b90506000610e12600754610e048660010154610df6600454876118e090919063ffffffff16565b6118e090919063ffffffff16565b61196690919063ffffffff16565b9050610e59610e4684610e3869021e19e0c9bab2400000856118e090919063ffffffff16565b61196690919063ffffffff16565b8560030154611a9c90919063ffffffff16565b8460030181905550438460020181905550505050505b50565b6000600580549050905060005b81811015610e9b57610e9081610cac565b806001019050610e7f565b5050565b610ea76118d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61102d6118d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b43600981905550565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600954821161114a5761114383836119b090919063ffffffff16565b9050611174565b600954831061115c5760009050611174565b611171836009546119b090919063ffffffff16565b90505b92915050565b60006111a46103e86111966005856118e090919063ffffffff16565b61196690919063ffffffff16565b9050919050565b600060056000815481106111bb57fe5b906000526020600020906004020190506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061121a6000610cac565b6000826000015411156112d1576000611276836001015461126869021e19e0c9bab240000061125a886003015488600001546118e090919063ffffffff16565b61196690919063ffffffff16565b6119b090919063ffffffff16565b905060008111156112cf576112ce3382600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b5b505b60008411156113e15760006112e58561117a565b905061135a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b24909392919063ffffffff16565b61136d81866119b090919063ffffffff16565b91506113c03330848760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b24909392919063ffffffff16565b6113d7828460000154611a9c90919063ffffffff16565b8360000181905550505b61141869021e19e0c9bab240000061140a856003015485600001546118e090919063ffffffff16565b61196690919063ffffffff16565b82600101819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c826040518082815260200191505060405180910390a250505050565b6103e881565b600581565b6000600560008154811061148f57fe5b906000526020600020906004020190506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506115353382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b60008160000181905550600081600101819055503373ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969582600001546040518082815260200191505060405180910390a25050565b6115a76118d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61167081611be5565b50565b600080600560008154811061168457fe5b906000526020600020906004020190506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561176d57600080fd5b505afa158015611781573d6000803e3d6000fd5b505050506040513d602081101561179757600080fd5b810190808051906020019092919050505090508360020154431180156117be575060008114155b1561185e5760006117d3856002015443611125565b9050600061181660075461180888600101546117fa600454876118e090919063ffffffff16565b6118e090919063ffffffff16565b61196690919063ffffffff16565b905061185961184a8461183c69021e19e0c9bab2400000856118e090919063ffffffff16565b61196690919063ffffffff16565b85611a9c90919063ffffffff16565b935050505b6118a7836001015461189969021e19e0c9bab240000061188b8688600001546118e090919063ffffffff16565b61196690919063ffffffff16565b6119b090919063ffffffff16565b945050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000808314156118f35760009050611960565b600082840290508284828161190457fe5b041461195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122576021913960400191505060405180910390fd5b809150505b92915050565b60006119a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d28565b905092915050565b60006119f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dee565b905092915050565b611a978363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611eae565b505050565b600080828401905083811015611b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611bdf846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611eae565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806122316026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290611dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d99578082015181840152602081019050611d7e565b50505050905090810190601f168015611dc65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611de057fe5b049050809150509392505050565b6000838311158290611e9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e60578082015181840152602081019050611e45565b50505050905090810190601f168015611e8d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060611f10826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f9d9092919063ffffffff16565b9050600081511115611f9857808060200190516020811015611f3157600080fd5b8101908080519060200190929190505050611f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612207602a913960400191505060405180910390fd5b5b505050565b6060611fac8484600085611fb5565b90509392505050565b6060611fc0856121bb565b612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612082578051825260208201915060208101905060208303925061205f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146120e4576040519150601f19603f3d011682016040523d82523d6000602084013e6120e9565b606091505b509150915081156120fe5780925050506121b3565b6000815111156121115780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561217857808201518184015260208101905061215d565b50505050905090810190601f1680156121a55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156121fd57506000801b8214155b9250505091905056fe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220eb5a979dd690cde2843b28b1967f3b76d951532d5493af099c44e34db8d9ebf264736f6c634300060c0033000000000000000000000000790be81c3ca0e53974be2688cdb954732c9862e1000000000000000000000000a8c514d991f59bab02d32b68f04204cb89261c88000000000000000000000000000000000000000000000000000000000e3ed9c000000000000000000000000000000000000000000000000000000000006d23f6000000000000000000000000000000000000000000000000000000000094b0f60000000000000000000000001a033c4750cc55160ea1a86786e479089da48891

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

000000000000000000000000790be81c3ca0e53974be2688cdb954732c9862e1000000000000000000000000a8c514d991f59bab02d32b68f04204cb89261c88000000000000000000000000000000000000000000000000000000000e3ed9c000000000000000000000000000000000000000000000000000000000006d23f6000000000000000000000000000000000000000000000000000000000094b0f60000000000000000000000001a033c4750cc55160ea1a86786e479089da48891

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000790be81c3ca0e53974be2688cdb954732c9862e1
Arg [1] : 000000000000000000000000a8c514d991f59bab02d32b68f04204cb89261c88
Arg [2] : 000000000000000000000000000000000000000000000000000000000e3ed9c0
Arg [3] : 00000000000000000000000000000000000000000000000000000000006d23f6
Arg [4] : 000000000000000000000000000000000000000000000000000000000094b0f6
Arg [5] : 0000000000000000000000001a033c4750cc55160ea1a86786e479089da48891


Deployed ByteCode Sourcemap

10726:7802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11767:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11499:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11849:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12161:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18242:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16770:741;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17960:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11627:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12081;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14564:701;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15348:180;;;:::i;:::-;;10096:140;;;:::i;:::-;;13178:86;;;:::i;:::-;;11702:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9882:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13342:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18401:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15576:1143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12258:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12223:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17582:329;;;:::i;:::-;;10244:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13713:775;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11524:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11767:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11499:18::-;;;;;;;;;;;;;:::o;11849:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12161:28::-;;;;:::o;18242:113::-;10019:12;:10;:12::i;:::-;10009:22;;:6;;;;;;;;;;:22;;;10001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18333:14:::1;18320:10;;:27;;;;;;;;;;;;;;;;;;18242:113:::0;:::o;16770:741::-;16823:21;16847:8;16856:1;16847:11;;;;;;;;;;;;;;;;;;16823:35;;16869:21;16893:8;:20;16902:10;16893:20;;;;;;;;;;;;;;;16869:44;;16947:7;16932:4;:11;;;:22;;16924:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16988:13;16999:1;16988:10;:13::i;:::-;17012:15;17030:75;17089:4;:15;;;17030:54;17079:4;17030:44;17046:4;:27;;;17030:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:54;;;;:::i;:::-;:58;;:75;;;;:::i;:::-;17012:93;;17129:1;17119:7;:11;17116:97;;;17147:54;17180:10;17193:7;17147:11;;;;;;;;;;;:24;;;;:54;;;;;:::i;:::-;17116:97;17236:1;17226:7;:11;17223:151;;;17268:24;17284:7;17268:4;:11;;;:15;;:24;;;;:::i;:::-;17254:4;:11;;:38;;;;17307:55;17341:10;17354:7;17307:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;17223:151;17402:54;17451:4;17402:44;17418:4;:27;;;17402:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:54;;;;:::i;:::-;17384:4;:15;;:72;;;;17483:10;17474:29;;;17495:7;17474:29;;;;;;;;;;;;;;;;;;16770:741;;;;:::o;17960:226::-;10019:12;:10;:12::i;:::-;10009:22;;:6;;;;;;;;;;:22;;;10001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18056:11:::1;;;;;;;;;;;:21;;;18086:4;18056:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;18046:7;:46;18038:75;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18124:54;18157:10;18170:7;18124:11;;;;;;;;;;;:24;;;;:54;;;;;:::i;:::-;17960:226:::0;:::o;11627:25::-;;;;;;;;;;;;;:::o;12081:::-;;;;:::o;14564:701::-;14616:21;14640:8;14649:4;14640:14;;;;;;;;;;;;;;;;;;14616:38;;14685:4;:20;;;14669:12;:36;14665:75;;14722:7;;;14665:75;14750:16;14769:4;:12;;;;;;;;;;;;:22;;;14800:4;14769:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14750:56;;14833:1;14821:8;:13;14817:102;;;14874:12;14851:4;:20;;:35;;;;14901:7;;;;14817:102;14929:18;14950:49;14964:4;:20;;;14986:12;14950:13;:49::i;:::-;14929:70;;15010:18;15031:72;15087:15;;15031:51;15066:4;:15;;;15031:30;15046:14;;15031:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;15010:93;;15144:67;15176:34;15201:8;15176:20;15191:4;15176:10;:14;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;15144:4;:27;;;:31;;:67;;;;:::i;:::-;15114:4;:27;;:97;;;;15245:12;15222:4;:20;;:35;;;;14564:701;;;;;;:::o;15348:180::-;15393:14;15410:8;:15;;;;15393:32;;15441:11;15436:85;15464:6;15458:3;:12;15436:85;;;15494:15;15505:3;15494:10;:15::i;:::-;15472:5;;;;;15436:85;;;;15348:180;:::o;10096:140::-;10019:12;:10;:12::i;:::-;10009:22;;:6;;;;;;;;;;:22;;;10001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10195:1:::1;10158:40;;10179:6;::::0;::::1;;;;;;;;10158:40;;;;;;;;;;;;10226:1;10209:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10096:140::o:0;13178:86::-;10019:12;:10;:12::i;:::-;10009:22;;:6;;;;;;;;;;:22;;;10001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13244:12:::1;13228:13;:28;;;;13178:86::o:0;11702:29::-;;;;:::o;9882:79::-;9920:7;9947:6;;;;;;;;;;;9940:13;;9882:79;:::o;13342:306::-;13414:7;13445:13;;13438:3;:20;13434:207;;13482:14;13490:5;13482:3;:7;;:14;;;;:::i;:::-;13475:21;;;;13434:207;13527:13;;13518:5;:22;13514:127;;13564:1;13557:8;;;;13514:127;13605:24;13623:5;13605:13;;:17;;:24;;;;:::i;:::-;13598:31;;13342:306;;;;;:::o;18401:124::-;18461:7;18488:29;12289:4;18488:16;12250:1;18488:7;:11;;:16;;;;:::i;:::-;:20;;:29;;;;:::i;:::-;18481:36;;18401:124;;;:::o;15576:1143::-;15628:21;15652:8;15661:1;15652:11;;;;;;;;;;;;;;;;;;15628:35;;15674:21;15698:8;:20;15707:10;15698:20;;;;;;;;;;;;;;;15674:44;;15731:17;15765:13;15776:1;15765:10;:13::i;:::-;15807:1;15793:4;:11;;;:15;15789:260;;;15825:15;15843:75;15902:4;:15;;;15843:54;15892:4;15843:44;15859:4;:27;;;15843:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:54;;;;:::i;:::-;:58;;:75;;;;:::i;:::-;15825:93;;15946:1;15936:7;:11;15933:105;;;15968:54;16001:10;16014:7;15968:11;;;;;;;;;;;:24;;;;:54;;;;;:::i;:::-;15933:105;15789:260;;16072:1;16062:7;:11;16059:522;;;16161:17;16181:21;16194:7;16181:12;:21::i;:::-;16161:41;;16217:82;16255:10;16276;;;;;;;;;;;16289:9;16217:4;:12;;;;;;;;;;;;:29;;;;:82;;;;;;:::i;:::-;16401:22;16413:9;16401:7;:11;;:22;;;;:::i;:::-;16389:34;;16438:76;16476:10;16497:4;16504:9;16438:4;:12;;;;;;;;;;;;:29;;;;:76;;;;;;:::i;:::-;16543:26;16559:9;16543:4;:11;;;:15;;:26;;;;:::i;:::-;16529:4;:11;;:40;;;;16059:522;;16609:54;16658:4;16609:44;16625:4;:27;;;16609:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:54;;;;:::i;:::-;16591:4;:15;;:72;;;;16689:10;16681:30;;;16701:9;16681:30;;;;;;;;;;;;;;;;;;15576:1143;;;;:::o;12258:35::-;12289:4;12258:35;:::o;12223:28::-;12250:1;12223:28;:::o;17582:329::-;17629:21;17653:8;17662:1;17653:11;;;;;;;;;;;;;;;;;;17629:35;;17675:21;17699:8;:20;17708:10;17699:20;;;;;;;;;;;;;;;17675:44;;17730:59;17764:10;17777:4;:11;;;17730:4;:12;;;;;;;;;;;;:25;;;;:59;;;;;:::i;:::-;17814:1;17800:4;:11;;:15;;;;17844:1;17826:4;:15;;:19;;;;17879:10;17861:42;;;17891:4;:11;;;17861:42;;;;;;;;;;;;;;;;;;17582:329;;:::o;10244:109::-;10019:12;:10;:12::i;:::-;10009:22;;:6;;;;;;;;;;:22;;;10001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10317:28:::1;10336:8;10317:18;:28::i;:::-;10244:109:::0;:::o;13713:775::-;13774:7;13794:21;13818:8;13827:1;13818:11;;;;;;;;;;;;;;;;;;13794:35;;13840:21;13864:8;:15;13873:5;13864:15;;;;;;;;;;;;;;;13840:39;;13890:30;13923:4;:27;;;13890:60;;13961:16;13980:4;:12;;;;;;;;;;;;:22;;;14011:4;13980:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13961:56;;14047:4;:20;;;14032:12;:35;:52;;;;;14083:1;14071:8;:13;;14032:52;14028:365;;;14101:18;14122:49;14136:4;:20;;;14158:12;14122:13;:49::i;:::-;14101:70;;14186:18;14207:72;14263:15;;14207:51;14242:4;:15;;;14207:30;14222:14;;14207:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;14186:93;;14319:62;14346:34;14371:8;14346:20;14361:4;14346:10;:14;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;14319:22;:26;;:62;;;;:::i;:::-;14294:87;;14028:365;;;14410:70;14464:4;:15;;;14410:49;14454:4;14410:39;14426:22;14410:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;14403:77;;;;;;13713:775;;;:::o;11524:25::-;;;;;;;;;;;;;:::o;9180:98::-;9225:15;9260:10;9253:17;;9180:98;:::o;671:252::-;729:7;760:1;755;:6;751:47;;;785:1;778:8;;;;751:47;810:9;826:1;822;:5;810:17;;855:1;850;846;:5;;;;;;:10;838:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:1;907:8;;;671:252;;;;;:::o;931:132::-;989:7;1016:39;1020:1;1023;1016:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1009:46;;931:132;;;;:::o;293:136::-;351:7;378:43;382:1;385;378:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;371:50;;293:136;;;;:::o;6750:211::-;6867:86;6887:5;6917:23;;;6942:2;6946:5;6894:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:19;:86::i;:::-;6750:211;;;:::o;104:181::-;162:7;182:9;198:1;194;:5;182:17;;223:1;218;:6;;210:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;276:1;269:8;;;104:181;;;;:::o;6969:248::-;7113:96;7133:5;7163:27;;;7192:4;7198:2;7202:5;7140:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7113:19;:96::i;:::-;6969:248;;;;:::o;10459:229::-;10553:1;10533:22;;:8;:22;;;;10525:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10643:8;10614:38;;10635:6;;;;;;;;;;10614:38;;;;;;;;;;;;10672:8;10663:6;;:17;;;;;;;;;;;;;;;;;;10459:229;:::o;1071:312::-;1191:7;1223:1;1219;:5;1226:12;1211:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:9;1266:1;1262;:5;;;;;;1250:17;;1374:1;1367:8;;;1071:312;;;;;:::o;437:226::-;557:7;590:1;585;:6;;593:12;577:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:9;633:1;629;:5;617:17;;654:1;647:8;;;437:226;;;;;:::o;8641:439::-;8730:23;8756:69;8784:4;8756:69;;;;;;;;;;;;;;;;;8764:5;8756:27;;;;:69;;;;;:::i;:::-;8730:95;;8860:1;8840:10;:17;:21;8836:237;;;8995:10;8984:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8976:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8836:237;8641:439;;;:::o;4723:230::-;4860:12;4892:53;4915:6;4923:4;4929:1;4932:12;4892:22;:53::i;:::-;4885:60;;4723:230;;;;;:::o;5596:1020::-;5769:12;5802:18;5813:6;5802:10;:18::i;:::-;5794:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5928:12;5942:23;5969:6;:11;;5988:8;5998:4;5969:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5927:76;;;;6018:7;6014:595;;;6049:10;6042:17;;;;;;6014:595;6183:1;6163:10;:17;:21;6159:439;;;6426:10;6420:17;6487:15;6474:10;6470:2;6466:19;6459:44;6374:148;6569:12;6562:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5596:1020;;;;;;;:::o;3731:398::-;3791:4;3810:16;3837:19;3859:66;3837:88;;;;4041:7;4029:20;4017:32;;4090:11;4078:8;:23;;:42;;;;;4117:3;4105:15;;:8;:15;;4078:42;4070:51;;;;3731:398;;;:::o

Swarm Source

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