Contract 0xaacb422f5f60978bff9c716cf38cd56d1e4ded77

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x0e3941f07e42174bc3459544e08771771512443639fea0653c3b9e829589421782397762021-06-12 18:16:1011 hrs 15 mins ago0xd5060ec728f1233d6347ddfa897f82ad4541b16b IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00014261
0xcb7e73408c8e1a3d610f2aef2df1becdc842b9e60a6b1c1c5f62244e3a74ff6682242672021-06-12 5:18:291 day 13 mins ago0xbdd5dd5420d72a3f589bea782797d2ac58ff71ce IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000222545
0x907384154a17879a354c72cd61dbe3beb58d1d09b59e456d82c88a368bf3af7b82092642021-06-11 16:44:551 day 12 hrs ago0xe820a286bfaa9861f0766f2e6dae55cc4f5219d5 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00045486
0x13d73b7c5b103a48602ec1ac770dc0158e200ac98ba16767115a72602e9499c581886182021-06-10 23:30:102 days 6 hrs ago0x1ffaf274b654c3282c361b8c776498f706435bf9 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000072815
0xd481b9cad33f8cc0e08727218146b2f8150e75822459e0ef6368fd03a888726b81825272021-06-10 18:24:012 days 11 hrs ago0x41fcf5f4fdc92c0edf248eb413af7e648db9d281 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.001437065
0xba7c4d85633fa211a69a89af43b507bf9937a7e8d6ebea4e51db3b4a45f3a8c281656652021-06-10 4:16:283 days 1 hr ago0xd00ff8e277c042baf3f49c1a57050944778541ed IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.001245115
0xb6a3388cf17d209c8bf8a1eaf95eb165b328aa5ab895d724a91ce29bfda97ab381547682021-06-09 19:09:573 days 10 hrs ago0xbb65c0b47b8da688264f5e2f73aa359fdbee700c IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00014267
0xe135057e1ab54d55d99fdceace5462c963d861bdd586535b5b104ac861ae897c81547352021-06-09 19:08:183 days 10 hrs ago0xbb65c0b47b8da688264f5e2f73aa359fdbee700c IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.001075865
0xf0dc2845a75e82421b4dd0e9dd277f8132875930eda02fbfa9fc7545b04c168181495832021-06-09 14:49:523 days 14 hrs ago0x02de86d52817e73ebf6a3ffc15daf7cdd0420d8f IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00053094
0x23db2a67a313700ceb76d1c563e1e32471d664a23991f932d776ea98fc46f2fc81336332021-06-09 1:29:294 days 4 hrs ago0x1b9a13fc870332c3a933ba498bb6fd7bc950e801 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.001319935
0x0306491f7b9e3d921b2c138eec2c2e662831275b40653218753638da472a339081126672021-06-08 7:59:234 days 21 hrs ago0xa22a76ae24d6a00d43e132caa40b785153f1e956 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00045594
0x1e8738f4d4b859a2811dff944b75cb04efa9676d832acdacd23bfb31f66741c781126542021-06-08 7:58:444 days 21 hrs ago0x1b5b4daf8b646c137d4d15949b4272a0e78873b1 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00045594
0x3ba4d7a7a2ca561950333f5d119ad2a71d60472072712c14706904612a5fbf4481112612021-06-08 6:49:054 days 22 hrs ago0x3d09e0750ec43f954e41204bc49fc51c881f275b IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.0002269959
0xd8bd919c2e3bad78b351d3fffc158a9f9f8b50eb746bde916cc06d89398db58e80973502021-06-07 19:11:495 days 10 hrs ago0x24a000804704b9557466382a806b6baa31cf574c IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000213315
0x584f9fd5f9d0015ea81dce002e51b8efff3645da6886fd2d99e8f0889844c0a880926922021-06-07 15:18:175 days 14 hrs ago0xd4450b4164ea4a51a818bb3b23468f19c8a098d0 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.0001455234
0x0ba4465a037efe6f8d0083c803cc6ade8739e63e5325b1e659ba4c01e645f69480747002021-06-07 0:17:546 days 5 hrs ago0x49b9aba6f9b0e68b18996a032cc8da5bc5ed9a21 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.0000742713
0x0793d76d2f7bd3791dc176ca66c9754f81f4456fa33183a6aec02ef82734042d80682892021-06-06 18:56:596 days 10 hrs ago0xf825858bc7fdb6d3308c201370ff983a211ed503 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000222545
0x5903a727f6050a9435a01d1e977513baf096a719006cf0fba563589027a2a85380655062021-06-06 16:37:486 days 12 hrs ago0xfa8e5bd95c6a92fc407b6a243c9800d2b3afb6c4 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.0003737954
0x4b73de29ebbde513fa45b16ffe3584249acd136937454b4a9a0da7ab335c17f980654912021-06-06 16:37:036 days 12 hrs ago0xfa8e5bd95c6a92fc407b6a243c9800d2b3afb6c4 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.0037651103
0xb746522c7394aede2cef830cd5735768f10683034fa4a125cae610aa0133255880442312021-06-05 22:51:157 days 6 hrs ago0x813e2b713e8e6f1ac94024ae878aae4ba9c006a1 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000222545
0x96ce970bc750b631a51b457d1712589697dfb3f40d82016bb57a653e3422a2b380332942021-06-05 13:43:487 days 15 hrs ago0x1c8c5477b51e4898edf63e138eca8f4f2b171a47 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000072815
0xe729dfcb1c79e0d488e5b94e56608652cc303006d5d87c90a416e503f6fd9da780271692021-06-05 8:36:037 days 20 hrs ago0xc362421478b31bf67f0579d6a44722a791061559 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.00045612
0x0eedc68335e13e4cd67646c7ea4ecad5c7a7a8fc8431450cc2fcab273607adbe80264092021-06-05 7:58:037 days 21 hrs ago0x3464c08d8466db8adc485d36669c4e6b055fd5c6 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000222545
0xfcda704fd934240fe7da77e36b07daeeaed238893ed504e795d0817438a6cfc280233632021-06-05 5:25:448 days 5 mins ago0x983db6611702ce581cdf8020db292212571dd1b6 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.000925865
0xa55390f006a2cd9cdfce8cacbff37ce2d12c88e154808f2716f82d76b0cd132a80233552021-06-05 5:25:208 days 6 mins ago0x983db6611702ce581cdf8020db292212571dd1b6 IN  0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB0.001000865
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd38b7a5c61ddf5c53149132450ff37ec6e131c0a4fd0ac34ea3e527c569926fb54712922021-03-07 11:57:3397 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xd38b7a5c61ddf5c53149132450ff37ec6e131c0a4fd0ac34ea3e527c569926fb54712922021-03-07 11:57:3397 days 17 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x531aae45461f464da30b98f48a325c8fddaab8cbbbf39cc37ac15b399ca022a154712612021-03-07 11:56:0097 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x531aae45461f464da30b98f48a325c8fddaab8cbbbf39cc37ac15b399ca022a154712612021-03-07 11:56:0097 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x87109d4cded18cde048aba04702b5660c01f9b2cd9f4ce18b57ca10a6efd548254712392021-03-07 11:54:5497 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x87109d4cded18cde048aba04702b5660c01f9b2cd9f4ce18b57ca10a6efd548254712392021-03-07 11:54:5497 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xec8bd2dee8a4e0bb9c522429739be48955a685b751cfe653217a47f7f7789b9e54708372021-03-07 11:34:4897 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xec8bd2dee8a4e0bb9c522429739be48955a685b751cfe653217a47f7f7789b9e54708372021-03-07 11:34:4897 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x4cc16dc4c06bfa37ead1904a77b8fa157f3247bdfb6714dd76020b9ecc8010d454708342021-03-07 11:34:3997 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x4cc16dc4c06bfa37ead1904a77b8fa157f3247bdfb6714dd76020b9ecc8010d454708342021-03-07 11:34:3997 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x6d69b117d859a4597d249196caaf09416e1fd62d99ee560b842568c2929d25d754708032021-03-07 11:33:0697 days 17 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x6d69b117d859a4597d249196caaf09416e1fd62d99ee560b842568c2929d25d754708032021-03-07 11:33:0697 days 17 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x9c3687a98067c1fd9e0922cc4b5487e8e9bfda0ce285ace626e1f8d4be2fbb3e54705342021-03-07 11:19:3997 days 18 hrs ago 0x8712c8bc8f99e6cf2107f1590443e831cd29dbb4 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x9c3687a98067c1fd9e0922cc4b5487e8e9bfda0ce285ace626e1f8d4be2fbb3e54705342021-03-07 11:19:3997 days 18 hrs ago 0x8712c8bc8f99e6cf2107f1590443e831cd29dbb4 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x1409f2717d7383fb1c274acfbfcb2805ef705d4f8daa121bdddcd8642a4e0c8554700952021-03-07 10:57:4297 days 18 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x1409f2717d7383fb1c274acfbfcb2805ef705d4f8daa121bdddcd8642a4e0c8554700952021-03-07 10:57:4297 days 18 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xa0c915c71fb563667d502ea3ad63481ba6cbc5e537ccdbbcf33ea927299e3b7654694552021-03-07 10:25:4297 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xa0c915c71fb563667d502ea3ad63481ba6cbc5e537ccdbbcf33ea927299e3b7654694552021-03-07 10:25:4297 days 19 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xcb1cf457248fd6e1a45ecacd785274f2023c24a5f24469d929bbdbbce2dc864a54693872021-03-07 10:22:1897 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0xcb1cf457248fd6e1a45ecacd785274f2023c24a5f24469d929bbdbbce2dc864a54693872021-03-07 10:22:1897 days 19 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x31562a7f4ae73edefb85aa45453f3a29489b73bf1df70d636dadb04208f3e77354693512021-03-07 10:20:3097 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x31562a7f4ae73edefb85aa45453f3a29489b73bf1df70d636dadb04208f3e77354693512021-03-07 10:20:3097 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x63644372bbfedf819e5047f4a1b696b4f958f4a6d35de679391389837877b62854693372021-03-07 10:19:4897 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x63644372bbfedf819e5047f4a1b696b4f958f4a6d35de679391389837877b62854693372021-03-07 10:19:4897 days 19 hrs ago PancakeSwap: Router 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
0x771eb3411344258cc181483d0f653593839f7eb4b601536f94e82835b59cfcc654693292021-03-07 10:19:2497 days 19 hrs ago PancakeSwap: hSOV 0xaacb422f5f60978bff9c716cf38cd56d1e4ded770 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HopeSovietV2

