ETH Price: $2,533.80 (+3.07%)

Contract

0xD33E77e73880A72Fd30e363eB5948f160323F4E2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy With ETH198500342024-05-11 23:20:47109 days ago1715469647IN
0xD33E77e7...60323F4E2
0.02980416 ETH0.000400633.53590947
Buy With ETH198098982024-05-06 8:37:59114 days ago1714984679IN
0xD33E77e7...60323F4E2
0.1581538 ETH0.0009956210.34898259
Buy With ETH198091282024-05-06 6:01:59114 days ago1714975319IN
0xD33E77e7...60323F4E2
0.06718406 ETH0.000568195.0147266
Buy With ETH197999242024-05-04 23:08:59116 days ago1714864139IN
0xD33E77e7...60323F4E2
0.016666 ETH0.000389524.04885976
Buy With ETH197998762024-05-04 22:59:23116 days ago1714863563IN
0xD33E77e7...60323F4E2
0.00243532 ETH0.000469254.87766997
Buy With ETH197958022024-05-04 9:19:11116 days ago1714814351IN
0xD33E77e7...60323F4E2
0.0025 ETH0.000730927.5975604
Buy With ETH197913412024-05-03 18:21:11117 days ago1714760471IN
0xD33E77e7...60323F4E2
0.0013 ETH0.000515925.36278989
Buy With ETH197912012024-05-03 17:53:11117 days ago1714758791IN
0xD33E77e7...60323F4E2
0.0045 ETH0.000711487.3955599
Buy With ETH197883672024-05-03 8:22:11117 days ago1714724531IN
0xD33E77e7...60323F4E2
0.00258472 ETH0.000728336.42807496
Buy With ETH197877032024-05-03 6:09:23117 days ago1714716563IN
0xD33E77e7...60323F4E2
0.24 ETH0.000514975.35291663
Buy With ETH197876312024-05-03 5:54:47117 days ago1714715687IN
0xD33E77e7...60323F4E2
0.02 ETH0.000617485.44974638
Buy Token With U...197873382024-05-03 4:55:35117 days ago1714712135IN
0xD33E77e7...60323F4E2
0 ETH0.000648345.42761156
Buy With ETH197867952024-05-03 3:05:59117 days ago1714705559IN
0xD33E77e7...60323F4E2
0.00612302 ETH0.000575765.98473782
Buy With ETH197862452024-05-03 1:15:11117 days ago1714698911IN
0xD33E77e7...60323F4E2
0.054 ETH0.000592626.16004809
Buy With ETH197861642024-05-03 0:58:59117 days ago1714697939IN
0xD33E77e7...60323F4E2
0.01 ETH0.000564264.98009456
Buy With ETH197861592024-05-03 0:57:59117 days ago1714697879IN
0xD33E77e7...60323F4E2
0.00015 ETH0.000508174.48503113
Buy With ETH197861492024-05-03 0:55:59117 days ago1714697759IN
0xD33E77e7...60323F4E2
0.14 ETH0.000502355.22166326
Buy With ETH197860322024-05-03 0:32:35117 days ago1714696355IN
0xD33E77e7...60323F4E2
0.008 ETH0.000511935.32133549
Buy With ETH197860152024-05-03 0:29:11117 days ago1714696151IN
0xD33E77e7...60323F4E2
0.54247 ETH0.000544265.65736421
Buy Token With U...197859832024-05-03 0:22:47117 days ago1714695767IN
0xD33E77e7...60323F4E2
0 ETH0.000576115.0248735
Buy With ETH197858342024-05-02 23:52:59117 days ago1714693979IN
0xD33E77e7...60323F4E2
0.0549 ETH0.000613916.38132932
Buy With ETH197857832024-05-02 23:42:47118 days ago1714693367IN
0xD33E77e7...60323F4E2
0.03858131 ETH0.000593055.23416721
Buy With ETH197855092024-05-02 22:47:47118 days ago1714690067IN
0xD33E77e7...60323F4E2
0.003 ETH0.00045374.00424067
Buy With ETH197852382024-05-02 21:52:35118 days ago1714686755IN
0xD33E77e7...60323F4E2
0.024 ETH0.000589426.12678599
Buy With ETH197852352024-05-02 21:51:59118 days ago1714686719IN
0xD33E77e7...60323F4E2
0.052 ETH0.000846548.79936053
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
198500342024-05-11 23:20:47109 days ago1715469647
0xD33E77e7...60323F4E2
0.02980416 ETH
198098982024-05-06 8:37:59114 days ago1714984679
0xD33E77e7...60323F4E2
0.1581538 ETH
198091282024-05-06 6:01:59114 days ago1714975319
0xD33E77e7...60323F4E2
0.06718406 ETH
197999242024-05-04 23:08:59116 days ago1714864139
0xD33E77e7...60323F4E2
0.016666 ETH
197998762024-05-04 22:59:23116 days ago1714863563
0xD33E77e7...60323F4E2
0.00243532 ETH
197958022024-05-04 9:19:11116 days ago1714814351
0xD33E77e7...60323F4E2
0.0025 ETH
197913412024-05-03 18:21:11117 days ago1714760471
0xD33E77e7...60323F4E2
0.0013 ETH
197912012024-05-03 17:53:11117 days ago1714758791
0xD33E77e7...60323F4E2
0.0045 ETH
197883672024-05-03 8:22:11117 days ago1714724531
0xD33E77e7...60323F4E2
0.00258472 ETH
197877032024-05-03 6:09:23117 days ago1714716563
0xD33E77e7...60323F4E2
0.24 ETH
197876312024-05-03 5:54:47117 days ago1714715687
0xD33E77e7...60323F4E2
0.02 ETH
197867952024-05-03 3:05:59117 days ago1714705559
0xD33E77e7...60323F4E2
0.00612302 ETH
197862452024-05-03 1:15:11117 days ago1714698911
0xD33E77e7...60323F4E2
0.054 ETH
197861642024-05-03 0:58:59117 days ago1714697939
0xD33E77e7...60323F4E2
0.01 ETH
197861592024-05-03 0:57:59117 days ago1714697879
0xD33E77e7...60323F4E2
0.00015 ETH
197861492024-05-03 0:55:59117 days ago1714697759
0xD33E77e7...60323F4E2
0.14 ETH
197860322024-05-03 0:32:35117 days ago1714696355
0xD33E77e7...60323F4E2
0.008 ETH
197860152024-05-03 0:29:11117 days ago1714696151
0xD33E77e7...60323F4E2
0.54247 ETH
197858342024-05-02 23:52:59117 days ago1714693979
0xD33E77e7...60323F4E2
0.0549 ETH
197857832024-05-02 23:42:47118 days ago1714693367
0xD33E77e7...60323F4E2
0.03858131 ETH
197855092024-05-02 22:47:47118 days ago1714690067
0xD33E77e7...60323F4E2
0.003 ETH
197852382024-05-02 21:52:35118 days ago1714686755
0xD33E77e7...60323F4E2
0.024 ETH
197852352024-05-02 21:51:59118 days ago1714686719
0xD33E77e7...60323F4E2
0.052 ETH
197851332024-05-02 21:31:35118 days ago1714685495
0xD33E77e7...60323F4E2
0.0018 ETH
197850922024-05-02 21:23:23118 days ago1714685003
0xD33E77e7...60323F4E2
0.14 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Mrkrabs_Presale

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-31
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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




