Contract 0xf6afC35FF5AeF9c7043022d6259DB395382Ada0b 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x871e3e4b160bf078a8c9039ad183d72dde016817649391ec4d46f9caffe4a520Emergency Withdr...119203952021-10-19 23:02:3614 hrs 18 mins ago0xccb6ceb2b73c346468b776a847abd44d635306d7 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00017522
0xf28924b310a5cb1c6287a81103c833864489c83f51b7abb7473f48d271b76243Emergency Withdr...119159402021-10-19 19:00:4518 hrs 20 mins ago0xa8e96d2c1588907c7a4c5a5f7d164b4da388ebc4 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021275
0xe38698e82ac5fb5896960eae51efcfafdd5f6a09b5a5723f3130f19fbb215115Emergency Withdr...118924802021-10-18 23:12:351 day 14 hrs ago0x7a036d552086c9734c03b20f93637244f218ceb3 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00018572
0xd8583a7d656d589434c826999f754070ed16093f33508b194ed1c8f0988e3ae7Emergency Withdr...118803682021-10-18 13:02:582 days 18 mins ago0xeaf635a93eb4d637b2a990d228fd3bbe9b6eccd1 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00025118
0xf4184a5b648cc55f3a7a27cd45868555cf7778100a96726f4bf5cc3d851ae16bEmergency Withdr...118803452021-10-18 13:01:422 days 19 mins ago0xeaf635a93eb4d637b2a990d228fd3bbe9b6eccd1 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00020059
0x7ebab0b685427da547a33b1f208894275bf9640efb60a408f3fcfc4b87bf6ed5Emergency Withdr...118758982021-10-18 9:17:202 days 4 hrs ago0x63ce9f57e2e4b41d3451dec20ddb89143fd755bb IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00024987
0xaa00125e870ee56e7abc34531e2ed0bbc519bbc62dbcb39ca800db0b92a513a4Emergency Withdr...118677412021-10-18 2:29:222 days 10 hrs ago0x8bc62c0fd236e600db725c414ba220ee30008926 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021275
0x18ddfcd622bedbd50bd1203b869e531de8ceee23bca53009a06516d28fa1e93fEmergency Withdr...118323232021-10-16 20:49:113 days 16 hrs ago0xa967ca879c3a39ec04ba66a37dd724a9585d7cec IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.000210795
0x1fd6a33a290468c82e1f25551e4e25de463568b44e5612c33b399c4f07f72430Emergency Withdr...118172342021-10-16 8:07:454 days 5 hrs ago0x3ee85d628e0be767194632dc87e668fafa57ef7d IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00022322
0x9219c596b2aabace115cd2deedc4f1d4548ebcd8177971b5badfb98b73d4736dEmergency Withdr...118030702021-10-15 20:16:294 days 17 hrs ago0xb101aaa1f392e0ae063b00dafd8c176f39332f44 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021272
0xcf393ee8bbd46baf07fa0ae5f567347a501406dbad0bc04369dd77a2d1ec7106Emergency Withdr...118016552021-10-15 19:05:394 days 18 hrs ago0xecb6598718cbcb7299ae27e1258ffd18e76e9033 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00017522
0xfde7f62b1ece144831e550d9d30aa75e360252a2a95042017e75858d1d62dba6Emergency Withdr...118011732021-10-15 18:41:334 days 18 hrs ago0x759943ecff6e10ef5cbd663e9e04511d1ab505e3 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00022322
0x2d8f14a5521b4567d91daf366f97e44dd6e4cad3fd5a1b6ab61099fdc2938f37Emergency Withdr...117974142021-10-15 15:33:304 days 21 hrs ago0x8a75f44a5310f44be06cf0e7fdb7e7881484b191 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.000200295
0xd422c4b71571e312054dfd962cf84d09907f01908ee60910df9041e1bcfac723Emergency Withdr...117767872021-10-14 22:19:395 days 15 hrs ago0x0362a9992423e8bd753166fef2d4cecb1038d98f IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00017944
0x0bf3ed01692486dc14d791772e479f933cfe05d64044f2935de2a60d18920668Emergency Withdr...117618922021-10-14 9:51:516 days 3 hrs ago0x346ca0b6b8ac9c238bd8c72b76a42b4a5acc1150 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021272
0xbae3594351a9b65c74a41d631cffdc1ef7ca0dbaf7a2d0b5d7eaf03ea68cdfe1Emergency Withdr...117352532021-10-13 11:28:077 days 1 hr ago0x6eeda37d73720e8dc25d9e337a458c8a6580889d IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021272
0xe10cb9c3e23684f35cc336d32e57c68e04efe4a518e0ff73795cc7231ec5b362Emergency Withdr...117308612021-10-13 7:37:147 days 5 hrs ago0x9585394860cfeb56d84410903ee395113b634f92 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021275
0x6d3b80827155bda76a94e8522ec381b9fb3ec129dc9055b550d375df59f7f077Emergency Withdr...117308552021-10-13 7:36:527 days 5 hrs ago0x9585394860cfeb56d84410903ee395113b634f92 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.000200295
0x887e286d00c4ea842c080dbcbd306724413213f313d851d11581a05303bb15b6Emergency Withdr...117170232021-10-12 19:57:567 days 17 hrs ago0xe9ad819ea0b9d7ecdbf0c6efdbbe6c4b40c85d2c IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00021272
0xf7e064690462c19f93e09d124a3d6706e87542f8a2dd6605f0ec27425ae3596fEmergency Withdr...117152572021-10-12 18:29:377 days 18 hrs ago0x578894ae12b8b7aec0a026558b892baf2e09a409 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.000200295
0x7d72577e915012d51cb740216fa471822d9a563ea62fd688e61bfc86cd4d5524Emergency Withdr...117151252021-10-12 18:23:017 days 18 hrs ago0xbfdf1ab761efe78a8a1fb443b6f6db3e113bd0fe IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00025444
0xa649994b0b79afa6e54efeb84f1bdbf2ce63590e0eaf8057386e554d24682fe1Emergency Withdr...117150412021-10-12 18:18:497 days 19 hrs ago0x578894ae12b8b7aec0a026558b892baf2e09a409 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00022322
0x737682d10b5ad3dfb898798485fa33fd44cab60a337bf70f2af20f842d6c9435Emergency Withdr...117074542021-10-12 11:54:268 days 1 hr ago0x8b6aef4f83439f5241fa39493f1360ab7cf2ff4b IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00022322
0xbcef319180ddcb5c5f2c7db88528fb38af2f3a89434ef6e565b71d738853ea5fEmergency Withdr...117033092021-10-12 8:25:378 days 4 hrs ago0xd482665562b5891e8cf7241bedf8f87d10441590 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.000200295
0x885be2e10d0eadf834836d7309cc414d77ec28ebfb1611b2839ced8630ab6535Emergency Withdr...116847132021-10-11 16:22:078 days 20 hrs ago0x9c7b017a59a8e8c1f84b5e212540ec32e0824c83 IN  0xf6afc35ff5aef9c7043022d6259db395382ada0b0 BNB0.00025118
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ErosMasterChef

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-08-25
*/

pragma solidity 0.6.12;


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

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

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

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

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

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

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

interface IReferral {

    function addReferrer(address _user, address _referrer) external;

    function addRewards(address _user, string memory _type, uint256 _total) external;

    function getRewards(address _user, string memory _type) external view returns (uint256);

    function getReferrer(address _user) external view returns (address);

    function getReferralsCount(address _referrer) external view returns (uint256);

}

