Contract 0x86a327715d707bca24983b1145d1f6c40c5d4a74

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x72e75acdb706c5c9a1c14d329c4d7b0f04b6b6b4d3d96ab3a398f744f01578de72678802021-05-09 11:01:193 hrs 26 mins ago0x8c25045cd7849c85bf034e08eb206948d39e60c2 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xbd87511dcee6fff78d141fc445894155af6f5694d22e8cccc1d748e6a15b42c172643992021-05-09 7:59:266 hrs 28 mins ago0xaad9f762bd7b61b6e5893823d2a6905583c41b5d IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0xd445acec9fbfdfebc5e93d620b889eb6268ff4b68c3f7e9dfab6f2107e67c85372641262021-05-09 7:45:186 hrs 42 mins ago0xf0e38355a84b317529ed09c157510bf8d27a5370 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000310315
0x29000fcde21d84a00699435080f5d9b4754ccdb7f9a2fe01fa08d88d2c90ef3772575552021-05-09 2:03:0012 hrs 24 mins ago0x9771c15f9163a0e0976eb518d727e809f5afdf6e IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x6786aecaaaa03fd9fe478477b2cbec94269f60906a9a480cf0550c391fef7e6572496552021-05-08 19:08:5819 hrs 18 mins ago0x975cf0259ba3ab3a08d2a2686f0c867597126fd2 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x52b3e3e331e62903269c7b86f9fc2855daedc186386e6eeaef443baf627d967d72429952021-05-08 13:08:281 day 1 hr ago0xb5a48fed4d5aba3e52cfc81b21356857a7b48b4c IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000439315
0x78436420ebe03a7e252439d335cc769548fdda8af38ba506085cfe724d4b42d472408222021-05-08 11:18:411 day 3 hrs ago0x68072116d76fe505efd1b7ccdcae77a147aa4e49 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000437106
0xc0744c07a8eb385eb5eb8b7a8eb6af2d629022a8cccfdc3942c8a153ec762a9572398572021-05-08 10:29:261 day 3 hrs ago0xa7fab85434c622f3c68bbb739c21ec3e564d5499 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.002502005
0x9c4dd989841428e3c2a6b9c57ccf3b89772a85a778b24d740aa55f9be02e845572356832021-05-08 6:59:411 day 7 hrs ago0xaad9f762bd7b61b6e5893823d2a6905583c41b5d IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000310315
0xa0d98399b14393f0370c7a8db6f826a509c73a9d1cd7b430c502f143b27e437572348642021-05-08 6:18:441 day 8 hrs ago0xf0e38355a84b317529ed09c157510bf8d27a5370 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x80b6cf186aa68f1a5827deced7a0a7790c7054782d64e396a077d7047e5d96f072342822021-05-08 5:49:381 day 8 hrs ago0x648f9ef6a35bfc092e4b043bb639677e7d3d93c6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000310315
0xc4fa90f5c6a569d9817a7b6be69e63d0d6c25da310b1d39683f8bfaa9f6a3e4472342742021-05-08 5:49:141 day 8 hrs ago0x648f9ef6a35bfc092e4b043bb639677e7d3d93c6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xc04c37adb377801d3838c9852fcfdd2191a52fc3ede8b11117633e3d80e42b9272336142021-05-08 5:16:141 day 9 hrs ago0x5f9dea11d9028ce7386302fd81d82029b94c4bb6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xb270f6fe30b31099fd62809294f32e565e0e87d8f5f108c713f81b1b2f004f5972212492021-05-07 18:43:551 day 19 hrs ago0x32eb5d0db55155e2a32e329c90b62fb6ea16789f IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000363805
0x10b1dff3b226207a0c38c949318304cce315f98b4f36f155b7f09b22e36ce74472183942021-05-07 16:17:381 day 22 hrs ago0xafd8cdd3ce3eff84063ddd2cedcd06abe5191abc IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.00266875
0x37e705b38ea3f4e8ca912e306811b385bfb5fcb0aa61627b55904dc4bd445a6c72118562021-05-07 10:37:532 days 3 hrs ago0x68072116d76fe505efd1b7ccdcae77a147aa4e49 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000437106
0x5a825d10f345e721d4b1722e156357c617ce4dab14cbbd50fa7b646ab98f384172117972021-05-07 10:34:482 days 3 hrs ago0x9a29dabd211576c02060f8e49b2845829e2ce93c IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000310315
0x53e76fa244f881b7fd3b20e58df8327d09a1a1dde64a8d0e6e7730f6f68dbabe72110122021-05-07 9:55:242 days 4 hrs ago0xf0e38355a84b317529ed09c157510bf8d27a5370 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x0b8d24c3b258b68a432ac147457dc3d7d09149b4373ea3b6a016d5b3d686060472092712021-05-07 8:28:022 days 5 hrs ago0x96bb490e35b5ca534656d17089fe74d40d7c3a98 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000346638
0x343580de2c93041d0fd89506c2f7ce5208f4907fb2544005683ec13e67d7685672082402021-05-07 7:36:262 days 6 hrs ago0xbd34c47d394ad6e51a11bc24e4fa43842766b014 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x5c5bc641c2996f0388a07130952750feb9bfbb49765427effe6aa578cdbd878172031722021-05-07 3:20:092 days 11 hrs ago0xbdd14020466217a20b61c70c3167b39725f31e6d IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xbd4c09a06728bb7f69752261c4fddac2bbf8d09b69fbb2f56d3c167e5581803571960932021-05-06 21:23:112 days 17 hrs ago0x5a7a4a426eff589dcb8c71f20f18ffbf6bb419d5 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x3ac52f4819e8785c29ae920bf3c4c604c6d002d98e0baa0f7ec8cfda18fd201871905322021-05-06 16:40:502 days 21 hrs ago0xf248314815e001c15df1e5e45e11eb7b241d9995 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0xb3645efd2006f65638fe7cfa778525c17b63069e54e759a73de16bab13cb064871904742021-05-06 16:37:562 days 21 hrs ago0xf248314815e001c15df1e5e45e11eb7b241d9995 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000310255
0x0cd5f213eb25dd3e4d03d3dab6b5ea93fd6b856f7b17680dcdf0543237af10ae71859232021-05-06 12:21:433 days 2 hrs ago0x227db253da967d0f9aba508636d41847d66caa2f IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000288805
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: USDT-BURGER0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5163 days 2 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER-bKANGAL0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4263 days 2 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER-KOGE0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4263 days 2 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DemaxPool

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-24
*/

// Dependency file: contracts/interfaces/IDemaxConfig.sol

// pragma solidity >=0.5.0;