Compiler Version
v0.6.2+commit.bacdbe57

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: @openzeppelin/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return 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;
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

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

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

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

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

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

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

// File: @openzeppelin/contracts/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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;
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

// File: @openzeppelin/contracts/access/Ownable.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/math/Math.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

// File: contracts/HopeSovietV2.sol

pragma solidity 0.6.2;





contract HopeSovietV2 is ERC20("Hope Soviet", "hSOV"), Ownable {
    uint256 transferRewardBase;
    uint256 maxReward;
    uint256 rewardedAmount;
    uint256 maxRewardCount = 3;
    uint256 maxRefLevel = 3;
    uint256 rewardEndBlock;

    struct UserInfo {
        mapping(address => uint256) rewards;
        uint256 rewardCount;
        address[] invitees;
        address[] referrals;
    }

    mapping(address => UserInfo) public uInfo;
    mapping(address => address) public refMap;

    // for minters
    mapping(address => bool) public _minters;

    constructor(
    ) public {
        uint256 multiplier = 10 ** uint256(decimals());
        transferRewardBase = 100 * multiplier;
        maxReward = 40000000 * multiplier;
        _mint(msg.sender, 15000000 * multiplier);
        _minters[msg.sender] = true;
    }

    // @notice Creates `_amount` token to `_to`. Must only be called by the minter.
    function mint(address _to, uint256 _amount) public {
        require(_minters[msg.sender], "!minter");
        _mint(_to, _amount);
    }

    function addMinter(address _minter) public onlyOwner {
        _minters[_minter] = true;
    }

    function removeMinter(address _minter) public onlyOwner {
        _minters[_minter] = false;
    }

    function setEnd(uint256 _rewardEndBlock) public onlyOwner {
        rewardEndBlock = _rewardEndBlock;
    }

    function setRewardRule(uint256 _maxRefLevel, uint256 _maxRewardCount, uint256 _maxReward) public onlyOwner {
        maxRefLevel = _maxRefLevel;
        maxRewardCount = _maxRewardCount;
        maxReward = _maxReward;
    }

    function addReferral(address _sender, address _recipient) public {
        require(_minters[msg.sender], "!minter");
        setRef(_sender, _recipient);
        uInfo[_recipient].rewardCount = maxRewardCount;
    }

    function setUserRewardCount(address _recipient) public {
        require(_minters[msg.sender], "!minter");
        uInfo[_recipient].rewardCount = maxRewardCount;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        if (ERC20.transfer(recipient, amount)) {
            sendReward(msg.sender, recipient, amount);
            setRef(msg.sender, recipient);
        }
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        if (ERC20.transferFrom(sender, recipient, amount)) {
            sendReward(sender, recipient, amount);
            setRef(sender, recipient);
        }
        return true;
    }

    function getReferrals(address _addr) public view returns (address[] memory){
        return uInfo[_addr].referrals;
    }

    function getInvitees(address _addr) public view returns (address[] memory){
        return uInfo[_addr].invitees;
    }

    function myArmy(address _addr) public view returns (uint256 totalCount, uint256 totalAmount) {
        return selectInvitees(_addr);
    }

    function selectInvitees(address _addr) internal view returns (uint256 totalCount, uint256 totalAmount) {
        address[] memory _invitees = uInfo[_addr].invitees;
        uint256 _total_count;
        uint256 _total_amount;
        for (uint256 idx; idx < _invitees.length; idx ++) {
            address u = _invitees[idx];
            _total_count = _total_count.add(1);
            _total_amount = _total_amount.add(balanceOf(u));
            if (uInfo[u].invitees.length > 0) {
                (uint256 _count, uint256 _amount) = selectInvitees(u);
                _total_count = _total_count.add(_count);
                _total_amount = _total_amount.add(_amount);
            }
        }
        return (_total_count, _total_amount);
    }

    function sendReward(address sender, address recipient, uint256 amount) internal returns (bool){
        if ((rewardEndBlock > 0 && block.number >= rewardEndBlock) || rewardedAmount >= maxReward) {
            return false;
        }
        if (amount < transferRewardBase || sender == recipient) {
            return false;
        }
        if (isContract(recipient)) {
            return false;
        }
        UserInfo storage _user = uInfo[sender];
        if (_user.rewardCount == 0 || _user.rewards[recipient] > 0 || uInfo[recipient].rewards[sender] > 0) {
            return false;
        }
        uint256 _reward = maxRewardCount.sub(_user.rewardCount).add(2).mul(transferRewardBase);
        uint256 _remainReward = maxReward.sub(rewardedAmount);
        _reward = Math.min(_reward, _remainReward);

        _mint(sender, _reward);
        _user.rewards[recipient] = _reward;
        _user.rewardCount = _user.rewardCount.sub(1);
        rewardedAmount = rewardedAmount.add(_reward);
        return true;
    }

    function setRef(address sender, address recipient) internal {
        if (refMap[recipient] != address(0) || uInfo[recipient].invitees.length > 0 || isContract(recipient) || isContract(sender)) {
            return;
        }
        uInfo[sender].invitees.push(recipient);
        refMap[recipient] = sender;
        address[] storage refs = uInfo[recipient].referrals;
        refs.push(sender);
        address _ref = sender;
        for (uint level; level < maxRefLevel; level ++) {
            _ref = refMap[_ref];
            if (_ref == address(0)) {
                return;
            }
            refs.push(_ref);
        }
    }

    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly {size := extcodesize(addr)}
        return size > 0;
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"addReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getInvitees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getReferrals","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"myArmy","outputs":[{"internalType":"uint256","name":"totalCount","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"refMap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardEndBlock","type":"uint256"}],"name":"setEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxRefLevel","type":"uint256"},{"internalType":"uint256","name":"_maxRewardCount","type":"uint256"},{"internalType":"uint256","name":"_maxReward","type":"uint256"}],"name":"setRewardRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"setUserRewardCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uInfo","outputs":[{"internalType":"uint256","name":"rewardCount","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405260036009556003600a553480156200001b57600080fd5b506040518060400160405280600b81526020017f486f706520536f766965740000000000000000000000000000000000000000008152506040518060400160405280600481526020017f68534f56000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a0929190620004bb565b508060049080519060200190620000b9929190620004bb565b506012600560006101000a81548160ff021916908360ff16021790555050506000620000ea6200023060201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006200019b6200023860201b60201c565b60ff16600a0a905080606402600681905550806302625a0002600781905550620001d1338262e4e1c0026200024f60201b60201c565b6001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506200056a565b600033905090565b6000600560009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000307600083836200042d60201b60201c565b62000323816002546200043260201b620025e01790919060201c565b60028190555062000381816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200043260201b620025e01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600080828401905083811015620004b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fe57805160ff19168380011785556200052f565b828001600101855582156200052f579182015b828111156200052e57825182559160200191906001019062000511565b5b5090506200053e919062000542565b5090565b6200056791905b808211156200056357600081600090555060010162000549565b5090565b90565b61301d806200057a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806364d713e2116100f9578063983b2d5611610097578063a9059cbb11610071578063a9059cbb14610978578063dd62ed3e146109de578063e9881a5e14610a56578063f2fde38b14610aef576101a9565b8063983b2d561461088c5780639d88ad89146108d0578063a457c2d714610912576101a9565b8063715018a6116100d3578063715018a6146107875780637f498ffc146107915780638da5cb5b146107bf57806395d89b4114610809576101a9565b806364d713e2146106675780636fb1861f146106eb57806370a082311461072f576101a9565b80633092afd511610166578063395093511161014057806339509351146104bb5780633ed179621461052157806340c10f191461058057806341a0894d146105ce576101a9565b80633092afd5146103f7578063313ce5671461043b5780633575597d1461045f576101a9565b806306fdde03146101ae578063095ea7b3146102315780630b5c3f871461029757806318160ddd146102fb57806323b872dd146103195780632643dd221461039f575b600080fd5b6101b6610b33565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd5565b604051808215151515815260200191505060405180910390f35b6102f9600480360360408110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf3565b005b610303610d09565b6040518082815260200191505060405180910390f35b6103856004803603606081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d13565b604051808215151515815260200191505060405180910390f35b6103e1600480360360208110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d47565b6040518082815260200191505060405180910390f35b6104396004803603602081101561040d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d65565b005b610443610e8a565b604051808260ff1660ff16815260200191505060405180910390f35b6104a16004803603602081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea1565b604051808215151515815260200191505060405180910390f35b610507600480360360408110156104d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b6105636004803603602081101561053757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f74565b604051808381526020018281526020019250505060405180910390f35b6105cc6004803603604081101561059657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f89565b005b610610600480360360208110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611056565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610653578082015181840152602081019050610638565b505050509050019250505060405180910390f35b6106a96004803603602081101561067d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611126565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61072d6004803603602081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611159565b005b6107716004803603602081101561074557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611264565b6040518082815260200191505060405180910390f35b61078f6112ac565b005b6107bd600480360360208110156107a757600080fd5b8101908080359060200190929190505050611437565b005b6107c761150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610811611535565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610851578082015181840152602081019050610836565b50505050905090810190601f16801561087e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108ce600480360360208110156108a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d7565b005b610910600480360360608110156108e657600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506116fc565b005b61095e6004803603604081101561092857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e0565b604051808215151515815260200191505060405180910390f35b6109c46004803603604081101561098e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118ad565b604051808215151515815260200191505060405180910390f35b610a40600480360360408110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118df565b6040518082815260200191505060405180910390f35b610a9860048036036020811015610a6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611966565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610adb578082015181840152602081019050610ac0565b505050509050019250505060405180910390f35b610b3160048036036020811015610b0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a36565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bcb5780601f10610ba057610100808354040283529160200191610bcb565b820191906000526020600020905b815481529060010190602001808311610bae57829003601f168201915b5050505050905090565b6000610be9610be2611c46565b8484611c4e565b6001905092915050565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f216d696e7465720000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610cbc8282611e45565b600954600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b6000600254905090565b6000610d20848484612240565b15610d3c57610d30848484612319565b50610d3b8484611e45565b5b600190509392505050565b600c6020528060005260406000206000915090508060010154905081565b610d6d611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900460ff16905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610f6a610ece611c46565b84610f658560016000610edf611c46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e090919063ffffffff16565b611c4e565b6001905092915050565b600080610f8083612668565b91509150915091565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f216d696e7465720000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6110528282612838565b5050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030180548060200260200160405190810160405280929190818152602001828054801561111a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116110d0575b50505050509050919050565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f216d696e7465720000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600954600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b4611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61143f611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115cd5780601f106115a2576101008083540402835291602001916115cd565b820191906000526020600020905b8154815290600101906020018083116115b057829003601f168201915b5050505050905090565b6115df611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611704611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82600a819055508160098190555080600781905550505050565b60006118a36117ed611c46565b8461189e85604051806060016040528060258152602001612fc36025913960016000611817611c46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ff9092919063ffffffff16565b611c4e565b6001905092915050565b60006118b98383612abf565b156118d5576118c9338484612319565b506118d43384611e45565b5b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201805480602002602001604051908101604052809291908181526020018280548015611a2a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116119e0575b50505050509050919050565b611a3e611c46565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612ec36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612f9f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ee96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff16600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611f2557506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020180549050115b80611f355750611f3481612add565b5b80611f455750611f4482612add565b5b15611f4f5761223c565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301905080839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600083905060005b600a5481101561223857600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c95750505061223c565b82829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050612120565b5050505b5050565b600061224d848484612af0565b61230e84612259611c46565b61230985604051806060016040528060288152602001612f5260289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006122bf611c46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ff9092919063ffffffff16565b611c4e565b600190509392505050565b600080600b5411801561232e5750600b544310155b8061233d575060075460085410155b1561234b57600090506125d9565b60065482108061238657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561239457600090506125d9565b61239d83612add565b156123ab57600090506125d9565b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541480612442575060008160000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b806124cc57506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156124db5760009150506125d9565b600061251d60065461250f60026125018660010154600954612db190919063ffffffff16565b6125e090919063ffffffff16565b612dfb90919063ffffffff16565b90506000612538600854600754612db190919063ffffffff16565b90506125448282612e81565b91506125508783612838565b818360000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ae60018460010154612db190919063ffffffff16565b83600101819055506125cb826008546125e090919063ffffffff16565b600881905550600193505050505b9392505050565b60008082840190508381101561265e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806060600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020180548060200260200160405190810160405280929190818152602001828054801561272f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116126e5575b5050505050905060008060005b835181101561282957600084828151811061275357fe5b602002602001015190506127716001856125e090919063ffffffff16565b935061278e61277f82611264565b846125e090919063ffffffff16565b92506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020180549050111561281b576000806127ea83612668565b9150915061280182876125e090919063ffffffff16565b955061281681866125e090919063ffffffff16565b945050505b50808060010191505061273c565b50818194509450505050915091565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6128e760008383612e9a565b6128fc816002546125e090919063ffffffff16565b600281905550612953816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000838311158290612aac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a71578082015181840152602081019050612a56565b50505050905090810190601f168015612a9e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000612ad3612acc611c46565b8484612af0565b6001905092915050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612f7a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612ea06023913960400191505060405180910390fd5b612c07838383612e9a565b612c7281604051806060016040528060268152602001612f0b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ff9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d05816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000612df383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129ff565b905092915050565b600080831415612e0e5760009050612e7b565b6000828402905082848281612e1f57fe5b0414612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f316021913960400191505060405180910390fd5b809150505b92915050565b6000818310612e905781612e92565b825b905092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8f87b93dab262392983fe4c790099ebf482e00388fce1016625d9efcbb327d964736f6c63430006020033