library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

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

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

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
     
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

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

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


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    
    {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor ()  {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// ETH LIVE PRICE

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}



contract Mrkrabs_Presale is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 public token;
    IERC20 public USDT;
    address payable public paymentReceiver;
    AggregatorV3Interface public priceFeedETH;

    uint256 public TokenPricePerUsdt;
    uint256 public TokenSold;
    uint256 public maxTokeninPresale;

    mapping(address => bool) public isBlacklist;
    bool public presaleStatus;
    bool public CanClaim;

    mapping(address => uint256) public Claimable;
    event Recovered(address token, uint256 amount);

    struct Phase {
        uint256 maxTokens;
        uint256 price;
    }

    Phase[] public phases;
    uint256 public currentPhase = 0;

    constructor(IERC20 _token, IERC20 _usdt,address payable _paymentReceiver,address _priceFeedETH) {
        token = _token;
        USDT=_usdt;
        priceFeedETH = AggregatorV3Interface(_priceFeedETH);
        paymentReceiver = _paymentReceiver;

        phases.push(Phase(1000000000 * 1E18, 2000 * 1E18));             // Phase 1 (1 USD for 2000 tokens)
        phases.push(Phase(1000000180.000033 * 1E18, 1636.363933884352 * 1E18));   // Phase 2 (1 USD for approximately 1636.363933884352 tokens)
        phases.push(Phase(1000000304.615478 * 1E18, 1384.615810651019 * 1E18));   // Phase 3 (1 USD for approximately 1384.615810651019 tokens)
        phases.push(Phase(1000000036.000001 * 1E18, 1200.000048000002 * 1E18));  // Phase 4 (1 USD for approximately 1200.000048000002 tokens)
        phases.push(Phase(1000000465.882572 * 1E18, 1058.824027681895 * 1E18));  // Phase 5 (1 USD for approximately 1058.824027681895 tokens)
        phases.push(Phase(100000000 * 1E18, 947.3683811634366 * 1E18));  // Phase 6 (1 USD for approximately 947.3683811634366 tokens)
        phases.push(Phase(100000000 * 1E18, 857.1428326530619 * 1E18));   // Phase 7 (1 USD for approximately 857.1428326530619 tokens)
        phases.push(Phase(100000000 * 1E18, 782.60868204158812 * 1E18));  // Phase 8 (1 USD for approximately 782.60868204158812 tokens)
        phases.push(Phase(100000000 * 1E18, 719.99999424 * 1E18));  // Phase 9 (1 USD for approximately 719.99999424 tokens)
        phases.push(Phase(100000000 * 1E18, 666.6666666666667 * 1E18));  // Phase 10 (1 USD for approximately 666.6666666666667 tokens)




        // Set initial parameters
        maxTokeninPresale = getTotalMaxTokens();
        TokenPricePerUsdt = getCurrentPhasePrice();
    }

    function getTotalMaxTokens() internal view returns (uint256) {
        uint256 totalMaxTokens;
        for (uint256 i = 0; i < phases.length; i++) {
            totalMaxTokens = totalMaxTokens.add(phases[i].maxTokens);
        }
        return totalMaxTokens;
    }

    function getCurrentPhasePrice() internal view returns (uint256) {
        return phases[currentPhase].price;
    }



    function getLatestPriceETH() public view returns (uint256) {
        (, int256 price, , , ) = priceFeedETH.latestRoundData();
        return uint256(price * 1e10);
    }

    receive() external payable {}

    function BuyWithETH() external payable {
        require(presaleStatus == true, "Presale: Presale is not started");
        require(msg.value > 0, "Presale: Unsuitable Amount");
        require(isBlacklist[msg.sender] == false, "Presale: You are blacklisted");
        require(tx.origin == msg.sender, "Presale: Caller is a contract");

        uint256 tokensToBuy = ETHToToken(msg.value);
        require(TokenSold.add(tokensToBuy) <= maxTokeninPresale, "Presale: Hardcap Reached!");

        payable(paymentReceiver).transfer(msg.value);
        Claimable[msg.sender] += tokensToBuy;
        TokenSold = TokenSold.add(tokensToBuy);

        if (TokenSold >= phases[currentPhase].maxTokens && currentPhase < phases.length - 1) {
            currentPhase++;
            maxTokeninPresale = getTotalMaxTokens();
            TokenPricePerUsdt = getCurrentPhasePrice();
        }
        uint256 claimable = Claimable[msg.sender];
        token.transfer(msg.sender, claimable);
        Claimable[msg.sender] = 0;

    }

    //buy with usdt

    function BuyTokenWithUSDT(uint256 _amt) external {

        require(TokenSold.add(getValuePerUsdt(_amt))<=maxTokeninPresale,"Hardcap Reached!");
        require(presaleStatus == true, "Presale : Presale is paused");  
        require(_amt > 0, "Presale : Unsuitable Amount"); 
        require(isBlacklist[msg.sender]==false,"Presale : you are blacklisted");
        require(tx.origin == msg.sender,"Presale : caller is a contract");

        IERC20(USDT).safeTransferFrom(msg.sender,paymentReceiver,_amt);
        uint256 tokensToBuy=getValuePerUsdt(_amt);
        Claimable[msg.sender] += tokensToBuy;
        TokenSold = TokenSold.add(tokensToBuy);

        if (TokenSold >= phases[currentPhase].maxTokens && currentPhase < phases.length - 1) {
            currentPhase++;
            maxTokeninPresale = getTotalMaxTokens();
            TokenPricePerUsdt = getCurrentPhasePrice();
        }
         uint256 claimable = Claimable[msg.sender];
        token.transfer(msg.sender, claimable);
        Claimable[msg.sender] = 0;

    }

    function setaggregatorv3(address _priceFeedETH) external onlyOwner {
        priceFeedETH = AggregatorV3Interface(_priceFeedETH);
    }


    function getValuePerUsdt(uint256 _amt) public view returns (uint256) {
        return (TokenPricePerUsdt.mul(_amt)).div(1e15);
    }

    function stopPresale() external onlyOwner {
        presaleStatus = false;
    }

    function StartClaim() external onlyOwner {
        CanClaim = true;
    }

    function StopClaim() external onlyOwner {
        CanClaim = false;
    }

    function resumePresale() external onlyOwner {
        presaleStatus = true;
    }

    function setmaxTokeninPresale(uint256 _value) external onlyOwner {
        maxTokeninPresale = _value;
    }

    function contractbalance() public view returns (uint256) {
        return address(this).balance;
    }


       function settoken(IERC20 _token,IERC20 _USDT) external onlyOwner {
        token = _token;
        USDT=_USDT;
    }


    function changeFundReceiver(address payable _paymentReceiver) external onlyOwner {
        paymentReceiver = _paymentReceiver;
    }

    function setBlacklist(address _addr, bool _state) external onlyOwner {
        isBlacklist[_addr] = _state;
    }

    function releaseFunds() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function updateTokenSold(uint256 _newTokenSold) external onlyOwner {
        require(_newTokenSold <= maxTokeninPresale, "Presale: New TokenSold exceeds maxTokeninPresale");
        TokenSold = _newTokenSold;
    }


    function ETHToToken(uint256 _amount) public view returns (uint256) {
        uint256 ETHToUsd = (_amount * (getLatestPriceETH())) / (1 ether);
        uint256 numberOfTokens = (ETHToUsd * (TokenPricePerUsdt)) / (1e27);
        return numberOfTokens;
    }

    function setStages(uint256 _totalamt, uint256 _usdtprice) external onlyOwner{
        phases.push(Phase(_totalamt, _usdtprice)); 
    }

    function resetPresalestages(uint i) external onlyOwner{
        delete phases[i];
    }
}


//ETH AGGREGATOR Mainnet :  0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 (mainnet router )

// Token:0xC79b8475750dA6a1ce41C0E83ffBcc1620FD5073

// usdt :0xdAC17F958D2ee523a2206206994597C13D831ec7

