Contract 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3c18a44f30dec79809d3c6c88a4c1ccd7859c9e119404fce1eff51fc0fcfa671STAKE110318792021-09-18 20:57:258 mins ago0x425d2b9aa035537b3058cc76de6a43cee99fd6fe IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00225887
0xd13eee37f85dd6ef699c2a75a711fa70fe95af07c55ddc4f05fe3b41b096d41bSTAKE110318772021-09-18 20:57:198 mins ago0x08e1e885319f8695913561561abbe935bafe304d IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00225875
0x6510eb74e9dc4e75e2c3a7538478712ed469ae609810202b6660b674edf6eb61Activate User St...110318662021-09-18 20:56:468 mins ago0x425d2b9aa035537b3058cc76de6a43cee99fd6fe IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40.02 BNB0.00164066
0xa5aee79359c554114303958aae526c7969bb8c460580343f85289e3eb8165214CLAIMALLREWARD110318002021-09-18 20:53:2812 mins ago0x08e1e885319f8695913561561abbe935bafe304d IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x0849e48f220fe60201f6755acc49fef91856b50669aa096167a5927fcd121c52Activate User St...110317582021-09-18 20:51:2214 mins ago0x08e1e885319f8695913561561abbe935bafe304d IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40.02 BNB0.00164066
0xb19f58c0bd1ea2c8846f0e17ee0c072dc2b2f4fd0bce1515651efb936cc880c2STAKE110317082021-09-18 20:48:5216 mins ago0xee1687502179dfc6b27a323cfcc76c45f97bb114 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00225899
0xcbc648a3d7a2b1a75cdcff32b5db74179600afb9855375003936c31aed179b8aCLAIMALLREWARD110316712021-09-18 20:47:0118 mins ago0x1a303624c594b65eb655f3efccb1918618d0dc76 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x71b354849570dbfd9ee28dff75e15a47fc1e5e9aa1c3282693093c833776f197CLAIMALLREWARD110316622021-09-18 20:46:3418 mins ago0x1a303624c594b65eb655f3efccb1918618d0dc76 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x2b6ae286d6e2432866f2fcb53e3a72bd094c6776fff7857e2f799884380df48eActivate User St...110316452021-09-18 20:45:4319 mins ago0xee1687502179dfc6b27a323cfcc76c45f97bb114 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40.02 BNB0.00164066
0x283b450d0d1cef5fd5f8a1311081c2f0f87142d84cba8ebff13aefc35849e340CLAIMALLREWARD110315482021-09-18 20:40:5224 mins ago0x5662304795044ebcda445714eb8ed5994ee6b5a9 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x0b63b76a7da572f41738ec8320579187df6f34d5265fbbfef76e10d489ff4adaCLAIMALLREWARD110312672021-09-18 20:26:4938 mins ago0x852c2884131b244300f2138b769ff0add334c552 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.002186905
0xf152d2d21155a4b14677dfff7e2abce448e5fbc0d15605ae6afa070af47fa46eSTAKE110312532021-09-18 20:26:0739 mins ago0x0257e1b371376a9a21a37bfa02b2a056b8f86abc IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00204231
0x282109e7c2e99b0a78ddb1cb87b3419e3edbfc2d45d3270f68691b8c175cd458STAKE110312482021-09-18 20:25:5239 mins ago0x96882ad826710f2d02759f33bdcf6a2b0715df4f IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00225881
0x11c0dab688ed90b9dbe4ab7486bbf5fc9d5b7216eea34d0eb341570156c88cd5CLAIMALLREWARD110309372021-09-18 20:10:1955 mins ago0x2614a0e6a294b845894d82f224ef85f970f2a328 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x89b4fc1eb6eaea3cbacb664a8e05646fcc749fb0a5fc0a6453f79b42b5f1350cWITHDRAW110309032021-09-18 20:08:3756 mins ago0xd784f645f1a9ac90c0170cdde96ab8a013ff5bb1 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.002618232
0xae1290a20126dc2a7ed40f919e53be3b6408c1419558d9db57e1b88d1b0dfeedWITHDRAW110308962021-09-18 20:08:1657 mins ago0xd784f645f1a9ac90c0170cdde96ab8a013ff5bb1 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.002618232
0x4b18e9fc230bfb163d22779befa31fa9cbae94d91ba63eff756fb6ebdcf76b3fWITHDRAW110308762021-09-18 20:07:1658 mins ago0xce0a84da78c9d5c77ca984c7f286b0396b912708 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.003764436
0x60f1afcf71c298299218c7204675698b45a229001d5ecb07c928204846f21b18STAKE110308142021-09-18 20:04:101 hr 1 min ago0x3fec2d6d1a735af25733e22125c57cdcff0b09ba IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00204225
0x8286265b41b3637ba6a290133761449124bf1343f2edecad334f353260916746CLAIMALLREWARD110307532021-09-18 20:01:071 hr 4 mins ago0x146e92b1e5cf6cc30078858589b397ec72c62b49 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0x014c4872322f8d053617b585dcb8d44a0b1ff5b87440b4a1e43b5594aed6c5cfCLAIMALLREWARD110307492021-09-18 20:00:551 hr 4 mins ago0x146e92b1e5cf6cc30078858589b397ec72c62b49 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.000932575
0xea6adf2c50b24aba7ea752fbf9186173dbd6f20264bc163e0dffdb487b935167STAKE110305862021-09-18 19:52:461 hr 12 mins ago0x26150e9ba063c113210e86f7c4d10400e7a1a855 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00196737
0x554fcff121fd0b953b4351c2f7af6fcc6f2847d094f79b6d62025bf160b2f13aSTAKE110305022021-09-18 19:48:341 hr 16 mins ago0xa0e576f096a981d641e8f1d07da2cc649ee70c07 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.001488
0xb505ed7ea2386c24b720b3e70681b78fd5ac62967a5ef1887c25979218f03ab2STAKE110304882021-09-18 19:47:521 hr 17 mins ago0xa0e576f096a981d641e8f1d07da2cc649ee70c07 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.001488
0x8b7cc2ce47043fff5aea25439d518bcbecc4eb8765cac68c8d147797438d897fSTAKE110304732021-09-18 19:47:071 hr 18 mins ago0xa0e576f096a981d641e8f1d07da2cc649ee70c07 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40 BNB0.00225893
0xecfc41bd8be799da7dfb99f40d9c9cfad7fa94bda2a195916aef5aeecd4a03faActivate User St...110304422021-09-18 19:45:341 hr 19 mins ago0xa0e576f096a981d641e8f1d07da2cc649ee70c07 IN  0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f40.02 BNB0.00164066
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6510eb74e9dc4e75e2c3a7538478712ed469ae609810202b6660b674edf6eb61110318662021-09-18 20:56:468 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x0849e48f220fe60201f6755acc49fef91856b50669aa096167a5927fcd121c52110317582021-09-18 20:51:2214 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x2b6ae286d6e2432866f2fcb53e3a72bd094c6776fff7857e2f799884380df48e110316452021-09-18 20:45:4319 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xecfc41bd8be799da7dfb99f40d9c9cfad7fa94bda2a195916aef5aeecd4a03fa110304422021-09-18 19:45:341 hr 19 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x2c46d21600df48ecc8d35d965d573a98ae2312d8d4aeef4469aa39ed91b937e3110288202021-09-18 18:24:272 hrs 41 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xfe27566f8b6b793dec38136eba527b272be32afad722446b3dbb153de6ed287e110285142021-09-18 18:09:062 hrs 56 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x6b13792680b3ad2c431edd04d8ee045ae5f496cd73b6f58a8486b4e21952f558110282152021-09-18 17:53:483 hrs 11 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x2c9ea73fa39e9a78ebe0082e974f2822ede15d3cad3f976c389821fb7acbddf4110272782021-09-18 17:06:283 hrs 59 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xec22aab3acd04c79b76e3b3cccdd47685a5a71f92dcfd653edbe91f2d2f98b7d110262362021-09-18 16:14:224 hrs 51 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x18a3b1c2fdc45ce75825687ab88c08368d0086b6e95591c6daf0ef0f90f5127f110262042021-09-18 16:12:464 hrs 52 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x870772d9bc3a10e555f95d4953d894de98ca4e6044c663c44d2b7e41e4bd539c110261692021-09-18 16:11:014 hrs 54 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xbd7faf98ec874e3902d1e066dd34f390a45bce25a23be91698f20c11554073be110261402021-09-18 16:09:344 hrs 55 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x713e8c5c7c6a66889bbcd9d61bf94986a5a6ea89e5aceb3e24665dc1cf5ce55c110255292021-09-18 15:39:015 hrs 26 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xbbf829418dc25b1e76c9b1b2e10a7a210d10ed7831d76133d62fd7edda56f0b0110253732021-09-18 15:31:055 hrs 34 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xb1fcf82ab4e6efedf7979354e3d80e20f39393fc590931ad33610f4cee92c686110251102021-09-18 15:17:425 hrs 47 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xcfa65f7ef2e47ec145cc64b4fb73d30af7fbcc0088d8a2526506a200f318c14e110249692021-09-18 15:10:395 hrs 54 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xc64119db1019c803b5977b584a525f5f9a6dab6ae94d075a1d2b4538ea32060e110247312021-09-18 14:58:456 hrs 6 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x4cb009ae851f74cce33830b7de5264638c1a54a1db3f30d8d205ba4a3eadc5ab110243732021-09-18 14:40:466 hrs 24 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x8f966b9db17a7e4d594f3962ebe3b2bc21bb9ca7e8fb58932501d5a551a57f8a110242582021-09-18 14:35:016 hrs 30 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x3afc14812cbce351fe5a20a3ef9e5f37ee06916bcfb6639b516ea1d2793026ec110239962021-09-18 14:21:556 hrs 43 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0x1aa69a99f1b78fd3a873c188226ae9adb80386b5729cd224346de7896242819f110233482021-09-18 13:48:217 hrs 17 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xdb86a180922d667b64b0f7e06d40fc0387fbb47243087b0d8e9bcabd079e7855110232282021-09-18 13:42:217 hrs 23 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xfaf3086251088e2847d916bf7bddf3f8364384e7d3cf1184afd2101fa385dac7110227082021-09-18 13:16:217 hrs 49 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xb95782974fb8569392a89bfb2c937c960a3c8f6a624386bf10fbc5777f31e4a4110221502021-09-18 12:48:278 hrs 17 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
0xeeceb6f06054fc03f5cfab8a61bb5e9337b5d61423ed7f86f7aa594ae5f6660b110221312021-09-18 12:47:308 hrs 18 mins ago 0xf8303c3ac316b82bcbb34649e24616aa9ed9e5f4 0x49d282fcdd774593d9da39636d6d40c6266374660.02 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FEGstakeV2

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.7.6;



abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {

        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

// ----------------------------------------------------------------------------
// SafeMath library
// ----------------------------------------------------------------------------


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 ceil(uint a, uint m) internal pure returns (uint r) {
        return (a + m - 1) / m * m;
    }
}

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;

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

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address payable _newOwner) public onlyOwner {
        require(_newOwner != address(0), "ERC20: sending to the zero address");
        owner = _newOwner;
        emit OwnershipTransferred(msg.sender, _newOwner);
    }
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address tokenOwner) external view returns (uint256 balance);
    function allowance(address tokenOwner, address spender) external view returns (uint256 remaining);
    function transfer(address to, uint256 tokens) external returns (bool success);
    function approve(address spender, uint256 tokens) external returns (bool success);
    function transferFrom(address from, address to, uint256 tokens) external returns (bool success);
    function burnTokens(uint256 _amount) external;
    
    function calculateFeesBeforeSend(
        address sender,
        address recipient,
        uint256 amount
    ) external view returns (uint256, uint256);
    
    
    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}

interface regreward {
    function distributeV2() external;
}

interface FEGex2 {
    function BUY(
        address to,
        uint minAmountOut
    ) 
        external payable
        returns (uint tokenAmountOut, uint spotPriceAfter);
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract WhitelistAdminRole is Owned  {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

   constructor () {
        _addWhitelistAdmin(msg.sender);
    }
    
    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(msg.sender), "WhitelistAdminRole: caller does not have the WhitelistAdmin role");
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }
    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(msg.sender);
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    } 

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}

contract FNum is ReentrancyGuard{

    uint public constant BASE              = 10**18;
    
    function badd(uint a, uint b)
        internal pure
        returns (uint)
    {
        uint c = a + b;
        require(c >= a, "ERR_ADD_OVERFLOW");
        return c;
    }

    function bsub(uint a, uint b)
        internal pure
        returns (uint)
    {
        (uint c, bool flag) = bsubSign(a, b);
        require(!flag, "ERR_SUB_UNDERFLOW");
        return c;
    }

    function bsubSign(uint a, uint b)
        internal pure
        returns (uint, bool)
    {
        if (a >= b) {
            return (a - b, false);
        } else {
            return (b - a, true);
        }
    }

    function bmul(uint a, uint b)
        internal pure
        returns (uint)
    {
        uint c0 = a * b;
        require(a == 0 || c0 / a == b, "ERR_MUL_OVERFLOW");
        uint c1 = c0 + (BASE / 2);
        require(c1 >= c0, "ERR_MUL_OVERFLOW");
        uint c2 = c1 / BASE;
        return c2;
    }

    function bdiv(uint a, uint b)
        internal pure
        returns (uint)
    {
        require(b != 0, "ERR_DIV_ZERO");
        uint c0 = a * BASE;
        require(a == 0 || c0 / a == BASE, "ERR_DIV_INTERNAL"); // bmul overflow
        uint c1 = c0 + (b / 2);
        require(c1 >= c0, "ERR_DIV_INTERNAL"); //  badd require
        uint c2 = c1 / b;
        return c2;
    }
    
function btoi(uint a)
        internal pure
        returns (uint)
    {
        return a / BASE;
    }

    function bfloor(uint a)
        internal pure
        returns (uint)
    {
        return btoi(a) * BASE;
    }
    
function bpowi(uint a, uint n)
        internal pure
        returns (uint)
    {
        uint z = n % 2 != 0 ? a : BASE;

        for (n /= 2; n != 0; n /= 2) {
            a = bmul(a, a);

            if (n % 2 != 0) {
                z = bmul(z, a);
            }
        }
        return z;
    }

    function bpow(uint base, uint exp)
        internal pure
        returns (uint)
    {

        uint whole  = bfloor(exp);
        uint remain = bsub(exp, whole);

        uint wholePow = bpowi(base, btoi(whole));

        if (remain == 0) {
            return wholePow;
        }
        uint BPOW_PRECISION = BASE / 10**10;
        uint partialResult = bpowApprox(base, remain, BPOW_PRECISION);
        return bmul(wholePow, partialResult);
    }

    function bpowApprox(uint base, uint exp, uint precision)
        internal pure
        returns (uint)
    {
        // term 0:
        uint a     = exp;
        (uint x, bool xneg)  = bsubSign(base, BASE);
        uint term = BASE;
        uint sum   = term;
        bool negative = false;


        for (uint i = 1; term >= precision; i++) {
            uint bigK = i * BASE;
            (uint c, bool cneg) = bsubSign(a, bsub(bigK, BASE));
            term = bmul(term, bmul(c, x));
            term = bdiv(term, bigK);
            if (term == 0) break;

            if (xneg) negative = !negative;
            if (cneg) negative = !negative;
            if (negative) {
                sum = bsub(sum, term);
            } else {
                sum = badd(sum, term);
            }
        }

        return sum;
    }


}

contract FTokenBase is FNum {

    mapping(address => uint)                   internal _balance;
    mapping(address => mapping(address=>uint)) internal _allowance;
    uint public _totalSupply;

    event Approval(address indexed src, address indexed dst, uint amt);
    event Transfer(address indexed src, address indexed dst, uint amt);

    function _mint(uint amt) internal {
        _balance[address(this)] = badd(_balance[address(this)], amt);
        _totalSupply = badd(_totalSupply, amt);
        emit Transfer(address(0), address(this), amt);
    }

    function _burn(uint amt) internal {
        require(_balance[address(this)] >= amt);
        _balance[address(this)] = bsub(_balance[address(this)], amt);
        _totalSupply = bsub(_totalSupply, amt);
        emit Transfer(address(this), address(0), amt);
    }
    
    function _move(address src, address dst, uint amt) internal {
        require(_balance[src] >= amt);
        _balance[src] = bsub(_balance[src], amt);
        _balance[dst] = badd(_balance[dst], amt);
        emit Transfer(src, dst, amt);
    }

    function _push(address to, uint amt) internal {
        _move(address(this), to, amt);
    }

    function _pull(address from, uint amt) internal {
        _move(from, address(this), amt);
    }
}

contract FToken is FTokenBase {

    string  private _name     = "FEG Stake Shares";
    string  private _symbol   = "FSS";
    uint8   private _decimals = 18;

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

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

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

    function allowance(address src, address dst) external view returns (uint) {
        return _allowance[src][dst];
    }

    function balanceOf(address whom) external view returns (uint) {
        return _balance[whom];
    }

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

    function approve(address dst, uint amt) external returns (bool) {
        _allowance[msg.sender][dst] = amt;
        emit Approval(msg.sender, dst, amt);
        return true;
    }

    function increaseApproval(address dst, uint amt) external returns (bool) {
        _allowance[msg.sender][dst] = badd(_allowance[msg.sender][dst], amt);
        emit Approval(msg.sender, dst, _allowance[msg.sender][dst]);
        return true;
    }

    function decreaseApproval(address dst, uint amt) external returns (bool) {
        uint oldValue = _allowance[msg.sender][dst];
        if (amt > oldValue) {
            _allowance[msg.sender][dst] = 0;
        } else {
            _allowance[msg.sender][dst] = bsub(oldValue, amt);
        }
        emit Approval(msg.sender, dst, _allowance[msg.sender][dst]);
        return true;
    }

    function transfer(address dst, uint amt) external returns (bool) {
        _move(msg.sender, dst, amt);
        return true;
    }

    function transferFrom(address src, address dst, uint amt) external returns (bool) {
        require(msg.sender == src || amt <= _allowance[src][msg.sender]);
     
        _move(src, dst, amt);
        if (msg.sender != src && _allowance[src][msg.sender] != uint256(-1)) {
            _allowance[src][msg.sender] = bsub(_allowance[src][msg.sender], amt);
            emit Approval(msg.sender, dst, _allowance[src][msg.sender]);
        }
        return true;
    }
}