Deployed ByteCode Sourcemap

23612:5737:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23612:5737:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11484:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11484:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13590:169;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13590:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25275:219;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25275:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12559:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25972:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25972:307:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24029:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24029:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24814:100;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24814:100:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12411:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24147:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24147:40:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14971:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14971:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26547:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26547:140:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;24562;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24562:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26287:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26287:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26287:123:0;;;;;;;;;;;;;;;;;24077:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24077:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25502:171;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25502:171:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12722:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12722:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22093:148;;;:::i;:::-;;24922:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24922:109:0;;;;;;;;;;;;;;;;;:::i;:::-;;21451:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11686:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11686:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24710:96;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24710:96:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;25039:228;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25039:228:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15692:269;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15692:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25681:283;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25681:283:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13292:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13292:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26418:121;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26418:121:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26418:121:0;;;;;;;;;;;;;;;;;22396:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22396:244:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11484:83;11521:13;11554:5;11547:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11484:83;:::o;13590:169::-;13673:4;13690:39;13699:12;:10;:12::i;:::-;13713:7;13722:6;13690:8;:39::i;:::-;13747:4;13740:11;;13590:169;;;;:::o;25275:219::-;25359:8;:20;25368:10;25359:20;;;;;;;;;;;;;;;;;;;;;;;;;25351:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25402:27;25409:7;25418:10;25402:6;:27::i;:::-;25472:14;;25440:5;:17;25446:10;25440:17;;;;;;;;;;;;;;;:29;;:46;;;;25275:219;;:::o;12559:100::-;12612:7;12639:12;;12632:19;;12559:100;:::o;25972:307::-;26078:4;26099:45;26118:6;26126:9;26137:6;26099:18;:45::i;:::-;26095:155;;;26161:37;26172:6;26180:9;26191:6;26161:10;:37::i;:::-;;26213:25;26220:6;26228:9;26213:6;:25::i;:::-;26095:155;26267:4;26260:11;;25972:307;;;;;:::o;24029:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;24814:100::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24901:5:::1;24881:8;:17;24890:7;24881:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;24814:100:::0;:::o;12411:83::-;12452:5;12477:9;;;;;;;;;;;12470:16;;12411:83;:::o;24147:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;14971:218::-;15059:4;15076:83;15085:12;:10;:12::i;:::-;15099:7;15108:50;15147:10;15108:11;:25;15120:12;:10;:12::i;:::-;15108:25;;;;;;;;;;;;;;;:34;15134:7;15108:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15076:8;:83::i;:::-;15177:4;15170:11;;14971:218;;;;:::o;26547:140::-;26599:18;26619:19;26658:21;26673:5;26658:14;:21::i;:::-;26651:28;;;;26547:140;;;:::o;24562:::-;24632:8;:20;24641:10;24632:20;;;;;;;;;;;;;;;;;;;;;;;;;24624:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24675:19;24681:3;24686:7;24675:5;:19::i;:::-;24562:140;;:::o;26287:123::-;26345:16;26380:5;:12;26386:5;26380:12;;;;;;;;;;;;;;;:22;;26373:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26287:123;;;:::o;24077:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;25502:171::-;25576:8;:20;25585:10;25576:20;;;;;;;;;;;;;;;;;;;;;;;;;25568:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25651:14;;25619:5;:17;25625:10;25619:17;;;;;;;;;;;;;;;:29;;:46;;;;25502:171;:::o;12722:119::-;12788:7;12815:9;:18;12825:7;12815:18;;;;;;;;;;;;;;;;12808:25;;12722:119;;;:::o;22093:148::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22200:1:::1;22163:40;;22184:6;;;;;;;;;;;22163:40;;;;;;;;;;;;22231:1;22214:6;;:19;;;;;;;;;;;;;;;;;;22093:148::o:0;24922:109::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25008:15:::1;24991:14;:32;;;;24922:109:::0;:::o;21451:79::-;21489:7;21516:6;;;;;;;;;;;21509:13;;21451:79;:::o;11686:87::-;11725:13;11758:7;11751:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11686:87;:::o;24710:96::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24794:4:::1;24774:8;:17;24783:7;24774:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;24710:96:::0;:::o;25039:228::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25171:12:::1;25157:11;:26;;;;25211:15;25194:14;:32;;;;25249:10;25237:9;:22;;;;25039:228:::0;;;:::o;15692:269::-;15785:4;15802:129;15811:12;:10;:12::i;:::-;15825:7;15834:96;15873:15;15834:96;;;;;;;;;;;;;;;;;:11;:25;15846:12;:10;:12::i;:::-;15834:25;;;;;;;;;;;;;;;:34;15860:7;15834:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15802:8;:129::i;:::-;15949:4;15942:11;;15692:269;;;;:::o;25681:283::-;25767:4;25788:33;25803:9;25814:6;25788:14;:33::i;:::-;25784:151;;;25838:41;25849:10;25861:9;25872:6;25838:10;:41::i;:::-;;25894:29;25901:10;25913:9;25894:6;:29::i;:::-;25784:151;25952:4;25945:11;;25681:283;;;;:::o;13292:151::-;13381:7;13408:11;:18;13420:5;13408:18;;;;;;;;;;;;;;;:27;13427:7;13408:27;;;;;;;;;;;;;;;;13401:34;;13292:151;;;;:::o;26418:121::-;26475:16;26510:5;:12;26516:5;26510:12;;;;;;;;;;;;;;;:21;;26503:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26418:121;;;:::o;22396:244::-;21673:12;:10;:12::i;:::-;21663:22;;:6;;;;;;;;;;;:22;;;21655:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22505:1:::1;22485:22;;:8;:22;;;;22477:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22595:8;22566:38;;22587:6;;;;;;;;;;;22566:38;;;;;;;;;;;;22624:8;22615:6;;:17;;;;;;;;;;;;;;;;;;22396:244:::0;:::o;665:106::-;718:15;753:10;746:17;;665:106;:::o;18839:346::-;18958:1;18941:19;;:5;:19;;;;18933:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19039:1;19020:21;;:7;:21;;;;19012:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19123:6;19093:11;:18;19105:5;19093:18;;;;;;;;;;;;;;;:27;19112:7;19093:27;;;;;;;;;;;;;;;:36;;;;19161:7;19145:32;;19154:5;19145:32;;;19170:6;19145:32;;;;;;;;;;;;;;;;;;18839:346;;;:::o;28519:656::-;28623:1;28594:31;;:6;:17;28601:9;28594:17;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;:71;;;;28664:1;28629:5;:16;28635:9;28629:16;;;;;;;;;;;;;;;:25;;:32;;;;:36;28594:71;:96;;;;28669:21;28680:9;28669:10;:21::i;:::-;28594:96;:118;;;;28694:18;28705:6;28694:10;:18::i;:::-;28594:118;28590:157;;;28729:7;;28590:157;28757:5;:13;28763:6;28757:13;;;;;;;;;;;;;;;:22;;28785:9;28757:38;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;28757:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28826:6;28806;:17;28813:9;28806:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;28843:22;28868:5;:16;28874:9;28868:16;;;;;;;;;;;;;;;:26;;28843:51;;28905:4;28915:6;28905:17;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;28905:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28933:12;28948:6;28933:21;;28970:10;28965:203;28990:11;;28982:5;:19;28965:203;;;29035:6;:12;29042:4;29035:12;;;;;;;;;;;;;;;;;;;;;;;;;29028:19;;29082:1;29066:18;;:4;:18;;;29062:65;;;29105:7;;;;;29062:65;29141:4;29151;29141:15;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;29141:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29003:8;;;;;;;28965:203;;;;28519:656;;;;;:::o;14241:321::-;14347:4;14364:36;14374:6;14382:9;14393:6;14364:9;:36::i;:::-;14411:121;14420:6;14428:12;:10;:12::i;:::-;14442:89;14480:6;14442:89;;;;;;;;;;;;;;;;;:11;:19;14454:6;14442:19;;;;;;;;;;;;;;;:33;14462:12;:10;:12::i;:::-;14442:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14411:8;:121::i;:::-;14550:4;14543:11;;14241:321;;;;;:::o;27464:1047::-;27553:4;27591:1;27574:14;;:18;:52;;;;;27612:14;;27596:12;:30;;27574:52;27573:85;;;;27649:9;;27631:14;;:27;;27573:85;27569:130;;;27682:5;27675:12;;;;27569:130;27722:18;;27713:6;:27;:50;;;;27754:9;27744:19;;:6;:19;;;27713:50;27709:95;;;27787:5;27780:12;;;;27709:95;27818:21;27829:9;27818:10;:21::i;:::-;27814:66;;;27863:5;27856:12;;;;27814:66;27890:22;27915:5;:13;27921:6;27915:13;;;;;;;;;;;;;;;27890:38;;27964:1;27943:5;:17;;;:22;:54;;;;27996:1;27969:5;:13;;:24;27983:9;27969:24;;;;;;;;;;;;;;;;:28;27943:54;:94;;;;28036:1;28001:5;:16;28007:9;28001:16;;;;;;;;;;;;;;;:24;;:32;28026:6;28001:32;;;;;;;;;;;;;;;;:36;27943:94;27939:139;;;28061:5;28054:12;;;;;27939:139;28088:15;28106:68;28155:18;;28106:44;28148:1;28106:37;28125:5;:17;;;28106:14;;:18;;:37;;;;:::i;:::-;:41;;:44;;;;:::i;:::-;:48;;:68;;;;:::i;:::-;28088:86;;28185:21;28209:29;28223:14;;28209:9;;:13;;:29;;;;:::i;:::-;28185:53;;28259:32;28268:7;28277:13;28259:8;:32::i;:::-;28249:42;;28304:22;28310:6;28318:7;28304:5;:22::i;:::-;28364:7;28337:5;:13;;:24;28351:9;28337:24;;;;;;;;;;;;;;;:34;;;;28402:24;28424:1;28402:5;:17;;;:21;;:24;;;;:::i;:::-;28382:5;:17;;:44;;;;28454:27;28473:7;28454:14;;:18;;:27;;;;:::i;:::-;28437:14;:44;;;;28499:4;28492:11;;;;;27464:1047;;;;;;:::o;4825:181::-;4883:7;4903:9;4919:1;4915;:5;4903:17;;4944:1;4939;:6;;4931:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4997:1;4990:8;;;4825:181;;;;:::o;26695:761::-;26757:18;26777:19;26809:26;26838:5;:12;26844:5;26838:12;;;;;;;;;;;;;;;:21;;26809:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26870:20;26901:21;26938:11;26933:469;26957:9;:16;26951:3;:22;26933:469;;;26998:9;27010;27020:3;27010:14;;;;;;;;;;;;;;26998:26;;27054:19;27071:1;27054:12;:16;;:19;;;;:::i;:::-;27039:34;;27104:31;27122:12;27132:1;27122:9;:12::i;:::-;27104:13;:17;;:31;;;;:::i;:::-;27088:47;;27181:1;27154:5;:8;27160:1;27154:8;;;;;;;;;;;;;;;:17;;:24;;;;:28;27150:241;;;27204:14;27220:15;27239:17;27254:1;27239:14;:17::i;:::-;27203:53;;;;27290:24;27307:6;27290:12;:16;;:24;;;;:::i;:::-;27275:39;;27349:26;27367:7;27349:13;:17;;:26;;;;:::i;:::-;27333:42;;27150:241;;;26933:469;26975:6;;;;;;;26933:469;;;;27420:12;27434:13;27412:36;;;;;;;26695:761;;;:::o;17272:378::-;17375:1;17356:21;;:7;:21;;;;17348:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17426:49;17455:1;17459:7;17468:6;17426:20;:49::i;:::-;17503:24;17520:6;17503:12;;:16;;:24;;;;:::i;:::-;17488:12;:39;;;;17559:30;17582:6;17559:9;:18;17569:7;17559:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;17538:9;:18;17548:7;17538:18;;;;;;;;;;;;;;;:51;;;;17626:7;17605:37;;17622:1;17605:37;;;17635:6;17605:37;;;;;;;;;;;;;;;;;;17272:378;;:::o;5728:192::-;5814:7;5847:1;5842;:6;;5850:12;5834:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5834:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5874:9;5890:1;5886;:5;5874:17;;5911:1;5904:8;;;5728:192;;;;;:::o;13054:175::-;13140:4;13157:42;13167:12;:10;:12::i;:::-;13181:9;13192:6;13157:9;:42::i;:::-;13217:4;13210:11;;13054:175;;;;:::o;29183:163::-;29240:4;29257:9;29307:4;29295:17;29287:25;;29337:1;29330:4;:8;29323:15;;;29183:163;;;:::o;16451:539::-;16575:1;16557:20;;:6;:20;;;;16549:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16659:1;16638:23;;:9;:23;;;;16630:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16714:47;16735:6;16743:9;16754:6;16714:20;:47::i;:::-;16794:71;16816:6;16794:71;;;;;;;;;;;;;;;;;:9;:17;16804:6;16794:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16774:9;:17;16784:6;16774:17;;;;;;;;;;;;;;;:91;;;;16899:32;16924:6;16899:9;:20;16909:9;16899:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16876:9;:20;16886:9;16876:20;;;;;;;;;;;;;;;:55;;;;16964:9;16947:35;;16956:6;16947:35;;;16975:6;16947:35;;;;;;;;;;;;;;;;;;16451:539;;;:::o;5289:136::-;5347:7;5374:43;5378:1;5381;5374:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5367:50;;5289:136;;;;:::o;6179:471::-;6237:7;6487:1;6482;:6;6478:47;;;6512:1;6505:8;;;;6478:47;6537:9;6553:1;6549;:5;6537:17;;6582:1;6577;6573;:5;;;;;;:10;6565:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6641:1;6634:8;;;6179:471;;;;;:::o;23114:106::-;23172:7;23203:1;23199;:5;:13;;23211:1;23199:13;;;23207:1;23199:13;23192:20;;23114:106;;;;:::o;20210:92::-;;;;:::o

Swarm Source

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