interface IDemaxConfig {
    function governor() external view returns (address);
    function dev() external view returns (address);
    function PERCENT_DENOMINATOR() external view returns (uint);
    function getConfig(bytes32 _name) external view returns (uint minValue, uint maxValue, uint maxSpan, uint value, uint enable);
    function getConfigValue(bytes32 _name) external view returns (uint);
    function changeConfigValue(bytes32 _name, uint _value) external returns (bool);
    function checkToken(address _token) external view returns(bool);
    function checkPair(address tokenA, address tokenB) external view returns (bool);
    function listToken(address _token) external returns (bool);
    function getDefaultListTokens() external returns (address[] memory);
    function platform() external view returns  (address);
    function addToken(address _token) external returns (bool);
}
// Dependency file: contracts/libraries/ConfigNames.sol

// pragma solidity >=0.5.16;

library ConfigNames {
    bytes32 public constant PRODUCE_DGAS_RATE = bytes32('PRODUCE_DGAS_RATE');
    bytes32 public constant SWAP_FEE_PERCENT = bytes32('SWAP_FEE_PERCENT');
    bytes32 public constant LIST_DGAS_AMOUNT = bytes32('LIST_DGAS_AMOUNT');
    bytes32 public constant UNSTAKE_DURATION = bytes32('UNSTAKE_DURATION');
    bytes32 public constant REMOVE_LIQUIDITY_DURATION = bytes32('REMOVE_LIQUIDITY_DURATION');
    bytes32 public constant TOKEN_TO_DGAS_PAIR_MIN_PERCENT = bytes32('TOKEN_TO_DGAS_PAIR_MIN_PERCENT');
    bytes32 public constant LIST_TOKEN_FAILURE_BURN_PRECENT = bytes32('LIST_TOKEN_FAILURE_BURN_PRECENT');
    bytes32 public constant LIST_TOKEN_SUCCESS_BURN_PRECENT = bytes32('LIST_TOKEN_SUCCESS_BURN_PRECENT');
    bytes32 public constant PROPOSAL_DGAS_AMOUNT = bytes32('PROPOSAL_DGAS_AMOUNT');
    bytes32 public constant VOTE_DURATION = bytes32('VOTE_DURATION');
    bytes32 public constant VOTE_REWARD_PERCENT = bytes32('VOTE_REWARD_PERCENT');
    bytes32 public constant TOKEN_PENGDING_SWITCH = bytes32('TOKEN_PENGDING_SWITCH');
    bytes32 public constant TOKEN_PENGDING_TIME = bytes32('TOKEN_PENGDING_TIME');
    bytes32 public constant LIST_TOKEN_SWITCH = bytes32('LIST_TOKEN_SWITCH');
    bytes32 public constant DEV_PRECENT = bytes32('DEV_PRECENT');
    bytes32 public constant FEE_GOVERNANCE_REWARD_PERCENT = bytes32('FEE_GOVERNANCE_REWARD_PERCENT');
    bytes32 public constant FEE_LP_REWARD_PERCENT = bytes32('FEE_LP_REWARD_PERCENT');
}
// Dependency file: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT

// pragma solidity ^0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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;
    }
}
// Dependency file: contracts/interfaces/IDemaxGovernance.sol

// pragma solidity >=0.5.0;

interface IDemaxGovernance {
    function addPair(address _tokenA, address _tokenB) external returns (bool);
    function addReward(uint _value) external returns (bool);
}


// Dependency file: contracts/interfaces/IDemaxFactory.sol

// pragma solidity >=0.5.0;

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

    function contractCodeHash() external view returns (bytes32);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function isPair(address pair) external view returns (bool);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function playerPairs(address player, uint index) external view returns (address pair);
    function getPlayerPairCount(address player) external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);
    function addPlayerPair(address player, address _pair) external returns (bool);
}

// Dependency file: contracts/interfaces/IDemaxPair.sol

// pragma solidity >=0.5.0;

interface IDemaxPair {
  
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function totalSupply() external view returns (uint);
    function balanceOf(address) external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address from, address to, uint amount) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address tokenA, address tokenB, address platform, address dgas) external;
    function swapFee(uint amount, address token, address to) external ;
    function queryReward() external view returns (uint rewardAmount, uint blockNumber);
    function mintReward() external returns (uint rewardAmount);
    function getDGASReserve() external view returns (uint);
}

// Dependency file: contracts/interfaces/IDgas.sol

// pragma solidity >=0.5.0;

interface IDgas {
    function amountPerBlock() external view returns (uint);
    function changeInterestRatePerBlock(uint value) external returns (bool);
    function getProductivity(address user) external view returns (uint, uint);
    function increaseProductivity(address user, uint value) external returns (bool);
    function decreaseProductivity(address user, uint value) external returns (bool);
    function take() external view returns (uint);
    function takeWithBlock() external view returns (uint, uint);
    function mint() external returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function upgradeImpl(address _newImpl) external;
    function upgradeGovernance(address _newGovernor) external;
    function transfer(address to, uint value) external returns (bool);
    function approve(address spender, uint value) external returns (bool);
}
// Dependency file: contracts/libraries/TransferHelper.sol

// SPDX-License-Identifier: GPL-3.0-or-later

// pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/modules/Ownable.sol

// pragma solidity >=0.5.16;

contract Ownable {
    address public owner;

    event OwnerChanged(address indexed _oldOwner, address indexed _newOwner);

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, 'Ownable: FORBIDDEN');
        _;
    }

    function changeOwner(address _newOwner) public onlyOwner {
        require(_newOwner != address(0), 'Ownable: INVALID_ADDRESS');
        emit OwnerChanged(owner, _newOwner);
        owner = _newOwner;
    }

}

pragma solidity >= 0.5.1;
// import './modules/Ownable.sol';
// import './libraries/TransferHelper.sol';
// import './interfaces/IDgas.sol';
// import './interfaces/IDemaxPair.sol';
// import './interfaces/IDemaxFactory.sol';
// import './interfaces/IDemaxGovernance.sol';
// import './libraries/SafeMath.sol';
// import './libraries/ConfigNames.sol';
// import './interfaces/IDemaxConfig.sol';

interface IDemaxPlatform {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts) ;
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
}