// Fee Reciver Mainnet: 0x317A01C99e19f7A66d874E3A661eEE98722710F4

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"contract IERC20","name":"_usdt","type":"address"},{"internalType":"address payable","name":"_paymentReceiver","type":"address"},{"internalType":"address","name":"_priceFeedETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"BuyTokenWithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BuyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"CanClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ETHToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StartClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TokenPricePerUsdt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_paymentReceiver","type":"address"}],"name":"changeFundReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractbalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPriceETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"getValuePerUsdt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokeninPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phases","outputs":[{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeedETH","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"resetPresalestages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalamt","type":"uint256"},{"internalType":"uint256","name":"_usdtprice","type":"uint256"}],"name":"setStages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeedETH","type":"address"}],"name":"setaggregatorv3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setmaxTokeninPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"contract IERC20","name":"_USDT","type":"address"}],"name":"settoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTokenSold","type":"uint256"}],"name":"updateTokenSold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600c553480156200001657600080fd5b5060405162002329380380620023298339810160408190526200003991620004a5565b600062000045620003a5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b038087166001600160a01b031992831617835560028054878316908416178155600480548684169085161790556003805492871692909316919091179091556040805180820182526b033b2e3c9fd0803ce80000008152686c6b935b8bbd4000006020808301918252600b80548088018255600082815294519087027f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db98181019290925593517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba94850155855180870187526b033b2e4661d114920397100081526858b51c880a459770008185019081528354808b0185558488529151918902808401929092555190850155855180870187526b033b2e4d2334138e93d160008152684b0f6787c73383b8c08185019081528354808b0185558488529151918902808401929092555190850155855180870187526b033b2e3e936a326946b51000815268410d5895c883d184808185019081528354808b0185558488529151918902808401929092555190850155855180870187526b033b2e55e13be31ec958c0008152683966229b495bb8a7c08185019081528354808b0185558488529151918902808401929092555190850155855180870187526a52b7d2dcc80cd2e400000080825268335b609b4b9b816ac08286019081528454808c0186558589529251928a0280850193909355519186019190915586518088018852818152682e773f10f5e9d8c6e08186019081528454808c0186558589529151918a0280850192909255519086015586518088018852818152682a6ce091e0d97cf9c08186019081528454808c0186558589529151918a028085019290925551908601558651808801885281815268270801d409ae7f00008186019081528454808c0186558589529151918a0280850192909255519086015586518088019097528652682423dbc92e946b2ce092860192835281549788018255935292519490930290810193909355519101556200038a620003a9565b6007556200039762000424565b60055550620005ab92505050565b3390565b60008060005b600b548110156200041e5762000407600b8281548110620003e057634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160000154836200046160201b620012711790919060201c565b91508062000415816200055e565b915050620003af565b50905090565b6000600b600c54815481106200044a57634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160010154905090565b60008062000470838562000543565b9050838110156200049e5760405162461bcd60e51b815260040162000495906200050c565b60405180910390fd5b9392505050565b60008060008060808587031215620004bb578384fd5b8451620004c88162000592565b6020860151909450620004db8162000592565b6040860151909350620004ee8162000592565b6060860151909250620005018162000592565b939692955090935050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b600082198211156200055957620005596200057c565b500190565b60006000198214156200057557620005756200057c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114620005a857600080fd5b50565b611d6e80620005bb6000396000f3fe6080604052600436106102085760003560e01c80636e34d92911610118578063a88468e7116100a0578063cb37f3b21161006f578063cb37f3b21461054c578063eec21e0c14610561578063eff6917214610581578063f2fde38b14610596578063fc0c546a146105b65761020f565b8063a88468e7146104fa578063acfb235514610502578063af2f14ca14610517578063c54e44eb146105375761020f565b80638da5cb5b116100e75780638da5cb5b1461046e57806391c1494b146104905780639ba752ce146104a5578063a464f447146104c5578063a47470b4146104da5761020f565b80636e34d9291461040f578063715018a6146104245780637a08ed481461043957806384345ee3146104595761020f565b8063333e99db1161019b57806354f63ee51161016a57806354f63ee514610390578063578cd32f146103a557806364006b69146103c557806369d89575146103e55780636b870ddf146103fa5761020f565b8063333e99db146103035780633768a1a614610330578063393d7de6146103505780633bc97240146103705761020f565b80631ad2ad1a116101d75780631ad2ad1a1461028b5780631e3a5831146102a05780632e37eef6146102c057806330e4f9aa146102ee5761020f565b80630412a0b114610214578063055ad42e1461023f578063153b0d1e1461025457806318fd84d7146102765761020f565b3661020f57005b600080fd5b34801561022057600080fd5b506102296105cb565b6040516102369190611bb0565b60405180910390f35b34801561024b57600080fd5b506102296105d1565b34801561026057600080fd5b5061027461026f36600461161f565b6105d7565b005b34801561028257600080fd5b50610229610640565b34801561029757600080fd5b50610274610646565b3480156102ac57600080fd5b506102296102bb366004611603565b610687565b3480156102cc57600080fd5b506102e06102db3660046116a0565b610699565b604051610236929190611bb9565b3480156102fa57600080fd5b506102296106c7565b34801561030f57600080fd5b5061032361031e366004611603565b6106cb565b6040516102369190611795565b34801561033c57600080fd5b5061027461034b3660046116b8565b6106e0565b34801561035c57600080fd5b5061022961036b3660046116a0565b61078d565b34801561037c57600080fd5b5061027461038b3660046116a0565b6107bd565b34801561039c57600080fd5b50610274610a21565b3480156103b157600080fd5b506102296103c03660046116a0565b610a65565b3480156103d157600080fd5b506102746103e0366004611603565b610abe565b3480156103f157600080fd5b50610274610b15565b34801561040657600080fd5b50610274610b79565b34801561041b57600080fd5b50610229610bbb565b34801561043057600080fd5b50610274610c54565b34801561044557600080fd5b50610274610454366004611603565b610cd3565b34801561046557600080fd5b50610229610d2a565b34801561047a57600080fd5b50610483610d30565b6040516102369190611744565b34801561049c57600080fd5b50610323610d3f565b3480156104b157600080fd5b506102746104c0366004611673565b610d4d565b3480156104d157600080fd5b50610274610db0565b3480156104e657600080fd5b506102746104f53660046116a0565b610df6565b610274610e52565b34801561050e57600080fd5b506103236110cd565b34801561052357600080fd5b506102746105323660046116a0565b6110d6565b34801561054357600080fd5b50610483611110565b34801561055857600080fd5b5061048361111f565b34801561056d57600080fd5b5061027461057c3660046116a0565b61112e565b34801561058d57600080fd5b5061048361119d565b3480156105a257600080fd5b506102746105b1366004611603565b6111ac565b3480156105c257600080fd5b50610483611262565b60055481565b600c5481565b6105df6112a9565b6000546001600160a01b039081169116146106155760405162461bcd60e51b815260040161060c9061196d565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60065481565b61064e6112a9565b6000546001600160a01b0390811691161461067b5760405162461bcd60e51b815260040161060c9061196d565b6009805460ff19169055565b600a6020526000908152604090205481565b600b81815481106106a957600080fd5b60009182526020909120600290910201805460019091015490915082565b4790565b60086020526000908152604090205460ff1681565b6106e86112a9565b6000546001600160a01b039081169116146107155760405162461bcd60e51b815260040161060c9061196d565b6040805180820190915291825260208201908152600b805460018101825560009190915291517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9600290930292830155517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba90910155565b60006107b566038d7ea4c680006107af846005546112ad90919063ffffffff16565b906112f2565b90505b919050565b6007546107d56107cc8361078d565b60065490611271565b11156107f35760405162461bcd60e51b815260040161060c906119a2565b60095460ff16151560011461081a5760405162461bcd60e51b815260040161060c906119cc565b6000811161083a5760405162461bcd60e51b815260040161060c90611887565b3360009081526008602052604090205460ff161561086a5760405162461bcd60e51b815260040161060c90611a53565b3233146108895760405162461bcd60e51b815260040161060c90611b79565b6003546002546108a8916001600160a01b039182169133911684611334565b60006108b38261078d565b336000908152600a60205260408120805492935083929091906108d7908490611bc7565b90915550506006546108e99082611271565b600681905550600b600c548154811061091257634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160000154600654101580156109445750600b5461093f90600190611ca1565b600c54105b1561097557600c805490600061095983611ce4565b9190505550610966611392565b6007556109716113f8565b6005555b336000818152600a60205260409081902054600154915163a9059cbb60e01b815290926001600160a01b039092169163a9059cbb916109b99190859060040161177c565b602060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611657565b5050336000908152600a60205260408120555050565b610a296112a9565b6000546001600160a01b03908116911614610a565760405162461bcd60e51b815260040161060c9061196d565b6009805460ff19166001179055565b600080670de0b6b3a7640000610a79610bbb565b610a839085611c82565b610a8d9190611bdf565b905060006b033b2e3c9fd0803ce800000060055483610aac9190611c82565b610ab69190611bdf565b949350505050565b610ac66112a9565b6000546001600160a01b03908116911614610af35760405162461bcd60e51b815260040161060c9061196d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610b1d6112a9565b6000546001600160a01b03908116911614610b4a5760405162461bcd60e51b815260040161060c9061196d565b60405133904780156108fc02916000818181858888f19350505050158015610b76573d6000803e3d6000fd5b50565b610b816112a9565b6000546001600160a01b03908116911614610bae5760405162461bcd60e51b815260040161060c9061196d565b6009805461ff0019169055565b6004805460408051633fabe5a360e21b8152905160009384936001600160a01b03169263feaf968c928183019260a092829003018186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906116d9565b505050915050806402540be400610c4e9190611bff565b91505090565b610c5c6112a9565b6000546001600160a01b03908116911614610c895760405162461bcd60e51b815260040161060c9061196d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610cdb6112a9565b6000546001600160a01b03908116911614610d085760405162461bcd60e51b815260040161060c9061196d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b6000546001600160a01b031690565b600954610100900460ff1681565b610d556112a9565b6000546001600160a01b03908116911614610d825760405162461bcd60e51b815260040161060c9061196d565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b610db86112a9565b6000546001600160a01b03908116911614610de55760405162461bcd60e51b815260040161060c9061196d565b6009805461ff001916610100179055565b610dfe6112a9565b6000546001600160a01b03908116911614610e2b5760405162461bcd60e51b815260040161060c9061196d565b600754811115610e4d5760405162461bcd60e51b815260040161060c90611a03565b600655565b60095460ff161515600114610e795760405162461bcd60e51b815260040161060c90611a8a565b60003411610e995760405162461bcd60e51b815260040161060c906118f5565b3360009081526008602052604090205460ff1615610ec95760405162461bcd60e51b815260040161060c90611819565b323314610ee85760405162461bcd60e51b815260040161060c906118be565b6000610ef334610a65565b9050600754610f0d8260065461127190919063ffffffff16565b1115610f2b5760405162461bcd60e51b815260040161060c90611af8565b6003546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610f64573d6000803e3d6000fd5b50336000908152600a602052604081208054839290610f84908490611bc7565b9091555050600654610f969082611271565b600681905550600b600c5481548110610fbf57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016000015460065410158015610ff15750600b54610fec90600190611ca1565b600c54105b1561102257600c805490600061100683611ce4565b9190505550611013611392565b60075561101e6113f8565b6005555b336000818152600a60205260409081902054600154915163a9059cbb60e01b815290926001600160a01b039092169163a9059cbb916110669190859060040161177c565b602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190611657565b5050336000908152600a602052604081205550565b60095460ff1681565b6110de6112a9565b6000546001600160a01b0390811691161461110b5760405162461bcd60e51b815260040161060c9061196d565b600755565b6002546001600160a01b031681565b6003546001600160a01b031681565b6111366112a9565b6000546001600160a01b039081169116146111635760405162461bcd60e51b815260040161060c9061196d565b600b818154811061118457634e487b7160e01b600052603260045260246000fd5b6000918252602082206002909102018181556001015550565b6004546001600160a01b031681565b6111b46112a9565b6000546001600160a01b039081169116146111e15760405162461bcd60e51b815260040161060c9061196d565b6001600160a01b0381166112075760405162461bcd60e51b815260040161060c906117d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60008061127e8385611bc7565b9050838110156112a05760405162461bcd60e51b815260040161060c90611850565b90505b92915050565b3390565b6000826112bc575060006112a3565b60006112c88385611c82565b9050826112d58583611bdf565b146112a05760405162461bcd60e51b815260040161060c9061192c565b60006112a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611434565b61138c846323b872dd60e01b85858560405160240161135593929190611758565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261146d565b50505050565b60008060005b600b548110156113f2576113de600b82815481106113c657634e487b7160e01b600052603260045260246000fd5b60009182526020909120600290910201548390611271565b9150806113ea81611ce4565b915050611398565b50905090565b6000600b600c548154811061141d57634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160010154905090565b600081836114555760405162461bcd60e51b815260040161060c91906117a0565b5060006114628486611bdf565b9150505b9392505050565b60006114c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115019092919063ffffffff16565b8051909150156114fc57808060200190518101906114e09190611657565b6114fc5760405162461bcd60e51b815260040161060c90611b2f565b505050565b6060610ab6848460008585611515856115aa565b6115315760405162461bcd60e51b815260040161060c90611ac1565b600080866001600160a01b0316858760405161154d9190611728565b60006040518083038185875af1925050503d806000811461158a576040519150601f19603f3d011682016040523d82523d6000602084013e61158f565b606091505b509150915061159f8282866115b0565b979650505050505050565b3b151590565b606083156115bf575081611466565b8251156115cf5782518084602001fd5b8160405162461bcd60e51b815260040161060c91906117a0565b805169ffffffffffffffffffff811681146107b857600080fd5b600060208284031215611614578081fd5b81356112a081611d15565b60008060408385031215611631578081fd5b823561163c81611d15565b9150602083013561164c81611d2a565b809150509250929050565b600060208284031215611668578081fd5b81516112a081611d2a565b60008060408385031215611685578182fd5b823561169081611d15565b9150602083013561164c81611d15565b6000602082840312156116b1578081fd5b5035919050565b600080604083850312156116ca578182fd5b50508035926020909101359150565b600080600080600060a086880312156116f0578081fd5b6116f9866115e9565b945060208601519350604086015192506060860151915061171c608087016115e9565b90509295509295909350565b6000825161173a818460208701611cb8565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526117bf816040850160208701611cb8565b601f01601f19169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f50726573616c653a20596f752061726520626c61636b6c697374656400000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000604082015260600190565b6020808252601d908201527f50726573616c653a2043616c6c6572206973206120636f6e7472616374000000604082015260600190565b6020808252601a908201527f50726573616c653a20556e7375697461626c6520416d6f756e74000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f4861726463617020526561636865642160801b604082015260600190565b6020808252601b908201527f50726573616c65203a2050726573616c65206973207061757365640000000000604082015260600190565b60208082526030908201527f50726573616c653a204e657720546f6b656e536f6c642065786365656473206d60408201526f6178546f6b656e696e50726573616c6560801b606082015260800190565b6020808252601d908201527f50726573616c65203a20796f752061726520626c61636b6c6973746564000000604082015260600190565b6020808252601f908201527f50726573616c653a2050726573616c65206973206e6f74207374617274656400604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526019908201527f50726573616c653a204861726463617020526561636865642100000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f50726573616c65203a2063616c6c6572206973206120636f6e74726163740000604082015260600190565b90815260200190565b918252602082015260400190565b60008219821115611bda57611bda611cff565b500190565b600082611bfa57634e487b7160e01b81526012600452602481fd5b500490565b60006001600160ff1b0381841382841380821686840486111615611c2557611c25611cff565b600160ff1b84871282811687830589121615611c4357611c43611cff565b858712925087820587128484161615611c5e57611c5e611cff565b87850587128184161615611c7457611c74611cff565b505050929093029392505050565b6000816000190483118215151615611c9c57611c9c611cff565b500290565b600082821015611cb357611cb3611cff565b500390565b60005b83811015611cd3578181015183820152602001611cbb565b8381111561138c5750506000910152565b6000600019821415611cf857611cf8611cff565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b7657600080fd5b8015158114610b7657600080fdfea2646970667358221220f625e0231d5d7aa1698e5367649bd3433da6227ad21ea14b44db37e78d50ac9564736f6c63430008000033000000000000000000000000c79b8475750da6a1ce41c0e83ffbcc1620fd5073000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000317a01c99e19f7a66d874e3a661eee98722710f40000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419