contract FEGstakeV2 is Owned, ReentrancyGuard, WhitelistAdminRole, FNum, FTokenBase, FToken{
    using SafeMath for uint256;
    
    address public FEG   = 0xacFC95585D80Ab62f67A14C566C1b7a49Fe91167;
    address public fBNB  = 0x87b1AccE6a1958E522233A737313C086551a5c76;
    address public USDT  = 0xEf11aB854b475Bd0c5Db37f6bFFAB443219d656d;
    address public TRY   = 0xc12eCeE46ed65D970EE5C899FCC7AE133AfF9b03;
    address public FETP  = 0xbc26Fac021Ee15dEE618c5B67c17a2Fc6eFA430D;
    address public BTC   = 0xD3ba3FB9014AB0b67ea9af05d9b690BFa2305DC2;
    address public poolShares = address(this);
    address public regrewardContract; //Signs The Checks
    
    bool public live = false;
    bool public perform = false; //if true then distribution of rewards from the pool to stakers via the withdraw function is enabled
    bool public perform2 = true; //if true then distribution of TX rewards from unclaimed 1 and 2 wrap's will distribute to stakers
    bool public perform3 = true; //if true then distribution of TX rewards from unclaimed 3rd wrap's will distribute to stakers
    uint256 public scailment = 20; // FEG has TX fee, deduct this fee to not break maths
    
    uint256 public totalDividends = 0;
    uint256 public must = 2e16;
    uint256 public scaleatize = 99;
    uint256 private scaledRemainder = 0;
    uint256 private scaling = uint256(10) ** 12;
    uint public round = 1;
    uint256 public totalDividends1 = 0;
    uint256 private scaledRemainder1 = 0;
    uint256 private scaling1 = uint256(10) ** 12;
    uint public round1 = 1;
    uint256 public totalDividends2 = 0;
    uint256 private scaledRemainder2 = 0;
    uint256 private scaling2 = uint256(10) ** 12;
    uint public round2 = 1;
    
    mapping(address => uint) public farmTime; // When you staked
    
    struct USER{
        uint256 lastDividends;
        uint256 fromTotalDividend;
        uint round;
        uint256 remainder;
        uint256 lastDividends1;
        uint256 fromTotalDividend1;
        uint round1;
        uint256 remainder1;
        uint256 lastDividends2;
        uint256 fromTotalDividend2;
        uint round2;
        uint256 remainder2;
        bool initialized;
        bool activated;
    } 
    
    address[] internal stakeholders;
    uint public scalerize = 98;
    uint256 public scaletor = 1e17;
    uint256 public scaletor1 = 20e18;
    uint256 public scaletor2 = 1e15;
    uint256 public totalWrap; //  total unclaimed bnb rewards
    uint256 public totalWrap1; //  total unclaimed usdt rewards
    uint256 public totalWrap2; //  total unclaimed btc rewards
    uint256 public totalWrapRef  = bsub(IERC20(fBNB).balanceOf(address(this)), totalWrap); //total bnb reflections unclaimed
    uint256 public totalWrapRef1 = bsub(IERC20(USDT).balanceOf(address(this)), totalWrap1); //total usdt reflections unclaimed
    uint256 public totalWrapRef2 = bsub(IERC20(BTC).balanceOf(address(this)), totalWrap2); //total BTC reflections unclaimed
    mapping(address => USER) stakers;
    mapping (uint => uint256) public payouts;                   // keeps record of each payout
    mapping (uint => uint256) public payouts1;                   // keeps record of each payout
    mapping (uint => uint256) public payouts2;                   // keeps record of each payout
    mapping (uint => uint256) public payoutsTS;                   // keeps record of each payout
    mapping (uint => uint256) public payouts1TS;                   // keeps record of each payout
    mapping (uint => uint256) public payouts2TS;                   // keeps record of each payout
    FEGex2 fegexpair;
    event STAKED(address staker, uint256 tokens);
    event ACTIVATED(address staker, uint256 cost);
    event START(address staker, uint256 tokens);
    event EARNED(address staker, uint256 tokens);
    event UNSTAKED(address staker, uint256 tokens);
    event PAYOUT(uint256 round, uint256 tokens, address sender);
    event PAYOUT1(uint256 round, uint256 tokens, address sender);
    event PAYOUT2(uint256 round, uint256 tokens, address sender);
    event CLAIMEDREWARD(address staker, uint256 reward);
    event CLAIMEDREWARD1(address staker, uint256 reward);
    event CLAIMEDREWARD2(address staker, uint256 reward);
    
    constructor(){
    fegexpair = FEGex2(FETP);
    }
    
    receive() external payable {
    }

    function changeFEGExPair(FEGex2 _fegexpair, address addy) external onlyOwner{ // Incase FEGex updates in future
        require(address(_fegexpair) != address(0), "setting 0 to contract");
        fegexpair = _fegexpair;
        FETP = addy;
    }
    
    function changeTRY(address _try) external onlyOwner{ // Incase TRY updates in future
        TRY = _try;
    }
    
    function changeScalerize(uint _sca) public onlyOwner{
        require(_sca != 0, "You cannot turn off");
        scalerize = _sca;
    }
    
    function changeScalatize(uint _scm) public onlyOwner {
        require(_scm != 0, "You cannot turn off");
        scaleatize = _scm;
    }
    
    function isStakeholder(address _address)
       public
       view
       returns(bool)
   {
       
       if(stakers[_address].initialized) return true;
       else return false;
   }
   
   function addStakeholder(address _stakeholder)
       internal
   {
       (bool _isStakeholder) = isStakeholder(_stakeholder);
       if(!_isStakeholder) {
           farmTime[msg.sender] =  block.timestamp;
           stakers[_stakeholder].initialized = true;
       }
   }
   
   // ------------------------------------------------------------------------
    // Token holders can stake their tokens using this function
    // @param tokens number of tokens to stake
    // ------------------------------------------------------------------------

    function calcPoolInGivenSingleOut(
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint poolSupply,
        uint totalWeight,
        uint tokenAmountOut,
        uint swapFee
    )
        public pure
        returns (uint poolAmountIn)
    {


        uint normalizedWeight = bdiv(tokenWeightOut, totalWeight);
        uint zar = bmul(bsub(BASE, normalizedWeight), swapFee);
        uint tokenAmountOutBeforeSwapFee = bdiv(tokenAmountOut, bsub(BASE, zar));

        uint newTokenBalanceOut = bsub(tokenBalanceOut, tokenAmountOutBeforeSwapFee);
        uint tokenOutRatio = bdiv(newTokenBalanceOut, tokenBalanceOut);


        uint poolRatio = bpow(tokenOutRatio, normalizedWeight);
        uint newPoolSupply = bmul(poolRatio, poolSupply);
        uint poolAmountInAfterExitFee = bsub(poolSupply, newPoolSupply);


        poolAmountIn = bdiv(poolAmountInAfterExitFee, bsub(BASE, 0));
        return (poolAmountIn);
    }
    
    function calcSingleOutGivenPoolIn(
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint poolSupply,
        uint totalWeight,
        uint poolAmountIn,
        uint swapFee
    )
        public pure
        returns (uint tokenAmountOut)
    {
        uint normalizedWeight = bdiv(tokenWeightOut, totalWeight);

        uint poolAmountInAfterExitFee = bmul(poolAmountIn, bsub(BASE, 0));
        uint newPoolSupply = bsub(poolSupply, poolAmountInAfterExitFee);
        uint poolRatio = bdiv(newPoolSupply, poolSupply);


        uint tokenOutRatio = bpow(poolRatio, bdiv(BASE, normalizedWeight));
        uint newTokenBalanceOut = bmul(tokenOutRatio, tokenBalanceOut);

        uint tokenAmountOutBeforeSwapFee = bsub(tokenBalanceOut, newTokenBalanceOut);
        uint zaz = bmul(bsub(BASE, normalizedWeight), swapFee);
        tokenAmountOut = bmul(tokenAmountOutBeforeSwapFee, bsub(BASE, zaz));
        return tokenAmountOut;
    }

    function calcPoolOutGivenSingleIn(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint poolSupply,
        uint totalWeight,
        uint tokenAmountIn,
        uint swapFee
    )
        public pure
        returns (uint poolAmountOut)
    {

        uint normalizedWeight = bdiv(tokenWeightIn, totalWeight);
        uint zaz = bmul(bsub(BASE, normalizedWeight), swapFee);
        uint tokenAmountInAfterFee = bmul(tokenAmountIn, bsub(BASE, zaz));

        uint newTokenBalanceIn = badd(tokenBalanceIn, tokenAmountInAfterFee);
        uint tokenInRatio = bdiv(newTokenBalanceIn, tokenBalanceIn);

 
        uint poolRatio = bpow(tokenInRatio, normalizedWeight);
        uint newPoolSupply = bmul(poolRatio, poolSupply);
        poolAmountOut = bsub(newPoolSupply, poolSupply);
        return (poolAmountOut);
    }
     
    function calcOutGivenIn(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint tokenAmountIn,
        uint swapFee
    )
        public pure
        returns (uint tokenAmountOut, uint tokenInFee)
    {
        uint weightRatio = bdiv(tokenWeightIn, tokenWeightOut);
        uint adjustedIn = bsub(BASE, swapFee);
        adjustedIn = bmul(tokenAmountIn, adjustedIn);
        uint y = bdiv(tokenBalanceIn, badd(tokenBalanceIn, adjustedIn));
        uint foo = bpow(y, weightRatio);
        uint bar = bsub(BASE, foo);
        tokenAmountOut = bmul(tokenBalanceOut, bar);
        tokenInFee = bsub(tokenAmountIn, adjustedIn);
        return (tokenAmountOut, tokenInFee);
    }

    function calcInGivenOut(
        uint tokenBalanceIn,
        uint tokenWeightIn,
        uint tokenBalanceOut,
        uint tokenWeightOut,
        uint tokenAmountOut,
        uint swapFee
    )
        public pure
        returns (uint tokenAmountIn)
    {
        uint weightRatio = bdiv(tokenWeightOut, tokenWeightIn);
        uint diff = bsub(tokenBalanceOut, tokenAmountOut);
        uint y = bdiv(tokenBalanceOut, diff);
        uint foo = bpow(y, weightRatio);
        foo = bsub(foo, BASE);
        foo = bmul(tokenBalanceIn, foo);
        tokenAmountIn = bsub(BASE, swapFee);
        tokenAmountIn = bdiv(foo, tokenAmountIn);
        return (tokenAmountIn);
    }

    function activateUserStaking() public payable{ // Activation of FEGstake costs 0.02 bnb which is automatically refunded to your wallet in the form of TRY.
        require(msg.value == must, "You must deposit the right amount to activate");
      
        fegexpair.BUY{value: msg.value }(msg.sender, 100);
        stakers[msg.sender].activated = true;
        
        emit ACTIVATED(msg.sender, msg.value);
    }

    function isActivated(address staker) public view returns(bool){
        if(stakers[staker].activated) return true;
       else return false;
    }
    
    function Start(uint256 tokens) public onlyOwner returns(uint poolAmountOut){
        require(live == false, "Can only use once");
        require(IERC20(FEG).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user for locking");
        uint256 transferTxFee = (onePercent(tokens).mul(scailment)).div(10);
        uint256 tokensToStake = (tokens.sub(transferTxFee));
        addStakeholder(msg.sender);

        _mint(tokensToStake);
        live = true;
        IERC20(poolShares).transfer(msg.sender, tokensToStake);
        IERC20(address(fBNB)).approve(address(FETP), 1000000000000000000000e18);        
    
        emit START(msg.sender, tokensToStake);    
        
        return poolAmountOut;
    }
    
    function STAKE(uint256 tokens) public returns(uint poolAmountOut){ 
        require(IERC20(FEG).balanceOf(msg.sender) >= tokens, "You do not have enough FEG");
        require(stakers[msg.sender].activated == true);
        require(live == true);
        uint256 transferTxFee = (onePercent(tokens).mul(scailment)).div(10);
        uint256 tokensToStake = (tokens.sub(transferTxFee));
        uint256 totalFEG = IERC20(FEG).balanceOf(address(this));
        addStakeholder(msg.sender);
        
        // add pending rewards to remainder to be claimed by user later, if there is any existing stake
            uint256 owing = pendingReward(msg.sender);
            stakers[msg.sender].remainder += owing;
            stakers[msg.sender].lastDividends = owing;
            stakers[msg.sender].fromTotalDividend = totalDividends;
            stakers[msg.sender].round =  round;
            
            uint256 owing1 = pendingReward1(msg.sender);
            stakers[msg.sender].remainder1 += owing1;
            stakers[msg.sender].lastDividends1 = owing1;
            stakers[msg.sender].fromTotalDividend1 = totalDividends1;
            stakers[msg.sender].round1 =  round1;
            
            uint256 owing2 = pendingReward2(msg.sender);
            stakers[msg.sender].remainder2 += owing2;
            stakers[msg.sender].lastDividends2 = owing2;
            stakers[msg.sender].fromTotalDividend2 = totalDividends2;
            stakers[msg.sender].round2 =  round2;
            
        poolAmountOut = calcPoolOutGivenSingleIn(
                            totalFEG,
                            bmul(BASE, 25),
                            _totalSupply,
                            bmul(BASE, 25),
                            tokensToStake,
                            0
                        );
                        
        require(IERC20(FEG).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user for locking");                
        _mint(poolAmountOut);
        IERC20(poolShares).transfer(msg.sender, poolAmountOut);
            
        emit STAKED(msg.sender, tokens); 
            
        return poolAmountOut;
        
    }

    
    // ------------------------------------------------------------------------
    // Owners can send the funds to be distributed to stakers using this function
    // @param tokens number of tokens to distribute
    // ------------------------------------------------------------------------

    function ADDFUNDS1(uint256 tokens) public onlyWhitelistAdmin{
        require(IERC20(fBNB).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        
        uint256 tokens_ = bmul(tokens, bdiv(99, 100));
        totalWrap = badd(totalWrap, tokens_);
        _addPayout(tokens_);
    }
    
    function ADDFUNDS2(uint256 tokens) public onlyWhitelistAdmin{
        require(IERC20(USDT).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        
        uint256 tokens_ = bmul(tokens, bdiv(99, 100));
        totalWrap1 = badd(totalWrap1, tokens_);
        _addPayout1(tokens_);
    }
    
    function ADDFUNDS3(uint256 tokens) public onlyWhitelistAdmin{
        require(IERC20(BTC).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        uint256 tokens_ = bmul(tokens, bdiv(99, 100));
        totalWrap2 = badd(totalWrap2, tokens_);
        _addPayout2(tokens_);
    }
    
    // ------------------------------------------------------------------------
    // Private function to register payouts
    // ------------------------------------------------------------------------
    function _addPayout(uint256 tokens_) private {
         // divide the funds among the currently staked tokens
        // scale the deposit and add the previous remainder
        uint256 totalShares = _totalSupply;
        uint256 available = (tokens_.mul(scaling)).add(scaledRemainder); 
        uint256 dividendPerToken = available.div(totalShares);
        scaledRemainder = available.mod(totalShares);
        totalDividends = totalDividends.add(dividendPerToken);
        payouts[round] = payouts[round - 1].add(dividendPerToken);
        emit PAYOUT(round, tokens_, msg.sender);
        round++;
        
    }
    
    function _addPayout1(uint256 tokens_1) private{
        // divide the funds among the currently staked tokens
        // scale the deposit and add the previous remainder
        uint256 totalShares = _totalSupply;
        uint256 available = (tokens_1.mul(scaling)).add(scaledRemainder1); 
        uint256 dividendPerToken = available.div(totalShares);
        scaledRemainder1 = available.mod(totalShares);
        totalDividends1 = totalDividends1.add(dividendPerToken);
        payouts1[round1] = payouts1[round1 - 1].add(dividendPerToken);
        emit PAYOUT1(round1, tokens_1, msg.sender);
        round1++;
    }
    
    function _addPayout2(uint256 tokens_2) private{
        // divide the funds among the currently staked tokens
        // scale the deposit and add the previous remainder
        uint256 totalShares = _totalSupply;
        uint256 available = (tokens_2.mul(scaling)).add(scaledRemainder2); 
        uint256 dividendPerToken = available.div(totalShares);
        scaledRemainder2 = available.mod(totalShares);
        totalDividends2 = totalDividends2.add(dividendPerToken);
        payouts2[round2] = payouts2[round2 - 1].add(dividendPerToken);
        emit PAYOUT2(round2, tokens_2, msg.sender);
        round2++;
    }
    
    // ------------------------------------------------------------------------
    // Stakers can claim their pending rewards using this function
    // ------------------------------------------------------------------------
    function CLAIMREWARD() public nonReentrant{
        
            uint256 owing = pendingReward(msg.sender);
        if(owing > 0){
            owing = owing.add(stakers[msg.sender].remainder);
            stakers[msg.sender].remainder = 0;
        
            require(IERC20(fBNB).transfer(msg.sender,owing), "ERROR: error in sending reward from contract");
        
            emit CLAIMEDREWARD(msg.sender, owing);
            totalWrap = bsub(totalWrap, owing);
            stakers[msg.sender].lastDividends = owing; // unscaled
            stakers[msg.sender].round = round; // update the round
            stakers[msg.sender].fromTotalDividend = totalDividends; // scaled
        }
    }
    
    function CLAIMREWARD1() public nonReentrant {
        
            uint256 owing1 = pendingReward1(msg.sender);
        if(owing1 > 0){
            owing1 = owing1.add(stakers[msg.sender].remainder1);
            stakers[msg.sender].remainder1 = 0;
        
            require(IERC20(USDT).transfer(msg.sender,owing1), "ERROR: error in sending reward from contract");
        
            emit CLAIMEDREWARD1(msg.sender, owing1);
            totalWrap1 = bsub(totalWrap1, owing1);
            stakers[msg.sender].lastDividends1 = owing1; // unscaled
            stakers[msg.sender].round1 = round1; // update the round
            stakers[msg.sender].fromTotalDividend1 = totalDividends1; // scaled
        }
    }
    
    function CLAIMREWARD2() public nonReentrant {
      
            uint256 owing2 = pendingReward2(msg.sender);
        if(owing2 > 0){
            owing2 = owing2.add(stakers[msg.sender].remainder2);
            stakers[msg.sender].remainder2 = 0;
        
            require(IERC20(BTC).transfer(msg.sender, owing2), "ERROR: error in sending reward from contract");
        
            emit CLAIMEDREWARD2(msg.sender, owing2);
            totalWrap2 = bsub(totalWrap2, owing2);
            stakers[msg.sender].lastDividends2 = owing2; // unscaled
            stakers[msg.sender].round2 = round2; // update the round
            stakers[msg.sender].fromTotalDividend2 = totalDividends2; // scaled
        }
    }
    
    function CLAIMALLREWARD() public { 
        distribute12();
        CLAIMREWARD();
        CLAIMREWARD1();
        
        if(perform3==true){
        distribute23();    
        CLAIMREWARD2();   
        }
    }
    
    // ------------------------------------------------------------------------
    // Get the pending rewards of the staker
    // @param _staker the address of the staker
    // ------------------------------------------------------------------------    

    function pendingReward(address staker) private returns (uint256) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(msg.sender);
        uint stakersRound = stakers[staker].round;
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(yourBase)).div(scaling);
        stakers[staker].remainder += ((totalDividends.sub(payouts[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount, bdiv(scalerize, 100)));
    }
    
    function pendingReward1(address staker) private returns (uint256) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(msg.sender);
        uint stakersRound = stakers[staker].round1;
        uint256 amount1 =  ((totalDividends1.sub(payouts1[stakersRound - 1])).mul(yourBase)).div(scaling);
        stakers[staker].remainder1 += ((totalDividends1.sub(payouts1[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount1, bdiv(scalerize, 100)));
    }
    
    function pendingReward2(address staker) private returns (uint256) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(msg.sender);
        uint stakersRound = stakers[staker].round2;
        uint256 amount2 =  ((totalDividends2.sub(payouts2[stakersRound - 1])).mul(yourBase)).div(scaling);
        stakers[staker].remainder2 += ((totalDividends2.sub(payouts2[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount2, bdiv(scalerize, 100)));
    }
    
    function getPending1(address staker) public view returns(uint256 _pendingReward) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(staker);
        uint stakersRound = stakers[staker].round; 
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(yourBase)).div(scaling);
        amount += ((totalDividends.sub(payouts[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount.add(stakers[staker].remainder), bdiv(scalerize, 100)));
    }
    
    function getPending2(address staker) public view returns(uint256 _pendingReward) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(staker);
        uint stakersRound = stakers[staker].round1;
        uint256 amount1 = ((totalDividends1.sub(payouts1[stakersRound - 1])).mul(yourBase)).div(scaling);
        amount1 += ((totalDividends1.sub(payouts1[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount1.add(stakers[staker].remainder1), bdiv(scalerize, 100)));
    }
    
    function getPending3(address staker) public view returns(uint256 _pendingReward) {
        require(staker != address(0), "ERC20: sending to the zero address");
        uint256 yourBase = IERC20(poolShares).balanceOf(staker);
        uint stakersRound = stakers[staker].round2;
        uint256 amount2 =  ((totalDividends2.sub(payouts2[stakersRound - 1])).mul(yourBase)).div(scaling);
        amount2 += ((totalDividends2.sub(payouts2[stakersRound - 1])).mul(yourBase)) % scaling;
        return (bmul(amount2.add(stakers[staker].remainder2), bdiv(scalerize, 100)));
    
    }
        // ------------------------------------------------------------------------
    // Get the FEG balance of the token holder
    // @param user the address of the token holder
    // ------------------------------------------------------------------------
    function userStakedFEG(address user) external view returns(uint256 StakedFEG){
        require(user != address(0), "ERC20: sending to the zero address");
        uint256 totalFEG = IERC20(FEG).balanceOf(address(this));
        uint256 yourStakedFEG = calcSingleOutGivenPoolIn(
                            totalFEG, 
                            bmul(BASE, 25),
                            _totalSupply,
                            bmul(BASE, 25),
                            IERC20(poolShares).balanceOf(address(user)),
                            0
                        );
        
        return yourStakedFEG;
    }
    
    // ------------------------------------------------------------------------
    // Stakers can un stake the staked tokens using this function
    // @param tokens the number of tokens to withdraw
    // ------------------------------------------------------------------------
    function WITHDRAW(address to, uint256 _tokens) external returns (uint tokenAmountOut) {
        uint256 totalFEG = IERC20(FEG).balanceOf(address(this));
        require(stakers[msg.sender].activated == true);
        
        if(perform==true) {
        regreward(regrewardContract).distributeV2();
        }
        
        CLAIMALLREWARD();

        uint256 tokens = calcPoolInGivenSingleOut(
                            totalFEG,
                            bmul(BASE, 25),
                            _totalSupply,
                            bmul(BASE, 25),
                            _tokens,
                            0
                        );
                        
        tokenAmountOut = calcSingleOutGivenPoolIn(
                            totalFEG, 
                            bmul(BASE, 25),
                            _totalSupply,
                            bmul(BASE, 25),
                            tokens,
                            0
                        ); 
        require(tokens <= IERC20(poolShares).balanceOf(msg.sender), "You don't have enough FEG");
        _pullPoolShare(tokens);
        _burn(tokens);
        require(IERC20(FEG).transfer(to, tokenAmountOut), "Error in un-staking tokens");
        
        emit UNSTAKED(msg.sender, tokens);
        
        return tokenAmountOut;
    }
    
    function _pullPoolShare(uint amount)
        internal
    {
        bool xfer = IERC20(poolShares).transferFrom(msg.sender, address(this), amount);
        require(xfer, "ERR_ERC20_FALSE");
    }    

    // ------------------------------------------------------------------------
    // Private function to calculate 1% percentage
    // ------------------------------------------------------------------------
    function onePercent(uint256 _tokens) private pure returns (uint256){
        uint256 roundValue = _tokens.ceil(100);
        uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2));
        return onePercentofTokens;
    }
    
    function emergencySaveLostTokens(address to, address _token, uint256 _amt) public onlyOwner {
        require(_token != FEG, "Cannot remove users FEG");
        require(_token != fBNB, "Cannot remove users wBNB");
        require(_token != USDT, "Cannot remove users fUSDT");
        require(_token != BTC, "Cannot remove users fBTC");
        require(IERC20(_token).transfer(to, _amt), "Error in retrieving tokens");
        payable(owner).transfer(address(this).balance);
    }
    
    function changeregrewardContract(address _regrewardContract) external onlyOwner{
        require(address(_regrewardContract) != address(0), "setting 0 to contract");
        regrewardContract = _regrewardContract;
    }
   
    function changePerform(bool _bool) external onlyOwner{
        perform = _bool;
    }

    function changePerform2(bool _bool) external onlyOwner{
        perform2 = _bool;
    }
    
    function changePerform3(bool _bool) external onlyOwner{
        perform3 = _bool;
    }
    
    function changeMust(uint256 _must) external onlyOwner{
        require(must !=0, "Cannot set to 0");
        require(must <= 2e16, "Cannot set over 0.02 BNB");
        must = _must;
    }
    
    function updateBase(address _BTC, address _BNB, address _USDT) external onlyOwner{ // Incase wraps ever update
        BTC = _BTC;
        fBNB = _BNB;
        USDT = _USDT;
    }
    
    function distribute12() public {
        if (IERC20(fBNB).balanceOf(address(this)) > badd(totalWrap, scaletor))  {
        distributeWrap1();
        }
        
        if(IERC20(USDT).balanceOf(address(this)) > badd(totalWrap1, scaletor1)){
        distributeWrap2();
        }
    }
    
    function distribute23() public {    
        if(perform3==true){
            if(IERC20(BTC).balanceOf(address(this)) > badd(totalWrap2, scaletor2)){
        distributeWrap3();}
        }
    }
    
    function changeScaletor(uint256 _sca, uint256 _sca1, uint256 _sca2) public onlyOwner {
        require(_sca !=0 && _sca1 !=0 && _sca2 !=0, "You cannot turn off");
        require(_sca >= 5e17 && _sca1 >= 20e18 && _sca2 >= 1e15, "Must be over minimum");
        scaletor = _sca;
        scaletor1 = _sca1;
        scaletor2 = _sca2;
    }
    
    function distributeWrap1() internal {
        uint256 wrapped = bsub(IERC20(fBNB).balanceOf(address(this)), totalWrap);
        totalWrap = badd(totalWrap, wrapped);
        _addPayout(wrapped);
    }

    function distributeWrap2() internal {
        uint256 wrapped = bsub(IERC20(USDT).balanceOf(address(this)), totalWrap1);
        totalWrap1 = badd(totalWrap1, wrapped);
        _addPayout1(wrapped);
    }
    
    function distributeWrap3() internal {
        uint256 wrapped = bsub(IERC20(BTC).balanceOf(address(this)), totalWrap2);
        totalWrap2 = badd(totalWrap2, wrapped);
        _addPayout2(wrapped);
    }
    }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"}],"name":"ACTIVATED","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD1","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"EARNED","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":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT1","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"START","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BTC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIMALLREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"FEG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FETP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[{"internalType":"uint256","name":"poolAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Start","outputs":[{"internalType":"uint256","name":"poolAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[{"internalType":"uint256","name":"tokenAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateUserStaking","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"whom","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenBalanceIn","type":"uint256"},{"internalType":"uint256","name":"tokenWeightIn","type":"uint256"},{"internalType":"uint256","name":"tokenBalanceOut","type":"uint256"},{"internalType":"uint256","name":"tokenWeightOut","type":"uint256"},{"internalType":"uint256","name":"tokenAmountOut","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"calcInGivenOut","outputs":[{"internalType":"uint256","name":"tokenAmountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenBalanceIn","type":"uint256"},{"internalType":"uint256","name":"tokenWeightIn","type":"uint256"},{"internalType":"uint256","name":"tokenBalanceOut","type":"uint256"},{"internalType":"uint256","name":"tokenWeightOut","type":"uint256"},{"internalType":"uint256","name":"tokenAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"calcOutGivenIn","outputs":[{"internalType":"uint256","name":"tokenAmountOut","type":"uint256"},{"internalType":"uint256","name":"tokenInFee","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenBalanceOut","type":"uint256"},{"internalType":"uint256","name":"tokenWeightOut","type":"uint256"},{"internalType":"uint256","name":"poolSupply","type":"uint256"},{"internalType":"uint256","name":"totalWeight","type":"uint256"},{"internalType":"uint256","name":"tokenAmountOut","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"calcPoolInGivenSingleOut","outputs":[{"internalType":"uint256","name":"poolAmountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenBalanceIn","type":"uint256"},{"internalType":"uint256","name":"tokenWeightIn","type":"uint256"},{"internalType":"uint256","name":"poolSupply","type":"uint256"},{"internalType":"uint256","name":"totalWeight","type":"uint256"},{"internalType":"uint256","name":"tokenAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"calcPoolOutGivenSingleIn","outputs":[{"internalType":"uint256","name":"poolAmountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenBalanceOut","type":"uint256"},{"internalType":"uint256","name":"tokenWeightOut","type":"uint256"},{"internalType":"uint256","name":"poolSupply","type":"uint256"},{"internalType":"uint256","name":"totalWeight","type":"uint256"},{"internalType":"uint256","name":"poolAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"calcSingleOutGivenPoolIn","outputs":[{"internalType":"uint256","name":"tokenAmountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract FEGex2","name":"_fegexpair","type":"address"},{"internalType":"address","name":"addy","type":"address"}],"name":"changeFEGExPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_must","type":"uint256"}],"name":"changeMust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_scm","type":"uint256"}],"name":"changeScalatize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sca","type":"uint256"}],"name":"changeScalerize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sca","type":"uint256"},{"internalType":"uint256","name":"_sca1","type":"uint256"},{"internalType":"uint256","name":"_sca2","type":"uint256"}],"name":"changeScaletor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_try","type":"address"}],"name":"changeTRY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_regrewardContract","type":"address"}],"name":"changeregrewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribute12","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribute23","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"emergencySaveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"farmTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPending1","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPending2","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPending3","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"isActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"must","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts1TS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts2TS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payoutsTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolShares","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regrewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scailment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaleatize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scalerize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaletor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaletor1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaletor2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrap1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrap2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrapRef","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrapRef1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWrapRef2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_BTC","type":"address"},{"internalType":"address","name":"_BNB","type":"address"},{"internalType":"address","name":"_USDT","type":"address"}],"name":"updateBase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userStakedFEG","outputs":[{"internalType":"uint256","name":"StakedFEG","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601060808190526f464547205374616b652053686172657360801b60a0908152620000339160069190620005ad565b506040805180820190915260038082526246535360e81b60209092019182526200006091600791620005ad565b5060088054601260ff199091168117610100600160a81b03191674acfc95585d80ab62f67a14c566c1b7a49fe911670017909155600980547387b1acce6a1958e522233a737313c086551a5c766001600160a01b03199182161791829055600a805473ef11ab854b475bd0c5db37f6bffab443219d656d908316179055600b805473c12ecee46ed65d970ee5c899fcc7ae133aff9b03908316179055600c805473bc26fac021ee15dee618c5b67c17a2fc6efa430d908316179055600d805473d3ba3fb9014ab0b67ea9af05d9b690bfa2305dc2908316179055600e805430921682179055600f8054600160b81b600160b01b62ffffff60a01b199092169190911760ff60b81b1916179055601460108190556000601181905566470de4df820000909455606360135583905564e8d4a51000601581905560016016819055601785905560188590556019829055601a819055601b859055601c94909455601d55601e92909255606260215567016345785d8a00006022556801158e460913d0000060235566038d7ea4c680006024908155604080516370a0823160e01b815260048101949094525162000276936001600160a01b03909316926370a082319281810192602092909190829003018186803b1580156200023f57600080fd5b505afa15801562000254573d6000803e3d6000fd5b505050506040513d60208110156200026b57600080fd5b5051602554620003e3565b602855600a54604080516370a0823160e01b81523060048201529051620002fe926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015620002c757600080fd5b505afa158015620002dc573d6000803e3d6000fd5b505050506040513d6020811015620002f357600080fd5b5051602654620003e3565b602955600d54604080516370a0823160e01b8152306004820152905162000386926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156200034f57600080fd5b505afa15801562000364573d6000803e3d6000fd5b505050506040513d60208110156200037b57600080fd5b5051602754620003e3565b602a553480156200039657600080fd5b50600080546001600160a01b0319163390811790915560018055620003bb9062000447565b600c54603280546001600160a01b0319166001600160a01b0390921691909117905562000659565b60008080620003f3858562000499565b9150915080156200043f576040805162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015290519081900360640190fd5b509392505050565b62000462816002620004c060201b620042791790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b600080828410620004b15750508082036000620004b9565b505081810360015b9250929050565b620004cc828262000544565b156200051f576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200058d5760405162461bcd60e51b815260040180806020018281038252602281526020018062005fdf6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005e5576000855562000630565b82601f106200060057805160ff191683800117855562000630565b8280016001018555821562000630579182015b828111156200063057825182559160200191906001019062000613565b506200063e92915062000642565b5090565b5b808211156200063e576000815560010162000643565b61597680620006696000396000f3fe6080604052600436106104fb5760003560e01c8063892980121161028c578063c4a49dae1161015a578063dd62ed3e116100cc578063f06a29c911610085578063f06a29c914611212578063f2c2c0fc1461123c578063f2fde38b14611251578063f6a7f6bb14611284578063f8d6aed4146112ae578063f8ebd04e146112f657610502565b8063dd62ed3e14611132578063dff49b0b1461116d578063e3307c8b146111a0578063ec342ad0146111b5578063ede23885146111ca578063ef037b90146111df57610502565b8063cc8ead9b1161011e578063cc8ead9b14611033578063cfb1c5eb1461105d578063d246e27614611072578063d41c04fd1461109c578063d73dd623146110cf578063d7fa12ad1461110857610502565b8063c4a49dae14610f8f578063c54e44eb14610fb9578063c87341f214610fce578063c9faa7c514610fd6578063ca84d5911461100957610502565b80639acfe6ef116101fe578063b121d681116101b7578063b121d68114610e89578063b147f40c14610e9e578063ba9530a614610eb3578063bb5f747b14610f14578063bd52e61014610f47578063c3f344a814610f5c57610502565b80639acfe6ef14610de7578063a5b84a1714610dfc578063a5d6fe0a14610e11578063a7ec1bcd14610e26578063a9059cbb14610e3b578063ab6ed42814610e7457610502565b806392273f371161025057806392273f3714610d31578063957aa58c14610d4657806395d89b4114610d5b5780639651e6b914610d705780639806e07c14610d9c578063997664d714610dd257610502565b80638929801214610c805780638ade8d8c14610cc85780638c25f24914610cdd5780638da5cb5b14610cf257806391e78dfa14610d0757610502565b80634baf782e116103c95780636f47caa11161033b5780637d5a236d116102f45780637d5a236d14610b9c57806382f652ad14610bb1578063834d472514610bf9578063836e818014610c0e5780638656b65314610c23578063891e99d814610c6b57610502565b80636f47caa114610aa157806370a0823114610acd5780637225ae9814610b00578063722b2dd714610b2a5780637362d9c814610b3f5780637a75572c14610b7257610502565b8063522c90691161038d578063522c9069146109e1578063532b581c14610a14578063582069df14610a295780635ac072d714610a3e5780636618846314610a535780636bc01b5a14610a8c57610502565b80634baf782e1461091f5780634bc76334146109345780634c5a628c146109675780634f14ea4e1461097c5780634f49e655146109b557610502565b80631ff1bfa11161046d5780632ae331f2116104265780632ae331f214610847578063313ce5671461085c578063337704a8146108875780633d4362141461089c5780633df737f2146108cf5780633eaaf86b1461090a57610502565b80631ff1bfa11461072c57806323b872dd14610756578063274217c9146107995780632792949d146107de578063281be43f146107f357806329652e861461081d57610502565b80630e1cc0ee116104bf5780630e1cc0ee146106395780631336ffeb14610660578063146ca531146106a557806318160ddd146106ba5780631a81279c146106cf5780631f75d80d146106f957610502565b80630147435b1461050757806304943c0d1461053057806306fdde0314610561578063093a9fbc146105eb578063095ea7b31461060057610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c61130b565b604080519115158252519081900360200190f35b34801561053c57600080fd5b5061054561131b565b604080516001600160a01b039092168252519081900360200190f35b34801561056d57600080fd5b5061057661132a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105b0578181015183820152602001610598565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f757600080fd5b506105456113c0565b34801561060c57600080fd5b5061051c6004803603604081101561062357600080fd5b506001600160a01b0381351690602001356113d4565b34801561064557600080fd5b5061064e611429565b60408051918252519081900360200190f35b34801561066c57600080fd5b506106a36004803603606081101561068357600080fd5b506001600160a01b0381358116916020810135909116906040013561142f565b005b3480156106b157600080fd5b5061064e6116eb565b3480156106c657600080fd5b5061064e6116f1565b3480156106db57600080fd5b5061064e600480360360208110156106f257600080fd5b50356116f7565b34801561070557600080fd5b5061064e6004803603602081101561071c57600080fd5b50356001600160a01b0316611709565b34801561073857600080fd5b506106a36004803603602081101561074f57600080fd5b50356118b3565b34801561076257600080fd5b5061051c6004803603606081101561077957600080fd5b506001600160a01b03813581169160208101359091169060400135611917565b3480156107a557600080fd5b506106a3600480360360608110156107bc57600080fd5b506001600160a01b038135811691602081013582169160409091013516611a31565b3480156107ea57600080fd5b50610545611a87565b3480156107ff57600080fd5b506106a36004803603602081101561081657600080fd5b5035611a96565b34801561082957600080fd5b5061064e6004803603602081101561084057600080fd5b5035611b56565b34801561085357600080fd5b5061064e611b68565b34801561086857600080fd5b50610871611b6e565b6040805160ff9092168252519081900360200190f35b34801561089357600080fd5b506106a3611b77565b3480156108a857600080fd5b5061064e600480360360208110156108bf57600080fd5b50356001600160a01b0316611d4d565b3480156108db57600080fd5b506106a3600480360360408110156108f257600080fd5b506001600160a01b0381358116916020013516611ece565b34801561091657600080fd5b5061064e611f66565b34801561092b57600080fd5b506106a3611f6c565b34801561094057600080fd5b506106a36004803603602081101561095757600080fd5b50356001600160a01b031661213a565b34801561097357600080fd5b506106a36121c6565b34801561098857600080fd5b5061064e6004803603604081101561099f57600080fd5b506001600160a01b0381351690602001356121d1565b3480156109c157600080fd5b506106a3600480360360208110156109d857600080fd5b50351515612581565b3480156109ed57600080fd5b5061064e60048036036020811015610a0457600080fd5b50356001600160a01b03166125b6565b348015610a2057600080fd5b5061064e612732565b348015610a3557600080fd5b5061064e612738565b348015610a4a57600080fd5b5061054561273e565b348015610a5f57600080fd5b5061051c60048036036040811015610a7657600080fd5b506001600160a01b03813516906020013561274d565b348015610a9857600080fd5b5061064e612825565b348015610aad57600080fd5b506106a360048036036020811015610ac457600080fd5b5035151561282b565b348015610ad957600080fd5b5061064e60048036036020811015610af057600080fd5b50356001600160a01b0316612860565b348015610b0c57600080fd5b5061064e60048036036020811015610b2357600080fd5b503561287b565b348015610b3657600080fd5b5061064e61288d565b348015610b4b57600080fd5b506106a360048036036020811015610b6257600080fd5b50356001600160a01b0316612893565b348015610b7e57600080fd5b506106a360048036036020811015610b9557600080fd5b50356128e3565b348015610ba857600080fd5b5061064e612a18565b348015610bbd57600080fd5b5061064e600480360360c0811015610bd457600080fd5b5080359060208101359060408101359060608101359060808101359060a00135612a1e565b348015610c0557600080fd5b5061064e612adb565b348015610c1a57600080fd5b5061064e612ae1565b348015610c2f57600080fd5b5061064e600480360360c0811015610c4657600080fd5b5080359060208101359060408101359060608101359060808101359060a00135612ae7565b348015610c7757600080fd5b506106a3612b7d565b348015610c8c57600080fd5b5061064e600480360360c0811015610ca357600080fd5b5080359060208101359060408101359060608101359060808101359060a00135612d52565b348015610cd457600080fd5b50610545612e08565b348015610ce957600080fd5b5061064e612e17565b348015610cfe57600080fd5b50610545612e1d565b348015610d1357600080fd5b506106a360048036036020811015610d2a57600080fd5b5035612e2c565b348015610d3d57600080fd5b5061064e612f5d565b348015610d5257600080fd5b5061051c612f63565b348015610d6757600080fd5b50610576612f73565b348015610d7c57600080fd5b506106a360048036036020811015610d9357600080fd5b50351515612fd4565b348015610da857600080fd5b506106a360048036036060811015610dbf57600080fd5b5080359060208101359060400135613009565b348015610dde57600080fd5b5061064e61310a565b348015610df357600080fd5b5061064e613110565b348015610e0857600080fd5b506106a3613116565b348015610e1d57600080fd5b5061064e6131c0565b348015610e3257600080fd5b5061064e6131c6565b348015610e4757600080fd5b5061051c60048036036040811015610e5e57600080fd5b506001600160a01b0381351690602001356131cc565b348015610e8057600080fd5b5061064e6131e2565b348015610e9557600080fd5b506106a36131e8565b348015610eaa57600080fd5b5061051c61330e565b348015610ebf57600080fd5b50610efb600480360360c0811015610ed657600080fd5b5080359060208101359060408101359060608101359060808101359060a0013561331e565b6040805192835260208301919091528051918290030190f35b348015610f2057600080fd5b5061051c60048036036020811015610f3757600080fd5b50356001600160a01b03166133af565b348015610f5357600080fd5b506105456133bc565b348015610f6857600080fd5b5061064e60048036036020811015610f7f57600080fd5b50356001600160a01b03166133cb565b348015610f9b57600080fd5b5061064e60048036036020811015610fb257600080fd5b50356133dd565b348015610fc557600080fd5b506105456133ef565b6106a36133fe565b348015610fe257600080fd5b5061051c60048036036020811015610ff957600080fd5b50356001600160a01b0316613516565b34801561101557600080fd5b5061064e6004803603602081101561102c57600080fd5b503561354f565b34801561103f57600080fd5b5061064e6004803603602081101561105657600080fd5b50356139b9565b34801561106957600080fd5b506106a36139cb565b34801561107e57600080fd5b506106a36004803603602081101561109557600080fd5b5035613a0a565b3480156110a857600080fd5b506106a3600480360360208110156110bf57600080fd5b50356001600160a01b0316613a6e565b3480156110db57600080fd5b5061051c600480360360408110156110f257600080fd5b506001600160a01b038135169060200135613aa7565b34801561111457600080fd5b5061064e6004803603602081101561112b57600080fd5b5035613b28565b34801561113e57600080fd5b5061064e6004803603604081101561115557600080fd5b506001600160a01b0381358116916020013516613b3a565b34801561117957600080fd5b5061064e6004803603602081101561119057600080fd5b50356001600160a01b0316613b65565b3480156111ac57600080fd5b50610545613ce6565b3480156111c157600080fd5b5061064e613cf5565b3480156111d657600080fd5b5061064e613d01565b3480156111eb57600080fd5b5061051c6004803603602081101561120257600080fd5b50356001600160a01b0316613d07565b34801561121e57600080fd5b5061064e6004803603602081101561123557600080fd5b5035613d33565b34801561124857600080fd5b5061064e614005565b34801561125d57600080fd5b506106a36004803603602081101561127457600080fd5b50356001600160a01b031661400b565b34801561129057600080fd5b506106a3600480360360208110156112a757600080fd5b50356140b2565b3480156112ba57600080fd5b5061064e600480360360c08110156112d157600080fd5b5080359060208101359060408101359060608101359060808101359060a001356141e3565b34801561130257600080fd5b5061051c614269565b600f54600160b81b900460ff1681565b600e546001600160a01b031681565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113b65780601f1061138b576101008083540402835291602001916113b6565b820191906000526020600020905b81548152906001019060200180831161139957829003601f168201915b5050505050905090565b60085461010090046001600160a01b031681565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206158f1833981519152928290030190a35060015b92915050565b601b5481565b6000546001600160a01b0316331461144657600080fd5b6008546001600160a01b038381166101009092041614156114ae576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f742072656d6f766520757365727320464547000000000000000000604482015290519081900360640190fd5b6009546001600160a01b0383811691161415611511576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072656d6f76652075736572732077424e420000000000000000604482015290519081900360640190fd5b600a546001600160a01b0383811691161415611574576040805162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656d6f766520757365727320665553445400000000000000604482015290519081900360640190fd5b600d546001600160a01b03838116911614156115d7576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072656d6f766520757365727320664254430000000000000000604482015290519081900360640190fd5b816001600160a01b031663a9059cbb84836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561162e57600080fd5b505af1158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b50516116ab576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e73000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156116e5573d6000803e3d6000fd5b50505050565b60165481565b60055490565b60306020526000908152604090205481565b60006001600160a01b0382166117505760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b81526001600160a01b038581166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b50516001600160a01b0384166000908152602b602090815260408083206006015460155460001982018552602d909352908320546017549495509093611828929161182291879161181c91906142fa565b90614343565b9061439c565b905060155461185c8461181c602d6000600188038152602001908152602001600020546017546142fa90919063ffffffff16565b8161186357fe5b6001600160a01b0387166000908152602b602052604090206007015491900691909101906118a8906118969083906143de565b6118a36021546064614438565b61454b565b93505050505b919050565b6000546001600160a01b031633146118ca57600080fd5b80611912576040805162461bcd60e51b81526020600482015260136024820152722cb7ba9031b0b73737ba103a3ab9371037b33360691b604482015290519081900360640190fd5b601355565b6000336001600160a01b038516148061195357506001600160a01b03841660009081526004602090815260408083203384529091529020548211155b61195c57600080fd5b61196784848461460d565b336001600160a01b038516148015906119a557506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15611a27576001600160a01b03841660009081526004602090815260408083203384529091529020546119d890836146e0565b6001600160a01b03858116600090815260046020908152604080832033808552908352928190208590558051948552519287169391926000805160206158f18339815191529281900390910190a35b5060019392505050565b6000546001600160a01b03163314611a4857600080fd5b600d80546001600160a01b039485166001600160a01b0319918216179091556009805493851693821693909317909255600a8054919093169116179055565b600d546001600160a01b031681565b6000546001600160a01b03163314611aad57600080fd5b601254611af3576040805162461bcd60e51b815260206004820152600f60248201526e043616e6e6f742073657420746f203608c1b604482015290519081900360640190fd5b66470de4df8200006012541115611b51576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f76657220302e303220424e420000000000000000604482015290519081900360640190fd5b601255565b602c6020526000908152604090205481565b60265481565b60085460ff1690565b60026001541415611bcf576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556000611bdf33614742565b90508015611d4657336000908152602b6020526040902060070154611c059082906143de565b336000818152602b60209081526040808320600701839055600a54815163a9059cbb60e01b815260048101959095526024850186905290519495506001600160a01b03169363a9059cbb93604480820194918390030190829087803b158015611c6d57600080fd5b505af1158015611c81573d6000803e3d6000fd5b505050506040513d6020811015611c9757600080fd5b5051611cd45760405162461bcd60e51b815260040180806020018281038252602c8152602001806157d2602c913960400191505060405180910390fd5b604080513381526020810183905281517f63dea4778b4fa18f878b07a9bfec3e95f506efb9d4078c4cdfac77cd013398d9929181900390910190a1611d1b602654826146e0565b602655336000908152602b6020526040902060048101829055601a5460068201556017546005909101555b5060018055565b60006001600160a01b038216611d945760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b81526001600160a01b038581166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015611de557600080fd5b505afa158015611df9573d6000803e3d6000fd5b505050506040513d6020811015611e0f57600080fd5b50516001600160a01b0384166000908152602b60209081526040808320600a015460155460001982018552602e90935290832054601b549495509093611e60929161182291879161181c91906142fa565b9050601554611e948461181c602e600060018803815260200190815260200160002054601b546142fa90919063ffffffff16565b81611e9b57fe5b6001600160a01b0387166000908152602b60205260409020600b015491900691909101906118a8906118969083906143de565b6000546001600160a01b03163314611ee557600080fd5b6001600160a01b038216611f38576040805162461bcd60e51b81526020600482015260156024820152741cd95d1d1a5b99c80c081d1bc818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b603280546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b60055481565b60026001541415611fc4576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556000611fd4336148c4565b90508015611d4657336000908152602b6020526040902060030154611ffa9082906143de565b336000818152602b60209081526040808320600301839055600954815163a9059cbb60e01b815260048101959095526024850186905290519495506001600160a01b03169363a9059cbb93604480820194918390030190829087803b15801561206257600080fd5b505af1158015612076573d6000803e3d6000fd5b505050506040513d602081101561208c57600080fd5b50516120c95760405162461bcd60e51b815260040180806020018281038252602c8152602001806157d2602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a1612110602554826146e0565b602555336000908152602b6020526040902090815560165460028201556011546001918201558055565b6000546001600160a01b0316331461215157600080fd5b6001600160a01b0381166121a4576040805162461bcd60e51b81526020600482015260156024820152741cd95d1d1a5b99c80c081d1bc818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6121cf33614a46565b565b600080600860019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561223657600080fd5b505afa15801561224a573d6000803e3d6000fd5b505050506040513d602081101561226057600080fd5b5051336000908152602b60205260409020600c015490915060ff61010090910416151560011461228f57600080fd5b600f54600160a81b900460ff1615156001141561230f57600f60009054906101000a90046001600160a01b03166001600160a01b031663dda6ae206040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156122f657600080fd5b505af115801561230a573d6000803e3d6000fd5b505050505b6123176139cb565b600061234e82612330670de0b6b3a7640000601961454b565b600554612346670de0b6b3a7640000601961454b565b886000612a1e565b905061238582612367670de0b6b3a7640000601961454b565b60055461237d670de0b6b3a7640000601961454b565b856000612d52565b600e54604080516370a0823160e01b815233600482015290519295506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156123d357600080fd5b505afa1580156123e7573d6000803e3d6000fd5b505050506040513d60208110156123fd57600080fd5b5051811115612453576040805162461bcd60e51b815260206004820152601960248201527f596f7520646f6e2774206861766520656e6f7567682046454700000000000000604482015290519081900360640190fd5b61245c81614a88565b61246581614b53565b6008546040805163a9059cbb60e01b81526001600160a01b0388811660048301526024820187905291516101009093049091169163a9059cbb916044808201926020929091908290030181600087803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b505050506040513d60208110156124eb57600080fd5b505161253e576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b604080513381526020810183905281517f4c48d8823de8aa74e6ea4bed3a0c422e95a3d1e10f8f3e47dc7e2fe779be9514929181900390910190a1505092915050565b6000546001600160a01b0316331461259857600080fd5b600f8054911515600160a81b0260ff60a81b19909216919091179055565b60006001600160a01b0382166125fd5760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600854604080516370a0823160e01b8152306004820152905160009261010090046001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561264d57600080fd5b505afa158015612661573d6000803e3d6000fd5b505050506040513d602081101561267757600080fd5b50519050600061272a82612694670de0b6b3a7640000601961454b565b6005546126aa670de0b6b3a7640000601961454b565b600e54604080516370a0823160e01b81526001600160a01b038c81166004830152915191909216916370a08231916024808301926020929190829003018186803b1580156126f757600080fd5b505afa15801561270b573d6000803e3d6000fd5b505050506040513d602081101561272157600080fd5b50516000612d52565b949350505050565b601e5481565b60135481565b600b546001600160a01b031681565b3360009081526004602090815260408083206001600160a01b0386168452909152812054808311156127a2573360009081526004602090815260408083206001600160a01b03881684529091528120556127d1565b6127ac81846146e0565b3360009081526004602090815260408083206001600160a01b03891684529091529020555b3360008181526004602090815260408083206001600160a01b0389168085529083529281902054815190815290519293926000805160206158f1833981519152929181900390910190a35060019392505050565b60255481565b6000546001600160a01b0316331461284257600080fd5b600f8054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b031660009081526003602052604090205490565b602d6020526000908152604090205481565b60235481565b61289c336133af565b6128d75760405162461bcd60e51b81526004018080602001828103825260408152602001806158846040913960400191505060405180910390fd5b6128e081614be4565b50565b6128ec336133af565b6129275760405162461bcd60e51b81526004018080602001828103825260408152602001806158846040913960400191505060405180910390fd5b600954604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561298157600080fd5b505af1158015612995573d6000803e3d6000fd5b505050506040513d60208110156129ab57600080fd5b50516129e85760405162461bcd60e51b81526004018080602001828103825260308152602001806159116030913960400191505060405180910390fd5b60006129fa826118a360636064614438565b9050612a0860255482614c26565b602555612a1481614c73565b5050565b60285481565b600080612a2b8786614438565b90506000612a4a612a44670de0b6b3a7640000846146e0565b8561454b565b90506000612a6986612a64670de0b6b3a7640000856146e0565b614438565b90506000612a778b836146e0565b90506000612a85828d614438565b90506000612a938287614d47565b90506000612aa1828d61454b565b90506000612aaf8d836146e0565b9050612ac881612a64670de0b6b3a764000060006146e0565b9f9e505050505050505050505050505050565b60175481565b601a5481565b600080612af48786614438565b90506000612b0d612a44670de0b6b3a7640000846146e0565b90506000612b27866118a3670de0b6b3a7640000856146e0565b90506000612b358b83614c26565b90506000612b43828d614438565b90506000612b518287614d47565b90506000612b5f828d61454b565b9050612b6b818d6146e0565b9e9d5050505050505050505050505050565b60026001541415612bd5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556000612be533614db2565b90508015611d4657336000908152602b60205260409020600b0154612c0b9082906143de565b336000818152602b60209081526040808320600b01839055600d54815163a9059cbb60e01b815260048101959095526024850186905290519495506001600160a01b03169363a9059cbb93604480820194918390030190829087803b158015612c7357600080fd5b505af1158015612c87573d6000803e3d6000fd5b505050506040513d6020811015612c9d57600080fd5b5051612cda5760405162461bcd60e51b815260040180806020018281038252602c8152602001806157d2602c913960400191505060405180910390fd5b604080513381526020810183905281517fa6c44e9cd31aeb4add8b7c7e7edf3f3ed16d5384424237062b8f44853ff764b2929181900390910190a1612d21602754826146e0565b602755336000908152602b6020526040902060088101829055601e54600a820155601b546009909101555060018055565b600080612d5f8786614438565b90506000612d7a856118a3670de0b6b3a764000060006146e0565b90506000612d8888836146e0565b90506000612d96828a614438565b90506000612db582612db0670de0b6b3a764000088614438565b614d47565b90506000612dc3828e61454b565b90506000612dd18e836146e0565b90506000612df0612dea670de0b6b3a76400008a6146e0565b8b61454b565b9050612ac8826118a3670de0b6b3a7640000846146e0565b600f546001600160a01b031681565b60225481565b6000546001600160a01b031681565b612e35336133af565b612e705760405162461bcd60e51b81526004018080602001828103825260408152602001806158846040913960400191505060405180910390fd5b600d54604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050506040513d6020811015612ef457600080fd5b5051612f315760405162461bcd60e51b81526004018080602001828103825260308152602001806159116030913960400191505060405180910390fd5b6000612f43826118a360636064614438565b9050612f5160275482614c26565b602755612a1481614f34565b602a5481565b600f54600160a01b900460ff1681565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113b65780601f1061138b576101008083540402835291602001916113b6565b6000546001600160a01b03163314612feb57600080fd5b600f8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461302057600080fd5b821580159061302e57508115155b801561303957508015155b613080576040805162461bcd60e51b81526020600482015260136024820152722cb7ba9031b0b73737ba103a3ab9371037b33360691b604482015290519081900360640190fd5b6706f05b59d3b2000083101580156130a157506801158e460913d000008210155b80156130b4575066038d7ea4c680008110155b6130fc576040805162461bcd60e51b81526020600482015260146024820152734d757374206265206f766572206d696e696d756d60601b604482015290519081900360640190fd5b602292909255602355602455565b60115481565b60125481565b600f54600160b81b900460ff161515600114156121cf5761313b602754602454614c26565b600d54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561318657600080fd5b505afa15801561319a573d6000803e3d6000fd5b505050506040513d60208110156131b057600080fd5b505111156121cf576121cf615002565b60105481565b60295481565b60006131d933848461460d565b50600192915050565b60215481565b6131f6602554602254614c26565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561324157600080fd5b505afa158015613255573d6000803e3d6000fd5b505050506040513d602081101561326b57600080fd5b5051111561327b5761327b6150a2565b613289602654602354614c26565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156132d457600080fd5b505afa1580156132e8573d6000803e3d6000fd5b505050506040513d60208110156132fe57600080fd5b505111156121cf576121cf615142565b600f54600160a81b900460ff1681565b600080600061332d8887614438565b90506000613343670de0b6b3a7640000866146e0565b905061334f868261454b565b905060006133618b612a648d85614c26565b9050600061336f8285614d47565b90506000613385670de0b6b3a7640000836146e0565b90506133918b8261454b565b965061339d89856146e0565b95505050505050965096945050505050565b60006114236002836151e2565b600c546001600160a01b031681565b601f6020526000908152604090205481565b602f6020526000908152604090205481565b600a546001600160a01b031681565b601254341461343e5760405162461bcd60e51b815260040180806020018281038252602d8152602001806158c4602d913960400191505060405180910390fd5b603254604080516311c42a9960e01b81523360048201526064602482015281516001600160a01b03909316926311c42a999234926044808201939182900301818588803b15801561348e57600080fd5b505af11580156134a2573d6000803e3d6000fd5b50505050506040513d60408110156134b957600080fd5b5050336000818152602b6020908152604091829020600c01805461ff0019166101001790558151928352349083015280517feb679799ce0ccbaa7912a3e313e4d8216146af50a959d75b356da3d4f9635aa99281900390910190a1565b6001600160a01b0381166000908152602b60205260408120600c0154610100900460ff1615613547575060016118ae565b5060006118ae565b600081600860019054906101000a90046001600160a01b03166001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156135b457600080fd5b505afa1580156135c8573d6000803e3d6000fd5b505050506040513d60208110156135de57600080fd5b50511015613633576040805162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206861766520656e6f75676820464547000000000000604482015290519081900360640190fd5b336000908152602b60205260409020600c015460ff61010090910416151560011461365d57600080fd5b600f54600160a01b900460ff16151560011461367857600080fd5b600061368e600a61182260105461181c87615249565b9050600061369c84836142fa565b90506000600860019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561370257600080fd5b505afa158015613716573d6000803e3d6000fd5b505050506040513d602081101561372c57600080fd5b505190506137393361526c565b6000613744336148c4565b336000818152602b6020526040812060038101805485019055838155601154600182015560165460029091015591925061377d90614742565b336000818152602b6020526040812060078101805485019055600481018490556017546005820155601a546006909101559192506137ba90614db2565b336000908152602b60205260409020600b810180548301905560088101829055601b546009820155601e54600a90910155905061382284613804670de0b6b3a7640000601961454b565b60055461381a670de0b6b3a7640000601961454b565b896000612ae7565b600854604080516323b872dd60e01b8152336004820152306024820152604481018c905290519299506101009091046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b15801561388357600080fd5b505af1158015613897573d6000803e3d6000fd5b505050506040513d60208110156138ad57600080fd5b50516138ea5760405162461bcd60e51b81526004018080602001828103825260328152602001806157a06032913960400191505060405180910390fd5b6138f3876152b8565b600e546040805163a9059cbb60e01b8152336004820152602481018a905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561394757600080fd5b505af115801561395b573d6000803e3d6000fd5b505050506040513d602081101561397157600080fd5b505060408051338152602081018a905281517f4031c63bb53dc5dfada7ef8d75bef8c44d0283658c1585fc74107ed5b75e97c8929181900390910190a1505050505050919050565b602e6020526000908152604090205481565b6139d36131e8565b6139db611f6c565b6139e3611b77565b600f54600160b81b900460ff161515600114156121cf57613a02613116565b6121cf612b7d565b6000546001600160a01b03163314613a2157600080fd5b80613a69576040805162461bcd60e51b81526020600482015260136024820152722cb7ba9031b0b73737ba103a3ab9371037b33360691b604482015290519081900360640190fd5b602155565b6000546001600160a01b03163314613a8557600080fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526004602090815260408083206001600160a01b0386168452909152812054613ad59083614c26565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191936000805160206158f1833981519152929081900390910190a350600192915050565b60316020526000908152604090205481565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b60006001600160a01b038216613bac5760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b81526001600160a01b038581166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015613bfd57600080fd5b505afa158015613c11573d6000803e3d6000fd5b505050506040513d6020811015613c2757600080fd5b50516001600160a01b0384166000908152602b602090815260408083206002015460155460001982018552602c909352908320546011549495509093613c78929161182291879161181c91906142fa565b9050601554613cac8461181c602c6000600188038152602001908152602001600020546011546142fa90919063ffffffff16565b81613cb357fe5b6001600160a01b0387166000908152602b602052604090206003015491900691909101906118a8906118969083906143de565b6009546001600160a01b031681565b670de0b6b3a764000081565b60275481565b6001600160a01b0381166000908152602b60205260408120600c015460ff1615613547575060016118ae565b600080546001600160a01b03163314613d4b57600080fd5b600f54600160a01b900460ff1615613d9e576040805162461bcd60e51b815260206004820152601160248201527043616e206f6e6c7920757365206f6e636560781b604482015290519081900360640190fd5b600854604080516323b872dd60e01b81523360048201523060248201526044810185905290516101009092046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b158015613dfc57600080fd5b505af1158015613e10573d6000803e3d6000fd5b505050506040513d6020811015613e2657600080fd5b5051613e635760405162461bcd60e51b81526004018080602001828103825260328152602001806157a06032913960400191505060405180910390fd5b6000613e79600a61182260105461181c87615249565b90506000613e8784836142fa565b9050613e923361526c565b613e9b816152b8565b600f805460ff60a01b1916600160a01b179055600e546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015613f0257600080fd5b505af1158015613f16573d6000803e3d6000fd5b505050506040513d6020811015613f2c57600080fd5b5050600954600c546040805163095ea7b360e01b81526001600160a01b0392831660048201527002f050fe938943acc45f6556800000000060248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015613f9757600080fd5b505af1158015613fab573d6000803e3d6000fd5b505050506040513d6020811015613fc157600080fd5b5050604080513381526020810183905281517f3150d58b3cd38451a3dd7d23dda6c3234fad144a05d309c8327e688c61bfda51929181900390910190a15050919050565b60245481565b6000546001600160a01b0316331461402257600080fd5b6001600160a01b0381166140675760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6140bb336133af565b6140f65760405162461bcd60e51b81526004018080602001828103825260408152602001806158846040913960400191505060405180910390fd5b600a54604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561415057600080fd5b505af1158015614164573d6000803e3d6000fd5b505050506040513d602081101561417a57600080fd5b50516141b75760405162461bcd60e51b81526004018080602001828103825260308152602001806159116030913960400191505060405180910390fd5b60006141c9826118a360636064614438565b90506141d760265482614c26565b602655612a148161532d565b6000806141f08588614438565b905060006141fe87866146e0565b9050600061420c8883614438565b9050600061421a8285614d47565b905061422e81670de0b6b3a76400006146e0565b905061423a8b8261454b565b905061424e670de0b6b3a7640000876146e0565b945061425a8186614438565b9b9a5050505050505050505050565b600f54600160b01b900460ff1681565b61428382826151e2565b156142d5576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600061433c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153fb565b9392505050565b60008261435257506000611423565b8282028284828161435f57fe5b041461433c5760405162461bcd60e51b81526004018080602001828103825260218152602001806158416021913960400191505060405180910390fd5b600061433c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615492565b60008282018381101561433c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008161447b576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015290519081900360640190fd5b670de0b6b3a764000083028315806144a35750670de0b6b3a76400008482816144a057fe5b04145b6144e7576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b60028304810181811015614535576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b600084828161454057fe5b049695505050505050565b600082820283158061456557508284828161456257fe5b04145b6145a9576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6706f05b59d3b200008101818110156145fc576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6000670de0b6b3a764000082614540565b6001600160a01b03831660009081526003602052604090205481111561463257600080fd5b6001600160a01b03831660009081526003602052604090205461465590826146e0565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546146849082614c26565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008060006146ef85856154f7565b91509150801561473a576040805162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015290519081900360640190fd5b509392505050565b60006001600160a01b0382166147895760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b815233600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156147d457600080fd5b505afa1580156147e8573d6000803e3d6000fd5b505050506040513d60208110156147fe57600080fd5b50516001600160a01b0384166000908152602b602090815260408083206006015460155460001982018552602d90935290832054601754949550909361484f929161182291879161181c91906142fa565b90506015546148838461181c602d6000600188038152602001908152602001600020546017546142fa90919063ffffffff16565b8161488a57fe5b6001600160a01b0387166000908152602b6020526040902060070180549290910690910190556021546118a89082906118a3906064614438565b60006001600160a01b03821661490b5760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b815233600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561495657600080fd5b505afa15801561496a573d6000803e3d6000fd5b505050506040513d602081101561498057600080fd5b50516001600160a01b0384166000908152602b602090815260408083206002015460155460001982018552602c9093529083205460115494955090936149d1929161182291879161181c91906142fa565b9050601554614a058461181c602c6000600188038152602001908152602001600020546011546142fa90919063ffffffff16565b81614a0c57fe5b6001600160a01b0387166000908152602b6020526040902060030180549290910690910190556021546118a89082906118a3906064614438565b614a5160028261551c565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b600e54604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015614ae157600080fd5b505af1158015614af5573d6000803e3d6000fd5b505050506040513d6020811015614b0b57600080fd5b5051905080612a14576040805162461bcd60e51b815260206004820152600f60248201526e4552525f45524332305f46414c534560881b604482015290519081900360640190fd5b30600090815260036020526040902054811115614b6f57600080fd5b30600090815260036020526040902054614b8990826146e0565b30600090815260036020526040902055600554614ba690826146e0565b60055560408051828152905160009130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350565b614bef600282614279565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b60008282018381101561433c576040805162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015290519081900360640190fd5b600554601454601554600091614c9491614c8e908690614343565b906143de565b90506000614ca2828461439c565b9050614cae8284615583565b601455601154614cbe90826143de565b601155601654600019016000908152602c6020526040902054614ce190826143de565b601680546000908152602c602090815260409182902093909355905481519081529182018690523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a150506016805460010190555050565b600080614d53836155c5565b90506000614d6184836146e0565b90506000614d7786614d72856155e0565b6155ee565b905081614d88579250611423915050565b6305f5e1006000614d9a888584615645565b9050614da6838261454b565b98975050505050505050565b60006001600160a01b038216614df95760405162461bcd60e51b815260040180806020018281038252602281526020018061581f6022913960400191505060405180910390fd5b600e54604080516370a0823160e01b815233600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015614e4457600080fd5b505afa158015614e58573d6000803e3d6000fd5b505050506040513d6020811015614e6e57600080fd5b50516001600160a01b0384166000908152602b60209081526040808320600a015460155460001982018552602e90935290832054601b549495509093614ebf929161182291879161181c91906142fa565b9050601554614ef38461181c602e600060018803815260200190815260200160002054601b546142fa90919063ffffffff16565b81614efa57fe5b6001600160a01b0387166000908152602b60205260409020600b0180549290910690910190556021546118a89082906118a3906064614438565b600554601c54601554600091614f4f91614c8e908690614343565b90506000614f5d828461439c565b9050614f698284615583565b601c55601b54614f7990826143de565b601b55601e54600019016000908152602e6020526040902054614f9c90826143de565b601e80546000908152602e602090815260409182902093909355905481519081529182018690523382820152517f94cccf17fe4ce41005009d430aef95ed21c30f57532c2291f2d53f61476b1b0d9181900360600190a15050601e805460010190555050565b600d54604080516370a0823160e01b81523060048201529051600092615088926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561505457600080fd5b505afa158015615068573d6000803e3d6000fd5b505050506040513d602081101561507e57600080fd5b50516027546146e0565b905061509660275482614c26565b6027556128e081614f34565b600954604080516370a0823160e01b81523060048201529051600092615128926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156150f457600080fd5b505afa158015615108573d6000803e3d6000fd5b505050506040513d602081101561511e57600080fd5b50516025546146e0565b905061513660255482614c26565b6025556128e081614c73565b600a54604080516370a0823160e01b815230600482015290516000926151c8926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561519457600080fd5b505afa1580156151a8573d6000803e3d6000fd5b505050506040513d60208110156151be57600080fd5b50516026546146e0565b90506151d660265482614c26565b6026556128e08161532d565b60006001600160a01b0382166152295760405162461bcd60e51b81526004018080602001828103825260228152602001806158626022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600080615257836064615723565b9050600061272a612710611822846064614343565b600061527782613d07565b905080612a1457336000908152601f602090815260408083204290556001600160a01b0385168352602b9091529020600c01805460ff191660011790555050565b306000908152600360205260409020546152d29082614c26565b306000908152600360205260409020556005546152ef9082614c26565b60055560408051828152905130916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350565b60055460185460155460009161534891614c8e908690614343565b90506000615356828461439c565b90506153628284615583565b60185560175461537290826143de565b601755601a54600019016000908152602d602052604090205461539590826143de565b601a80546000908152602d602090815260409182902093909355905481519081529182018690523382820152517fdcd344349dc4f4c9aac80cae728f21723d5adf5224b31d3a7f6f33f36adda5209181900360600190a15050601a805460010190555050565b6000818484111561548a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561544f578181015183820152602001615437565b50505050905090810190601f16801561547c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836154e15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561544f578181015183820152602001615437565b5060008385816154ed57fe5b0495945050505050565b60008082841061550d5750508082036000615515565b505081810360015b9250929050565b61552682826151e2565b6155615760405162461bcd60e51b81526004018080602001828103825260218152602001806157fe6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600061433c83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061573d565b6000670de0b6b3a76400006155d9836155e0565b0292915050565b670de0b6b3a7640000900490565b6000806002830661560757670de0b6b3a7640000615609565b835b90506002830492505b821561433c57615622848561454b565b9350600283061561563a57615637818561454b565b90505b600283049250615612565b600082818061565c87670de0b6b3a76400006154f7565b9092509050670de0b6b3a764000080600060015b888410615714576000670de0b6b3a7640000820290506000806156a48a61569f85670de0b6b3a76400006146e0565b6154f7565b915091506156b6876118a3848c61454b565b96506156c28784614438565b9650866156d157505050615714565b87156156db579315935b80156156e5579315935b84156156fc576156f586886146e0565b9550615709565b6157068688614c26565b95505b505050600101615670565b50909998505050505050505050565b600081826001848601038161573457fe5b04029392505050565b6000818361578c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561544f578181015183820152602001615437565b5082848161579657fe5b0694935050505056fe546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d207573657220666f72206c6f636b696e674552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a2073656e64696e6720746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65596f75206d757374206465706f7369742074686520726967687420616d6f756e7420746f2061637469766174658c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220a222b7cf9ff6aa183408f120b1a5c035ff1b61a05fa0e4fdbd8b43be146acc5d64736f6c63430007060033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Deployed ByteCode Sourcemap

16667:29884:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17647:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;17236:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17236:41:0;;;;;;;;;;;;;;14579:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16804:65;;;;;;;;;;;;;:::i;15189:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15189:184:0;;;;;;;;:::i;18266:34::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;43611:486;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;43611:486:0;;;;;;;;;;;;;;;;;:::i;:::-;;18074:21;;;;;;;;;;;;;:::i;15093:88::-;;;;;;;;;;;;;:::i;20135:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20135:43:0;;:::i;39177:577::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39177:577:0;-1:-1:-1;;;;;39177:577:0;;:::i;21640:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21640:141:0;;:::i;16187:473::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16187:473:0;;;;;;;;;;;;;;;;;:::i;44842:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;44842:183:0;;;;;;;;;;;;;;;;;;;:::i;17164:65::-;;;;;;;;;;;;;:::i;44639:191::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44639:191:0;;:::i;19747:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19747:40:0;;:::i;19199:25::-;;;;;;;;;;;;;:::i;14765:82::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34926:730;;;;;;;;;;;;;:::i;39766:584::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39766:584:0;-1:-1:-1;;;;;39766:584:0;;:::i;21102:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21102:251:0;;;;;;;;;;:::i;13257:24::-;;;;;;;;;;;;;:::i;34205:709::-;;;;;;;;;;;;;:::i;44109:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44109:222:0;-1:-1:-1;;;;;44109:222:0;;:::i;9328:93::-;;;;;;;;;;;;;:::i;41551:1371::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;41551:1371:0;;;;;;;;:::i;44342:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44342:87:0;;;;:::i;40622:633::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40622:633:0;-1:-1:-1;;;;;40622:633:0;;:::i;18401:22::-;;;;;;;;;;;;;:::i;17945:30::-;;;;;;;;;;;;;:::i;17020:65::-;;;;;;;;;;;;;:::i;15641:397::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15641:397:0;;;;;;;;:::i;19136:24::-;;;;;;;;;;;;;:::i;44538:89::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44538:89:0;;;;:::i;14983:102::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14983:102:0;-1:-1:-1;;;;;14983:102:0;;:::i;19843:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19843:41:0;;:::i;19059:32::-;;;;;;;;;;;;;:::i;9204:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9204:116:0;-1:-1:-1;;;;;9204:116:0;;:::i;30785:343::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30785:343:0;;:::i;19328:85::-;;;;;;;;;;;;;:::i;22565:970::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22565:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18102:34::-;;;;;;;;;;;;;:::i;18237:22::-;;;;;;;;;;;;;:::i;24531:857::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24531:857:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35668:728::-;;;;;;;;;;;;;:::i;23547:976::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23547:976:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17284:32::-;;;;;;;;;;;;;:::i;19022:30::-;;;;;;;;;;;;;:::i;5729:20::-;;;;;;;;;;;;;:::i;31498:335::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31498:335:0;;:::i;19582:85::-;;;;;;;;;;;;;:::i;17348:24::-;;;;;;;;;;;;;:::i;14670:87::-;;;;;;;;;;;;;:::i;44437:89::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44437:89:0;;;;:::i;45550:343::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45550:343:0;;;;;;;;;;;;:::i;17872:33::-;;;;;;;;;;;;;:::i;17912:26::-;;;;;;;;;;;;;:::i;45341:197::-;;;;;;;;;;;;;:::i;17776:29::-;;;;;;;;;;;;;:::i;19454:86::-;;;;;;;;;;;;;:::i;16046:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16046:133:0;;;;;;;;:::i;18989:26::-;;;;;;;;;;;;;:::i;45037:292::-;;;;;;;;;;;;;:::i;17379:27::-;;;;;;;;;;;;;:::i;25401:769::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25401:769:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9073:125;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9073:125:0;-1:-1:-1;;;;;9073:125:0;;:::i;17092:65::-;;;;;;;;;;;;;:::i;18436:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18436:40:0;-1:-1:-1;;;;;18436:40:0;;:::i;20037:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20037:42:0;;:::i;16948:65::-;;;;;;;;;;;;;:::i;26880:420::-;;;:::i;27308:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27308:149:0;-1:-1:-1;;;;;27308:149:0;;:::i;28237:2234::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28237:2234:0;;:::i;19940:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19940:41:0;;:::i;36408:223::-;;;;;;;;;;;;;:::i;21489:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21489:139:0;;:::i;21365:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21365:112:0;-1:-1:-1;;;;;21365:112:0;;:::i;15381:252::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15381:252:0;;;;;;;;:::i;20234:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20234:43:0;;:::i;14855:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14855:120:0;;;;;;;;;;:::i;38595:570::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38595:570:0;-1:-1:-1;;;;;38595:570:0;;:::i;16876:65::-;;;;;;;;;;;;;:::i;9786:47::-;;;;;;;;;;;;;:::i;19264:25::-;;;;;;;;;;;;;:::i;21793:193::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21793:193:0;-1:-1:-1;;;;;21793:193:0;;:::i;27469:756::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27469:756:0;;:::i;19098:31::-;;;;;;;;;;;;;:::i;5982:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5982:247:0;-1:-1:-1;;;;;5982:247:0;;:::i;31140:346::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31140:346:0;;:::i;26178:694::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26178:694:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17514:27::-;;;;;;;;;;;;;:::i;17647:::-;;;-1:-1:-1;;;17647:27:0;;;;;:::o;17236:41::-;;;-1:-1:-1;;;;;17236:41:0;;:::o;14579:83::-;14649:5;14642:12;;;;;;;;-1:-1:-1;;14642:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14616:13;;14642:12;;14649:5;;14642:12;;14649:5;14642:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14579:83;:::o;16804:65::-;;;;;;-1:-1:-1;;;;;16804:65:0;;:::o;15189:184::-;15275:10;15247:4;15264:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15264:27:0;;;;;;;;;;;:33;;;15313:30;;;;;;;15247:4;;15264:27;;15275:10;;-1:-1:-1;;;;;;;;;;;15313:30:0;;;;;;;-1:-1:-1;15361:4:0;15189:184;;;;;:::o;18266:34::-;;;;:::o;43611:486::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;43732:3:::1;::::0;-1:-1:-1;;;;;43722:13:0;;::::1;43732:3;::::0;;::::1;;43722:13;;43714:49;;;::::0;;-1:-1:-1;;;43714:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;43792:4;::::0;-1:-1:-1;;;;;43782:14:0;;::::1;43792:4:::0;::::1;43782:14;;43774:51;;;::::0;;-1:-1:-1;;;43774:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;43854:4;::::0;-1:-1:-1;;;;;43844:14:0;;::::1;43854:4:::0;::::1;43844:14;;43836:52;;;::::0;;-1:-1:-1;;;43836:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;43917:3;::::0;-1:-1:-1;;;;;43907:13:0;;::::1;43917:3:::0;::::1;43907:13;;43899:50;;;::::0;;-1:-1:-1;;;43899:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;43975:6;-1:-1:-1::0;;;;;43968:23:0::1;;43992:2;43996:4;43968:33;;;;;;;;;;;;;-1:-1:-1::0;;;;;43968:33:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;43968:33:0;43960:72:::1;;;::::0;;-1:-1:-1;;;43960:72:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;44051:5;::::0;;44043:46:::1;::::0;-1:-1:-1;;;;;44051:5:0;;::::1;::::0;44067:21:::1;44043:46:::0;::::1;;;::::0;44067:21;;44043:46;44051:5;44043:46;44067:21;44051:5;44043:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;43611:486:::0;;;:::o;18074:21::-;;;;:::o;15093:88::-;15161:12;;15093:88;:::o;20135:43::-;;;;;;;;;;;;;:::o;39177:577::-;39234:22;-1:-1:-1;;;;;39277:20:0;;39269:67;;;;-1:-1:-1;;;39269:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39373:10;;39366:36;;;-1:-1:-1;;;39366:36:0;;-1:-1:-1;;;;;39366:36:0;;;;;;;;;39347:16;;39373:10;;;;;39366:28;;:36;;;;;;;;;;;;;;;39373:10;39366:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39366:36:0;-1:-1:-1;;;;;39433:15:0;;39413:17;39433:15;;;:7;39366:36;39433:15;;;;;;;:22;;;39554:7;;-1:-1:-1;;39515:16:0;;39506:26;;:8;:26;;;;;;;39486:15;;39366:36;;-1:-1:-1;39433:22:0;;39484:78;;39554:7;39485:63;;39366:36;;39486:47;;:15;:19;:47::i;:::-;39485:53;;:63::i;:::-;39484:69;;:78::i;:::-;39466:96;;39652:7;;39585:63;39639:8;39586:47;39606:8;:26;39630:1;39615:12;:16;39606:26;;;;;;;;;;;;39586:15;;:19;;:47;;;;:::i;39585:63::-;39584:75;;;;;-1:-1:-1;;;;;39695:15:0;;;;;;:7;:15;;;;;:26;;;39584:75;;;39573:86;;;;;39678:67;;39683:39;;39573:86;;39683:11;:39::i;:::-;39724:20;39729:9;;39740:3;39724:4;:20::i;:::-;39678:4;:67::i;:::-;39670:76;;;;;39177:577;;;;:::o;21640:141::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;21712:9;21704:41:::1;;;::::0;;-1:-1:-1;;;21704:41:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;21704:41:0;;;;;;;;;;;;;::::1;;21756:10;:17:::0;21640:141::o;16187:473::-;16263:4;16288:10;-1:-1:-1;;;;;16288:17:0;;;;:55;;-1:-1:-1;;;;;;16316:15:0;;;;;;:10;:15;;;;;;;;16332:10;16316:27;;;;;;;;16309:34;;;16288:55;16280:64;;;;;;16362:20;16368:3;16373;16378;16362:5;:20::i;:::-;16397:10;-1:-1:-1;;;;;16397:17:0;;;;;;:63;;-1:-1:-1;;;;;;16418:15:0;;;;;;:10;:15;;;;;;;;16434:10;16418:27;;;;;;;;-1:-1:-1;;16418:42:0;;16397:63;16393:238;;;-1:-1:-1;;;;;16512:15:0;;;;;;:10;:15;;;;;;;;16528:10;16512:27;;;;;;;;16507:38;;16541:3;16507:4;:38::i;:::-;-1:-1:-1;;;;;16477:15:0;;;;;;;:10;:15;;;;;;;;16493:10;16477:27;;;;;;;;;;:68;;;16565:54;;;;;;;;;;16493:10;;-1:-1:-1;;;;;;;;;;;16565:54:0;;;;;;;;;16393:238;-1:-1:-1;16648:4:0;16187:473;;;;;:::o;44842:183::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;44962:3:::1;:10:::0;;-1:-1:-1;;;;;44962:10:0;;::::1;-1:-1:-1::0;;;;;;44962:10:0;;::::1;;::::0;;;44983:4:::1;:11:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;45005:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;44842:183::o;17164:65::-;;;-1:-1:-1;;;;;17164:65:0;;:::o;44639:191::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;44711:4:::1;::::0;44703:36:::1;;;::::0;;-1:-1:-1;;;44703:36:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;44703:36:0;;;;;;;;;;;;;::::1;;44766:4;44758;;:12;;44750:49;;;::::0;;-1:-1:-1;;;44750:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;44810:4;:12:::0;44639:191::o;19747:40::-;;;;;;;;;;;;;:::o;19199:25::-;;;;:::o;14765:82::-;14830:9;;;;14765:82;:::o;34926:730::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;34995:14:::1;35012:26;35027:10;35012:14;:26::i;:::-;34995:43:::0;-1:-1:-1;35052:10:0;;35049:600:::1;;35106:10;35098:19;::::0;;;:7:::1;:19;::::0;;;;:30:::1;;::::0;35087:42:::1;::::0;:6;;:10:::1;:42::i;:::-;35152:10;35177:1;35144:19:::0;;;:7:::1;:19;::::0;;;;;;;:30:::1;;:34:::0;;;35218:4:::1;::::0;35211:40;;-1:-1:-1;;;35211:40:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;35078:51;;-1:-1:-1;;;;;;35218:4:0::1;::::0;35211:21:::1;::::0;:40;;;;;;;;;;;;;35218:4;35211:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35211:40:0;35203:97:::1;;;;-1:-1:-1::0;;;35203:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35330:34;::::0;;35345:10:::1;35330:34:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;35392:24;35397:10;;35409:6;35392:4;:24::i;:::-;35379:10;:37:::0;35439:10:::1;35431:19;::::0;;;:7:::1;:19;::::0;;;;:34:::1;::::0;::::1;:43:::0;;;35530:6:::1;::::0;35501:26:::1;::::0;::::1;:35:::0;35612:15:::1;::::0;35571:38:::1;::::0;;::::1;:56:::0;35049:600:::1;-1:-1:-1::0;153:1:0;461:22;;34926:730::o;39766:584::-;39823:22;-1:-1:-1;;;;;39866:20:0;;39858:67;;;;-1:-1:-1;;;39858:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39962:10;;39955:36;;;-1:-1:-1;;;39955:36:0;;-1:-1:-1;;;;;39955:36:0;;;;;;;;;39936:16;;39962:10;;;;;39955:28;;:36;;;;;;;;;;;;;;;39962:10;39955:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39955:36:0;-1:-1:-1;;;;;40022:15:0;;40002:17;40022:15;;;:7;39955:36;40022:15;;;;;;;:22;;;40144:7;;-1:-1:-1;;40105:16:0;;40096:26;;:8;:26;;;;;;;40076:15;;39955:36;;-1:-1:-1;40022:22:0;;40074:78;;40144:7;40075:63;;39955:36;;40076:47;;:15;:19;:47::i;40074:78::-;40055:97;;40242:7;;40175:63;40229:8;40176:47;40196:8;:26;40220:1;40205:12;:16;40196:26;;;;;;;;;;;;40176:15;;:19;;:47;;;;:::i;40175:63::-;40174:75;;;;;-1:-1:-1;;;;;40285:15:0;;;;;;:7;:15;;;;;:26;;;40174:75;;;40163:86;;;;;40268:67;;40273:39;;40163:86;;40273:11;:39::i;21102:251::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;-1:-1:-1;;;;;21231:33:0;::::1;21223:67;;;::::0;;-1:-1:-1;;;21223:67:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;21223:67:0;;;;;;;;;;;;;::::1;;21301:9;:22:::0;;-1:-1:-1;;;;;21301:22:0;;::::1;-1:-1:-1::0;;;;;;21301:22:0;;::::1;;::::0;;;21334:4:::1;:11:::0;;;;;::::1;::::0;::::1;;::::0;;21102:251::o;13257:24::-;;;;:::o;34205:709::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;34272:13:::1;34288:25;34302:10;34288:13;:25::i;:::-;34272:41:::0;-1:-1:-1;34327:9:0;;34324:583:::1;;34378:10;34370:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;;::::0;34360:40:::1;::::0;:5;;:9:::1;:40::i;:::-;34423:10;34447:1;34415:19:::0;;;:7:::1;:19;::::0;;;;;;;:29:::1;;:33:::0;;;34488:4:::1;::::0;34481:39;;-1:-1:-1;;;34481:39:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;34352:48;;-1:-1:-1;;;;;;34488:4:0::1;::::0;34481:21:::1;::::0;:39;;;;;;;;;;;;;34488:4;34481:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34481:39:0;34473:96:::1;;;;-1:-1:-1::0;;;34473:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34599:32;::::0;;34613:10:::1;34599:32:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;34658:22;34663:9;;34674:5;34658:4;:22::i;:::-;34646:9;:34:::0;34703:10:::1;34695:19;::::0;;;:7:::1;:19;::::0;;;;:41;;;34791:5:::1;::::0;34763:25:::1;::::0;::::1;:33:::0;34871:14:::1;::::0;34831:37:::1;::::0;;::::1;:54:::0;461:22;;34205:709::o;44109:222::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;-1:-1:-1;;;;;44207:41:0;::::1;44199:75;;;::::0;;-1:-1:-1;;;44199:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;44199:75:0;;;;;;;;;;;;;::::1;;44285:17;:38:::0;;-1:-1:-1;;;;;;44285:38:0::1;-1:-1:-1::0;;;;;44285:38:0;;;::::1;::::0;;;::::1;::::0;;44109:222::o;9328:93::-;9380:33;9402:10;9380:21;:33::i;:::-;9328:93::o;41551:1371::-;41616:19;41648:16;41674:3;;;;;;;;;-1:-1:-1;;;;;41674:3:0;-1:-1:-1;;;;;41667:21:0;;41697:4;41667:36;;;;;;;;;;;;;-1:-1:-1;;;;;41667:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41667:36:0;41730:10;41722:19;;;;:7;41667:36;41722:19;;;;:29;;;41667:36;;-1:-1:-1;41722:29:0;;;;;;:37;;:29;:37;41714:46;;;;;;41784:7;;-1:-1:-1;;;41784:7:0;;;;:13;;41793:4;41784:13;41781:84;;;41820:17;;;;;;;;;-1:-1:-1;;;;;41820:17:0;-1:-1:-1;;;;;41810:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41781:84;41885:16;:14;:16::i;:::-;41914:14;41931:293;41986:8;42025:14;9827:6;42036:2;42025:4;:14::i;:::-;42070:12;;42113:14;9827:6;42124:2;42113:4;:14::i;:::-;42158:7;42196:1;41931:24;:293::i;:::-;41914:310;;42278:293;42333:8;42373:14;9827:6;42384:2;42373:4;:14::i;:::-;42418:12;;42461:14;9827:6;42472:2;42461:4;:14::i;:::-;42506:6;42543:1;42278:24;:293::i;:::-;42608:10;;42601:40;;;-1:-1:-1;;;42601:40:0;;42630:10;42601:40;;;;;;42261:310;;-1:-1:-1;;;;;;42608:10:0;;;;42601:28;;:40;;;;;;;;;;;;;;;42608:10;42601:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42601:40:0;42591:50;;;42583:88;;;;;-1:-1:-1;;;42583:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42682:22;42697:6;42682:14;:22::i;:::-;42715:13;42721:6;42715:5;:13::i;:::-;42754:3;;42747:40;;;-1:-1:-1;;;42747:40:0;;-1:-1:-1;;;;;42747:40:0;;;;;;;;;;;;;;;42754:3;;;;;;;;42747:20;;:40;;;;;;;;;;;;;;;-1:-1:-1;42754:3:0;42747:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42747:40:0;42739:79;;;;;-1:-1:-1;;;42739:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42844:28;;;42853:10;42844:28;;;;;;;;;;;;;;;;;;;;;42893:21;;41551:1371;;;;:::o;44342:87::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;44406:7:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;44406:15:0::1;-1:-1:-1::0;;;;44406:15:0;;::::1;::::0;;;::::1;::::0;;44342:87::o;40622:633::-;40681:17;-1:-1:-1;;;;;40718:18:0;;40710:65;;;;-1:-1:-1;;;40710:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40812:3;;40805:36;;;-1:-1:-1;;;40805:36:0;;40835:4;40805:36;;;;;;-1:-1:-1;;40812:3:0;;;-1:-1:-1;;;;;40812:3:0;;40805:21;;:36;;;;;;;;;;;;;;40812:3;40805:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40805:36:0;;-1:-1:-1;40852:21:0;40876:330;40805:36;40971:14;9827:6;40982:2;40971:4;:14::i;:::-;41016:12;;41059:14;9827:6;41070:2;41059:4;:14::i;:::-;41111:10;;41104:43;;;-1:-1:-1;;;41104:43:0;;-1:-1:-1;;;;;41104:43:0;;;;;;;;;41111:10;;;;;41104:28;;:43;;;;;;;;;;;;;;41111:10;41104:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41104:43:0;41178:1;40876:24;:330::i;:::-;40852:354;40622:633;-1:-1:-1;;;;40622:633:0:o;18401:22::-;;;;:::o;17945:30::-;;;;:::o;17020:65::-;;;-1:-1:-1;;;;;17020:65:0;;:::o;15641:397::-;15752:10;15708:4;15741:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15741:27:0;;;;;;;;;;15783:14;;;15779:160;;;15825:10;15844:1;15814:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15814:27:0;;;;;;;;;:31;15779:160;;;15908:19;15913:8;15923:3;15908:4;:19::i;:::-;15889:10;15878:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15878:27:0;;;;;;;;;:49;15779:160;15963:10;15980:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15954:54:0;;15980:27;;;;;;;;;;;15954:54;;;;;;;;;15963:10;-1:-1:-1;;;;;;;;;;;15954:54:0;;;;;;;;;;-1:-1:-1;16026:4:0;;15641:397;-1:-1:-1;;;15641:397:0:o;19136:24::-;;;;:::o;44538:89::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;44603:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;44603:16:0::1;-1:-1:-1::0;;;;44603:16:0;;::::1;::::0;;;::::1;::::0;;44538:89::o;14983:102::-;-1:-1:-1;;;;;15063:14:0;15039:4;15063:14;;;:8;:14;;;;;;;14983:102::o;19843:41::-;;;;;;;;;;;;;:::o;19059:32::-;;;;:::o;9204:116::-;8948:28;8965:10;8948:16;:28::i;:::-;8940:105;;;;-1:-1:-1;;;8940:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9285:27:::1;9304:7;9285:18;:27::i;:::-;9204:116:::0;:::o;30785:343::-;8948:28;8965:10;8948:16;:28::i;:::-;8940:105;;;;-1:-1:-1;;;8940:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30871:4:::1;::::0;30864:60:::1;::::0;;-1:-1:-1;;;30864:60:0;;30890:10:::1;30864:60;::::0;::::1;::::0;30910:4:::1;30864:60:::0;;;;;;;;;;;;-1:-1:-1;;;;;30871:4:0;;::::1;::::0;30864:25:::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;30871:4:::1;::::0;30864:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30864:60:0;30856:121:::1;;;;-1:-1:-1::0;;;30856:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30998:15;31016:27;31021:6;31029:13;31034:2;31038:3;31029:4;:13::i;31016:27::-;30998:45;;31066:24;31071:9;;31082:7;31066:4;:24::i;:::-;31054:9;:36:::0;31101:19:::1;31112:7:::0;31101:10:::1;:19::i;:::-;9056:1;30785:343:::0;:::o;19328:85::-;;;;:::o;22565:970::-;22812:17;22851:21;22875:33;22880:14;22896:11;22875:4;:33::i;:::-;22851:57;;22919:8;22930:43;22935:28;9827:6;22946:16;22935:4;:28::i;:::-;22965:7;22930:4;:43::i;:::-;22919:54;;22984:32;23019:37;23024:14;23040:15;9827:6;23051:3;23040:4;:15::i;:::-;23019:4;:37::i;:::-;22984:72;;23069:23;23095:50;23100:15;23117:27;23095:4;:50::i;:::-;23069:76;;23156:18;23177:41;23182:18;23202:15;23177:4;:41::i;:::-;23156:62;;23233:14;23250:37;23255:13;23270:16;23250:4;:37::i;:::-;23233:54;;23298:18;23319:27;23324:9;23335:10;23319:4;:27::i;:::-;23298:48;;23357:29;23389:31;23394:10;23406:13;23389:4;:31::i;:::-;23357:63;;23450:45;23455:24;23481:13;9827:6;23492:1;23481:4;:13::i;23450:45::-;23435:60;22565:970;-1:-1:-1;;;;;;;;;;;;;;;22565:970:0:o;18102:34::-;;;;:::o;18237:22::-;;;;:::o;24531:857::-;24775:18;24813:21;24837:32;24842:13;24857:11;24837:4;:32::i;:::-;24813:56;;24880:8;24891:43;24896:28;9827:6;24907:16;24896:4;:28::i;24891:43::-;24880:54;;24945:26;24974:36;24979:13;24994:15;9827:6;25005:3;24994:4;:15::i;24974:36::-;24945:65;;25023:22;25048:43;25053:14;25069:21;25048:4;:43::i;:::-;25023:68;;25102:17;25122:39;25127:17;25146:14;25122:4;:39::i;:::-;25102:59;;25177:14;25194:36;25199:12;25213:16;25194:4;:36::i;:::-;25177:53;;25241:18;25262:27;25267:9;25278:10;25262:4;:27::i;:::-;25241:48;;25316:31;25321:13;25336:10;25316:4;:31::i;:::-;25300:47;24531:857;-1:-1:-1;;;;;;;;;;;;;;24531:857:0:o;35668:728::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;35735:14:::1;35752:26;35767:10;35752:14;:26::i;:::-;35735:43:::0;-1:-1:-1;35792:10:0;;35789:600:::1;;35846:10;35838:19;::::0;;;:7:::1;:19;::::0;;;;:30:::1;;::::0;35827:42:::1;::::0;:6;;:10:::1;:42::i;:::-;35892:10;35917:1;35884:19:::0;;;:7:::1;:19;::::0;;;;;;;:30:::1;;:34:::0;;;35958:3:::1;::::0;35951:40;;-1:-1:-1;;;35951:40:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;35818:51;;-1:-1:-1;;;;;;35958:3:0::1;::::0;35951:20:::1;::::0;:40;;;;;;;;;;;;;35958:3;35951:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35951:40:0;35943:97:::1;;;;-1:-1:-1::0;;;35943:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36070:34;::::0;;36085:10:::1;36070:34:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;36132:24;36137:10;;36149:6;36132:4;:24::i;:::-;36119:10;:37:::0;36179:10:::1;36171:19;::::0;;;:7:::1;:19;::::0;;;;:34:::1;::::0;::::1;:43:::0;;;36270:6:::1;::::0;36241:26:::1;::::0;::::1;:35:::0;36352:15:::1;::::0;36311:38:::1;::::0;;::::1;:56:::0;-1:-1:-1;153:1:0;461:22;;35668:728::o;23547:976::-;23792:19;23829:21;23853:33;23858:14;23874:11;23853:4;:33::i;:::-;23829:57;;23899:29;23931:33;23936:12;23950:13;9827:6;23961:1;23950:4;:13::i;23931:33::-;23899:65;;23975:18;23996:42;24001:10;24013:24;23996:4;:42::i;:::-;23975:63;;24049:14;24066:31;24071:13;24086:10;24066:4;:31::i;:::-;24049:48;;24112:18;24133:45;24138:9;24149:28;9827:6;24160:16;24149:4;:28::i;:::-;24133:4;:45::i;:::-;24112:66;;24189:23;24215:36;24220:13;24235:15;24215:4;:36::i;:::-;24189:62;;24264:32;24299:41;24304:15;24321:18;24299:4;:41::i;:::-;24264:76;;24351:8;24362:43;24367:28;9827:6;24378:16;24367:4;:28::i;:::-;24397:7;24362:4;:43::i;:::-;24351:54;;24433:50;24438:27;24467:15;9827:6;24478:3;24467:4;:15::i;17284:32::-;;;-1:-1:-1;;;;;17284:32:0;;:::o;19022:30::-;;;;:::o;5729:20::-;;;-1:-1:-1;;;;;5729:20:0;;:::o;31498:335::-;8948:28;8965:10;8948:16;:28::i;:::-;8940:105;;;;-1:-1:-1;;;8940:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31584:3:::1;::::0;31577:59:::1;::::0;;-1:-1:-1;;;31577:59:0;;31602:10:::1;31577:59;::::0;::::1;::::0;31622:4:::1;31577:59:::0;;;;;;;;;;;;-1:-1:-1;;;;;31584:3:0;;::::1;::::0;31577:24:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;31584:3:::1;::::0;31577:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31577:59:0;31569:120:::1;;;;-1:-1:-1::0;;;31569:120:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31700:15;31718:27;31723:6;31731:13;31736:2;31740:3;31731:4;:13::i;31718:27::-;31700:45;;31769:25;31774:10;;31786:7;31769:4;:25::i;:::-;31756:10;:38:::0;31805:20:::1;31817:7:::0;31805:11:::1;:20::i;19582:85::-:0;;;;:::o;17348:24::-;;;-1:-1:-1;;;17348:24:0;;;;;:::o;14670:87::-;14742:7;14735:14;;;;;;;;-1:-1:-1;;14735:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14709:13;;14735:14;;14742:7;;14735:14;;14742:7;14735:14;;;;;;;;;;;;;;;;;;;;;;;;44437:89;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;44502:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;44502:16:0::1;-1:-1:-1::0;;;;44502:16:0;;::::1;::::0;;;::::1;::::0;;44437:89::o;45550:343::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;45654:8;;;::::1;::::0;:21:::1;;-1:-1:-1::0;45666:9:0;;::::1;45654:21;:34;;;;-1:-1:-1::0;45679:9:0;;::::1;45654:34;45646:66;;;::::0;;-1:-1:-1;;;45646:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;45646:66:0;;;;;;;;;;;;;::::1;;45739:4;45731;:12;;:30;;;;;45756:5;45747;:14;;45731:30;:47;;;;;45774:4;45765:5;:13;;45731:47;45723:80;;;::::0;;-1:-1:-1;;;45723:80:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;45723:80:0;;;;;;;;;;;;;::::1;;45814:8;:15:::0;;;;45840:9:::1;:17:::0;45868:9:::1;:17:::0;45550:343::o;17872:33::-;;;;:::o;17912:26::-;;;;:::o;45341:197::-;45390:8;;-1:-1:-1;;;45390:8:0;;;;:14;;45400:4;45390:14;45387:144;;;45462:27;45467:10;;45479:9;;45462:4;:27::i;:::-;45430:3;;45423:36;;;-1:-1:-1;;;45423:36:0;;45453:4;45423:36;;;;;;-1:-1:-1;;;;;45430:3:0;;;;45423:21;;:36;;;;;;;;;;;;;;;45430:3;45423:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45423:36:0;:66;45420:100;;;45501:17;:15;:17::i;17776:29::-;;;;:::o;19454:86::-;;;;:::o;16046:133::-;16105:4;16122:27;16128:10;16140:3;16145;16122:5;:27::i;:::-;-1:-1:-1;16167:4:0;16046:133;;;;:::o;18989:26::-;;;;:::o;45037:292::-;45123:25;45128:9;;45139:8;;45123:4;:25::i;:::-;45090:4;;45083:37;;;-1:-1:-1;;;45083:37:0;;45114:4;45083:37;;;;;;-1:-1:-1;;;;;45090:4:0;;;;45083:22;;:37;;;;;;;;;;;;;;;45090:4;45083:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45083:37:0;:65;45079:112;;;45162:17;:15;:17::i;:::-;45254:27;45259:10;;45271:9;;45254:4;:27::i;:::-;45221:4;;45214:37;;;-1:-1:-1;;;45214:37:0;;45245:4;45214:37;;;;;;-1:-1:-1;;;;;45221:4:0;;;;45214:22;;:37;;;;;;;;;;;;;;;45221:4;45214:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45214:37:0;:67;45211:111;;;45293:17;:15;:17::i;17379:27::-;;;-1:-1:-1;;;17379:27:0;;;;;:::o;25401:769::-;25643:19;25664:15;25697:16;25716:35;25721:13;25736:14;25716:4;:35::i;:::-;25697:54;;25762:15;25780:19;9827:6;25791:7;25780:4;:19::i;:::-;25762:37;;25823:31;25828:13;25843:10;25823:4;:31::i;:::-;25810:44;;25865:6;25874:54;25879:14;25895:32;25900:14;25916:10;25895:4;:32::i;25874:54::-;25865:63;;25939:8;25950:20;25955:1;25958:11;25950:4;:20::i;:::-;25939:31;;25981:8;25992:15;9827:6;26003:3;25992:4;:15::i;:::-;25981:26;;26035;26040:15;26057:3;26035:4;:26::i;:::-;26018:43;;26085:31;26090:13;26105:10;26085:4;:31::i;:::-;26072:44;;26127:35;;;;;25401:769;;;;;;;;;:::o;9073:125::-;9137:4;9161:29;:16;9182:7;9161:20;:29::i;17092:65::-;;;-1:-1:-1;;;;;17092:65:0;;:::o;18436:40::-;;;;;;;;;;;;;:::o;20037:42::-;;;;;;;;;;;;;:::o;16948:65::-;;;-1:-1:-1;;;;;16948:65:0;;:::o;26880:420::-;27065:4;;27052:9;:17;27044:75;;;;-1:-1:-1;;;27044:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27138:9;;:49;;;-1:-1:-1;;;27138:49:0;;27171:10;27138:49;;;;27183:3;27138:49;;;;;;-1:-1:-1;;;;;27138:9:0;;;;:13;;27159:9;;27138:49;;;;;;;;;;;27159:9;27138;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27206:10:0;27198:19;;;;:7;27138:49;27198:19;;;27138:49;27198:19;;;;:29;;:36;;-1:-1:-1;;27198:36:0;;;;;27260:32;;;;;27282:9;27260:32;;;;;;;;;;;;;;;;26880:420::o;27308:149::-;-1:-1:-1;;;;;27384:15:0;;27365:4;27384:15;;;:7;:15;;;;;:25;;;;;;;;27381:68;;;-1:-1:-1;27418:4:0;27411:11;;27381:68;-1:-1:-1;27444:5:0;27437:12;;28237:2234;28283:18;28359:6;28329:3;;;;;;;;;-1:-1:-1;;;;;28329:3:0;-1:-1:-1;;;;;28322:21:0;;28344:10;28322:33;;;;;;;;;;;;;-1:-1:-1;;;;;28322:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28322:33:0;:43;;28314:82;;;;;-1:-1:-1;;;28314:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28423:10;28415:19;;;;:7;:19;;;;;:29;;;;;;;;;:37;;:29;:37;28407:46;;;;;;28472:4;;-1:-1:-1;;;28472:4:0;;;;:12;;28480:4;28472:12;28464:21;;;;;;28496;28520:43;28560:2;28521:33;28544:9;;28521:18;28532:6;28521:10;:18::i;28520:43::-;28496:67;-1:-1:-1;28574:21:0;28599:25;:6;28496:67;28599:10;:25::i;:::-;28574:51;;28636:16;28662:3;;;;;;;;;-1:-1:-1;;;;;28662:3:0;-1:-1:-1;;;;;28655:21:0;;28685:4;28655:36;;;;;;;;;;;;;-1:-1:-1;;;;;28655:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28655:36:0;;-1:-1:-1;28702:26:0;28717:10;28702:14;:26::i;:::-;28858:13;28874:25;28888:10;28874:13;:25::i;:::-;28922:10;28914:19;;;;:7;:19;;;;;:29;;;:38;;;;;;28967:41;;;29063:14;;-1:-1:-1;29023:37:0;;:54;29121:5;;-1:-1:-1;29092:25:0;;;:34;28858:41;;-1:-1:-1;29172:26:0;;:14;:26::i;:::-;29221:10;29213:19;;;;:7;:19;;;;;:30;;;:40;;;;;;29268:34;;;:43;;;29367:15;;29326:38;;;:56;29427:6;;29397:26;;;;:36;29155:43;;-1:-1:-1;29479:26:0;;:14;:26::i;:::-;29528:10;29520:19;;;;:7;:19;;;;;:30;;;:40;;;;;;29575:34;;;:43;;;29674:15;;29633:38;;;:56;29734:6;;29704:26;;;;:36;29462:43;-1:-1:-1;29781:299:0;29836:8;29875:14;9827:6;29886:2;29875:4;:14::i;:::-;29920:12;;29963:14;9827:6;29974:2;29963:4;:14::i;:::-;30008:13;30052:1;29781:24;:299::i;:::-;30132:3;;30125:59;;;-1:-1:-1;;;30125:59:0;;30150:10;30125:59;;;;30170:4;30125:59;;;;;;;;;;;;29765:315;;-1:-1:-1;30132:3:0;;;;-1:-1:-1;;;;;30132:3:0;;30125:24;;:59;;;;;;;;;;;;;;;-1:-1:-1;30132:3:0;30125:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30125:59:0;30117:122;;;;-1:-1:-1;;;30117:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30266:20;30272:13;30266:5;:20::i;:::-;30304:10;;30297:54;;;-1:-1:-1;;;30297:54:0;;30325:10;30297:54;;;;;;;;;;;;-1:-1:-1;;;;;30304:10:0;;;;30297:27;;:54;;;;;;;;;;;;;;;30304:10;;30297:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30381:26:0;;;30388:10;30381:26;;30297:54;30381:26;;;;;;;;;;;;;;;;;;30433:20;;;;;;28237:2234;;;:::o;19940:41::-;;;;;;;;;;;;;:::o;36408:223::-;36453:14;:12;:14::i;:::-;36478:13;:11;:13::i;:::-;36502:14;:12;:14::i;:::-;36540:8;;-1:-1:-1;;;36540:8:0;;;;:14;;36550:4;36540:14;36537:87;;;36566:14;:12;:14::i;:::-;36595;:12;:14::i;21489:139::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;21560:9;21552:41:::1;;;::::0;;-1:-1:-1;;;21552:41:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;21552:41:0;;;;;;;;;;;;;::::1;;21604:9;:16:::0;21489:139::o;21365:112::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;21459:3:::1;:10:::0;;-1:-1:-1;;;;;;21459:10:0::1;-1:-1:-1::0;;;;;21459:10:0;;;::::1;::::0;;;::::1;::::0;;21365:112::o;15381:252::-;15511:10;15448:4;15500:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15500:27:0;;;;;;;;;;15495:38;;15529:3;15495:4;:38::i;:::-;15476:10;15465:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;15465:27:0;;;;;;;;;;;;:68;;;15549:54;;;;;;15465:27;;-1:-1:-1;;;;;;;;;;;15549:54:0;;;;;;;;;;-1:-1:-1;15621:4:0;15381:252;;;;:::o;20234:43::-;;;;;;;;;;;;;:::o;14855:120::-;-1:-1:-1;;;;;14947:15:0;;;14923:4;14947:15;;;:10;:15;;;;;;;;:20;;;;;;;;;;;;;14855:120::o;38595:570::-;38652:22;-1:-1:-1;;;;;38695:20:0;;38687:67;;;;-1:-1:-1;;;38687:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38791:10;;38784:36;;;-1:-1:-1;;;38784:36:0;;-1:-1:-1;;;;;38784:36:0;;;;;;;;;38765:16;;38791:10;;;;;38784:28;;:36;;;;;;;;;;;;;;;38791:10;38784:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38784:36:0;-1:-1:-1;;;;;38851:15:0;;38831:17;38851:15;;;:7;38784:36;38851:15;;;;;;;:21;;;38970:7;;-1:-1:-1;;38931:16:0;;38923:25;;:7;:25;;;;;;;38904:14;;38784:36;;-1:-1:-1;38851:21:0;;38902:76;;38970:7;38903:61;;38784:36;;38904:45;;:14;:18;:45::i;38902:76::-;38884:94;;39065:7;;39000:61;39052:8;39001:45;39020:7;:25;39043:1;39028:12;:16;39020:25;;;;;;;;;;;;39001:14;;:18;;:45;;;;:::i;39000:61::-;38999:73;;;;;-1:-1:-1;;;;;39107:15:0;;;;;;:7;:15;;;;;:25;;;38999:73;;;38989:83;;;;;39091:65;;39096:37;;38989:83;;39096:10;:37::i;16876:65::-;;;-1:-1:-1;;;;;16876:65:0;;:::o;9786:47::-;9827:6;9786:47;:::o;19264:25::-;;;;:::o;21793:193::-;-1:-1:-1;;;;;21910:17:0;;21878:4;21910:17;;;:7;:17;;;;;:29;;;;;21907:72;;;-1:-1:-1;21948:4:0;21941:11;;27469:756;27525:18;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;27563:4:::1;::::0;-1:-1:-1;;;27563:4:0;::::1;;;:13;27555:43;;;::::0;;-1:-1:-1;;;27555:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;27555:43:0;;;;;;;;;;;;;::::1;;27624:3;::::0;27617:59:::1;::::0;;-1:-1:-1;;;27617:59:0;;27642:10:::1;27617:59;::::0;::::1;::::0;27662:4:::1;27617:59:::0;;;;;;;;;;;;27624:3:::1;::::0;;::::1;-1:-1:-1::0;;;;;27624:3:0::1;::::0;27617:24:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;27624:3:0;27617:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27617:59:0;27609:122:::1;;;;-1:-1:-1::0;;;27609:122:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27742:21;27766:43;27806:2;27767:33;27790:9;;27767:18;27778:6;27767:10;:18::i;27766:43::-;27742:67:::0;-1:-1:-1;27820:21:0::1;27845:25;:6:::0;27742:67;27845:10:::1;:25::i;:::-;27820:51;;27882:26;27897:10;27882:14;:26::i;:::-;27921:20;27927:13;27921:5;:20::i;:::-;27952:4;:11:::0;;-1:-1:-1;;;;27952:11:0::1;-1:-1:-1::0;;;27952:11:0::1;::::0;;27981:10:::1;::::0;27974:54:::1;::::0;;-1:-1:-1;;;27974:54:0;;28002:10:::1;27974:54;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;27981:10:0;;::::1;::::0;27974:27:::1;::::0;:54;;;;;::::1;::::0;;;;;;;;;27952:11;27981:10;27974:54;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;28054:4:0::1;::::0;28077::::1;::::0;28039:71:::1;::::0;;-1:-1:-1;;;28039:71:0;;-1:-1:-1;;;;;28077:4:0;;::::1;28039:71;::::0;::::1;::::0;28084:25:::1;28039:71:::0;;;;;;28054:4;;;::::1;::::0;28039:29:::1;::::0;:71;;;;;27974:54:::1;::::0;28039:71;;;;;;;28054:4:::1;::::0;28039:71;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;28140:32:0::1;::::0;;28146:10:::1;28140:32:::0;;28039:71:::1;28140:32:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;28197:20;;27469:756:::0;;;:::o;19098:31::-;;;;:::o;5982:247::-;5948:5;;-1:-1:-1;;;;;5948:5:0;5934:10;:19;5926:28;;;;;;-1:-1:-1;;;;;6072:23:0;::::1;6064:70;;;;-1:-1:-1::0;;;6064:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6145:5;:17:::0;;-1:-1:-1;;;;;;6145:17:0::1;-1:-1:-1::0;;;;;6145:17:0;::::1;::::0;;::::1;::::0;;6178:43:::1;::::0;6145:17;;6199:10:::1;::::0;6178:43:::1;::::0;6145:5;6178:43:::1;5982:247:::0;:::o;31140:346::-;8948:28;8965:10;8948:16;:28::i;:::-;8940:105;;;;-1:-1:-1;;;8940:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31226:4:::1;::::0;31219:60:::1;::::0;;-1:-1:-1;;;31219:60:0;;31245:10:::1;31219:60;::::0;::::1;::::0;31265:4:::1;31219:60:::0;;;;;;;;;;;;-1:-1:-1;;;;;31226:4:0;;::::1;::::0;31219:25:::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;31226:4:::1;::::0;31219:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31219:60:0;31211:121:::1;;;;-1:-1:-1::0;;;31211:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31353:15;31371:27;31376:6;31384:13;31389:2;31393:3;31384:4;:13::i;31371:27::-;31353:45;;31422:25;31427:10;;31439:7;31422:4;:25::i;:::-;31409:10;:38:::0;31458:20:::1;31470:7:::0;31458:11:::1;:20::i;26178:694::-:0;26421:18;26457:16;26476:35;26481:14;26497:13;26476:4;:35::i;:::-;26457:54;;26522:9;26534:37;26539:15;26556:14;26534:4;:37::i;:::-;26522:49;;26582:6;26591:27;26596:15;26613:4;26591;:27::i;:::-;26582:36;;26629:8;26640:20;26645:1;26648:11;26640:4;:20::i;:::-;26629:31;;26677:15;26682:3;9827:6;26677:4;:15::i;:::-;26671:21;;26709:25;26714:14;26730:3;26709:4;:25::i;:::-;26703:31;;26761:19;9827:6;26772:7;26761:4;:19::i;:::-;26745:35;;26807:24;26812:3;26817:13;26807:4;:24::i;:::-;26791:40;26178:694;-1:-1:-1;;;;;;;;;;;26178:694:0:o;17514:27::-;;;-1:-1:-1;;;17514:27:0;;;;;:::o;7995:178::-;8073:18;8077:4;8083:7;8073:3;:18::i;:::-;8072:19;8064:63;;;;;-1:-1:-1;;;8064:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8138:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;8138:27:0;8161:4;8138:27;;;7995:178::o;1412:136::-;1470:7;1497:43;1501:1;1504;1497:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1490:50;1412:136;-1:-1:-1;;;1412:136:0:o;2302:471::-;2360:7;2605:6;2601:47;;-1:-1:-1;2635:1:0;2628:8;;2601:47;2672:5;;;2676:1;2672;:5;:1;2696:5;;;;;:10;2688:56;;;;-1:-1:-1;;;2688:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:132;3307:7;3334:39;3338:1;3341;3334:39;;;;;;;;;;;;;;;;;:3;:39::i;948:181::-;1006:7;1038:5;;;1062:6;;;;1054:46;;;;;-1:-1:-1;;;1054:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10794:387;10865:4;10895:6;10887:31;;;;;-1:-1:-1;;;10887:31:0;;;;;;;;;;;;-1:-1:-1;;;10887:31:0;;;;;;;;;;;;;;;9827:6;10939:8;;10966:6;;;:24;;;9827:6;10981:1;10976:2;:6;;;;;;:14;10966:24;10958:53;;;;;-1:-1:-1;;;10958:53:0;;;;;;;;;;;;-1:-1:-1;;;10958:53:0;;;;;;;;;;;;;;;11059:1;11055:5;;11049:12;;11080:8;;;;11072:37;;;;;-1:-1:-1;;;11072:37:0;;;;;;;;;;;;-1:-1:-1;;;11072:37:0;;;;;;;;;;;;;;;11137:7;11152:1;11147:2;:6;;;;;;;10794:387;-1:-1:-1;;;;;;10794:387:0:o;10475:311::-;10546:4;10578:5;;;10602:6;;;:21;;;10622:1;10617;10612:2;:6;;;;;;:11;10602:21;10594:50;;;;;-1:-1:-1;;;10594:50:0;;;;;;;;;;;;-1:-1:-1;;;10594:50:0;;;;;;;;;;;;;;;10671:8;10665:15;;10699:8;;;;10691:37;;;;;-1:-1:-1;;;10691:37:0;;;;;;;;;;;;-1:-1:-1;;;10691:37:0;;;;;;;;;;;;;;;10739:7;9827:6;10749:2;:9;;13944:249;-1:-1:-1;;;;;14023:13:0;;;;;;:8;:13;;;;;;:20;-1:-1:-1;14023:20:0;14015:29;;;;;;-1:-1:-1;;;;;14076:13:0;;;;;;:8;:13;;;;;;14071:24;;14091:3;14071:4;:24::i;:::-;-1:-1:-1;;;;;14055:13:0;;;;;;;:8;:13;;;;;;:40;;;;14127:13;;;;;;;14122:24;;14142:3;14122:4;:24::i;:::-;-1:-1:-1;;;;;14106:13:0;;;;;;;:8;:13;;;;;;;;;:40;;;;14162:23;;;;;;;14106:13;;14162:23;;;;;;;;;;;;;13944:249;;;:::o;10034:202::-;10105:4;10128:6;10136:9;10149:14;10158:1;10161;10149:8;:14::i;:::-;10127:36;;;;10183:4;10182:5;10174:35;;;;;-1:-1:-1;;;10174:35:0;;;;;;;;;;;;-1:-1:-1;;;10174:35:0;;;;;;;;;;;;;;;-1:-1:-1;10227:1:0;10034:202;-1:-1:-1;;;10034:202:0:o;37463:554::-;37520:7;-1:-1:-1;;;;;37548:20:0;;37540:67;;;;-1:-1:-1;;;37540:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37644:10;;37637:40;;;-1:-1:-1;;;37637:40:0;;37666:10;37637:40;;;;;;37618:16;;-1:-1:-1;;;;;37644:10:0;;37637:28;;:40;;;;;;;;;;;;;;37644:10;37637:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37637:40:0;-1:-1:-1;;;;;37708:15:0;;37688:17;37708:15;;;:7;37637:40;37708:15;;;;;;;:22;;;37830:7;;-1:-1:-1;;37791:16:0;;37782:26;;:8;:26;;;;;;;37762:15;;37637:40;;-1:-1:-1;37708:22:0;;37760:78;;37830:7;37761:63;;37637:40;;37762:47;;:15;:19;:47::i;37760:78::-;37741:97;;37947:7;;37880:63;37934:8;37881:47;37901:8;:26;37925:1;37910:12;:16;37901:26;;;;;;;;;;;;37881:15;;:19;;:47;;;;:::i;37880:63::-;37879:75;;;;;-1:-1:-1;;;;;37849:15:0;;;;;;:7;:15;;;;;:26;;:105;;37879:75;;;;37849:105;;;;;37992:9;;37973:35;;37978:7;;37987:20;;38003:3;37987:4;:20::i;36906:545::-;36962:7;-1:-1:-1;;;;;36990:20:0;;36982:67;;;;-1:-1:-1;;;36982:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37086:10;;37079:40;;;-1:-1:-1;;;37079:40:0;;37108:10;37079:40;;;;;;37060:16;;-1:-1:-1;;;;;37086:10:0;;37079:28;;:40;;;;;;;;;;;;;;37086:10;37079:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37079:40:0;-1:-1:-1;;;;;37150:15:0;;37130:17;37150:15;;;:7;37079:40;37150:15;;;;;;;:21;;;37268:7;;-1:-1:-1;;37229:16:0;;37221:25;;:7;:25;;;;;;;37202:14;;37079:40;;-1:-1:-1;37150:21:0;;37200:76;;37268:7;37201:61;;37079:40;;37202:45;;:14;:18;:45::i;37200:76::-;37182:94;;37382:7;;37317:61;37369:8;37318:45;37337:7;:25;37360:1;37345:12;:16;37337:25;;;;;;;;;;;;37318:14;;:18;;:45;;;;:::i;37317:61::-;37316:73;;;;;-1:-1:-1;;;;;37287:15:0;;;;;;:7;:15;;;;;:25;;:102;;37316:73;;;;37287:102;;;;;37426:9;;37408:34;;37413:6;;37421:20;;37437:3;37421:4;:20::i;9584:154::-;9652:32;:16;9676:7;9652:23;:32::i;:::-;9700:30;;-1:-1:-1;;;;;9700:30:0;;;;;;;;9584:154;:::o;42934:200::-;43024:10;;43017:66;;;-1:-1:-1;;;43017:66:0;;43049:10;43017:66;;;;43069:4;43017:66;;;;;;;;;;;;43005:9;;-1:-1:-1;;;;;43024:10:0;;43017:31;;:66;;;;;;;;;;;;;;43005:9;43024:10;43017:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43017:66:0;;-1:-1:-1;43017:66:0;43094:32;;;;;-1:-1:-1;;;43094:32:0;;;;;;;;;;;;-1:-1:-1;;;43094:32:0;;;;;;;;;;;;;;13664:268;13734:4;13717:23;;;;:8;:23;;;;;;:30;-1:-1:-1;13717:30:0;13709:39;;;;;;13807:4;13790:23;;;;:8;:23;;;;;;13785:34;;13815:3;13785:4;:34::i;:::-;13776:4;13759:23;;;;:8;:23;;;;;:60;13850:12;;13845:23;;13864:3;13845:4;:23::i;:::-;13830:12;:38;13884:40;;;;;;;;13916:1;;13901:4;;13884:40;;;;;;;;;13664:268;:::o;9429:146::-;9494:29;:16;9515:7;9494:20;:29::i;:::-;9539:28;;-1:-1:-1;;;;;9539:28:0;;;;;;;;9429:146;:::o;9846:180::-;9917:4;9948:5;;;9972:6;;;;9964:35;;;;;-1:-1:-1;;;9964:35:0;;;;;;;;;;;;-1:-1:-1;;;9964:35:0;;;;;;;;;;;;;;32052:627;32255:12;;32325:15;;32311:7;;32233:19;;32298:43;;32299:20;;:7;;:11;:20::i;:::-;32298:26;;:43::i;:::-;32278:63;-1:-1:-1;32353:24:0;32380:26;32278:63;32394:11;32380:13;:26::i;:::-;32353:53;-1:-1:-1;32435:26:0;:9;32449:11;32435:13;:26::i;:::-;32417:15;:44;32489:14;;:36;;32508:16;32489:18;:36::i;:::-;32472:14;:53;32561:5;;-1:-1:-1;;32561:9:0;32553:18;;;;:7;:18;;;;;;:40;;32576:16;32553:22;:40::i;:::-;32544:5;;;32536:14;;;;:7;:14;;;;;;;;;:57;;;;32616:5;;32609:34;;;;;;;;;;;32632:10;32609:34;;;;;;;;;;;;;;-1:-1:-1;;32654:5:0;:7;;;;;;-1:-1:-1;;32052:627:0:o;11751:463::-;11827:4;11851:10;11865:11;11872:3;11865:6;:11::i;:::-;11851:25;;11887:11;11901:16;11906:3;11911:5;11901:4;:16::i;:::-;11887:30;;11930:13;11946:24;11952:4;11958:11;11963:5;11958:4;:11::i;:::-;11946:5;:24::i;:::-;11930:40;-1:-1:-1;11987:11:0;11983:59;;12022:8;-1:-1:-1;12015:15:0;;-1:-1:-1;;12015:15:0;11983:59;12074:13;12052:19;12119:40;12130:4;12136:6;12074:13;12119:10;:40::i;:::-;12098:61;;12177:29;12182:8;12192:13;12177:4;:29::i;:::-;12170:36;11751:463;-1:-1:-1;;;;;;;;11751:463:0:o;38029:554::-;38086:7;-1:-1:-1;;;;;38114:20:0;;38106:67;;;;-1:-1:-1;;;38106:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38210:10;;38203:40;;;-1:-1:-1;;;38203:40:0;;38232:10;38203:40;;;;;;38184:16;;-1:-1:-1;;;;;38210:10:0;;38203:28;;:40;;;;;;;;;;;;;;38210:10;38203:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38203:40:0;-1:-1:-1;;;;;38274:15:0;;38254:17;38274:15;;;:7;38203:40;38274:15;;;;;;;:22;;;38396:7;;-1:-1:-1;;38357:16:0;;38348:26;;:8;:26;;;;;;;38328:15;;38203:40;;-1:-1:-1;38274:22:0;;38326:78;;38396:7;38327:63;;38203:40;;38328:47;;:15;:19;:47::i;38326:78::-;38307:97;;38513:7;;38446:63;38500:8;38447:47;38467:8;:26;38491:1;38476:12;:16;38467:26;;;;;;;;;;;;38447:15;;:19;;:47;;;;:::i;38446:63::-;38445:75;;;;;-1:-1:-1;;;;;38415:15:0;;;;;;:7;:15;;;;;:26;;:105;;38445:75;;;;38415:105;;;;;38558:9;;38539:35;;38544:7;;38553:20;;38569:3;38553:4;:20::i;33333:630::-;33536:12;;33607:16;;33593:7;;33514:19;;33579:45;;33580:21;;:8;;:12;:21::i;33579:45::-;33559:65;-1:-1:-1;33636:24:0;33663:26;33559:65;33677:11;33663:13;:26::i;:::-;33636:53;-1:-1:-1;33719:26:0;:9;33733:11;33719:13;:26::i;:::-;33700:16;:45;33774:15;;:37;;33794:16;33774:19;:37::i;:::-;33756:15;:55;33850:6;;-1:-1:-1;;33850:10:0;33841:20;;;;:8;:20;;;;;;:42;;33866:16;33841:24;:42::i;:::-;33831:6;;;33822:16;;;;:8;:16;;;;;;;;;:61;;;;33907:6;;33899:37;;;;;;;;;;;33925:10;33899:37;;;;;;;;;;;;;;-1:-1:-1;;33947:6:0;:8;;;;;;-1:-1:-1;;33333:630:0:o;46337:207::-;46414:3;;46407:36;;;-1:-1:-1;;;46407:36:0;;46437:4;46407:36;;;;;;46384:15;;46402:54;;-1:-1:-1;;;;;46414:3:0;;;;46407:21;;:36;;;;;;;;;;;;;;;46414:3;46407:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46407:36:0;46445:10;;46402:4;:54::i;:::-;46384:72;;46480:25;46485:10;;46497:7;46480:4;:25::i;:::-;46467:10;:38;46516:20;46528:7;46516:11;:20::i;45905:204::-;45982:4;;45975:37;;;-1:-1:-1;;;45975:37:0;;46006:4;45975:37;;;;;;45952:15;;45970:54;;-1:-1:-1;;;;;45982:4:0;;;;45975:22;;:37;;;;;;;;;;;;;;;45982:4;45975:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45975:37:0;46014:9;;45970:4;:54::i;:::-;45952:72;;46047:24;46052:9;;46063:7;46047:4;:24::i;:::-;46035:9;:36;46082:19;46093:7;46082:10;:19::i;46117:208::-;46194:4;;46187:37;;;-1:-1:-1;;;46187:37:0;;46218:4;46187:37;;;;;;46164:15;;46182:55;;-1:-1:-1;;;;;46194:4:0;;;;46187:22;;:37;;;;;;;;;;;;;;;46194:4;46187:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46187:37:0;46226:10;;46182:4;:55::i;:::-;46164:73;;46261:25;46266:10;;46278:7;46261:4;:25::i;:::-;46248:10;:38;46297:20;46309:7;46297:11;:20::i;8372:203::-;8444:4;-1:-1:-1;;;;;8469:21:0;;8461:68;;;;-1:-1:-1;;;8461:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8547:20:0;:11;:20;;;;;;;;;;;;;;;8372:203::o;43360:239::-;43419:7;;43459:17;:7;43472:3;43459:12;:17::i;:::-;43438:38;-1:-1:-1;43487:23:0;43513:42;43537:17;43513:19;43438:38;43543:11;43513:14;:19::i;21996:282::-;22074:19;22097:27;22111:12;22097:13;:27::i;:::-;22073:51;;22138:14;22134:138;;22177:10;22168:20;;;;:8;:20;;;;;;;;22192:15;22168:39;;-1:-1:-1;;;;;22221:21:0;;;;:7;:21;;;;;:33;;:40;;-1:-1:-1;;22221:40:0;22257:4;22221:40;;;21996:282;;:::o;13438:218::-;13531:4;13514:23;;;;:8;:23;;;;;;13509:34;;13539:3;13509:4;:34::i;:::-;13500:4;13483:23;;;;:8;:23;;;;;:60;13574:12;;13569:23;;13588:3;13569:4;:23::i;:::-;13554:12;:38;13608:40;;;;;;;;13637:4;;13625:1;;13608:40;;;;;;;;;13438:218;:::o;32691:630::-;32894:12;;32965:16;;32951:7;;32872:19;;32937:45;;32938:21;;:8;;:12;:21::i;32937:45::-;32917:65;-1:-1:-1;32994:24:0;33021:26;32917:65;33035:11;33021:13;:26::i;:::-;32994:53;-1:-1:-1;33077:26:0;:9;33091:11;33077:13;:26::i;:::-;33058:16;:45;33132:15;;:37;;33152:16;33132:19;:37::i;:::-;33114:15;:55;33208:6;;-1:-1:-1;;33208:10:0;33199:20;;;;:8;:20;;;;;;:42;;33224:16;33199:24;:42::i;:::-;33189:6;;;33180:16;;;;:8;:16;;;;;;;;;:61;;;;33265:6;;33257:37;;;;;;;;;;;33283:10;33257:37;;;;;;;;;;;;;;-1:-1:-1;;33305:6:0;:8;;;;;;-1:-1:-1;;32691:630:0:o;1851:192::-;1937:7;1973:12;1965:6;;;;1957:29;;;;-1:-1:-1;;;1957:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2009:5:0;;;1851:192::o;3877:278::-;3963:7;3998:12;3991:5;3983:28;;;;-1:-1:-1;;;3983:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:9;4038:1;4034;:5;;;;;;;3877:278;-1:-1:-1;;;;;3877:278:0:o;10244:223::-;10319:4;10325;10356:1;10351;:6;10347:113;;-1:-1:-1;;10382:5:0;;;10389;10374:21;;10347:113;-1:-1:-1;;10436:5:0;;;10443:4;10347:113;10244:223;;;;;:::o;8181:183::-;8261:18;8265:4;8271:7;8261:3;:18::i;:::-;8253:64;;;;-1:-1:-1;;;8253:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8328:20:0;8351:5;8328:20;;;;;;;;;;;:28;;-1:-1:-1;;8328:28:0;;;8181:183::o;4620:130::-;4678:7;4705:37;4709:1;4712;4705:37;;;;;;;;;;;;;;;;;:3;:37::i;11305:116::-;11370:4;9827:6;11399:7;11404:1;11399:4;:7::i;:::-;:14;;11305:116;-1:-1:-1;;11305:116:0:o;11189:108::-;9827:6;11281:8;;;11189:108::o;11429:314::-;11501:4;;11536:1;11532;:5;:21;;9827:6;11532:21;;;11545:1;11532:21;11523:30;-1:-1:-1;11576:1:0;11571:6;;;;11566:151;11579:6;;11566:151;;11614:10;11619:1;11622;11614:4;:10::i;:::-;11610:14;-1:-1:-1;11649:1:0;11645;:5;:10;11641:65;;11680:10;11685:1;11688;11680:4;:10::i;:::-;11676:14;;11641:65;11592:1;11587:6;;;;11566:151;;12222:851;12320:4;12375:3;12320:4;;12412:20;12421:4;9827:6;12412:8;:20::i;:::-;12389:43;;-1:-1:-1;12389:43:0;-1:-1:-1;9827:6:0;;12443:9;12548:1;12534:509;12559:9;12551:4;:17;12534:509;;12590:9;9827:6;12602:1;:8;12590:20;;12626:6;12634:9;12647:29;12656:1;12659:16;12664:4;9827:6;12659:4;:16::i;:::-;12647:8;:29::i;:::-;12625:51;;;;12698:22;12703:4;12709:10;12714:1;12717;12709:4;:10::i;12698:22::-;12691:29;;12742:16;12747:4;12753;12742;:16::i;:::-;12735:23;-1:-1:-1;12777:9:0;12773:20;;12788:5;;;;;12773:20;12814:4;12810:30;;;12831:9;;;12810:30;12859:4;12855:30;;;12876:9;;;12855:30;12904:8;12900:132;;;12939:15;12944:3;12949:4;12939;:15::i;:::-;12933:21;;12900:132;;;13001:15;13006:3;13011:4;13001;:15::i;:::-;12995:21;;12900:132;-1:-1:-1;;;12570:3:0;;12534:509;;;-1:-1:-1;13062:3:0;;12222:851;-1:-1:-1;;;;;;;;;12222:851:0:o;5413:106::-;5466:6;5510:1;5506;5501;5497;5493;:5;:9;5492:15;;;;;;:19;;5413:106;-1:-1:-1;;;5413:106:0:o;5235:166::-;5321:7;5357:12;5349:6;5341:29;;;;-1:-1:-1;;;5341:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5392:1;5388;:5;;;;;;;5235:166;-1:-1:-1;;;;5235:166:0:o

Swarm Source

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