contract DemaxPool is Ownable {
    using SafeMath for uint;
    address public DGAS;
    address public FACTORY;
    address public PLATFORM;
    address public WETH;
    address public CONFIG;
    address public GOVERNANCE;
    uint public totalReward;
    
    struct UserInfo {
        uint rewardDebt; // Reward debt. 
        uint rewardEarn; // Reward earn and not minted
    }
    
    event ClaimReward(address indexed user, address indexed pair, address indexed rewardToken, uint amountDGAS);
    event AddReward(address indexed pair, uint amount);

    mapping(address => mapping (address => UserInfo)) public users;
    
    mapping (address => uint) public pairAmountPerShare;
    mapping (address => uint) public pairReward;
    
    function initialize(address _DGAS, address _WETH, address _FACTORY, address _PLATFORM, address _CONFIG, address _GOVERNANCE) external onlyOwner {
        DGAS = _DGAS;
        WETH = _WETH;
        FACTORY = _FACTORY;
        PLATFORM = _PLATFORM;
        CONFIG = _CONFIG;
        GOVERNANCE = _GOVERNANCE;
    }
    
    function upgrade(address _newPool, address[] calldata _pairs) external onlyOwner {
        IDgas(DGAS).approve(_newPool, totalReward);
        for(uint i = 0;i < _pairs.length;i++) {
            if(pairReward[_pairs[i]] > 0) {
                DemaxPool(_newPool).addReward(_pairs[i], pairReward[_pairs[i]]);
                totalReward = totalReward.sub(pairReward[_pairs[i]]);
                pairReward[_pairs[i]] = 0;
            }
        }
    }
    
    function addRewardFromPlatform(address _pair, uint _amount) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        uint balanceOf = IDgas(DGAS).balanceOf(address(this));
        require(balanceOf.sub(totalReward) >= _amount, 'DEMAX POOL: ADD_REWARD_EXCEED');
        
        uint rewardAmount = IDemaxConfig(CONFIG).getConfigValue(ConfigNames.FEE_LP_REWARD_PERCENT).mul(_amount).div(10000);
        _addReward(_pair, rewardAmount);
        
        uint remainAmount = _amount.sub(rewardAmount);
        uint governanceAmount = IDemaxConfig(CONFIG).getConfigValue(ConfigNames.FEE_GOVERNANCE_REWARD_PERCENT).mul(remainAmount).div(10000);
        if(governanceAmount > 0) {
            TransferHelper.safeTransfer(DGAS, GOVERNANCE, governanceAmount);
            IDemaxGovernance(GOVERNANCE).addReward(governanceAmount);
        }
        if(remainAmount.sub(governanceAmount) > 0) {
            TransferHelper.safeTransfer(DGAS, address(0), remainAmount.sub(governanceAmount));
        }
        emit AddReward(_pair, rewardAmount);
    }
    
    function addReward(address _pair, uint _amount) external {
        TransferHelper.safeTransferFrom(DGAS, msg.sender, address(this), _amount);
        
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        _addReward(_pair, _amount);
        
        emit AddReward(_pair, _amount);
    }
    
    function preProductivityChanged(address _pair, address _user) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        _auditUser(_pair, _user);
    }
    
    function postProductivityChanged(address _pair, address _user) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        
        _updateDebt(_pair, _user);
    }
    
    function _addReward(address _pair, uint _amount) internal {
        pairReward[_pair] = pairReward[_pair].add(_amount);
        uint totalProdutivity = IDemaxPair(_pair).totalSupply();
        if(totalProdutivity > 0) {
            pairAmountPerShare[_pair] = pairAmountPerShare[_pair].add(_amount.mul(1e12).div(totalProdutivity));
            totalReward = totalReward.add(_amount);
        }
    }
    
    function _auditUser(address _pair, address _user) internal {
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
    
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        uint accAmountPerShare = pairAmountPerShare[_pair];
        UserInfo storage userInfo = users[_user][_pair];
        uint pending = balance.mul(accAmountPerShare).div(1e12).sub(userInfo.rewardDebt);
        userInfo.rewardEarn = userInfo.rewardEarn.add(pending);
        userInfo.rewardDebt = balance.mul(accAmountPerShare).div(1e12);
    }
    
    function _updateDebt(address _pair, address _user) internal {
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        uint accAmountPerShare = pairAmountPerShare[_pair];
        users[_user][_pair].rewardDebt = balance.mul(accAmountPerShare).div(1e12);
    }
    
    function claimReward(address _pair, address _rewardToken) external {
        _auditUser(_pair, msg.sender);
        UserInfo storage userInfo = users[msg.sender][_pair];
        
        uint amount = userInfo.rewardEarn;
        pairReward[_pair] = pairReward[_pair].sub(amount);
        totalReward = totalReward.sub(amount);
        require(amount > 0, "NOTHING TO MINT");
        
        if(_rewardToken == DGAS) {
            TransferHelper.safeTransfer(DGAS, msg.sender, amount);
        } else if(_rewardToken == WETH) {
            require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
            IDgas(DGAS).approve(PLATFORM, amount);
            address[] memory path = new address[](2);
            path[0] = DGAS;
            path[1] = WETH; 
            IDemaxPlatform(PLATFORM).swapExactTokensForETH(amount, 0, path, msg.sender, block.timestamp + 1);
        } else {
            require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
            IDgas(DGAS).approve(PLATFORM, amount);
            address[] memory path = new address[](2);
            path[0] = DGAS;
            path[1] = _rewardToken;
            IDemaxPlatform(PLATFORM).swapExactTokensForTokens(amount, 0, path, msg.sender, block.timestamp + 1);
        }
        
        userInfo.rewardEarn = 0;
        emit ClaimReward(msg.sender, _pair, _rewardToken, amount);
    }
    
    function queryReward(address _pair, address _user) external view returns(uint) {
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        
        UserInfo memory userInfo = users[msg.sender][_pair];
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        return balance.mul(pairAmountPerShare[_pair]).div(1e12).add(userInfo.rewardEarn).sub(userInfo.rewardDebt);
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AddReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountDGAS","type":"uint256"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"inputs":[],"name":"CONFIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DGAS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNANCE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PLATFORM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addRewardFromPlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DGAS","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_FACTORY","type":"address"},{"internalType":"address","name":"_PLATFORM","type":"address"},{"internalType":"address","name":"_CONFIG","type":"address"},{"internalType":"address","name":"_GOVERNANCE","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairAmountPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"postProductivityChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"preProductivityChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"queryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newPool","type":"address"},{"internalType":"address[]","name":"_pairs","type":"address[]"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEarn","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600080546001600160a01b031916331790556122f4806100256000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063a6f9dae1116100ad578063d14cac1a11610071578063d14cac1a1461038a578063d92e82e4146103b8578063e60a6a0b146103c0578063e80ee4fc146103ec578063e8c04d42146104125761012c565b8063a6f9dae114610260578063a9f005b814610286578063aabacc2214610306578063ad5c464814610334578063cc2a9a5b1461033c5761012c565b8063723c2e2d116100f4578063723c2e2d14610214578063750142e61461021c5780637efc77fa146102245780638da5cb5b1461022c5780639feb8f50146102345761012c565b806314627834146101315780632dd31000146101555780632f534ba81461015d5780634953c7821461019d5780635e80536a146101cd575b600080fd5b610139610438565b604080516001600160a01b039092168252519081900360200190f35b610139610447565b61018b6004803603604081101561017357600080fd5b506001600160a01b0381358116916020013516610456565b60408051918252519081900360200190f35b6101cb600480360360408110156101b357600080fd5b506001600160a01b0381358116916020013516610639565b005b6101fb600480360360408110156101e357600080fd5b506001600160a01b0381358116916020013516610e00565b6040805192835260208301919091528051918290030190f35b610139610e24565b61018b610e33565b610139610e39565b610139610e48565b6101cb6004803603604081101561024a57600080fd5b506001600160a01b038135169060200135610e57565b6101cb6004803603602081101561027657600080fd5b50356001600160a01b0316610f74565b6101cb6004803603604081101561029c57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460208302840111640100000000831117156102fb57600080fd5b50909250905061107e565b6101cb6004803603604081101561031c57600080fd5b506001600160a01b038135811691602001351661132c565b610139611391565b6101cb600480360360c081101561035257600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a00135166113a0565b6101cb600480360360408110156103a057600080fd5b506001600160a01b0381358116916020013516611463565b61013961157c565b6101cb600480360360408110156103d657600080fd5b506001600160a01b03813516906020013561158b565b61018b6004803603602081101561040257600080fd5b50356001600160a01b031661193a565b61018b6004803603602081101561042857600080fd5b50356001600160a01b031661194c565b6006546001600160a01b031681565b6002546001600160a01b031681565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151600093929092169163e5e31b1391602480820192602092909190829003018186803b1580156104a757600080fd5b505afa1580156104bb573d6000803e3d6000fd5b505050506040513d60208110156104d157600080fd5b5051610512576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b61051a61223f565b503360009081526008602090815260408083206001600160a01b0387811680865291845282852083518085018552815481526001909101548186015283516370a0823160e01b81529188166004830152925192949391926370a0823192602480840193919291829003018186803b15801561059457600080fd5b505afa1580156105a8573d6000803e3d6000fd5b505050506040513d60208110156105be57600080fd5b505182516020848101516001600160a01b0389166000908152600990925260409091205492935061062e9261062291906106169064e8d4a510009061060a90889063ffffffff61195e16565b9063ffffffff6119be16565b9063ffffffff611a0016565b9063ffffffff611a5a16565b925050505b92915050565b6106438233611a9c565b3360009081526008602090815260408083206001600160a01b038616845282528083206001810154600a909352922054610683908263ffffffff611a5a16565b6001600160a01b0385166000908152600a60205260409020556007546106af908263ffffffff611a5a16565b600755806106f6576040805162461bcd60e51b815260206004820152600f60248201526e1393d512125391c81513c813525395608a1b604482015290519081900360640190fd5b6001546001600160a01b038481169116141561072857600154610723906001600160a01b03163383611c6e565b610dad565b6004546001600160a01b0384811691161415610a76576002546040805163e5e31b1360e01b81526001600160a01b0387811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b15801561078b57600080fd5b505afa15801561079f573d6000803e3d6000fd5b505050506040513d60208110156107b557600080fd5b50516107f6576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6001546003546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b505050506040513d602081101561087957600080fd5b50506040805160028082526060808301845292602083019080368337505060015482519293506001600160a01b0316918391506000906108b557fe5b6001600160a01b0392831660209182029290920101526004548251911690829060019081106108e057fe5b6001600160a01b039283166020918202929092018101919091526003546040516318cbafe560e01b8152600481018681526000602483018190523360648401819052426001016084850181905260a060448601908152895160a4870152895196909816976318cbafe5978b9794968b96949593949360c49091019187810191028083838b5b8381101561097d578181015183820152602001610965565b505050509050019650505050505050600060405180830381600087803b1580156109a657600080fd5b505af11580156109ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156109e357600080fd5b8101908080516040519392919084640100000000821115610a0357600080fd5b908301906020820185811115610a1857600080fd5b8251866020820283011164010000000082111715610a3557600080fd5b82525081516020918201928201910280838360005b83811015610a62578181015183820152602001610a4a565b505050509050016040525050505050610dad565b6002546040805163e5e31b1360e01b81526001600160a01b0387811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b5051610b2e576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6001546003546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050506040513d6020811015610bb157600080fd5b50506040805160028082526060808301845292602083019080368337505060015482519293506001600160a01b031691839150600090610bed57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110610c1b57fe5b6001600160a01b039283166020918202929092018101919091526003546040516338ed173960e01b8152600481018681526000602483018190523360648401819052426001016084850181905260a060448601908152895160a4870152895196909816976338ed1739978b9794968b96949593949360c49091019187810191028083838b5b83811015610cb8578181015183820152602001610ca0565b505050509050019650505050505050600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d1e57600080fd5b8101908080516040519392919084640100000000821115610d3e57600080fd5b908301906020820185811115610d5357600080fd5b8251866020820283011164010000000082111715610d7057600080fd5b82525081516020918201928201910280838360005b83811015610d9d578181015183820152602001610d85565b5050505090500160405250505050505b600060018301556040805182815290516001600160a01b03808616929087169133917ff9ce28130cf0ab6ae397696b8e3f3c22063af7b518a2d85c64520eadcb39155f919081900360200190a450505050565b60086020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b60075481565b6003546001600160a01b031681565b6000546001600160a01b031681565b600154610e6f906001600160a01b0316333084611dd8565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b505050506040513d6020811015610ee657600080fd5b5051610f27576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b610f318282611f35565b6040805182815290516001600160a01b038416917f9f15a78649bd76613c4a49ca8a67ae948862a0eee791ca3d0380853f9afa624f919081900360200190a25050565b6000546001600160a01b03163314610fc8576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b038116611023576040805162461bcd60e51b815260206004820152601860248201527f4f776e61626c653a20494e56414c49445f414444524553530000000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110d2576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001546007546040805163095ea7b360e01b81526001600160a01b03878116600483015260248201939093529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505050506040513d602081101561115657600080fd5b50600090505b81811015611326576000600a600085858581811061117657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054111561131e57836001600160a01b0316639feb8f508484848181106111c857fe5b905060200201356001600160a01b0316600a60008787878181106111e857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050506112d5600a600085858581811061129357fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054600754611a5a90919063ffffffff16565b6007556000600a818585858181106112e957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055505b60010161115c565b50505050565b6003546001600160a01b03163314611383576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b61138d8282611a9c565b5050565b6004546001600160a01b031681565b6000546001600160a01b031633146113f4576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b600180546001600160a01b03199081166001600160a01b0398891617909155600480548216968816969096179095556002805486169487169490941790935560038054851692861692909217909155600580548416918516919091179055600680549092169216919091179055565b6003546001600160a01b031633146114ba576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b5051611572576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b61138d8282612058565b6005546001600160a01b031681565b6003546001600160a01b031633146115e2576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d602081101561165757600080fd5b5051600754909150829061167290839063ffffffff611a5a16565b10156116c5576040805162461bcd60e51b815260206004820152601d60248201527f44454d415820504f4f4c3a204144445f5245574152445f455843454544000000604482015290519081900360640190fd5b600061177a61271061060a85600560009054906101000a90046001600160a01b03166001600160a01b031663c199de327411915157d31417d49155d0549117d4115490d15395605a1b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d602081101561176c57600080fd5b50519063ffffffff61195e16565b90506117868482611f35565b6000611798848363ffffffff611a5a16565b600554604080516360ccef1960e11b81527f4645455f474f5645524e414e43455f5245574152445f50455243454e5400000060048201529051929350600092611814926127109261060a9287926001600160a01b03169163c199de32916024808301926020929190829003018186803b15801561174257600080fd5b905080156118b457600154600654611839916001600160a01b03908116911683611c6e565b60065460408051631d3793b160e21b81526004810184905290516001600160a01b03909216916374de4ec4916024808201926020929091908290030181600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505050506040513d60208110156118b157600080fd5b50505b60006118c6838363ffffffff611a5a16565b11156118f3576001546118f3906001600160a01b031660006118ee858563ffffffff611a5a16565b611c6e565b6040805184815290516001600160a01b038816917f9f15a78649bd76613c4a49ca8a67ae948862a0eee791ca3d0380853f9afa624f919081900360200190a2505050505050565b600a6020526000908152604090205481565b60096020526000908152604090205481565b60008261196d57506000610633565b8282028284828161197a57fe5b04146119b75760405162461bcd60e51b815260040180806020018281038252602181526020018061227a6021913960400191505060405180910390fd5b9392505050565b60006119b783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612143565b6000828201838110156119b7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006119b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121e5565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015611ae957600080fd5b505afa158015611afd573d6000803e3d6000fd5b505050506040513d6020811015611b1357600080fd5b5051611b54576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d6020811015611bd657600080fd5b50516001600160a01b0380851660008181526009602090815260408083205494881683526008825280832093835292905290812080549394509192611c2e9061062264e8d4a5100061060a888863ffffffff61195e16565b6001830154909150611c46908263ffffffff611a0016565b6001830155611c6464e8d4a5100061060a868663ffffffff61195e16565b9091555050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310611ceb5780518252601f199092019160209182019101611ccc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d4d576040519150601f19603f3d011682016040523d82523d6000602084013e611d52565b606091505b5091509150818015611d80575080511580611d805750808060200190516020811015611d7d57600080fd5b50515b611dd1576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310611e5d5780518252601f199092019160209182019101611e3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ebf576040519150601f19603f3d011682016040523d82523d6000602084013e611ec4565b606091505b5091509150818015611ef2575080511580611ef25750808060200190516020811015611eef57600080fd5b50515b611f2d5760405162461bcd60e51b815260040180806020018281038252602481526020018061229b6024913960400191505060405180910390fd5b505050505050565b6001600160a01b0382166000908152600a6020526040902054611f5e908263ffffffff611a0016565b6001600160a01b0383166000818152600a602090815260408083209490945583516318160ddd60e01b8152935191936318160ddd9260048083019392829003018186803b158015611fae57600080fd5b505afa158015611fc2573d6000803e3d6000fd5b505050506040513d6020811015611fd857600080fd5b50519050801561205357612023611ffe8261060a8564e8d4a5100063ffffffff61195e16565b6001600160a01b0385166000908152600960205260409020549063ffffffff611a0016565b6001600160a01b03841660009081526009602052604090205560075461204f908363ffffffff611a0016565b6007555b505050565b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156120b057600080fd5b505afa1580156120c4573d6000803e3d6000fd5b505050506040513d60208110156120da57600080fd5b50516001600160a01b03841660009081526009602052604090205490915061211164e8d4a5100061060a848463ffffffff61195e16565b6001600160a01b0393841660009081526008602090815260408083209790961682529590955292909320919091555050565b600081836121cf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561219457818101518382015260200161217c565b50505050905090810190601f1680156121c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816121db57fe5b0495945050505050565b600081848411156122375760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561219457818101518382015260200161217c565b505050900390565b60405180604001604052806000815260200160008152509056fe44454d415820504f4f4c3a20494e56414c494420504149520000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220daafc30a9b5ac6b266dba1a75a2353b78d4e0fc2a49606eca0676e400dd6719e64736f6c63430006060033

Deployed ByteCode Sourcemap

15254:6638:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15254:6638:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;15460:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;15460:25:0;;;;;;;;;;;;;;15347:22;;;:::i;21470:419::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;21470:419:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20031:1427;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20031:1427:0;;;;;;;;;;:::i;:::-;;15836:62;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;15836:62:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15321:19;;;:::i;15492:23::-;;;:::i;15376:::-;;;:::i;13849:20::-;;;:::i;17926:331::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;17926:331:0;;;;;;;;:::i;14135:210::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14135:210:0;-1:-1:-1;;;;;14135:210:0;;:::i;16357:459::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;16357:459:0;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;16357:459:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16357:459:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;16357:459:0;;-1:-1:-1;16357:459:0;-1:-1:-1;16357:459:0;:::i;18269:181::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18269:181:0;;;;;;;;;;:::i;15406:19::-;;;:::i;16025:320::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;16025:320:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18462:277::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18462:277:0;;;;;;;;;;:::i;15432:21::-;;;:::i;16828:1086::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;16828:1086:0;;;;;;;;:::i;15969:43::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15969:43:0;-1:-1:-1;;;;;15969:43:0;;:::i;15911:51::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15911:51:0;-1:-1:-1;;;;;15911:51:0;;:::i;15460:25::-;;;-1:-1:-1;;;;;15460:25:0;;:::o;15347:22::-;;;-1:-1:-1;;;;;15347:22:0;;:::o;21470:419::-;21582:7;;21568:36;;;-1:-1:-1;;;21568:36:0;;-1:-1:-1;;;;;21568:36:0;;;;;;;;;21543:4;;21582:7;;;;;21568:29;;:36;;;;;;;;;;;;;;;21582:7;21568:36;;;2:2:-1;;;;27:1;24;17:12;2:2;21568:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21568:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21568:36:0;21560:73;;;;;-1:-1:-1;;;21560:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21560:73:0;;;;;;;;;;;;;;;21654:24;;:::i;:::-;-1:-1:-1;21687:10:0;21681:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;21681:24:0;;;;;;;;;;;;21654:51;;;;;;;;;;;;;;;;;;;;21731:34;;-1:-1:-1;;;21731:34:0;;;;;;;;;;;21654:51;;21681:17;:24;;21731:27;;:34;;;;;21681:17;;21731:34;;;;;;21681:24;21731:34;;;2:2:-1;;;;27:1;24;17:12;2:2;21731:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21731:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21731:34:0;21861:19;;21731:34;21836:19;;;;-1:-1:-1;;;;;21795:25:0;;21861:19;21795:25;;;:18;:25;;;;;;;;21731:34;;-1:-1:-1;21783:98:0;;:73;;21836:19;21783:48;;21826:4;;21783:38;;21731:34;;21783:38;:11;:38;:::i;:::-;:42;:48;:42;:48;:::i;:::-;:52;:73;:52;:73;:::i;:::-;:77;:98;:77;:98;:::i;:::-;21776:105;;;;21470:419;;;;;:::o;20031:1427::-;20109:29;20120:5;20127:10;20109;:29::i;:::-;20183:10;20149:25;20177:17;;;:5;:17;;;;;;;;-1:-1:-1;;;;;20177:24:0;;;;;;;;;20236:19;;;;20286:10;:17;;;;;;:29;;20236:19;20286:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;20266:17:0;;;;;;:10;:17;;;;;:49;20340:11;;:23;;20356:6;20340:23;:15;:23;:::i;:::-;20326:11;:37;20382:10;20374:38;;;;;-1:-1:-1;;;20374:38:0;;;;;;;;;;;;-1:-1:-1;;;20374:38:0;;;;;;;;;;;;;;;20452:4;;-1:-1:-1;;;;;20436:20:0;;;20452:4;;20436:20;20433:906;;;20501:4;;20473:53;;-1:-1:-1;;;;;20501:4:0;20507:10;20519:6;20473:27;:53::i;:::-;20433:906;;;20563:4;;-1:-1:-1;;;;;20547:20:0;;;20563:4;;20547:20;20544:795;;;20606:7;;20592:36;;;-1:-1:-1;;;20592:36:0;;-1:-1:-1;;;;;20592:36:0;;;;;;;;;20606:7;;;;;20592:29;;:36;;;;;;;;;;;;;;20606:7;20592:36;;;2:2:-1;;;;27:1;24;17:12;2:2;20592:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20592:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20592:36:0;20584:73;;;;;-1:-1:-1;;;20584:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20584:73:0;;;;;;;;;;;;;;;20678:4;;20692:8;;20672:37;;;-1:-1:-1;;;20672:37:0;;-1:-1:-1;;;;;20692:8:0;;;20672:37;;;;;;;;;;;;20678:4;;;;;20672:19;;:37;;;;;;;;;;;;;;20678:4;;20672:37;;;2:2:-1;;;;27:1;24;17:12;2:2;20672:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20672:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;20748:16:0;;;20762:1;20748:16;;;20724:21;20748:16;;;;;20724:21;20748:16;;;;;109:14:-1;20748:16:0;88:42:-1;-1:-1;;20789:4:0;;20779:7;;;;-1:-1:-1;;;;;;20789:4:0;;20779:7;;-1:-1:-1;20789:4:0;;20779:7;;;;-1:-1:-1;;;;;20779:14:0;;;:7;;;;;;;;;:14;20818:4;;20808:7;;20818:4;;;20808;;20818;;20808:7;;;;;;-1:-1:-1;;;;;20808:14:0;;;:7;;;;;;;;;;:14;;;;20853:8;;20838:96;;-1:-1:-1;;;20838:96:0;;;;;;;;20853:8;20838:96;;;;;;20902:10;20838:96;;;;;;20914:15;20853:8;20914:19;20838:96;;;;;;;;;;;;;;;;;;;;;20853:8;;;;;20838:46;;20885:6;;20853:8;;20896:4;;20902:10;;20914:19;;20838:96;;;;;;;;;;;;;;20853:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20838:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20838:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20838:96:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;20838:96:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;20838:96:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;20838:96:0;;421:4:-1;412:14;;;;20838:96:0;;;;;412:14:-1;20838:96:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20838:96:0;;;;;;;;;;;;20544:795;;;;20989:7;;20975:36;;;-1:-1:-1;;;20975:36:0;;-1:-1:-1;;;;;20975:36:0;;;;;;;;;20989:7;;;;;20975:29;;:36;;;;;;;;;;;;;;20989:7;20975:36;;;2:2:-1;;;;27:1;24;17:12;2:2;20975:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20975:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20975:36:0;20967:73;;;;;-1:-1:-1;;;20967:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20967:73:0;;;;;;;;;;;;;;;21061:4;;21075:8;;21055:37;;;-1:-1:-1;;;21055:37:0;;-1:-1:-1;;;;;21075:8:0;;;21055:37;;;;;;;;;;;;21061:4;;;;;21055:19;;:37;;;;;;;;;;;;;;21061:4;;21055:37;;;2:2:-1;;;;27:1;24;17:12;2:2;21055:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21055:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;21131:16:0;;;21145:1;21131:16;;;21107:21;21131:16;;;;;21107:21;21131:16;;;;;109:14:-1;21131:16:0;88:42:-1;-1:-1;;21172:4:0;;21162:7;;;;-1:-1:-1;;;;;;21172:4:0;;21162:7;;-1:-1:-1;21172:4:0;;21162:7;;;;;;;;;:14;-1:-1:-1;;;;;21162:14:0;;;-1:-1:-1;;;;;21162:14:0;;;;;21201:12;21191:4;21196:1;21191:7;;;;;;;;-1:-1:-1;;;;;21191:22:0;;;:7;;;;;;;;;;:22;;;;21243:8;;21228:99;;-1:-1:-1;;;21228:99:0;;;;;;;;21243:8;21228:99;;;;;;21295:10;21228:99;;;;;;21307:15;21243:8;21307:19;21228:99;;;;;;;;;;;;;;;;;;;;;21243:8;;;;;21228:49;;21278:6;;21243:8;;21289:4;;21295:10;;21307:19;;21228:99;;;;;;;;;;;;;;21243:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21228:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21228:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21228:99:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;21228:99:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;21228:99:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;21228:99:0;;421:4:-1;412:14;;;;21228:99:0;;;;;412:14:-1;21228:99:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21228:99:0;;;;;;;;;;;;20544:795;;21381:1;21359:19;;;:23;21398:52;;;;;;;;-1:-1:-1;;;;;21398:52:0;;;;;;;;21410:10;;21398:52;;;;;;;;;;20031:1427;;;;:::o;15836:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15321:19::-;;;-1:-1:-1;;;;;15321:19:0;;:::o;15492:23::-;;;;:::o;15376:::-;;;-1:-1:-1;;;;;15376:23:0;;:::o;13849:20::-;;;-1:-1:-1;;;;;13849:20:0;;:::o;17926:331::-;18026:4;;17994:73;;-1:-1:-1;;;;;18026:4:0;18032:10;18052:4;18059:7;17994:31;:73::i;:::-;18110:7;;18096:36;;;-1:-1:-1;;;18096:36:0;;-1:-1:-1;;;;;18096:36:0;;;;;;;;;18110:7;;;;;18096:29;;:36;;;;;;;;;;;;;;18110:7;18096:36;;;2:2:-1;;;;27:1;24;17:12;2:2;18096:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18096:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18096:36:0;18088:73;;;;;-1:-1:-1;;;18088:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18088:73:0;;;;;;;;;;;;;;;18172:26;18183:5;18190:7;18172:10;:26::i;:::-;18224:25;;;;;;;;-1:-1:-1;;;;;18224:25:0;;;;;;;;;;;;;17926:331;;:::o;14135:210::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14211:23:0;::::1;14203:60;;;::::0;;-1:-1:-1;;;14203:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14292:5;::::0;;14279:30:::1;::::0;-1:-1:-1;;;;;14279:30:0;;::::1;::::0;14292:5;::::1;::::0;14279:30:::1;::::0;::::1;14320:5;:17:::0;;-1:-1:-1;;;;;;14320:17:0::1;-1:-1:-1::0;;;;;14320:17:0;;;::::1;::::0;;;::::1;::::0;;14135:210::o;16357:459::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;16455:4:::1;::::0;16479:11:::1;::::0;16449:42:::1;::::0;;-1:-1:-1;;;16449:42:0;;-1:-1:-1;;;;;16449:42:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;16455:4;;;::::1;::::0;16449:19:::1;::::0;:42;;;;;::::1;::::0;;;;;;;;16455:4:::1;::::0;16449:42;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;16449:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16449:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16506:6:0::1;::::0;-1:-1:-1;16502:307:0::1;16517:17:::0;;::::1;16502:307;;;16582:1;16558:10;:21;16569:6;;16576:1;16569:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16569:9:0::1;-1:-1:-1::0;;;;;16558:21:0::1;-1:-1:-1::0;;;;;16558:21:0::1;;;;;;;;;;;;;:25;16555:243;;;16614:8;-1:-1:-1::0;;;;;16604:29:0::1;;16634:6;;16641:1;16634:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16634:9:0::1;16645:10;:21;16656:6;;16663:1;16656:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16656:9:0::1;-1:-1:-1::0;;;;;16645:21:0::1;-1:-1:-1::0;;;;;16645:21:0::1;;;;;;;;;;;;;16604:63;;;;;;;;;;;;;-1:-1:-1::0;;;;;16604:63:0::1;-1:-1:-1::0;;;;;16604:63:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16604:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16604:63:0;;;;16700:38;16716:10;:21;16727:6;;16734:1;16727:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16727:9:0::1;-1:-1:-1::0;;;;;16716:21:0::1;-1:-1:-1::0;;;;;16716:21:0::1;;;;;;;;;;;;;16700:11;;:15;;:38;;;;:::i;:::-;16686:11;:52:::0;16781:1:::1;16757:10;16781:1:::0;16768:6;;16775:1;16768:9;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16768:9:0::1;-1:-1:-1::0;;;;;16757:21:0::1;-1:-1:-1::0;;;;;16757:21:0::1;;;;;;;;;;;;:25;;;;16555:243;16535:3;;16502:307;;;;16357:459:::0;;;:::o;18269:181::-;18373:8;;-1:-1:-1;;;;;18373:8:0;18359:10;:22;18351:56;;;;;-1:-1:-1;;;18351:56:0;;;;;;;;;;;;-1:-1:-1;;;18351:56:0;;;;;;;;;;;;;;;18418:24;18429:5;18436;18418:10;:24::i;:::-;18269:181;;:::o;15406:19::-;;;-1:-1:-1;;;;;15406:19:0;;:::o;16025:320::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;16180:4:::1;:12:::0;;-1:-1:-1;;;;;;16180:12:0;;::::1;-1:-1:-1::0;;;;;16180:12:0;;::::1;;::::0;;;16203:4:::1;:12:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16226:7:::1;:18:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16255:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16286:6:::1;:16:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;16313:10:::1;:24:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;16025:320::o;18462:277::-;18567:8;;-1:-1:-1;;;;;18567:8:0;18553:10;:22;18545:56;;;;;-1:-1:-1;;;18545:56:0;;;;;;;;;;;;-1:-1:-1;;;18545:56:0;;;;;;;;;;;;;;;18634:7;;18620:36;;;-1:-1:-1;;;18620:36:0;;-1:-1:-1;;;;;18620:36:0;;;;;;;;;18634:7;;;;;18620:29;;:36;;;;;;;;;;;;;;18634:7;18620:36;;;2:2:-1;;;;27:1;24;17:12;2:2;18620:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18620:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18620:36:0;18612:73;;;;;-1:-1:-1;;;18612:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18612:73:0;;;;;;;;;;;;;;;18706:25;18718:5;18725;18706:11;:25::i;15432:21::-;;;-1:-1:-1;;;;;15432:21:0;;:::o;16828:1086::-;16930:8;;-1:-1:-1;;;;;16930:8:0;16916:10;:22;16908:56;;;;;-1:-1:-1;;;16908:56:0;;;;;;;;;;;;-1:-1:-1;;;16908:56:0;;;;;;;;;;;;;;;16998:4;;16992:36;;;-1:-1:-1;;;16992:36:0;;17022:4;16992:36;;;;;;16975:14;;-1:-1:-1;;;;;16998:4:0;;16992:21;;:36;;;;;;;;;;;;;;16998:4;16992:36;;;2:2:-1;;;;27:1;24;17:12;2:2;16992:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16992:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16992:36:0;17061:11;;16992:36;;-1:-1:-1;17077:7:0;;17047:26;;16992:36;;17047:26;:13;:26;:::i;:::-;:37;;17039:79;;;;;-1:-1:-1;;;17039:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17139:17;17159:94;17247:5;17159:83;17234:7;17172:6;;;;;;;;;-1:-1:-1;;;;;17172:6:0;-1:-1:-1;;;;;17159:35:0;;-1:-1:-1;;;17159:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17159:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17159:70:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17159:70:0;;:83;:74;:83;:::i;:94::-;17139:114;;17264:31;17275:5;17282:12;17264:10;:31::i;:::-;17316:17;17336:25;:7;17348:12;17336:25;:11;:25;:::i;:::-;17409:6;;17396:78;;;-1:-1:-1;;;17396:78:0;;2460:40;17396:78;;;;;;17316:45;;-1:-1:-1;17372:21:0;;17396:107;;17497:5;;17396:96;;17316:45;;-1:-1:-1;;;;;17409:6:0;;17396:35;;:78;;;;;;;;;;;;;;17409:6;17396:78;;;2:2:-1;;;;27:1;24;17:12;17396:107:0;17372:131;-1:-1:-1;17517:20:0;;17514:186;;17582:4;;17588:10;;17554:63;;-1:-1:-1;;;;;17582:4:0;;;;17588:10;17600:16;17554:27;:63::i;:::-;17649:10;;17632:56;;;-1:-1:-1;;;17632:56:0;;;;;;;;;;-1:-1:-1;;;;;17649:10:0;;;;17632:38;;:56;;;;;;;;;;;;;;;17649:10;;17632:56;;;2:2:-1;;;;27:1;24;17:12;2:2;17632:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17632:56:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17514:186:0;17750:1;17713:34;:12;17730:16;17713:34;:16;:34;:::i;:::-;:38;17710:151;;;17796:4;;17768:81;;-1:-1:-1;;;;;17796:4:0;;17814:34;:12;17831:16;17814:34;:16;:34;:::i;:::-;17768:27;:81::i;:::-;17876:30;;;;;;;;-1:-1:-1;;;;;17876:30:0;;;;;;;;;;;;;16828:1086;;;;;;:::o;15969:43::-;;;;;;;;;;;;;:::o;15911:51::-;;;;;;;;;;;;;:::o;4908:471::-;4966:7;5211:6;5207:47;;-1:-1:-1;5241:1:0;5234:8;;5207:47;5278:5;;;5282:1;5278;:5;:1;5302:5;;;;;:10;5294:56;;;;-1:-1:-1;;;5294:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5370:1;4908:471;-1:-1:-1;;;4908:471:0:o;5855:132::-;5913:7;5940:39;5944:1;5947;5940:39;;;;;;;;;;;;;;;;;:3;:39::i;3554:181::-;3612:7;3644:5;;;3668:6;;;;3660:46;;;;;-1:-1:-1;;;3660:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:136;4076:7;4103:43;4107:1;4110;4103:43;;;;;;;;;;;;;;;;;:3;:43::i;19169:565::-;19261:7;;19247:36;;;-1:-1:-1;;;19247:36:0;;-1:-1:-1;;;;;19247:36:0;;;;;;;;;19261:7;;;;;19247:29;;:36;;;;;;;;;;;;;;19261:7;19247:36;;;2:2:-1;;;;27:1;24;17:12;2:2;19247:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19247:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19247:36:0;19239:73;;;;;-1:-1:-1;;;19239:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19239:73:0;;;;;;;;;;;;;;;19329:12;19355:5;-1:-1:-1;;;;;19344:27:0;;19372:5;19344:34;;;;;;;;;;;;;-1:-1:-1;;;;;19344:34:0;-1:-1:-1;;;;;19344:34:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19344:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19344:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19344:34:0;-1:-1:-1;;;;;19414:25:0;;;19389:22;19414:25;;;:18;19344:34;19414:25;;;;;;;;19478:12;;;;;:5;:12;;;;;:19;;;;;;;;;19568;;19344:34;;-1:-1:-1;19414:25:0;;19523:65;;:40;19558:4;19523:30;19344:34;19414:25;19523:30;:11;:30;:::i;:65::-;19621:19;;;;19508:80;;-1:-1:-1;19621:32:0;;19508:80;19621:32;:23;:32;:::i;:::-;19599:19;;;:54;19686:40;19721:4;19686:30;:7;19698:17;19686:30;:11;:30;:::i;:40::-;19664:62;;;-1:-1:-1;;;;;19169:565:0:o;12759:361::-;12954:45;;;-1:-1:-1;;;;;12954:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12954:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12943:57:0;;;;12908:12;;12922:17;;12943:10;;;;12954:45;12943:57;;;25:18:-1;12943:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12943:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;12907:93:0;;;;13019:7;:57;;;;-1:-1:-1;13031:11:0;;:16;;:44;;;13062:4;13051:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13051:24:0;13031:44;13011:101;;;;;-1:-1:-1;;;13011:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12759:361;;;;;:::o;13128:402::-;13353:51;;;-1:-1:-1;;;;;13353:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13353:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13342:63:0;;;;13307:12;;13321:17;;13342:10;;;;13353:51;13342:63;;;25:18:-1;13342:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13342:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;13306:99:0;;;;13424:7;:57;;;;-1:-1:-1;13436:11:0;;:16;;:44;;;13467:4;13456:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13456:24:0;13436:44;13416:106;;;;-1:-1:-1;;;13416:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13128:402;;;;;;:::o;18751:406::-;-1:-1:-1;;;;;18840:17:0;;;;;;:10;:17;;;;;;:30;;18862:7;18840:30;:21;:30;:::i;:::-;-1:-1:-1;;;;;18820:17:0;;;;;;:10;:17;;;;;;;;:50;;;;18905:31;;-1:-1:-1;;;18905:31:0;;;;18820:17;;18905:29;;:31;;;;;18820:17;18905:31;;;;;18820:17;18905:31;;;2:2:-1;;;;27:1;24;17:12;2:2;18905:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18905:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18905:31:0;;-1:-1:-1;18950:20:0;;18947:203;;19015:70;19045:39;19067:16;19045:17;:7;19057:4;19045:17;:11;:17;:::i;:39::-;-1:-1:-1;;;;;19015:25:0;;;;;;:18;:25;;;;;;;:70;:29;:70;:::i;:::-;-1:-1:-1;;;;;18987:25:0;;;;;;:18;:25;;;;;:98;19114:11;;:24;;19130:7;19114:24;:15;:24;:::i;:::-;19100:11;:38;18947:203;18751:406;;;:::o;19746:273::-;19817:12;19843:5;-1:-1:-1;;;;;19832:27:0;;19860:5;19832:34;;;;;;;;;;;;;-1:-1:-1;;;;;19832:34:0;-1:-1:-1;;;;;19832:34:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19832:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19832:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19832:34:0;-1:-1:-1;;;;;19902:25:0;;19877:22;19902:25;;;:18;19832:34;19902:25;;;;;19832:34;;-1:-1:-1;19971:40:0;20006:4;19971:30;19832:34;19902:25;19971:30;:11;:30;:::i;:40::-;-1:-1:-1;;;;;19938:12:0;;;;;;;:5;:12;;;;;;;;:19;;;;;;;;;;;;;;:73;;;;-1:-1:-1;;19746:273:0:o;6483:278::-;6569:7;6604:12;6597:5;6589:28;;;;-1:-1:-1;;;6589:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6589:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:9;6644:1;6640;:5;;;;;;;6483:278;-1:-1:-1;;;;;6483:278:0:o;4457:192::-;4543:7;4579:12;4571:6;;;;4563:29;;;;-1:-1:-1;;;4563:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4563:29:0;-1:-1:-1;;;4615:5:0;;;4457:192::o;15254:6638::-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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