abstract contract OwnerRole {
    address public owner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor () public {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
        }
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

abstract contract MinterRole {
    mapping(address => bool) private minters;

    event MinterAdded(address indexed _minter);
    event MinterRemoved(address indexed _minter);

    constructor () public {
        addMinter(msg.sender);
    }

    modifier onlyMinter() {
        require(minters[msg.sender], "Minterable: caller is not the minter");
        _;
    }

    function isMinter(address _minter) external view virtual returns (bool) {
        return minters[_minter];
    }

    function addMinter(address _minter) public virtual {
        minters[_minter] = true;
        emit MinterAdded(_minter);
    }

    function removeMinter(address _minter) public virtual {
        minters[_minter] = false;
        emit MinterRemoved(_minter);
    }
}

abstract contract OperatorRole {
    mapping(address => bool) private operators;

    event OperatorAdded(address indexed _operator);
    event OperatorRemoved(address indexed _operator);

    constructor () public {
        addOperator(msg.sender);
    }

    modifier onlyOperator() {
        require(operators[msg.sender], "Operatable: caller is not the operator");
        _;
    }

    function isOperator(address _minter) external view virtual returns (bool) {
        return operators[_minter];
    }

    function addOperator(address _operator) public virtual {
        operators[_operator] = true;
        emit OperatorAdded(_operator);
    }

    function removeOperator(address _operator) public virtual {
        operators[_operator] = false;
        emit OperatorRemoved(_operator);
    }
}

abstract contract BEP20e is OwnerRole, MinterRole, OperatorRole {
    using SafeMath for uint256;

    uint256 public totalSupply;

    string public name;
    string public symbol;
    uint8 public decimals = 18;

    uint256 public burnFee;
    uint256 public marketingFee;
    uint256 public buybackFee;

    address public deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public marketingAddress;
    IUniswapV2Router02 public router;
    address public pair;
    IReferral public referral;

    uint256 public buybackBalance;
    uint256 public marketingBalance;

    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private allowances;

    bool private inSwap;

    bool public marketingSwapEnabled = false;
    uint256 public minMarketingSwapAmount = 1000000000000000000;
    uint256 public maxMarketingSwapAmount = 1500000000000000000;

    bool public swapEnabled = false;
    uint256 public minSwapAmount = 1000000000000000000;
    uint256 public maxSwapAmount = 1500000000000000000;

    bool public buybackEnabled = false;
    uint256 public minBalanceRequired = 1000000000000000000;
    uint256 public minBuybackSellAmount = 1000000000000000000;
    uint256 public maxBuybackAmount = 1500000000000000000;

    mapping(address => bool) private lpTokens;
    mapping(address => bool) private excludedFromFee;
    mapping(address => bool) private excludedFromAntiWhale;

    uint256 public antiWhaleTxAmountRate = 50; // 0.5%
    bool public antiWhaleEnabled = true;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event SwapTokensForETH(uint256 amountIn, address[] path);
    event SwapETHForTokens(uint256 amountIn, address[] path);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(string memory _name, string memory _symbol, address _router, IReferral _referral) public {
        name = _name;
        symbol = _symbol;

        marketingAddress = msg.sender;

        router = IUniswapV2Router02(_router);
        pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());
        referral = _referral;

        lpTokens[pair] = true;

        setExcludedFromFee(msg.sender, true);
        setExcludedFromAntiWhale(msg.sender, true);

        setExcludedFromFee(address(this), true);
        setExcludedFromAntiWhale(address(this), true);
    }

    function balanceOf(address _account) public view virtual returns (uint256) {
        return balances[_account];
    }

    function allowance(address _from, address _to) external view virtual returns (uint256) {
        return allowances[_from][_to];
    }

    function mint(address _to, uint256 _amount) external virtual onlyMinter {
        _mint(_to, _amount);
    }

    function burn(uint256 _amount) external virtual {
        _burn(msg.sender, _amount);
    }

    function approve(address _to, uint256 _amount) external virtual returns (bool) {
        require(_amount > 0, "BEP20: amount is greater than zero");

        _approve(msg.sender, _to, _amount);
        return true;
    }

    function addBuybackBalance(uint256 _amount) external {
        require(balances[msg.sender] >= _amount, "BEP20: add amount exceeds balance");
        require(_amount > 0, "BEP20: amount is greater than zero");

        _transferAmount(msg.sender, address(this), _amount);

        buybackBalance = buybackBalance.add(_amount);
    }

    function transfer(address _to, uint256 _amount) external virtual returns (bool) {
        _transfer(msg.sender, _to, _amount);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _amount) external virtual returns (bool) {
        require(allowances[_from][msg.sender] >= _amount, "BEP20: transfer amount exceeds allowance");

        _transfer(_from, _to, _amount);
        _approve(_from, msg.sender, allowances[_from][msg.sender].sub(_amount));

        return true;
    }

    function increaseAllowance(address _to, uint256 _amount) external virtual returns (bool) {
        require(_amount > 0, "BEP20: amount is greater than zero");

        uint256 total = allowances[msg.sender][_to].add(_amount);
        _approve(msg.sender, _to, total);
        return true;
    }

    function decreaseAllowance(address _to, uint256 _amount) external virtual returns (bool) {
        require(allowances[msg.sender][_to] >= _amount, "BEP20: decreased allowance below zero");
        require(_amount > 0, "BEP20: amount is greater than zero");

        uint256 total = allowances[msg.sender][_to].sub(_amount);
        _approve(msg.sender, _to, total);
        return true;
    }

    function calcFee(uint256 _amount, uint256 _percent) public pure returns (uint256) {
        return _amount.mul(_percent).div(10000);
    }

    function totalSupplyWithoutDeadBalance() public view returns (uint256) {
        return totalSupply.sub(balanceOf(deadAddress));
    }

    function maxAntiWhaleTxAmount() public view returns (uint256) {
        return calcFee(totalSupplyWithoutDeadBalance(), antiWhaleTxAmountRate);
    }

    function buyback(uint256 _amount) public onlyOperator {
        uint256 balance = address(this).balance;

        require(_amount > 0, "BEP20: amount is greater than zero");
        require(balance >= _amount, "BEP20: buyback amount is too big");

        if (!inSwap) {
            _buyback(_amount);
        }
    }

    function swapMarketing(uint256 _amount) public onlyOperator {
        require(_amount > 0, "BEP20: amount is greater than zero");
        require(marketingBalance >= _amount, "BEP20: amount is too big");

        if (!inSwap) {
            _swapMarketing(_amount);
        }
    }

    function swapBuyback(uint256 _amount) public onlyOperator {
        require(_amount > 0, "BEP20: amount is greater than zero");
        require(buybackBalance >= _amount, "BEP20: amount is too big");

        if (!inSwap) {
            _swapBuyback(_amount);
        }
    }

    function setMarketingAddress(address _marketingAddress) external virtual onlyOperator {
        require(marketingAddress != address(0), "BEP20: zero address");

        marketingAddress = _marketingAddress;
    }

    function setMarketingSwapEnabled(bool _marketingSwapEnabled) external onlyOperator {
        marketingSwapEnabled = _marketingSwapEnabled;
    }

    function setMinMarketingSwapAmount(uint256 _minMarketingSwapAmount) external onlyOperator {
        minMarketingSwapAmount = _minMarketingSwapAmount;
    }

    function setMaxMarketingSwapAmount(uint256 _maxMarketingSwapAmount) external onlyOperator {
        maxMarketingSwapAmount = _maxMarketingSwapAmount;
    }

    function setSwapEnabled(bool _swapEnabled) external onlyOperator {
        swapEnabled = _swapEnabled;
    }

    function setMinSwapAmount(uint256 _minSwapAmount) external onlyOperator {
        minSwapAmount = _minSwapAmount;
    }

    function setMaxSwapAmount(uint256 _maxSwapAmount) external onlyOperator {
        maxSwapAmount = _maxSwapAmount;
    }

    function setBuybackEnabled(bool _buybackEnabled) external onlyOperator {
        buybackEnabled = _buybackEnabled;
    }

    function setMinBalanceRequired(uint256 _minBalanceRequired) external onlyOperator {
        minBalanceRequired = _minBalanceRequired;
    }

    function setMinBuybackSellAmount(uint256 _minBuybackSellAmount) external onlyOperator {
        minBuybackSellAmount = _minBuybackSellAmount;
    }

    function setMaxBuybackAmount(uint256 _maxBuybackAmount) external onlyOperator {
        maxBuybackAmount = _maxBuybackAmount;
    }

    function isLpToken(address _address) public view returns (bool) {
        return lpTokens[_address];
    }

    function setLpToken(address _address, bool _isLpToken) external onlyOperator {
        require(_address != address(0), "BEP20: invalid LP address");
        require(_address != pair, "BEP20: exclude bnb pair");

        lpTokens[_address] = _isLpToken;
    }

    function isExcludedFromFee(address _address) public view returns (bool) {
        return excludedFromFee[_address];
    }

    function setExcludedFromFee(address _address, bool _isExcludedFromFee) public onlyOperator {
        excludedFromFee[_address] = _isExcludedFromFee;
    }

    function isExcludedFromAntiWhale(address _address) public view returns (bool) {
        return excludedFromAntiWhale[_address];
    }

    function setExcludedFromAntiWhale(address _address, bool _isExcludedFromAntiWhale) public onlyOperator {
        excludedFromAntiWhale[_address] = _isExcludedFromAntiWhale;
    }

    function setAntiWhaleTxAmountRate(uint256 _antiWhaleTxAmountRate) external onlyOperator {
        require(_antiWhaleTxAmountRate <= 500 && _antiWhaleTxAmountRate >= 50, "BEP20: invalid _antiWhaleTxAmountRate");
        antiWhaleTxAmountRate = _antiWhaleTxAmountRate;
    }

    function setAntiWhaleEnabled(bool _antiWhaleEnabled) external onlyOperator {
        antiWhaleEnabled = _antiWhaleEnabled;
    }

    function addMinter(address _minter) public onlyOwner override(MinterRole) {
        super.addMinter(_minter);
    }

    function removeMinter(address _minter) public onlyOwner override(MinterRole) {
        super.removeMinter(_minter);
    }

    function addOperator(address _operator) public onlyOwner override(OperatorRole) {
        super.addOperator(_operator);
    }

    function removeOperator(address _operator) public onlyOwner override(OperatorRole) {
        super.removeOperator(_operator);
    }

    function setReferral(IReferral _referral) external onlyOwner {
        referral = _referral;
    }

    receive() external payable {}

    function _buyback(uint256 _amount) internal {
        _swapETHForTokens(_amount, deadAddress);
    }

    function _swapMarketing(uint256 _marketingSwapAmount) internal {
        _swapTokensForEth(_marketingSwapAmount, marketingAddress);
        marketingBalance = marketingBalance.sub(_marketingSwapAmount);
    }

    function _swapBuyback(uint256 _swapAmount) internal {
        _swapTokensForEth(_swapAmount, address(this));
        buybackBalance = buybackBalance.sub(_swapAmount);
    }

    function _mint(address _to, uint256 _amount) internal virtual {
        require(_to != address(0), "BEP20: mint to the zero address");
        require(_amount > 0, "BEP20: amount is greater than zero");

        totalSupply = totalSupply.add(_amount);
        balances[_to] = balances[_to].add(_amount);

        emit Transfer(address(0), _to, _amount);
    }

    function _burn(address _from, uint256 _amount) internal virtual {
        require(_from != address(0), "BEP20: burn from the zero address");
        require(_amount > 0, "BEP20: amount is greater than zero");
        require(balances[_from] >= _amount, "BEP20: burn amount exceeds balance");

        _transferAmount(_from, deadAddress, _amount);
    }

    function _approve(address _from, address _to, uint256 _amount) internal virtual {
        require(_from != address(0), "BEP20: approve from the zero address");
        require(_to != address(0), "BEP20: approve to the zero address");

        allowances[_from][_to] = _amount;
        emit Approval(_from, _to, _amount);
    }

    function _transfer(address _from, address _to, uint256 _amount) internal virtual {
        require(_from != address(0), "BEP20: transfer from the zero address");
        require(_to != address(0), "BEP20: transfer to the zero address");
        require(balances[_from] >= _amount, "BEP20: transfer amount exceeds balance");
        require(_amount > 0, "BEP20: amount is greater than zero");

        if (antiWhaleEnabled && !isExcludedFromAntiWhale(_from) && !isExcludedFromAntiWhale(_to) && !isLpToken(_from)) {
            require(_amount <= maxAntiWhaleTxAmount(), "BEP20: transfer amount exceeds the maxAntiWhaleTxAmount");
        }

        uint256 calculatedAmount = _amount;
        uint256 burnFeeAmount = 0;
        uint256 marketingFeeAmount = 0;
        uint256 buybackFeeAmount = 0;

        if (!inSwap && !(isExcludedFromFee(_from) || isExcludedFromFee(_to))) {
            burnFeeAmount = calcFee(_amount, burnFee);
            if (burnFeeAmount > 0) {
                address referrer = address(0);
                if (isLpToken(_from) && !isLpToken(_to)) {
                    referrer = referral.getReferrer(_to);
                } else if (!isLpToken(_from) && isLpToken(_to)) {
                    referrer = referral.getReferrer(_from);
                } else {
                    referrer = referral.getReferrer(_from);
                }

                if (referrer != address(0)) {
                    _transferAmount(_from, referrer, burnFeeAmount);
                    referral.addRewards(referrer, "token", burnFeeAmount);
                } else {
                    _transferAmount(_from, address(this), burnFeeAmount);
                    buybackBalance = buybackBalance.add(burnFeeAmount);
                }
            }

            marketingFeeAmount = calcFee(_amount, marketingFee);
            if (marketingFeeAmount > 0) {
                _transferAmount(_from, address(this), marketingFeeAmount);
                marketingBalance = marketingBalance.add(marketingFeeAmount);
            }

            buybackFeeAmount = calcFee(_amount, buybackFee);
            if (buybackFeeAmount > 0) {
                _transferAmount(_from, address(this), buybackFeeAmount);
                buybackBalance = buybackBalance.add(buybackFeeAmount);
            }

            if (!isLpToken(_from)) {
                if (marketingSwapEnabled && marketingBalance >= minMarketingSwapAmount && minMarketingSwapAmount > 0) {
                    uint256 marketingSwapAmount = marketingBalance > maxMarketingSwapAmount ? maxMarketingSwapAmount : marketingBalance;
                    if (marketingSwapAmount > 0 && marketingSwapAmount <= balanceOf(address(this))) {
                        _swapMarketing(marketingSwapAmount);
                    }
                }

                if (swapEnabled && buybackBalance >= minSwapAmount && minSwapAmount > 0) {
                    uint256 swapAmount = buybackBalance > maxSwapAmount ? maxSwapAmount : buybackBalance;
                    if (swapAmount > 0 && swapAmount <= balanceOf(address(this))) {
                        _swapBuyback(swapAmount);
                    }
                }

                uint256 balance = address(this).balance;
                if (buybackEnabled && balance >= minBalanceRequired && minBalanceRequired > 0 && _amount >= minBuybackSellAmount && isLpToken(_to)) {
                    uint256 buybackAmount = balance > maxBuybackAmount ? maxBuybackAmount : balance;
                    if (buybackAmount > 0) {
                        _buyback(buybackAmount);
                    }
                }
            }

            calculatedAmount = calculatedAmount.sub(burnFeeAmount).sub(marketingFeeAmount).sub(buybackFeeAmount);
        }

        _transferAmount(_from, _to, calculatedAmount);
    }

    function _transferAmount(address _from, address _to, uint256 _amount) internal virtual {
        balances[_from] = balances[_from].sub(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Transfer(_from, _to, _amount);
    }

    function _swapTokensForEth(uint256 _tokenAmount, address _recipient) internal lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), _tokenAmount);
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0, // accept any amount of ETH
            path,
            _recipient,
            block.timestamp
        );

        emit SwapTokensForETH(_tokenAmount, path);
    }

    function _swapETHForTokens(uint256 amount, address _recipient) internal lockTheSwap {
        // generate the uniswap pair path of weth -> token
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        // make the swap
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value : amount}(
            0, // accept any amount of Tokens
            path,
            _recipient, // Burn address
            block.timestamp.add(300)
        );

        emit SwapETHForTokens(amount, path);
    }

}