Deployed Bytecode

0x6080604052600436106102085760003560e01c80636e34d92911610118578063a88468e7116100a0578063cb37f3b21161006f578063cb37f3b21461054c578063eec21e0c14610561578063eff6917214610581578063f2fde38b14610596578063fc0c546a146105b65761020f565b8063a88468e7146104fa578063acfb235514610502578063af2f14ca14610517578063c54e44eb146105375761020f565b80638da5cb5b116100e75780638da5cb5b1461046e57806391c1494b146104905780639ba752ce146104a5578063a464f447146104c5578063a47470b4146104da5761020f565b80636e34d9291461040f578063715018a6146104245780637a08ed481461043957806384345ee3146104595761020f565b8063333e99db1161019b57806354f63ee51161016a57806354f63ee514610390578063578cd32f146103a557806364006b69146103c557806369d89575146103e55780636b870ddf146103fa5761020f565b8063333e99db146103035780633768a1a614610330578063393d7de6146103505780633bc97240146103705761020f565b80631ad2ad1a116101d75780631ad2ad1a1461028b5780631e3a5831146102a05780632e37eef6146102c057806330e4f9aa146102ee5761020f565b80630412a0b114610214578063055ad42e1461023f578063153b0d1e1461025457806318fd84d7146102765761020f565b3661020f57005b600080fd5b34801561022057600080fd5b506102296105cb565b6040516102369190611bb0565b60405180910390f35b34801561024b57600080fd5b506102296105d1565b34801561026057600080fd5b5061027461026f36600461161f565b6105d7565b005b34801561028257600080fd5b50610229610640565b34801561029757600080fd5b50610274610646565b3480156102ac57600080fd5b506102296102bb366004611603565b610687565b3480156102cc57600080fd5b506102e06102db3660046116a0565b610699565b604051610236929190611bb9565b3480156102fa57600080fd5b506102296106c7565b34801561030f57600080fd5b5061032361031e366004611603565b6106cb565b6040516102369190611795565b34801561033c57600080fd5b5061027461034b3660046116b8565b6106e0565b34801561035c57600080fd5b5061022961036b3660046116a0565b61078d565b34801561037c57600080fd5b5061027461038b3660046116a0565b6107bd565b34801561039c57600080fd5b50610274610a21565b3480156103b157600080fd5b506102296103c03660046116a0565b610a65565b3480156103d157600080fd5b506102746103e0366004611603565b610abe565b3480156103f157600080fd5b50610274610b15565b34801561040657600080fd5b50610274610b79565b34801561041b57600080fd5b50610229610bbb565b34801561043057600080fd5b50610274610c54565b34801561044557600080fd5b50610274610454366004611603565b610cd3565b34801561046557600080fd5b50610229610d2a565b34801561047a57600080fd5b50610483610d30565b6040516102369190611744565b34801561049c57600080fd5b50610323610d3f565b3480156104b157600080fd5b506102746104c0366004611673565b610d4d565b3480156104d157600080fd5b50610274610db0565b3480156104e657600080fd5b506102746104f53660046116a0565b610df6565b610274610e52565b34801561050e57600080fd5b506103236110cd565b34801561052357600080fd5b506102746105323660046116a0565b6110d6565b34801561054357600080fd5b50610483611110565b34801561055857600080fd5b5061048361111f565b34801561056d57600080fd5b5061027461057c3660046116a0565b61112e565b34801561058d57600080fd5b5061048361119d565b3480156105a257600080fd5b506102746105b1366004611603565b6111ac565b3480156105c257600080fd5b50610483611262565b60055481565b600c5481565b6105df6112a9565b6000546001600160a01b039081169116146106155760405162461bcd60e51b815260040161060c9061196d565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60065481565b61064e6112a9565b6000546001600160a01b0390811691161461067b5760405162461bcd60e51b815260040161060c9061196d565b6009805460ff19169055565b600a6020526000908152604090205481565b600b81815481106106a957600080fd5b60009182526020909120600290910201805460019091015490915082565b4790565b60086020526000908152604090205460ff1681565b6106e86112a9565b6000546001600160a01b039081169116146107155760405162461bcd60e51b815260040161060c9061196d565b6040805180820190915291825260208201908152600b805460018101825560009190915291517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9600290930292830155517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba90910155565b60006107b566038d7ea4c680006107af846005546112ad90919063ffffffff16565b906112f2565b90505b919050565b6007546107d56107cc8361078d565b60065490611271565b11156107f35760405162461bcd60e51b815260040161060c906119a2565b60095460ff16151560011461081a5760405162461bcd60e51b815260040161060c906119cc565b6000811161083a5760405162461bcd60e51b815260040161060c90611887565b3360009081526008602052604090205460ff161561086a5760405162461bcd60e51b815260040161060c90611a53565b3233146108895760405162461bcd60e51b815260040161060c90611b79565b6003546002546108a8916001600160a01b039182169133911684611334565b60006108b38261078d565b336000908152600a60205260408120805492935083929091906108d7908490611bc7565b90915550506006546108e99082611271565b600681905550600b600c548154811061091257634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160000154600654101580156109445750600b5461093f90600190611ca1565b600c54105b1561097557600c805490600061095983611ce4565b9190505550610966611392565b6007556109716113f8565b6005555b336000818152600a60205260409081902054600154915163a9059cbb60e01b815290926001600160a01b039092169163a9059cbb916109b99190859060040161177c565b602060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611657565b5050336000908152600a60205260408120555050565b610a296112a9565b6000546001600160a01b03908116911614610a565760405162461bcd60e51b815260040161060c9061196d565b6009805460ff19166001179055565b600080670de0b6b3a7640000610a79610bbb565b610a839085611c82565b610a8d9190611bdf565b905060006b033b2e3c9fd0803ce800000060055483610aac9190611c82565b610ab69190611bdf565b949350505050565b610ac66112a9565b6000546001600160a01b03908116911614610af35760405162461bcd60e51b815260040161060c9061196d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610b1d6112a9565b6000546001600160a01b03908116911614610b4a5760405162461bcd60e51b815260040161060c9061196d565b60405133904780156108fc02916000818181858888f19350505050158015610b76573d6000803e3d6000fd5b50565b610b816112a9565b6000546001600160a01b03908116911614610bae5760405162461bcd60e51b815260040161060c9061196d565b6009805461ff0019169055565b6004805460408051633fabe5a360e21b8152905160009384936001600160a01b03169263feaf968c928183019260a092829003018186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906116d9565b505050915050806402540be400610c4e9190611bff565b91505090565b610c5c6112a9565b6000546001600160a01b03908116911614610c895760405162461bcd60e51b815260040161060c9061196d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610cdb6112a9565b6000546001600160a01b03908116911614610d085760405162461bcd60e51b815260040161060c9061196d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b6000546001600160a01b031690565b600954610100900460ff1681565b610d556112a9565b6000546001600160a01b03908116911614610d825760405162461bcd60e51b815260040161060c9061196d565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b610db86112a9565b6000546001600160a01b03908116911614610de55760405162461bcd60e51b815260040161060c9061196d565b6009805461ff001916610100179055565b610dfe6112a9565b6000546001600160a01b03908116911614610e2b5760405162461bcd60e51b815260040161060c9061196d565b600754811115610e4d5760405162461bcd60e51b815260040161060c90611a03565b600655565b60095460ff161515600114610e795760405162461bcd60e51b815260040161060c90611a8a565b60003411610e995760405162461bcd60e51b815260040161060c906118f5565b3360009081526008602052604090205460ff1615610ec95760405162461bcd60e51b815260040161060c90611819565b323314610ee85760405162461bcd60e51b815260040161060c906118be565b6000610ef334610a65565b9050600754610f0d8260065461127190919063ffffffff16565b1115610f2b5760405162461bcd60e51b815260040161060c90611af8565b6003546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610f64573d6000803e3d6000fd5b50336000908152600a602052604081208054839290610f84908490611bc7565b9091555050600654610f969082611271565b600681905550600b600c5481548110610fbf57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016000015460065410158015610ff15750600b54610fec90600190611ca1565b600c54105b1561102257600c805490600061100683611ce4565b9190505550611013611392565b60075561101e6113f8565b6005555b336000818152600a60205260409081902054600154915163a9059cbb60e01b815290926001600160a01b039092169163a9059cbb916110669190859060040161177c565b602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190611657565b5050336000908152600a602052604081205550565b60095460ff1681565b6110de6112a9565b6000546001600160a01b0390811691161461110b5760405162461bcd60e51b815260040161060c9061196d565b600755565b6002546001600160a01b031681565b6003546001600160a01b031681565b6111366112a9565b6000546001600160a01b039081169116146111635760405162461bcd60e51b815260040161060c9061196d565b600b818154811061118457634e487b7160e01b600052603260045260246000fd5b6000918252602082206002909102018181556001015550565b6004546001600160a01b031681565b6111b46112a9565b6000546001600160a01b039081169116146111e15760405162461bcd60e51b815260040161060c9061196d565b6001600160a01b0381166112075760405162461bcd60e51b815260040161060c906117d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60008061127e8385611bc7565b9050838110156112a05760405162461bcd60e51b815260040161060c90611850565b90505b92915050565b3390565b6000826112bc575060006112a3565b60006112c88385611c82565b9050826112d58583611bdf565b146112a05760405162461bcd60e51b815260040161060c9061192c565b60006112a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611434565b61138c846323b872dd60e01b85858560405160240161135593929190611758565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261146d565b50505050565b60008060005b600b548110156113f2576113de600b82815481106113c657634e487b7160e01b600052603260045260246000fd5b60009182526020909120600290910201548390611271565b9150806113ea81611ce4565b915050611398565b50905090565b6000600b600c548154811061141d57634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160010154905090565b600081836114555760405162461bcd60e51b815260040161060c91906117a0565b5060006114628486611bdf565b9150505b9392505050565b60006114c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115019092919063ffffffff16565b8051909150156114fc57808060200190518101906114e09190611657565b6114fc5760405162461bcd60e51b815260040161060c90611b2f565b505050565b6060610ab6848460008585611515856115aa565b6115315760405162461bcd60e51b815260040161060c90611ac1565b600080866001600160a01b0316858760405161154d9190611728565b60006040518083038185875af1925050503d806000811461158a576040519150601f19603f3d011682016040523d82523d6000602084013e61158f565b606091505b509150915061159f8282866115b0565b979650505050505050565b3b151590565b606083156115bf575081611466565b8251156115cf5782518084602001fd5b8160405162461bcd60e51b815260040161060c91906117a0565b805169ffffffffffffffffffff811681146107b857600080fd5b600060208284031215611614578081fd5b81356112a081611d15565b60008060408385031215611631578081fd5b823561163c81611d15565b9150602083013561164c81611d2a565b809150509250929050565b600060208284031215611668578081fd5b81516112a081611d2a565b60008060408385031215611685578182fd5b823561169081611d15565b9150602083013561164c81611d15565b6000602082840312156116b1578081fd5b5035919050565b600080604083850312156116ca578182fd5b50508035926020909101359150565b600080600080600060a086880312156116f0578081fd5b6116f9866115e9565b945060208601519350604086015192506060860151915061171c608087016115e9565b90509295509295909350565b6000825161173a818460208701611cb8565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526117bf816040850160208701611cb8565b601f01601f19169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f50726573616c653a20596f752061726520626c61636b6c697374656400000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000604082015260600190565b6020808252601d908201527f50726573616c653a2043616c6c6572206973206120636f6e7472616374000000604082015260600190565b6020808252601a908201527f50726573616c653a20556e7375697461626c6520416d6f756e74000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f4861726463617020526561636865642160801b604082015260600190565b6020808252601b908201527f50726573616c65203a2050726573616c65206973207061757365640000000000604082015260600190565b60208082526030908201527f50726573616c653a204e657720546f6b656e536f6c642065786365656473206d60408201526f6178546f6b656e696e50726573616c6560801b606082015260800190565b6020808252601d908201527f50726573616c65203a20796f752061726520626c61636b6c6973746564000000604082015260600190565b6020808252601f908201527f50726573616c653a2050726573616c65206973206e6f74207374617274656400604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526019908201527f50726573616c653a204861726463617020526561636865642100000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f50726573616c65203a2063616c6c6572206973206120636f6e74726163740000604082015260600190565b90815260200190565b918252602082015260400190565b60008219821115611bda57611bda611cff565b500190565b600082611bfa57634e487b7160e01b81526012600452602481fd5b500490565b60006001600160ff1b0381841382841380821686840486111615611c2557611c25611cff565b600160ff1b84871282811687830589121615611c4357611c43611cff565b858712925087820587128484161615611c5e57611c5e611cff565b87850587128184161615611c7457611c74611cff565b505050929093029392505050565b6000816000190483118215151615611c9c57611c9c611cff565b500290565b600082821015611cb357611cb3611cff565b500390565b60005b83811015611cd3578181015183820152602001611cbb565b8381111561138c5750506000910152565b6000600019821415611cf857611cf8611cff565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b7657600080fd5b8015158114610b7657600080fdfea2646970667358221220f625e0231d5d7aa1698e5367649bd3433da6227ad21ea14b44db37e78d50ac9564736f6c63430008000033

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