// SPDX-License-Identifier: MIT
contract ErosMasterChef is OwnerRole {
    using SafeMath for uint256;

    BEP20e public token;
    address public buybackWallet;
    IReferral public referral;
    uint256 public referralRate = 300; // 3%

    uint256 public tokensPerBlock;
    uint256 public BONUS_MULTIPLIER = 1;
    uint256 public startBlock;
    uint256 public totalAllocPoint;

    address public marketingAddress;

    struct PoolInfo {
        IBEP20 token;
        uint256 total;
        uint256 allocPoint;
        uint256 lastRewardBlock;
        uint256 accTokensPerShare;
        uint256 depositFee;
        uint256 withdrawFee;
        uint256 harvestInterval; // Harvest interval in seconds
    }

    struct UserInfo {
        uint256 amount;
        uint256 rewardDebt;
        uint256 rewardLockedUp;
        uint256 nextHarvestAvailable; // When can the user harvest again.
    }

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

    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(BEP20e _token, uint256 _tokensPerBlock, uint256 _startBlock, address _buybackWallet, IReferral _referral) public {
        token = _token;
        tokensPerBlock = _tokensPerBlock;
        startBlock = _startBlock;
        buybackWallet = _buybackWallet;
        referral = _referral;

        add(IBEP20(address(_token)), 1000, 0, 0, 0, true);

        marketingAddress = msg.sender;
    }

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

    function getMultiplier(uint256 _blockFrom, uint256 _blockTo) public view returns (uint256) {
        return _blockTo.sub(_blockFrom).mul(BONUS_MULTIPLIER);
    }

    function calcFee(uint256 _amount, uint256 _percent) public pure returns (uint256) {
        return _amount.mul(_percent).div(10000);
    }

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

    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }

        if (pool.total == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }

        uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
        uint256 tokensReward = multiplier.mul(tokensPerBlock).mul(pool.allocPoint).div(totalAllocPoint);

        token.mint(address(this), tokensReward);
        token.mint(address(marketingAddress), calcFee(tokensReward, 900));

        pool.accTokensPerShare = pool.accTokensPerShare.add(tokensReward.mul(1e12).div(pool.total));
        pool.lastRewardBlock = block.number;
    }

    function pending(uint256 _pid, address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];

        uint256 accTokensPerShare = pool.accTokensPerShare;

        if (block.number > pool.lastRewardBlock && pool.total != 0) {
            uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
            uint256 treeReward = multiplier.mul(tokensPerBlock).mul(pool.allocPoint).div(totalAllocPoint);

            accTokensPerShare = accTokensPerShare.add(treeReward.mul(1e12).div(pool.total));
        }

        uint256 total = user.amount.mul(accTokensPerShare).div(1e12).sub(user.rewardDebt);

        return total.add(user.rewardLockedUp);
    }

    function canHarvest(uint256 _pid, address _user) public view returns (bool) {
        UserInfo storage user = userInfo[_pid][_user];
        return block.timestamp >= user.nextHarvestAvailable;
    }

    function _send(IBEP20 _token, address _to, uint256 _amount) internal {
        _token.transfer(_to, _amount);
    }

    function harvest(uint256 _pid) internal {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];

        if (user.nextHarvestAvailable == 0) {
            user.nextHarvestAvailable = block.timestamp.add(pool.harvestInterval);
        }

        if (user.amount > 0) {
            uint256 pendingTokens = user.amount.mul(pool.accTokensPerShare).div(1e12).sub(user.rewardDebt);
            if (pendingTokens > 0) {
                if (canHarvest(_pid, msg.sender)) {
                    uint256 totalRewards = pendingTokens.add(user.rewardLockedUp);

                    user.rewardLockedUp = 0;
                    user.nextHarvestAvailable = block.timestamp.add(pool.harvestInterval);

                    if (totalRewards > 0) {
                        safeTokenTransfer(msg.sender, totalRewards);
                    }
                } else {
                    user.rewardLockedUp = user.rewardLockedUp.add(pendingTokens);
                }
            }
        } else {
            if (canHarvest(_pid, msg.sender)) {
                uint256 totalRewards = user.rewardLockedUp;

                user.rewardLockedUp = 0;
                user.nextHarvestAvailable = block.timestamp.add(pool.harvestInterval);

                if (totalRewards > 0) {
                    safeTokenTransfer(msg.sender, totalRewards);
                }
            }
        }
    }

    function deposit(uint256 _pid, uint256 _amount, address _referrer) external {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];

        updatePool(_pid);

        harvest(_pid);

        if (_amount > 0) {
            if (referral.getReferrer(msg.sender) == address(0) && _referrer != address(0) && _referrer != msg.sender) {
                referral.addReferrer(msg.sender, _referrer);
            }

            uint256 oldBalance = tokenBalanceOf(address(pool.token), address(this));
            pool.token.transferFrom(msg.sender, address(this), _amount);
            uint256 newBalance = tokenBalanceOf(address(pool.token), address(this));

            _amount = newBalance.sub(oldBalance);

            if (pool.depositFee > 0) {
                uint256 totalDepositFeeAmount = calcFee(_amount, pool.depositFee);
                uint256 buybackWalletAmount = totalDepositFeeAmount.div(3);
                uint256 marketingAmount = totalDepositFeeAmount.sub(buybackWalletAmount);

                // buybackWallet
                if (tokenBalanceOf(address(pool.token), address(this)) >= buybackWalletAmount) {
                    _send(pool.token, buybackWallet, buybackWalletAmount);
                }

                // marketing
                if (tokenBalanceOf(address(pool.token), address(this)) >= marketingAmount) {
                    _send(pool.token, marketingAddress, marketingAmount);
                }

                _amount = _amount.sub(totalDepositFeeAmount);
            }

            user.amount = user.amount.add(_amount);
            pool.total = pool.total.add(_amount);
        }

        user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12);
        emit Deposit(msg.sender, _pid, _amount);
    }

    function withdraw(uint256 _pid, uint256 _amount) external {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        require(user.amount >= _amount);

        updatePool(_pid);

        harvest(_pid);

        if (_amount > 0) {
            user.amount = user.amount.sub(_amount);
            pool.total = pool.total.sub(_amount);

            if (pool.withdrawFee > 0) {
                uint256 withdrawFeeAmount = calcFee(_amount, pool.withdrawFee);

                _send(pool.token, marketingAddress, withdrawFeeAmount);
                _amount = _amount.sub(withdrawFeeAmount);
            }

            _send(pool.token, msg.sender, _amount);
        }

        user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12);
        emit Withdraw(msg.sender, _pid, _amount);
    }

    function emergencyWithdraw(uint256 _pid) external {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];

        uint256 amount = user.amount;

        if (amount > 0) {
            user.amount = 0;
            user.rewardDebt = 0;
            user.rewardLockedUp = 0;
            user.nextHarvestAvailable = 0;

            pool.total = pool.total.sub(amount);

            if (pool.withdrawFee > 0) {
                uint256 withdrawFeeAmount = calcFee(amount, pool.withdrawFee);

                _send(pool.token, marketingAddress, withdrawFeeAmount);
                amount = amount.sub(withdrawFeeAmount);
            }

            _send(pool.token, msg.sender, amount);

            emit EmergencyWithdraw(msg.sender, _pid, amount);
        }
    }

    function tokenBalanceOf(address _token, address _address) internal view returns (uint256) {
        return IBEP20(_token).balanceOf(_address);
    }

    function safeTokenTransfer(address _to, uint256 _amount) internal {
        uint256 balance = tokenBalanceOf(address(token), address(this));
        if (_amount > balance) {
            _amount = balance;
        }

        if (_amount > 0) {
            token.transfer(_to, _amount);

            address referrer = referral.getReferrer(_to);
            if (referrer != address(0)) {
                uint256 totalRewards = calcFee(_amount, referralRate);
                referral.addRewards(referrer, "master-chef", totalRewards);
                token.mint(address(this), totalRewards);
                token.transfer(referrer, totalRewards);
            }
        }
    }

    function add(IBEP20 _token, uint256 _allocPoint, uint256 _depositFee, uint256 _withdrawFee, uint256 _harvestInterval, bool _withUpdate) public onlyOwner {
        require(_depositFee >= 0 && _depositFee <= 1000);
        require(_withdrawFee >= 0 && _withdrawFee <= 500);
        require(_harvestInterval <= 15 days);

        if (_withUpdate) {
            massUpdatePools();
        }

        totalAllocPoint = totalAllocPoint.add(_allocPoint);

        poolInfo.push(PoolInfo({
        token : _token,
        total : 0,
        allocPoint : _allocPoint,
        lastRewardBlock : block.number > startBlock ? block.number : startBlock,
        accTokensPerShare : 0,
        depositFee : _depositFee,
        withdrawFee : _withdrawFee,
        harvestInterval : _harvestInterval
        }));
    }

    function set(uint256 _pid, uint256 _allocPoint, uint256 _depositFee, uint256 _withdrawFee, uint256 _harvestInterval, bool _withUpdate) external onlyOwner {
        require(_depositFee >= 0 && _depositFee <= 1000);
        require(_withdrawFee >= 0 && _withdrawFee <= 500);
        require(_harvestInterval <= 15 days);

        if (_withUpdate) {
            massUpdatePools();
        }

        uint256 prevAllocPoint = poolInfo[_pid].allocPoint;

        poolInfo[_pid].allocPoint = _allocPoint;
        poolInfo[_pid].depositFee = _depositFee;
        poolInfo[_pid].withdrawFee = _withdrawFee;
        poolInfo[_pid].harvestInterval = _harvestInterval;

        if (prevAllocPoint != _allocPoint) {
            totalAllocPoint = totalAllocPoint.sub(prevAllocPoint).add(_allocPoint);
        }
    }

    function setReferralRate(uint256 _rate) external onlyOwner {
        require(_rate >= 0 && _rate <= 1000);
        referralRate = _rate;
    }

    function setBonusMultiplier(uint256 _multiplier) external onlyOwner {
        require(_multiplier > 0);
        BONUS_MULTIPLIER = _multiplier;
    }

    function updateMarketingAddress(address _marketingAddress) external onlyOwner {
        marketingAddress = _marketingAddress;
    }

    function updateTokensPerBlock(uint256 _tokensPerBlock) external onlyOwner {
        massUpdatePools();
        tokensPerBlock = _tokensPerBlock;
    }

    function setReferral(IReferral _referral) external onlyOwner {
        referral = _referral;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract BEP20e","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokensPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"address","name":"_buybackWallet","type":"address"},{"internalType":"contract IReferral","name":"_referral","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","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":"contract IBEP20","name":"_token","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_depositFee","type":"uint256"},{"internalType":"uint256","name":"_withdrawFee","type":"uint256"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"calcFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockFrom","type":"uint256"},{"internalType":"uint256","name":"_blockTo","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IBEP20","name":"token","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accTokensPerShare","type":"uint256"},{"internalType":"uint256","name":"depositFee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"harvestInterval","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referral","outputs":[{"internalType":"contract IReferral","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_depositFee","type":"uint256"},{"internalType":"uint256","name":"_withdrawFee","type":"uint256"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"setBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IReferral","name":"_referral","type":"address"}],"name":"setReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setReferralRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract BEP20e","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerBlock","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":"address","name":"_marketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokensPerBlock","type":"uint256"}],"name":"updateTokensPerBlock","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"},{"internalType":"uint256","name":"rewardLockedUp","type":"uint256"},{"internalType":"uint256","name":"nextHarvestAvailable","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"}]

608060405261012c60045560016006553480156200001c57600080fd5b5060405162003c5238038062003c52833981810160405260a08110156200004257600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a384600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836005819055508260078190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000202856103e8600080600060016200024e60201b60201c565b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000b7e565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000310576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600084101580156200032457506103e88411155b6200032e57600080fd5b600083101580156200034257506101f48311155b6200034c57600080fd5b6213c6808211156200035d57600080fd5b8015620003755762000374620004bf60201b60201c565b5b6200039185600854620004f660201b620025261790919060201c565b600881905550600a6040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018781526020016007544311620003e157600754620003e3565b435b81526020016000815260200186815260200185815260200184815250908060018154018082558091505060019003906000526020600020906008020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701555050505050505050565b6000600a80549050905060005b81811015620004f257620004e6816200057f60201b60201c565b806001019050620004cc565b5050565b60008082840190508381101562000575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600a82815481106200058f57fe5b9060005260206000209060080201905080600301544311620005b257506200083f565b600081600101541415620005d057438160030181905550506200083f565b6000620005e88260030154436200084260201b60201c565b90506000620006406008546200062c856002015462000618600554876200088160201b620025ae1790919060201c565b6200088160201b620025ae1790919060201c565b6200090c60201b620026341790919060201c565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015620006d657600080fd5b505af1158015620006eb573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000764846103846200095e60201b60201c565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015620007b857600080fd5b505af1158015620007cd573d6000803e3d6000fd5b505050506200082a620008118460010154620007fd64e8d4a51000856200088160201b620025ae1790919060201c565b6200090c60201b620026341790919060201c565b8460040154620004f660201b620025261790919060201c565b83600401819055504383600301819055505050505b50565b6000620008796006546200086585856200099d60201b6200267e1790919060201c565b6200088160201b620025ae1790919060201c565b905092915050565b60008083141562000896576000905062000906565b6000828402905082848281620008a857fe5b041462000901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062003c316021913960400191505060405180910390fd5b809150505b92915050565b60006200095683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620009ef60201b60201c565b905092915050565b6000620009956127106200098184866200088160201b620025ae1790919060201c565b6200090c60201b620026341790919060201c565b905092915050565b6000620009e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000aba60201b60201c565b905092915050565b6000808311829062000a9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000a6357808201518184015260208101905062000a46565b50505050905090810190601f16801562000a915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000aac57fe5b049050809150509392505050565b600083831115829062000b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b2f57808201518184015260208101905062000b12565b50505050905090810190601f16801562000b5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6130a38062000b8e6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638aa2855011610104578063a5ece941116100a2578063e4c75c2711610071578063e4c75c2714610813578063f2fde38b14610875578063fc0c546a146108b9578063fd58e63a146108ed576101da565b8063a5ece94114610731578063af70f1cf14610765578063ca4863fd146107b1578063deab8aea146107df576101da565b80638dbdbe6d116100de5780638dbdbe6d1461060057806393f1a40b146106585780639e5914da146106cf578063a053ce1f14610713576101da565b80638aa28550146105625780638da5cb5b146105805780638dbb1e3a146105b4576101da565b8063441a3e701161017c57806355520ccf1161014b57806355520ccf14610450578063630b5ba11461047e5780637720084814610488578063804380ff146104ea576101da565b8063441a3e701461039e57806348cd4cb1146103d657806351eb05a6146103f45780635312ea8e14610422576101da565b806317caf6f1116101b857806317caf6f1146102ba5780631a1cb01f146102d85780632369bf83146102f65780632e6c998d1461033a576101da565b8063081e3eda146101df5780631441a5a9146101fd5780631526fe2714610231575b600080fd5b6101e761091b565b6040518082815260200191505060405180910390f35b610205610928565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025d6004803603602081101561024757600080fd5b810190808035906020019092919050505061094e565b604051808973ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b6102c26109c3565b6040518082815260200191505060405180910390f35b6102e06109c9565b6040518082815260200191505060405180910390f35b6103386004803603602081101561030c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cf565b005b6103866004803603604081101561035057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ad4565b60405180821515815260200191505060405180910390f35b6103d4600480360360408110156103b457600080fd5b810190808035906020019092919080359060200190929190505050610b3a565b005b6103de610d5d565b6040518082815260200191505060405180910390f35b6104206004803603602081101561040a57600080fd5b8101908080359060200190929190505050610d63565b005b61044e6004803603602081101561043857600080fd5b8101908080359060200190929190505050610fe3565b005b61047c6004803603602081101561046657600080fd5b81019080803590602001909291905050506111bb565b005b61048661128e565b005b6104e8600480360360c081101561049e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506112bb565b005b610560600480360360c081101561050057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506114c0565b005b61056a611719565b6040518082815260200191505060405180910390f35b61058861171f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ea600480360360408110156105ca57600080fd5b810190808035906020019092919080359060200190929190505050611743565b6040518082815260200191505060405180910390f35b6106566004803603606081101561061657600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611774565b005b6106a46004803603604081101561066e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd9565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610711600480360360208110156106e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e16565b005b61071b611f1b565b6040518082815260200191505060405180910390f35b610739611f21565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61079b6004803603604081101561077b57600080fd5b810190808035906020019092919080359060200190929190505050611f47565b6040518082815260200191505060405180910390f35b6107dd600480360360208110156107c757600080fd5b8101908080359060200190929190505050611f78565b005b6107e761205f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61085f6004803603604081101561082957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612085565b6040518082815260200191505060405180910390f35b6108b76004803603602081101561088b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612224565b005b6108c1612428565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109196004803603602081101561090357600080fd5b810190808035906020019092919050505061244e565b005b6000600a80549050905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a818154811061095b57fe5b90600052602060002090600802016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b60085481565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600b600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015442101591505092915050565b6000600a8381548110610b4957fe5b906000526020600020906008020190506000600b600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610bbe57600080fd5b610bc784610d63565b610bd0846126c8565b6000831115610cce57610bf083826000015461267e90919063ffffffff16565b8160000181905550610c0f83836001015461267e90919063ffffffff16565b8260010181905550600082600601541115610c9e576000610c34848460060154611f47565b9050610c878360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128bb565b610c9a818561267e90919063ffffffff16565b9350505b610ccd8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856128bb565b5b610d0064e8d4a51000610cf2846004015484600001546125ae90919063ffffffff16565b61263490919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568856040518082815260200191505060405180910390a350505050565b60075481565b6000600a8281548110610d7257fe5b9060005260206000209060080201905080600301544311610d935750610fe0565b600081600101541415610daf5743816003018190555050610fe0565b6000610dbf826003015443611743565b90506000610e02600854610df48560020154610de6600554876125ae90919063ffffffff16565b6125ae90919063ffffffff16565b61263490919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610e9757600080fd5b505af1158015610eab573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1c84610384611f47565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f6f57600080fd5b505af1158015610f83573d6000803e3d6000fd5b50505050610fcb610fb88460010154610faa64e8d4a51000856125ae90919063ffffffff16565b61263490919063ffffffff16565b846004015461252690919063ffffffff16565b83600401819055504383600301819055505050505b50565b6000600a8281548110610ff257fe5b906000526020600020906008020190506000600b600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905060008111156111b557600082600001819055506000826001018190555060008260020181905550600082600301819055506110a781846001015461267e90919063ffffffff16565b83600101819055506000836006015411156111365760006110cc828560060154611f47565b905061111f8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128bb565b611132818361267e90919063ffffffff16565b9150505b6111658360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836128bb565b833373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040518082815260200191505060405180910390a35b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61128461128e565b8060058190555050565b6000600a80549050905060005b818110156112b7576112ac81610d63565b80600101905061129b565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000841015801561138f57506103e88411155b61139857600080fd5b600083101580156113ab57506101f48311155b6113b457600080fd5b6213c6808211156113c457600080fd5b80156113d3576113d261128e565b5b6000600a87815481106113e257fe5b906000526020600020906008020160020154905085600a888154811061140457fe5b90600052602060002090600802016002018190555084600a888154811061142757fe5b90600052602060002090600802016005018190555083600a888154811061144a57fe5b90600052602060002090600802016006018190555082600a888154811061146d57fe5b9060005260206000209060080201600701819055508581146114b7576114b0866114a28360085461267e90919063ffffffff16565b61252690919063ffffffff16565b6008819055505b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000841015801561159457506103e88411155b61159d57600080fd5b600083101580156115b057506101f48311155b6115b957600080fd5b6213c6808211156115c957600080fd5b80156115d8576115d761128e565b5b6115ed8560085461252690919063ffffffff16565b600881905550600a6040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001878152602001600754431161163b5760075461163d565b435b81526020016000815260200186815260200185815260200184815250908060018154018082558091505060019003906000526020600020906008020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701555050505050505050565b60065481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061176c60065461175e858561267e90919063ffffffff16565b6125ae90919063ffffffff16565b905092915050565b6000600a848154811061178357fe5b906000526020600020906008020190506000600b600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506117f085610d63565b6117f9856126c8565b6000841115611d4957600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a9fefc7336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d60208110156118cd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614801561192e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561196657503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a2d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b94265b833856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b505050505b6000611a5d8360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061296d565b90508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505050506040513d6020811015611b3c57600080fd5b8101908080519060200190929190505050506000611b7e8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061296d565b9050611b93828261267e90919063ffffffff16565b9550600084600501541115611d08576000611bb2878660050154611f47565b90506000611bca60038361263490919063ffffffff16565b90506000611be1828461267e90919063ffffffff16565b905081611c128860000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061296d565b10611c6957611c688760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128bb565b5b80611c988860000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061296d565b10611cef57611cee8760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128bb565b5b611d02838a61267e90919063ffffffff16565b98505050505b611d1f86846000015461252690919063ffffffff16565b8360000181905550611d3e86856001015461252690919063ffffffff16565b846001018190555050505b611d7b64e8d4a51000611d6d846004015484600001546125ae90919063ffffffff16565b61263490919063ffffffff16565b8160010181905550843373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15866040518082815260200191505060405180910390a35050505050565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154905084565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f70612710611f6284866125ae90919063ffffffff16565b61263490919063ffffffff16565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612039576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811015801561204c57506103e88111155b61205557600080fd5b8060048190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a848154811061209557fe5b906000526020600020906008020190506000600b600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260040154905082600301544311801561211a57506000836001015414155b156121b957600061212f846003015443611743565b905060006121726008546121648760020154612156600554876125ae90919063ffffffff16565b6125ae90919063ffffffff16565b61263490919063ffffffff16565b90506121b46121a5866001015461219764e8d4a51000856125ae90919063ffffffff16565b61263490919063ffffffff16565b8461252690919063ffffffff16565b925050505b60006121ff83600101546121f164e8d4a510006121e38688600001546125ae90919063ffffffff16565b61263490919063ffffffff16565b61267e90919063ffffffff16565b905061221883600201548261252690919063ffffffff16565b94505050505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561236b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806130276026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461250f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811161251c57600080fd5b8060068190555050565b6000808284019050838110156125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156125c1576000905061262e565b60008284029050828482816125d257fe5b0414612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061304d6021913960400191505060405180910390fd5b809150505b92915050565b600061267683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a19565b905092915050565b60006126c083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612adf565b905092915050565b6000600a82815481106126d757fe5b906000526020600020906008020190506000600b600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816003015414156127685761275f82600701544261252690919063ffffffff16565b81600301819055505b60008160000154111561285e5760006127bf82600101546127b164e8d4a510006127a3876004015487600001546125ae90919063ffffffff16565b61263490919063ffffffff16565b61267e90919063ffffffff16565b90506000811115612858576127d48433610ad4565b156128375760006127f283600201548361252690919063ffffffff16565b90506000836002018190555061281584600701544261252690919063ffffffff16565b83600301819055506000811115612831576128303382612b9f565b5b50612857565b61284e81836002015461252690919063ffffffff16565b82600201819055505b5b506128b6565b6128688333610ad4565b156128b5576000816002015490506000826002018190555061289783600701544261252690919063ffffffff16565b826003018190555060008111156128b3576128b23382612b9f565b5b505b5b505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561292c57600080fd5b505af1158015612940573d6000803e3d6000fd5b505050506040513d602081101561295657600080fd5b810190808051906020019092919050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156129d657600080fd5b505afa1580156129ea573d6000803e3d6000fd5b505050506040513d6020811015612a0057600080fd5b8101908080519060200190929190505050905092915050565b60008083118290612ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a8a578082015181840152602081019050612a6f565b50505050905090810190601f168015612ab75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ad157fe5b049050809150509392505050565b6000838311158290612b8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b51578082015181840152602081019050612b36565b50505050905090810190601f168015612b7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000612bcd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061296d565b905080821115612bdb578091505b600082111561302157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612c7757600080fd5b505af1158015612c8b573d6000803e3d6000fd5b505050506040513d6020811015612ca157600080fd5b8101908080519060200190929190505050506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a9fefc7856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d3e57600080fd5b505afa158015612d52573d6000803e3d6000fd5b505050506040513d6020811015612d6857600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461301f576000612dbd84600454611f47565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636aab8f9e83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252600b8152602001807f6d61737465722d636865660000000000000000000000000000000000000000008152506020019350505050600060405180830381600087803b158015612e8b57600080fd5b505af1158015612e9f573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612f3657600080fd5b505af1158015612f4a573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612fe157600080fd5b505af1158015612ff5573d6000803e3d6000fd5b505050506040513d602081101561300b57600080fd5b810190808051906020019092919050505050505b505b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208f4df9c7e135fda046d05d348ebc3212b989935a6a8b4177dd2cb38ce0514b0964736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000e0ca4724bc8b97b259d25596ee3cfab816629bad0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000009ea7a3000000000000000000000000c57d641752f8bb61bff7d461632b1261c5df57ec000000000000000000000000247279aa5ccbdb4723039da05a5d9af4ff85d590

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

000000000000000000000000e0ca4724bc8b97b259d25596ee3cfab816629bad0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000009ea7a3000000000000000000000000c57d641752f8bb61bff7d461632b1261c5df57ec000000000000000000000000247279aa5ccbdb4723039da05a5d9af4ff85d590

-----Decoded View---------------
Arg [0] : _token (address): 0xe0ca4724bc8b97b259d25596ee3cfab816629bad
Arg [1] : _tokensPerBlock (uint256): 100000000000000000000
Arg [2] : _startBlock (uint256): 10397603
Arg [3] : _buybackWallet (address): 0xc57d641752f8bb61bff7d461632b1261c5df57ec
Arg [4] : _referral (address): 0x247279aa5ccbdb4723039da05a5d9af4ff85d590

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000e0ca4724bc8b97b259d25596ee3cfab816629bad
Arg [1] : 0000000000000000000000000000000000000000000000056bc75e2d63100000
Arg [2] : 00000000000000000000000000000000000000000000000000000000009ea7a3
Arg [3] : 000000000000000000000000c57d641752f8bb61bff7d461632b1261c5df57ec
Arg [4] : 000000000000000000000000247279aa5ccbdb4723039da05a5d9af4ff85d590


Deployed ByteCode Sourcemap

33678:12468:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35359:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33818:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34583:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34008:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33898:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45739:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37522:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41178:877;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33976:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35969:766;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42063:836;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45880:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35781:180;;;:::i;:::-;;44596:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43765:823;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33934:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3628:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35462:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39322:1848;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34616:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46041:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33850:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34047:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35633:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45426:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33783:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36743:771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3987:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33757:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45579:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35359:95;35404:7;35431:8;:15;;;;35424:22;;35359:95;:::o;33818:25::-;;;;;;;;;;;;;:::o;34583:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34008:30::-;;;;:::o;33898:29::-;;;;:::o;45739:133::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45847:17:::1;45828:16;;:36;;;;;;;;;;;;;;;;;;45739:133:::0;:::o;37522:202::-;37592:4;37609:21;37633:8;:14;37642:4;37633:14;;;;;;;;;;;:21;37648:5;37633:21;;;;;;;;;;;;;;;37609:45;;37691:4;:25;;;37672:15;:44;;37665:51;;;37522:202;;;;:::o;41178:877::-;41247:21;41271:8;41280:4;41271:14;;;;;;;;;;;;;;;;;;41247:38;;41296:21;41320:8;:14;41329:4;41320:14;;;;;;;;;;;:26;41335:10;41320:26;;;;;;;;;;;;;;;41296:50;;41380:7;41365:4;:11;;;:22;;41357:31;;;;;;41401:16;41412:4;41401:10;:16::i;:::-;41430:13;41438:4;41430:7;:13::i;:::-;41470:1;41460:7;:11;41456:461;;;41502:24;41518:7;41502:4;:11;;;:15;;:24;;;;:::i;:::-;41488:4;:11;;:38;;;;41554:23;41569:7;41554:4;:10;;;:14;;:23;;;;:::i;:::-;41541:4;:10;;:36;;;;41617:1;41598:4;:16;;;:20;41594:257;;;41639:25;41667:34;41675:7;41684:4;:16;;;41667:7;:34::i;:::-;41639:62;;41722:54;41728:4;:10;;;;;;;;;;;;41740:16;;;;;;;;;;;41758:17;41722:5;:54::i;:::-;41805:30;41817:17;41805:7;:11;;:30;;;;:::i;:::-;41795:40;;41594:257;;41867:38;41873:4;:10;;;;;;;;;;;;41885;41897:7;41867:5;:38::i;:::-;41456:461;41947:49;41991:4;41947:39;41963:4;:22;;;41947:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;41929:4;:15;;:67;;;;42033:4;42021:10;42012:35;;;42039:7;42012:35;;;;;;;;;;;;;;;;;;41178:877;;;;:::o;33976:25::-;;;;:::o;35969:766::-;36021:21;36045:8;36054:4;36045:14;;;;;;;;;;;;;;;;;;36021:38;;36090:4;:20;;;36074:12;:36;36070:75;;36127:7;;;36070:75;36175:1;36161:4;:10;;;:15;36157:104;;;36216:12;36193:4;:20;;:35;;;;36243:7;;;36157:104;36273:18;36294:49;36308:4;:20;;;36330:12;36294:13;:49::i;:::-;36273:70;;36354:20;36377:72;36433:15;;36377:51;36412:4;:15;;;36377:30;36392:14;;36377:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;36354:95;;36462:5;;;;;;;;;;;:10;;;36481:4;36488:12;36462:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36512:5;;;;;;;;;;;:10;;;36531:16;;;;;;;;;;;36550:26;36558:12;36572:3;36550:7;:26::i;:::-;36512:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36615:66;36642:38;36669:4;:10;;;36642:22;36659:4;36642:12;:16;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;36615:4;:22;;;:26;;:66;;;;:::i;:::-;36590:4;:22;;:91;;;;36715:12;36692:4;:20;;:35;;;;35969:766;;;;;:::o;42063:836::-;42124:21;42148:8;42157:4;42148:14;;;;;;;;;;;;;;;;;;42124:38;;42173:21;42197:8;:14;42206:4;42197:14;;;;;;;;;;;:26;42212:10;42197:26;;;;;;;;;;;;;;;42173:50;;42236:14;42253:4;:11;;;42236:28;;42290:1;42281:6;:10;42277:615;;;42322:1;42308:4;:11;;:15;;;;42356:1;42338:4;:15;;:19;;;;42394:1;42372:4;:19;;:23;;;;42438:1;42410:4;:25;;:29;;;;42469:22;42484:6;42469:4;:10;;;:14;;:22;;;;:::i;:::-;42456:4;:10;;:35;;;;42531:1;42512:4;:16;;;:20;42508:254;;;42553:25;42581:33;42589:6;42597:4;:16;;;42581:7;:33::i;:::-;42553:61;;42635:54;42641:4;:10;;;;;;;;;;;;42653:16;;;;;;;;;;;42671:17;42635:5;:54::i;:::-;42717:29;42728:17;42717:6;:10;;:29;;;;:::i;:::-;42708:38;;42508:254;;42778:37;42784:4;:10;;;;;;;;;;;;42796;42808:6;42778:5;:37::i;:::-;42867:4;42855:10;42837:43;;;42873:6;42837:43;;;;;;;;;;;;;;;;;;42277:615;42063:836;;;;:::o;45880:153::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45965:17:::1;:15;:17::i;:::-;46010:15;45993:14;:32;;;;45880:153:::0;:::o;35781:180::-;35826:14;35843:8;:15;;;;35826:32;;35874:11;35869:85;35897:6;35891:3;:12;35869:85;;;35927:15;35938:3;35927:10;:15::i;:::-;35905:5;;;;;35869:85;;;;35781:180;:::o;44596:822::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44784:1:::1;44769:11;:16;;:39;;;;;44804:4;44789:11;:19;;44769:39;44761:48;;;::::0;::::1;;44844:1;44828:12;:17;;:40;;;;;44865:3;44849:12;:19;;44828:40;44820:49;;;::::0;::::1;;44908:7;44888:16;:27;;44880:36;;;::::0;::::1;;44933:11;44929:61;;;44961:17;:15;:17::i;:::-;44929:61;45002:22;45027:8;45036:4;45027:14;;;;;;;;;;;;;;;;;;:25;;;45002:50;;45093:11;45065:8;45074:4;45065:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;45143:11;45115:8;45124:4;45115:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;45194:12;45165:8;45174:4;45165:14;;;;;;;;;;;;;;;;;;:26;;:41;;;;45250:16;45217:8;45226:4;45217:14;;;;;;;;;;;;;;;;;;:30;;:49;;;;45301:11;45283:14;:29;45279:132;;45347:52;45387:11;45347:35;45367:14;45347:15;;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;45329:15;:70;;;;45279:132;3970:1;44596:822:::0;;;;;;:::o;43765:823::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43952:1:::1;43937:11;:16;;:39;;;;;43972:4;43957:11;:19;;43937:39;43929:48;;;::::0;::::1;;44012:1;43996:12;:17;;:40;;;;;44033:3;44017:12;:19;;43996:40;43988:49;;;::::0;::::1;;44076:7;44056:16;:27;;44048:36;;;::::0;::::1;;44101:11;44097:61;;;44129:17;:15;:17::i;:::-;44097:61;44188:32;44208:11;44188:15;;:19;;:32;;;;:::i;:::-;44170:15;:50;;;;44233:8;44247:332;;;;;;;;44275:6;44247:332;;;;;;44300:1;44247:332;;;;44325:11;44247:332;;;;44380:10;;44365:12;:25;:53;;44408:10;;44365:53;;;44393:12;44365:53;44247:332;;;;44449:1;44247:332;;;;44474:11;44247:332;;;;44510:12;44247:332;;;;44551:16;44247:332;;::::0;44233:347:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43765:823:::0;;;;;;:::o;33934:35::-;;;;:::o;3628:20::-;;;;;;;;;;;;:::o;35462:163::-;35544:7;35571:46;35600:16;;35571:24;35584:10;35571:8;:12;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;35564:53;;35462:163;;;;:::o;39322:1848::-;39409:21;39433:8;39442:4;39433:14;;;;;;;;;;;;;;;;;;39409:38;;39458:21;39482:8;:14;39491:4;39482:14;;;;;;;;;;;:26;39497:10;39482:26;;;;;;;;;;;;;;;39458:50;;39521:16;39532:4;39521:10;:16::i;:::-;39550:13;39558:4;39550:7;:13::i;:::-;39590:1;39580:7;:11;39576:1457;;;39656:1;39612:46;;:8;;;;;;;;;;;:20;;;39633:10;39612:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;:73;;;;;39683:1;39662:23;;:9;:23;;;;39612:73;:100;;;;;39702:10;39689:23;;:9;:23;;;;39612:100;39608:184;;;39733:8;;;;;;;;;;;:20;;;39754:10;39766:9;39733:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39608:184;39808:18;39829:50;39852:4;:10;;;;;;;;;;;;39873:4;39829:14;:50::i;:::-;39808:71;;39894:4;:10;;;;;;;;;;;;:23;;;39918:10;39938:4;39945:7;39894:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39968:18;39989:50;40012:4;:10;;;;;;;;;;;;40033:4;39989:14;:50::i;:::-;39968:71;;40066:26;40081:10;40066;:14;;:26;;;;:::i;:::-;40056:36;;40131:1;40113:4;:15;;;:19;40109:807;;;40153:29;40185:33;40193:7;40202:4;:15;;;40185:7;:33::i;:::-;40153:65;;40237:27;40267:28;40293:1;40267:21;:25;;:28;;;;:::i;:::-;40237:58;;40314:23;40340:46;40366:19;40340:21;:25;;:46;;;;:::i;:::-;40314:72;;40499:19;40445:50;40468:4;:10;;;;;;;;;;;;40489:4;40445:14;:50::i;:::-;:73;40441:175;;40543:53;40549:4;:10;;;;;;;;;;;;40561:13;;;;;;;;;;;40576:19;40543:5;:53::i;:::-;40441:175;40724:15;40670:50;40693:4;:10;;;;;;;;;;;;40714:4;40670:14;:50::i;:::-;:69;40666:170;;40764:52;40770:4;:10;;;;;;;;;;;;40782:16;;;;;;;;;;;40800:15;40764:5;:52::i;:::-;40666:170;40866:34;40878:21;40866:7;:11;;:34;;;;:::i;:::-;40856:44;;40109:807;;;;40946:24;40962:7;40946:4;:11;;;:15;;:24;;;;:::i;:::-;40932:4;:11;;:38;;;;40998:23;41013:7;40998:4;:10;;;:14;;:23;;;;:::i;:::-;40985:4;:10;;:36;;;;39576:1457;;;41063:49;41107:4;41063:39;41079:4;:22;;;41063:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;41045:4;:15;;:67;;;;41148:4;41136:10;41128:34;;;41154:7;41128:34;;;;;;;;;;;;;;;;;;39322:1848;;;;;:::o;34616:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46041:100::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46124:9:::1;46113:8;;:20;;;;;;;;;;;;;;;;;;46041:100:::0;:::o;33850:33::-;;;;:::o;34047:31::-;;;;;;;;;;;;;:::o;35633:140::-;35706:7;35733:32;35759:5;35733:21;35745:8;35733:7;:11;;:21;;;;:::i;:::-;:25;;:32;;;;:::i;:::-;35726:39;;35633:140;;;;:::o;45426:145::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45513:1:::1;45504:5;:10;;:27;;;;;45527:4;45518:5;:13;;45504:27;45496:36;;;::::0;::::1;;45558:5;45543:12;:20;;;;45426:145:::0;:::o;33783:28::-;;;;;;;;;;;;;:::o;36743:771::-;36812:7;36832:21;36856:8;36865:4;36856:14;;;;;;;;;;;;;;;;;;36832:38;;36881:21;36905:8;:14;36914:4;36905:14;;;;;;;;;;;:21;36920:5;36905:21;;;;;;;;;;;;;;;36881:45;;36939:25;36967:4;:22;;;36939:50;;37021:4;:20;;;37006:12;:35;:54;;;;;37059:1;37045:4;:10;;;:15;;37006:54;37002:361;;;37077:18;37098:49;37112:4;:20;;;37134:12;37098:13;:49::i;:::-;37077:70;;37162:18;37183:72;37239:15;;37183:51;37218:4;:15;;;37183:30;37198:14;;37183:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;37162:93;;37292:59;37314:36;37339:4;:10;;;37314:20;37329:4;37314:10;:14;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;37292:17;:21;;:59;;;;:::i;:::-;37272:79;;37002:361;;;37375:13;37391:65;37440:4;:15;;;37391:44;37430:4;37391:34;37407:17;37391:4;:11;;;:15;;:34;;;;:::i;:::-;:38;;:44;;;;:::i;:::-;:48;;:65;;;;:::i;:::-;37375:81;;37476:30;37486:4;:19;;;37476:5;:9;;:30;;;;:::i;:::-;37469:37;;;;;;36743:771;;;;:::o;3987:244::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4098:1:::1;4078:22;;:8;:22;;;;4070:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:8;4159:37;;4180:5;::::0;::::1;;;;;;;;4159:37;;;;;;;;;;;;4215:8;4207:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;3987:244:::0;:::o;33757:19::-;;;;;;;;;;;;;:::o;45579:152::-;3912:10;3903:19;;:5;;;;;;;;;;:19;;;3895:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45680:1:::1;45666:11;:15;45658:24;;;::::0;::::1;;45712:11;45693:16;:30;;;;45579:152:::0;:::o;4501:181::-;4559:7;4579:9;4595:1;4591;:5;4579:17;;4620:1;4615;:6;;4607:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4673:1;4666:8;;;4501:181;;;;:::o;5855:471::-;5913:7;6163:1;6158;:6;6154:47;;;6188:1;6181:8;;;;6154:47;6213:9;6229:1;6225;:5;6213:17;;6258:1;6253;6249;:5;;;;;;:10;6241:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6317:1;6310:8;;;5855:471;;;;;:::o;6802:132::-;6860:7;6887:39;6891:1;6894;6887:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6880:46;;6802:132;;;;:::o;4965:136::-;5023:7;5050:43;5054:1;5057;5050:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5043:50;;4965:136;;;;:::o;37857:1457::-;37908:21;37932:8;37941:4;37932:14;;;;;;;;;;;;;;;;;;37908:38;;37957:21;37981:8;:14;37990:4;37981:14;;;;;;;;;;;:26;37996:10;37981:26;;;;;;;;;;;;;;;37957:50;;38053:1;38024:4;:25;;;:30;38020:132;;;38099:41;38119:4;:20;;;38099:15;:19;;:41;;;;:::i;:::-;38071:4;:25;;:69;;;;38020:132;38182:1;38168:4;:11;;;:15;38164:1143;;;38200:21;38224:70;38278:4;:15;;;38224:49;38268:4;38224:39;38240:4;:22;;;38224:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;38200:94;;38329:1;38313:13;:17;38309:584;;;38355:28;38366:4;38372:10;38355;:28::i;:::-;38351:527;;;38408:20;38431:38;38449:4;:19;;;38431:13;:17;;:38;;;;:::i;:::-;38408:61;;38516:1;38494:4;:19;;:23;;;;38568:41;38588:4;:20;;;38568:15;:19;;:41;;;;:::i;:::-;38540:4;:25;;:69;;;;38653:1;38638:12;:16;38634:116;;;38683:43;38701:10;38713:12;38683:17;:43::i;:::-;38634:116;38351:527;;;;38820:38;38844:13;38820:4;:19;;;:23;;:38;;;;:::i;:::-;38798:4;:19;;:60;;;;38351:527;38309:584;38164:1143;;;;38929:28;38940:4;38946:10;38929;:28::i;:::-;38925:371;;;38978:20;39001:4;:19;;;38978:42;;39063:1;39041:4;:19;;:23;;;;39111:41;39131:4;:20;;;39111:15;:19;;:41;;;;:::i;:::-;39083:4;:25;;:69;;;;39192:1;39177:12;:16;39173:108;;;39218:43;39236:10;39248:12;39218:17;:43::i;:::-;39173:108;38925:371;;38164:1143;37857:1457;;;:::o;37732:117::-;37812:6;:15;;;37828:3;37833:7;37812:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37732:117;;;:::o;42907:150::-;42988:7;43022:6;43015:24;;;43040:8;43015:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43008:41;;42907:150;;;;:::o;7430:278::-;7516:7;7548:1;7544;:5;7551:12;7536:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7575:9;7591:1;7587;:5;;;;;;7575:17;;7699:1;7692:8;;;7430:278;;;;;:::o;5404:192::-;5490:7;5523:1;5518;:6;;5526:12;5510:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5550:9;5566:1;5562;:5;5550:17;;5587:1;5580:8;;;5404:192;;;;;:::o;43065:692::-;43142:15;43160:45;43183:5;;;;;;;;;;;43199:4;43160:14;:45::i;:::-;43142:63;;43230:7;43220;:17;43216:67;;;43264:7;43254:17;;43216:67;43309:1;43299:7;:11;43295:455;;;43327:5;;;;;;;;;;;:14;;;43342:3;43347:7;43327:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43372:16;43391:8;;;;;;;;;;;:20;;;43412:3;43391:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43372:44;;43455:1;43435:22;;:8;:22;;;43431:308;;43478:20;43501:30;43509:7;43518:12;;43501:7;:30::i;:::-;43478:53;;43550:8;;;;;;;;;;;:19;;;43570:8;43595:12;43550:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43627:5;;;;;;;;;;;:10;;;43646:4;43653:12;43627:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43685:5;;;;;;;;;;;:14;;;43700:8;43710:12;43685:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43431:308;;43295:455;;43065:692;;;:::o

Swarm Source

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