000000000000000000000000c79b8475750da6a1ce41c0e83ffbcc1620fd5073000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000317a01c99e19f7a66d874e3a661eee98722710f40000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419

-----Decoded View---------------
Arg [0] : _token (address): 0xC79b8475750dA6a1ce41C0E83ffBcc1620FD5073
Arg [1] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : _paymentReceiver (address): 0x317A01C99e19f7A66d874E3A661eEE98722710F4
Arg [3] : _priceFeedETH (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c79b8475750da6a1ce41c0e83ffbcc1620fd5073
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : 000000000000000000000000317a01c99e19f7a66d874e3a661eee98722710f4
Arg [3] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419


Deployed Bytecode Sourcemap

15505:7381:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15762:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16199:31;;;;;;;;;;;;;:::i;21911:115::-;;;;;;;;;;-1:-1:-1;21911:115:0;;;;;:::i;:::-;;:::i;:::-;;15801:24;;;;;;;;;;;;;:::i;21058:82::-;;;;;;;;;;;;;:::i;15984:44::-;;;;;;;;;;-1:-1:-1;15984:44:0;;;;;:::i;:::-;;:::i;16171:21::-;;;;;;;;;;-1:-1:-1;16171:21:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;21523:104::-;;;;;;;;;;;;;:::i;15873:43::-;;;;;;;;;;-1:-1:-1;15873:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22649:137::-;;;;;;;;;;-1:-1:-1;22649:137:0;;;;;:::i;:::-;;:::i;20916:134::-;;;;;;;;;;-1:-1:-1;20916:134:0;;;;;:::i;:::-;;:::i;19705:1056::-;;;;;;;;;;-1:-1:-1;19705:1056:0;;;;;:::i;:::-;;:::i;21314:83::-;;;;;;;;;;;;;:::i;22382:259::-;;;;;;;;;;-1:-1:-1;22382:259:0;;;;;:::i;:::-;;:::i;21769:134::-;;;;;;;;;;-1:-1:-1;21769:134:0;;;;;:::i;:::-;;:::i;22034:113::-;;;;;;;;;;;;;:::i;21231:75::-;;;;;;;;;;;;;:::i;18419:172::-;;;;;;;;;;;;;:::i;14329:148::-;;;;;;;;;;;;;:::i;20769:137::-;;;;;;;;;;-1:-1:-1;20769:137:0;;;;;:::i;:::-;;:::i;15832:32::-;;;;;;;;;;;;;:::i;14119:79::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15955:20::-;;;;;;;;;;;;;:::i;21640:119::-;;;;;;;;;;-1:-1:-1;21640:119:0;;;;;:::i;:::-;;:::i;21148:75::-;;;;;;;;;;;;;:::i;22155:217::-;;;;;;;;;;-1:-1:-1;22155:217:0;;;;;:::i;:::-;;:::i;18636:1038::-;;;:::i;15923:25::-;;;;;;;;;;;;;:::i;21405:110::-;;;;;;;;;;-1:-1:-1;21405:110:0;;;;;:::i;:::-;;:::i;15642:18::-;;;;;;;;;;;;;:::i;15667:38::-;;;;;;;;;;;;;:::i;22794:89::-;;;;;;;;;;-1:-1:-1;22794:89:0;;;;;:::i;:::-;;:::i;15712:41::-;;;;;;;;;;;;;:::i;14483:244::-;;;;;;;;;;-1:-1:-1;14483:244:0;;;;;:::i;:::-;;:::i;15616:19::-;;;;;;;;;;;;;:::i;15762:32::-;;;;:::o;16199:31::-;;;;:::o;21911:115::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;21991:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:27;;-1:-1:-1;;21991:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21911:115::o;15801:24::-;;;;:::o;21058:82::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21111:13:::1;:21:::0;;-1:-1:-1;;21111:21:0::1;::::0;;21058:82::o;15984:44::-;;;;;;;;;;;;;:::o;16171:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16171:21:0;:::o;21523:104::-;21598:21;21523:104;:::o;15873:43::-;;;;;;;;;;;;;;;:::o;22649:137::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;22748:28:::1;::::0;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;22736:6:::1;:41:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22736:41:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;22649:137::o;20916:134::-;20976:7;21003:39;21037:4;21004:27;21026:4;21004:17;;:21;;:27;;;;:::i;:::-;21003:33;;:39::i;:::-;20996:46;;20916:134;;;;:::o;19705:1056::-;19813:17;;19775:36;19789:21;19805:4;19789:15;:21::i;:::-;19775:9;;;:13;:36::i;:::-;:55;;19767:83;;;;-1:-1:-1;;;19767:83:0;;;;;;;:::i;:::-;19869:13;;;;:21;;:13;:21;19861:61;;;;-1:-1:-1;;;19861:61:0;;;;;;;:::i;:::-;19950:1;19943:4;:8;19935:48;;;;-1:-1:-1;;;19935:48:0;;;;;;;:::i;:::-;20015:10;20003:23;;;;:11;:23;;;;;;;;:30;19995:71;;;;-1:-1:-1;;;19995:71:0;;;;;;;:::i;:::-;20085:9;20098:10;20085:23;20077:65;;;;-1:-1:-1;;;20077:65:0;;;;;;;:::i;:::-;20196:15;;20162:4;;20155:62;;-1:-1:-1;;;;;20162:4:0;;;;20185:10;;20196:15;20212:4;20155:29;:62::i;:::-;20228:19;20248:21;20264:4;20248:15;:21::i;:::-;20290:10;20280:21;;;;:9;:21;;;;;:36;;20228:41;;-1:-1:-1;20228:41:0;;20280:21;;;:36;;20228:41;;20280:36;:::i;:::-;;;;-1:-1:-1;;20339:9:0;;:26;;20353:11;20339:13;:26::i;:::-;20327:9;:38;;;;20395:6;20402:12;;20395:20;;;;;;-1:-1:-1;;;20395:20:0;;;;;;;;;;;;;;;;;;;:30;;;20382:9;;:43;;:79;;;;-1:-1:-1;20444:6:0;:13;:17;;20460:1;;20444:17;:::i;:::-;20429:12;;:32;20382:79;20378:237;;;20478:12;:14;;;:12;:14;;;:::i;:::-;;;;;;20527:19;:17;:19::i;:::-;20507:17;:39;20581:22;:20;:22::i;:::-;20561:17;:42;20378:237;20656:10;20626:17;20646:21;;;:9;:21;;;;;;;;20678:5;;:37;;-1:-1:-1;;;20678:37:0;;20646:21;;-1:-1:-1;;;;;20678:5:0;;;;:14;;:37;;20656:10;20646:21;;20678:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;20736:10:0;20750:1;20726:21;;;:9;:21;;;;;:25;-1:-1:-1;;19705:1056:0:o;21314:83::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21369:13:::1;:20:::0;;-1:-1:-1;;21369:20:0::1;21385:4;21369:20;::::0;;21314:83::o;22382:259::-;22440:7;22460:16;22516:7;22491:19;:17;:19::i;:::-;22480:31;;:7;:31;:::i;:::-;22479:45;;;;:::i;:::-;22460:64;;22535:22;22596:4;22573:17;;22561:8;:30;;;;:::i;:::-;22560:41;;;;:::i;:::-;22535:66;22382:259;-1:-1:-1;;;;22382:259:0:o;21769:134::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21861:15:::1;:34:::0;;-1:-1:-1;;;;;;21861:34:0::1;-1:-1:-1::0;;;;;21861:34:0;;;::::1;::::0;;;::::1;::::0;;21769:134::o;22034:113::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;22088:51:::1;::::0;22096:10:::1;::::0;22117:21:::1;22088:51:::0;::::1;;;::::0;::::1;::::0;;;22117:21;22096:10;22088:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22034:113::o:0;21231:75::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21282:8:::1;:16:::0;;-1:-1:-1;;21282:16:0::1;::::0;;21231:75::o;18419:172::-;18514:12;;;:30;;;-1:-1:-1;;;18514:30:0;;;;18469:7;;;;-1:-1:-1;;;;;18514:12:0;;:28;;:30;;;;;;;;;;;:12;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18489:55;;;;;;18570:5;18578:4;18570:12;;;;:::i;:::-;18555:28;;;18419:172;:::o;14329:148::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;14436:1:::1;14420:6:::0;;14399:40:::1;::::0;-1:-1:-1;;;;;14420:6:0;;::::1;::::0;14399:40:::1;::::0;14436:1;;14399:40:::1;14467:1;14450:19:::0;;-1:-1:-1;;;;;;14450:19:0::1;::::0;;14329:148::o;20769:137::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;20847:12:::1;:51:::0;;-1:-1:-1;;;;;;20847:51:0::1;-1:-1:-1::0;;;;;20847:51:0;;;::::1;::::0;;;::::1;::::0;;20769:137::o;15832:32::-;;;;:::o;14119:79::-;14157:7;14184:6;-1:-1:-1;;;;;14184:6:0;14119:79;:::o;15955:20::-;;;;;;;;;:::o;21640:119::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21716:5:::1;:14:::0;;-1:-1:-1;;;;;21716:14:0;;::::1;-1:-1:-1::0;;;;;;21716:14:0;;::::1;;::::0;;;21741:4:::1;:10:::0;;;;;::::1;::::0;::::1;;::::0;;21640:119::o;21148:75::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21200:8:::1;:15:::0;;-1:-1:-1;;21200:15:0::1;;;::::0;;21148:75::o;22155:217::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;22258:17:::1;;22241:13;:34;;22233:95;;;;-1:-1:-1::0;;;22233:95:0::1;;;;;;;:::i;:::-;22339:9;:25:::0;22155:217::o;18636:1038::-;18694:13;;;;:21;;:13;:21;18686:65;;;;-1:-1:-1;;;18686:65:0;;;;;;;:::i;:::-;18782:1;18770:9;:13;18762:52;;;;-1:-1:-1;;;18762:52:0;;;;;;;:::i;:::-;18845:10;18833:23;;;;:11;:23;;;;;;;;:32;18825:73;;;;-1:-1:-1;;;18825:73:0;;;;;;;:::i;:::-;18917:9;18930:10;18917:23;18909:65;;;;-1:-1:-1;;;18909:65:0;;;;;;;:::i;:::-;18987:19;19009:21;19020:9;19009:10;:21::i;:::-;18987:43;;19079:17;;19049:26;19063:11;19049:9;;:13;;:26;;;;:::i;:::-;:47;;19041:85;;;;-1:-1:-1;;;19041:85:0;;;;;;;:::i;:::-;19147:15;;19139:44;;-1:-1:-1;;;;;19147:15:0;;;;19173:9;19139:44;;;;;19147:15;19139:44;19147:15;19139:44;19173:9;19147:15;19139:44;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19204:10:0;19194:21;;;;:9;:21;;;;;:36;;19219:11;;19194:21;:36;;19219:11;;19194:36;:::i;:::-;;;;-1:-1:-1;;19253:9:0;;:26;;19267:11;19253:13;:26::i;:::-;19241:9;:38;;;;19309:6;19316:12;;19309:20;;;;;;-1:-1:-1;;;19309:20:0;;;;;;;;;;;;;;;;;;;:30;;;19296:9;;:43;;:79;;;;-1:-1:-1;19358:6:0;:13;:17;;19374:1;;19358:17;:::i;:::-;19343:12;;:32;19296:79;19292:237;;;19392:12;:14;;;:12;:14;;;:::i;:::-;;;;;;19441:19;:17;:19::i;:::-;19421:17;:39;19495:22;:20;:22::i;:::-;19475:17;:42;19292:237;19569:10;19539:17;19559:21;;;:9;:21;;;;;;;;19591:5;;:37;;-1:-1:-1;;;19591:37:0;;19559:21;;-1:-1:-1;;;;;19591:5:0;;;;:14;;:37;;19569:10;19559:21;;19591:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;19649:10:0;19663:1;19639:21;;;:9;:21;;;;;:25;-1:-1:-1;18636:1038:0:o;15923:25::-;;;;;;:::o;21405:110::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;21481:17:::1;:26:::0;21405:110::o;15642:18::-;;;-1:-1:-1;;;;;15642:18:0;;:::o;15667:38::-;;;-1:-1:-1;;;;;15667:38:0;;:::o;22794:89::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;22866:6:::1;22873:1;22866:9;;;;;;-1:-1:-1::0;;;22866:9:0::1;;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;22859:16:::0;;;::::1;;::::0;-1:-1:-1;22794:89:0:o;15712:41::-;;;-1:-1:-1;;;;;15712:41:0;;:::o;14483:244::-;14254:12;:10;:12::i;:::-;14244:6;;-1:-1:-1;;;;;14244:6:0;;;:22;;;14236:67;;;;-1:-1:-1;;;14236:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14572:22:0;::::1;14564:73;;;;-1:-1:-1::0;;;14564:73:0::1;;;;;;;:::i;:::-;14674:6;::::0;;14653:38:::1;::::0;-1:-1:-1;;;;;14653:38:0;;::::1;::::0;14674:6;::::1;::::0;14653:38:::1;::::0;::::1;14702:6;:17:::0;;-1:-1:-1;;;;;;14702:17:0::1;-1:-1:-1::0;;;;;14702:17:0;;;::::1;::::0;;;::::1;::::0;;14483:244::o;15616:19::-;;;-1:-1:-1;;;;;15616:19:0;;:::o;12199:193::-;12257:7;;12301:5;12305:1;12301;:5;:::i;:::-;12289:17;;12330:1;12325;:6;;12317:46;;;;-1:-1:-1;;;12317:46:0;;;;;;;:::i;:::-;12383:1;-1:-1:-1;12199:193:0;;;;;:::o;11133:115::-;11229:10;11133:115;:::o;12738:250::-;12796:7;12820:6;12816:47;;-1:-1:-1;12850:1:0;12843:8;;12816:47;12875:9;12887:5;12891:1;12887;:5;:::i;:::-;12875:17;-1:-1:-1;12920:1:0;12911:5;12915:1;12875:17;12911:5;:::i;:::-;:10;12903:56;;;;-1:-1:-1;;;12903:56:0;;;;;;;:::i;12996:132::-;13054:7;13081:39;13085:1;13088;13081:39;;;;;;;;;;;;;;;;;:3;:39::i;8214:205::-;8315:96;8335:5;8365:27;;;8394:4;8400:2;8404:5;8342:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8342:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8342:68:0;-1:-1:-1;;;;;;8342:68:0;;;;;;;;;;8315:19;:96::i;:::-;8214:205;;;;:::o;18012:271::-;18064:7;18084:22;18122:9;18117:127;18141:6;:13;18137:17;;18117:127;;;18193:39;18212:6;18219:1;18212:9;;;;;;-1:-1:-1;;;18212:9:0;;;;;;;;;;;;;;;;;;;;;;:19;18193:14;;:18;:39::i;:::-;18176:56;-1:-1:-1;18156:3:0;;;;:::i;:::-;;;;18117:127;;;-1:-1:-1;18261:14:0;-1:-1:-1;18012:271:0;:::o;18291:116::-;18346:7;18373:6;18380:12;;18373:20;;;;;;-1:-1:-1;;;18373:20:0;;;;;;;;;;;;;;;;;;;:26;;;18366:33;;18291:116;:::o;13136:345::-;13222:7;13324:12;13317:5;13309:28;;;;-1:-1:-1;;;13309:28:0;;;;;;;;:::i;:::-;-1:-1:-1;13348:9:0;13360:5;13364:1;13360;:5;:::i;:::-;13348:17;-1:-1:-1;;13136:345:0;;;;;;:::o;10341:761::-;10765:23;10791:69;10819:4;10791:69;;;;;;;;;;;;;;;;;10799:5;-1:-1:-1;;;;;10791:27:0;;;:69;;;;;:::i;:::-;10875:17;;10765:95;;-1:-1:-1;10875:21:0;10871:224;;11017:10;11006:30;;;;;;;;;;;;:::i;:::-;10998:85;;;;-1:-1:-1;;;10998:85:0;;;;;;;:::i;:::-;10341:761;;;:::o;3590:195::-;3693:12;3725:52;3747:6;3755:4;3761:1;3764:12;3693;4894:18;4905:6;4894:10;:18::i;:::-;4886:60;;;;-1:-1:-1;;;4886:60:0;;;;;;;:::i;:::-;5020:12;5034:23;5061:6;-1:-1:-1;;;;;5061:11:0;5081:5;5089:4;5061:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5019:75;;;;5112:52;5130:7;5139:10;5151:12;5112:17;:52::i;:::-;5105:59;4642:530;-1:-1:-1;;;;;;;4642:530:0:o;672:422::-;1039:20;1078:8;;;672:422::o;7182:742::-;7297:12;7326:7;7322:595;;;-1:-1:-1;7357:10:0;7350:17;;7322:595;7471:17;;:21;7467:439;;7734:10;7728:17;7795:15;7782:10;7778:2;7774:19;7767:44;7682:148;7877:12;7870:20;;-1:-1:-1;;;7870:20:0;;;;;;;;:::i;14:181:1:-;94:13;;147:22;136:34;;126:45;;116:2;;185:1;182;175:12;200:259;;312:2;300:9;291:7;287:23;283:32;280:2;;;333:6;325;318:22;280:2;377:9;364:23;396:33;423:5;396:33;:::i;736:396::-;;;862:2;850:9;841:7;837:23;833:32;830:2;;;883:6;875;868:22;830:2;927:9;914:23;946:33;973:5;946:33;:::i;:::-;998:5;-1:-1:-1;1055:2:1;1040:18;;1027:32;1068;1027;1068;:::i;:::-;1119:7;1109:17;;;820:312;;;;;:::o;1137:257::-;;1257:2;1245:9;1236:7;1232:23;1228:32;1225:2;;;1278:6;1270;1263:22;1225:2;1315:9;1309:16;1334:30;1358:5;1334:30;:::i;1399:430::-;;;1556:2;1544:9;1535:7;1531:23;1527:32;1524:2;;;1577:6;1569;1562:22;1524:2;1621:9;1608:23;1640:33;1667:5;1640:33;:::i;:::-;1692:5;-1:-1:-1;1749:2:1;1734:18;;1721:32;1762:35;1721:32;1762:35;:::i;1834:190::-;;1946:2;1934:9;1925:7;1921:23;1917:32;1914:2;;;1967:6;1959;1952:22;1914:2;-1:-1:-1;1995:23:1;;1904:120;-1:-1:-1;1904:120:1:o;2029:258::-;;;2158:2;2146:9;2137:7;2133:23;2129:32;2126:2;;;2179:6;2171;2164:22;2126:2;-1:-1:-1;;2207:23:1;;;2277:2;2262:18;;;2249:32;;-1:-1:-1;2116:171:1:o;2292:487::-;;;;;;2480:3;2468:9;2459:7;2455:23;2451:33;2448:2;;;2502:6;2494;2487:22;2448:2;2530:41;2561:9;2530:41;:::i;:::-;2520:51;;2611:2;2600:9;2596:18;2590:25;2580:35;;2655:2;2644:9;2640:18;2634:25;2624:35;;2699:2;2688:9;2684:18;2678:25;2668:35;;2722:51;2768:3;2757:9;2753:19;2722:51;:::i;:::-;2712:61;;2438:341;;;;;;;;:::o;2784:274::-;;2951:6;2945:13;2967:53;3013:6;3008:3;3001:4;2993:6;2989:17;2967:53;:::i;:::-;3036:16;;;;;2921:137;-1:-1:-1;;2921:137:1:o;3063:203::-;-1:-1:-1;;;;;3227:32:1;;;;3209:51;;3197:2;3182:18;;3164:102::o;3495:375::-;-1:-1:-1;;;;;3753:15:1;;;3735:34;;3805:15;;;;3800:2;3785:18;;3778:43;3852:2;3837:18;;3830:34;;;;3685:2;3670:18;;3652:218::o;3875:274::-;-1:-1:-1;;;;;4067:32:1;;;;4049:51;;4131:2;4116:18;;4109:34;4037:2;4022:18;;4004:145::o;4154:187::-;4319:14;;4312:22;4294:41;;4282:2;4267:18;;4249:92::o;4805:383::-;;4954:2;4943:9;4936:21;4986:6;4980:13;5029:6;5024:2;5013:9;5009:18;5002:34;5045:66;5104:6;5099:2;5088:9;5084:18;5079:2;5071:6;5067:15;5045:66;:::i;:::-;5172:2;5151:15;-1:-1:-1;;5147:29:1;5132:45;;;;5179:2;5128:54;;4926:262;-1:-1:-1;;4926:262:1:o;5193:402::-;5395:2;5377:21;;;5434:2;5414:18;;;5407:30;5473:34;5468:2;5453:18;;5446:62;-1:-1:-1;;;5539:2:1;5524:18;;5517:36;5585:3;5570:19;;5367:228::o;5600:352::-;5802:2;5784:21;;;5841:2;5821:18;;;5814:30;5880;5875:2;5860:18;;5853:58;5943:2;5928:18;;5774:178::o;5957:351::-;6159:2;6141:21;;;6198:2;6178:18;;;6171:30;6237:29;6232:2;6217:18;;6210:57;6299:2;6284:18;;6131:177::o;6720:351::-;6922:2;6904:21;;;6961:2;6941:18;;;6934:30;7000:29;6995:2;6980:18;;6973:57;7062:2;7047:18;;6894:177::o;7076:353::-;7278:2;7260:21;;;7317:2;7297:18;;;7290:30;7356:31;7351:2;7336:18;;7329:59;7420:2;7405:18;;7250:179::o;7434:350::-;7636:2;7618:21;;;7675:2;7655:18;;;7648:30;7714:28;7709:2;7694:18;;7687:56;7775:2;7760:18;;7608:176::o;7789:397::-;7991:2;7973:21;;;8030:2;8010:18;;;8003:30;8069:34;8064:2;8049:18;;8042:62;-1:-1:-1;;;8135:2:1;8120:18;;8113:31;8176:3;8161:19;;7963:223::o;8191:356::-;8393:2;8375:21;;;8412:18;;;8405:30;8471:34;8466:2;8451:18;;8444:62;8538:2;8523:18;;8365:182::o;8552:340::-;8754:2;8736:21;;;8793:2;8773:18;;;8766:30;-1:-1:-1;;;8827:2:1;8812:18;;8805:46;8883:2;8868:18;;8726:166::o;8897:351::-;9099:2;9081:21;;;9138:2;9118:18;;;9111:30;9177:29;9172:2;9157:18;;9150:57;9239:2;9224:18;;9071:177::o;9253:412::-;9455:2;9437:21;;;9494:2;9474:18;;;9467:30;9533:34;9528:2;9513:18;;9506:62;-1:-1:-1;;;9599:2:1;9584:18;;9577:46;9655:3;9640:19;;9427:238::o;9670:353::-;9872:2;9854:21;;;9911:2;9891:18;;;9884:30;9950:31;9945:2;9930:18;;9923:59;10014:2;9999:18;;9844:179::o;10028:355::-;10230:2;10212:21;;;10269:2;10249:18;;;10242:30;10308:33;10303:2;10288:18;;10281:61;10374:2;10359:18;;10202:181::o;10388:353::-;10590:2;10572:21;;;10629:2;10609:18;;;10602:30;10668:31;10663:2;10648:18;;10641:59;10732:2;10717:18;;10562:179::o;10746:349::-;10948:2;10930:21;;;10987:2;10967:18;;;10960:30;11026:27;11021:2;11006:18;;10999:55;11086:2;11071:18;;10920:175::o;11100:406::-;11302:2;11284:21;;;11341:2;11321:18;;;11314:30;11380:34;11375:2;11360:18;;11353:62;-1:-1:-1;;;11446:2:1;11431:18;;11424:40;11496:3;11481:19;;11274:232::o;11511:354::-;11713:2;11695:21;;;11752:2;11732:18;;;11725:30;11791:32;11786:2;11771:18;;11764:60;11856:2;11841:18;;11685:180::o;11870:177::-;12016:25;;;12004:2;11989:18;;11971:76::o;12052:248::-;12226:25;;;12282:2;12267:18;;12260:34;12214:2;12199:18;;12181:119::o;12305:128::-;;12376:1;12372:6;12369:1;12366:13;12363:2;;;12382:18;;:::i;:::-;-1:-1:-1;12418:9:1;;12353:80::o;12438:217::-;;12504:1;12494:2;;-1:-1:-1;;;12529:31:1;;12583:4;12580:1;12573:15;12611:4;12536:1;12601:15;12494:2;-1:-1:-1;12640:9:1;;12484:171::o;12660:577::-;;-1:-1:-1;;;;;12769:15:1;;;12803;;;12834:11;;;12853:10;;;12847:17;;12830:35;12827:2;;;12868:18;;:::i;:::-;-1:-1:-1;;;12937:15:1;;;12968:11;;;12988;;;12981:19;;12964:37;12961:2;;;13004:18;;:::i;:::-;13050:7;13047:1;13043:15;13033:25;;13103:1;13099:2;13094:11;13091:1;13087:19;13082:2;13078;13074:11;13070:37;13067:2;;;13110:18;;:::i;:::-;13175:1;13171:2;13166:11;13163:1;13159:19;13154:2;13150;13146:11;13142:37;13139:2;;;13182:18;;:::i;:::-;-1:-1:-1;;;13222:9:1;;;;;12711:526;-1:-1:-1;;;12711:526:1:o;13242:168::-;;13348:1;13344;13340:6;13336:14;13333:1;13330:21;13325:1;13318:9;13311:17;13307:45;13304:2;;;13355:18;;:::i;:::-;-1:-1:-1;13395:9:1;;13294:116::o;13415:125::-;;13483:1;13480;13477:8;13474:2;;;13488:18;;:::i;:::-;-1:-1:-1;13525:9:1;;13464:76::o;13545:258::-;13617:1;13627:113;13641:6;13638:1;13635:13;13627:113;;;13717:11;;;13711:18;13698:11;;;13691:39;13663:2;13656:10;13627:113;;;13758:6;13755:1;13752:13;13749:2;;;-1:-1:-1;;13793:1:1;13775:16;;13768:27;13598:205::o;13808:135::-;;-1:-1:-1;;13868:17:1;;13865:2;;;13888:18;;:::i;:::-;-1:-1:-1;13935:1:1;13924:13;;13855:88::o;13948:127::-;14009:10;14004:3;14000:20;13997:1;13990:31;14040:4;14037:1;14030:15;14064:4;14061:1;14054:15;14080:133;-1:-1:-1;;;;;14157:31:1;;14147:42;;14137:2;;14203:1;14200;14193:12;14218:120;14306:5;14299:13;14292:21;14285:5;14282:32;14272:2;;14328:1;14325;14318:12

Swarm Source

ipfs://f625e0231d5d7aa1698e5367649bd3433da6227ad21ea14b44db37e78d50ac95

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.