Contract 0x8a88f1daE7591ac0AE0Df9310F0A940f78B85649

 

Contract Overview

Balance:
1,742.03170917958387865 BNB

BNB Value:
$637,270.04 (@ $365.82/BNB)
Txn Hash
Block
From
To
Value [Txn Fee]
0x0ae151ec68002a720e136df265aedf66ecca1660ad0dd6913a04cfaad5ae1ab483397712021-06-16 6:38:193 mins ago0x345055c7532e12cda7218a908df260837e60c03f IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.000481225
0xb2b75ad05fba9cae81ad15b59aa5a4a677be20b638b5ff8120cb5916bf04fc2283396612021-06-16 6:32:499 mins ago0x65cfa7d7cea1db7a07da9b058f403be5f511ce5c IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856495 BNB0.00213834
0x88ee335b849b9fbbfc1eb043d604ebb6106ed808af9396c90d62042bab506bd783396492021-06-16 6:32:139 mins ago0x65cfa7d7cea1db7a07da9b058f403be5f511ce5c IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00252953
0x8dcae998057774501ad16724c617a05461ec5f63352a750cf4d7772f1029267783396452021-06-16 6:32:019 mins ago0x05d34ef378cd7a3d2dd0d8f4d0d57a427d74eba7 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.000639595
0x7a6480eee2022439e628d81de384f7196b272263c1174d15ac89a7ddc7bc8ccd83394862021-06-16 6:24:0417 mins ago0x5c59b91ce16270ecb9a7db9eb6f98e3681f1d497 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0009718
0xf12c651cb91682e09f662b40240b5fb2fa01fd3944d059ddf666f644950295af83393302021-06-16 6:16:1625 mins ago0x4dc3b43bd99e0f750aed8241dc29fc17c9362856 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0004101624
0x4ce180092fc2445b3cae637d50fcc9b61a3792328e7440fbb0937acacd2621f383393012021-06-16 6:14:4927 mins ago0x5f0e990c1274c2b555603002f9dc8162822e500b IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00067959
0xc4ecc8352d5e88222955cbd873a76179217e1a0f6dea226746677513dde43b8983392972021-06-16 6:14:3727 mins ago0xa27c581aabd1e5826345d4fd7ffcb69ea7640a27 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0004101624
0x1698f65a6f490cd40e444fc7c289dce7be5994936b8c0bb438df50e74c337cee83390222021-06-16 6:00:2441 mins ago0xbf55104c4fb34c3b82715e909edb6e696781b1c6 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00044593
0xc6bb1ed999266118452a44910cb5974a21d760215293b713f96cf342a9c5e61383390192021-06-16 6:00:1541 mins ago0xe81209fb4c63e1ae6a9cc4498d75cd4c7ae947ca IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00040695
0x71d526680150030b495ec5fefe7d4a448cfbc6b9a0f2679d831af2d7e32f25fe83390182021-06-16 6:00:1241 mins ago0xe93ee5c07e01bd3c0cb0553e06e405a3a14f4ca4 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00040695
0xecf7a04b0af13a879593ee5f8b41b3bf2f3d7fb89dd06339e0b88c6cb3aa1cc683390012021-06-16 5:59:2142 mins ago0xfa79f9caac8898a87eb519502b5640bda7c0d540 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00040695
0x360c99761e5a57ff889805d45b818c0c0e0e89d0d21023e0f1dfdf5296b8fc9083389592021-06-16 5:57:1544 mins ago0xe6bd259dd93900629b3078e42d498fc5757b3562 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00040695
0xb04dff7f894f89eae53fc15156bdd6c2777e2be8fc5676f35fad988a8b136f1d83387272021-06-16 5:45:3956 mins ago0xc771e19da301374ff24c0cce4b35eb4e197ad777 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0007677132
0x6ae8b0df69aa9db5d3bd6c221b41a6cacaafec14e393375515175facf1e6d73b83386542021-06-16 5:41:501 hr ago0xd3c215ead39627fdb4d056104e2d0de0938a89f3 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00231689
0x1f49a1a03193cba3e5f0802d02b209ccfba1ecac6299821e96b336667714209783385852021-06-16 5:38:231 hr 3 mins ago0x59206ec8d79170e9cd0927d78f2db48a0e4daf3d IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00069009
0x49fdf3557b68af282135f808cee70b4cf484df5cf887328283b947c48527ed8a83385792021-06-16 5:38:051 hr 3 mins ago0xe58000ce4dd92a478959a24392d43d4c100c85fd IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00040212
0x112f22a71e3b92afae6a27f659802a8059f2841aab2b71682c9ad2c1f533169183384682021-06-16 5:32:261 hr 9 mins ago0x2be99517af2ade234f9dab4dde752d35f3a9d264 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.000665015
0x31df2045324505af36deb78704651997bdde9e5bc90c1bad81368fce3f8e979f83381482021-06-16 5:16:021 hr 25 mins ago0x99096267f1b7f2ed571c4792e8c88e35383da689 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00216741
0xd9093ea85b3376140b1d2d62c1875ce725d3a431a71b05febee66720cada523283380912021-06-16 5:13:111 hr 28 mins ago0x9b22a6dbe39f4cadaca6306061c61e503b8415eb IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0005802321
0xeec68b1a1ff363adb57ec83ef064ac3c891dc56bbd9f61bafddd1bbf63dad16f83380362021-06-16 5:10:261 hr 31 mins ago0x99096267f1b7f2ed571c4792e8c88e35383da689 IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.002207005
0x1b9ae1f513ea3fc067ee103fd77d46ff8b52f0fc59b44efd28c6c7ee8851e7a083378052021-06-16 4:58:531 hr 43 mins ago0x3c2b9a729ed07cb1a4f11e3444c6d0c608d40bae IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.000551815
0xbb61f5425ac038e0f4d22e656e33246f853286b63a02ae86411b5c9375f5062983376542021-06-16 4:51:201 hr 50 mins ago0xac6652ddef3e0f8a46a1cb745cca99969b9108fa IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.0006351081
0xe4efe1e88727b0f608753739bc60ce8e7fdffa01031eb455b101e5fb339e131c83375922021-06-16 4:48:141 hr 53 mins ago0x00f7f1d34bc4aadbdaf986c3520f18de98978e8e IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490.5 BNB0.001722125
0xdcd12032c1dc53f51867bff1dacc3b5e5d6a55db240f978672b49a1b8e35ba7483375672021-06-16 4:46:591 hr 55 mins ago0x00f7f1d34bc4aadbdaf986c3520f18de98978e8e IN  0x8a88f1dae7591ac0ae0df9310f0a940f78b856490 BNB0.00136551
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x0ae151ec68002a720e136df265aedf66ecca1660ad0dd6913a04cfaad5ae1ab483397712021-06-16 6:38:193 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x345055c7532e12cda7218a908df260837e60c03f0.064241408315813248 BNB
0xb2b75ad05fba9cae81ad15b59aa5a4a677be20b638b5ff8120cb5916bf04fc2283396612021-06-16 6:32:499 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x8aae362a4a1ffa9ea6d54dcf48121e345c25993e0.275 BNB
0xb2b75ad05fba9cae81ad15b59aa5a4a677be20b638b5ff8120cb5916bf04fc2283396612021-06-16 6:32:499 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5d2a54f1e0f8cd6a284c6fddde518525dd6155830.225 BNB
0x88ee335b849b9fbbfc1eb043d604ebb6106ed808af9396c90d62042bab506bd783396492021-06-16 6:32:139 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x8aae362a4a1ffa9ea6d54dcf48121e345c25993e0.121 BNB
0x88ee335b849b9fbbfc1eb043d604ebb6106ed808af9396c90d62042bab506bd783396492021-06-16 6:32:139 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5d2a54f1e0f8cd6a284c6fddde518525dd6155830.099 BNB
0x8dcae998057774501ad16724c617a05461ec5f63352a750cf4d7772f1029267783396452021-06-16 6:32:019 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x05d34ef378cd7a3d2dd0d8f4d0d57a427d74eba70.254715253470592044 BNB
0x7a6480eee2022439e628d81de384f7196b272263c1174d15ac89a7ddc7bc8ccd83394862021-06-16 6:24:0417 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5c59b91ce16270ecb9a7db9eb6f98e3681f1d4970.138833258751481627 BNB
0xf12c651cb91682e09f662b40240b5fb2fa01fd3944d059ddf666f644950295af83393302021-06-16 6:16:1625 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x4dc3b43bd99e0f750aed8241dc29fc17c93628560.456638831018438026 BNB
0x4ce180092fc2445b3cae637d50fcc9b61a3792328e7440fbb0937acacd2621f383393012021-06-16 6:14:4927 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5f0e990c1274c2b555603002f9dc8162822e500b1.000247279050615936 BNB
0xc4ecc8352d5e88222955cbd873a76179217e1a0f6dea226746677513dde43b8983392972021-06-16 6:14:3727 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xa27c581aabd1e5826345d4fd7ffcb69ea7640a270.383652881944413656 BNB
0x1698f65a6f490cd40e444fc7c289dce7be5994936b8c0bb438df50e74c337cee83390222021-06-16 6:00:2441 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xbf55104c4fb34c3b82715e909edb6e696781b1c60.078462083333304717 BNB
0xc6bb1ed999266118452a44910cb5974a21d760215293b713f96cf342a9c5e61383390192021-06-16 6:00:1541 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xe81209fb4c63e1ae6a9cc4498d75cd4c7ae947ca0.135856157407271551 BNB
0x71d526680150030b495ec5fefe7d4a448cfbc6b9a0f2679d831af2d7e32f25fe83390182021-06-16 6:00:1241 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xe93ee5c07e01bd3c0cb0553e06e405a3a14f4ca40.19012666666647654 BNB
0xecf7a04b0af13a879593ee5f8b41b3bf2f3d7fb89dd06339e0b88c6cb3aa1cc683390012021-06-16 5:59:2142 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xfa79f9caac8898a87eb519502b5640bda7c0d5400.10430313888859684 BNB
0x360c99761e5a57ff889805d45b818c0c0e0e89d0d21023e0f1dfdf5296b8fc9083389592021-06-16 5:57:1544 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xe6bd259dd93900629b3078e42d498fc5757b35620.399116374999908773 BNB
0xb04dff7f894f89eae53fc15156bdd6c2777e2be8fc5676f35fad988a8b136f1d83387272021-06-16 5:45:3956 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xc771e19da301374ff24c0cce4b35eb4e197ad7777.692074131943666304 BNB
0x6ae8b0df69aa9db5d3bd6c221b41a6cacaafec14e393375515175facf1e6d73b83386542021-06-16 5:41:501 hr ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x8aae362a4a1ffa9ea6d54dcf48121e345c25993e0.00385 BNB
0x6ae8b0df69aa9db5d3bd6c221b41a6cacaafec14e393375515175facf1e6d73b83386542021-06-16 5:41:501 hr ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5d2a54f1e0f8cd6a284c6fddde518525dd6155830.00315 BNB
0x1f49a1a03193cba3e5f0802d02b209ccfba1ecac6299821e96b336667714209783385852021-06-16 5:38:231 hr 3 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x59206ec8d79170e9cd0927d78f2db48a0e4daf3d0.312375649480167375 BNB
0x49fdf3557b68af282135f808cee70b4cf484df5cf887328283b947c48527ed8a83385792021-06-16 5:38:051 hr 3 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490xe58000ce4dd92a478959a24392d43d4c100c85fd1.63791435185180599 BNB
0x112f22a71e3b92afae6a27f659802a8059f2841aab2b71682c9ad2c1f533169183384682021-06-16 5:32:261 hr 9 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x2be99517af2ade234f9dab4dde752d35f3a9d2640.103817221462471842 BNB
0x31df2045324505af36deb78704651997bdde9e5bc90c1bad81368fce3f8e979f83381482021-06-16 5:16:021 hr 25 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x8aae362a4a1ffa9ea6d54dcf48121e345c25993e0.0091575 BNB
0x31df2045324505af36deb78704651997bdde9e5bc90c1bad81368fce3f8e979f83381482021-06-16 5:16:021 hr 25 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x5d2a54f1e0f8cd6a284c6fddde518525dd6155830.0074925 BNB
0xd9093ea85b3376140b1d2d62c1875ce725d3a431a71b05febee66720cada523283380912021-06-16 5:13:111 hr 28 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x9b22a6dbe39f4cadaca6306061c61e503b8415eb2.721604861110656991 BNB
0xeec68b1a1ff363adb57ec83ef064ac3c891dc56bbd9f61bafddd1bbf63dad16f83380362021-06-16 5:10:261 hr 31 mins ago 0x8a88f1dae7591ac0ae0df9310f0a940f78b856490x8aae362a4a1ffa9ea6d54dcf48121e345c25993e0.0055 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MIRACLE

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.8.0;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

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

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

contract MIRACLE {
    using SafeMath for uint256;

    uint public startTime;
    uint public total;
    uint public pool;
    uint public rankPool;
    uint public insurancePool;
    uint public insuranceTime;
    uint public rankTime;
    address payable public tech;
    address payable public ad;
    address payable public team;
    uint dayTime = 1 days;
    uint increaseTime = 5 hours;

    uint initialTime = dayTime.mul(7);
    uint unit = 18;
    uint[] pcts = [5,2,1];
    address public owner = msg.sender;

    struct User {
        bool active;
        address referrer;
        uint recommendReward;
        uint investment;
        uint totalWithdraw;
        uint totalReward;
        uint checkpoint;
        uint subNum;
        uint subStake;
        address[] subordinates;
        Investment[] investments;
    }

    struct Investment {
        uint start;
        uint finish;
        uint value;
        uint totalReward;
        uint period;
        uint rate;
        uint typeNum;
        bool isReStake;
    }

    struct Invest{
        address addr;
        uint value;
        uint reward;
        uint time;
    }
    Invest[] public insurances;
    uint public insuranceIndex;
    uint public insuranceRewardIndex;

    uint[] rankPcts = [40,30,20,10];
    mapping(uint => Invest[4]) rankMapArray;
    mapping(uint => mapping(address => uint)) public rankMap;
    mapping(uint => bool) public rankFlag;
    mapping(address => User) public userMap;

    event Stake(address indexed user, uint256 amount);
    event Retake(address indexed user, uint256 amount);
    event Withdraw(address indexed user, uint256 amount);
    event Insurance(address indexed user, uint256 amount);
    event Rank(address indexed user, uint256 amount);

    constructor(address payable tech_, address payable ad_, address payable team_, uint256 startTime_, uint256 rankTime_) {
        require(!isContract(tech_), "!techAddress");
        require(!isContract(ad_), "!adAddress");
        require(!isContract(team_), "!teamAddress");
        tech = tech_;
        ad = ad_;
        team = team_;
        userMap[team].active = true;
        if(startTime_==0) startTime_ = block.timestamp;
        if(rankTime_==0) rankTime_ = block.timestamp;
        startTime = startTime_;
        rankTime = rankTime_;
    }

    function getRankIndex() public view returns(uint index){
        (, uint time) = block.timestamp.trySub(rankTime);
        index = time.div(dayTime);
    }

    function getRandom() internal view returns(uint256) {
        bytes32 _blockhash = blockhash(block.number-1);
        uint256 random =  uint256(keccak256(abi.encode(_blockhash,block.timestamp,block.difficulty))).mod(7);
        return random;
    }

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

    function getInfo() public view returns(uint,uint,uint,uint,uint,uint,uint){
        return (startTime, total, pool, rankPool, insurancePool, insuranceTime, rankTime);
    }

    function getRanks(uint index) public view returns(address[4] memory addresses, uint[4] memory values,
        uint[4] memory rewards, uint[4] memory times){
        Invest[4] memory invests = rankMapArray[index];
        for(uint i=0;i<invests.length;i++){
            addresses[i] = invests[i].addr;
            values[i] = invests[i].value;
            rewards[i] = invests[i].reward;
            times[i] = invests[i].time;
        }
    }

    function getInsurances(uint length) public view returns(address[] memory addresses, uint[] memory values,
        uint[] memory rewards, uint[] memory times){
        uint index = 0;
        (,uint end) = insuranceIndex.trySub(length);
        length = insuranceIndex.sub(end);
        addresses = new address[](length);
        values = new uint[](length);
        rewards = new uint[](length);
        times = new uint[](length);
        for(uint i=insuranceIndex;i>end;i--){
            addresses[index] = insurances[i-1].addr;
            values[index] = insurances[i-1].value;
            times[index] = insurances[i-1].time;
            rewards[index] = insurances[i-1].reward;
            index++;
        }
    }

    function getInvestments() public view returns(
        uint[] memory times,uint[] memory starts, uint[] memory values, uint[] memory totalRewards,
        uint[] memory rates, uint[] memory typeNums, bool[] memory isReStakes
    ){
        Investment[] memory investments = userMap[msg.sender].investments;
        times = new uint[](investments.length);
        starts = new uint[](investments.length);
        values = new uint[](investments.length);
        totalRewards = new uint[](investments.length);
        rates = new uint[](investments.length);
        typeNums = new uint[](investments.length);
        isReStakes = new bool[](investments.length);
        for (uint i = 0; i < investments.length; i++) {
            times[i] = investments[i].finish;
            starts[i] = investments[i].start;
            values[i] = investments[i].value;
            totalRewards[i] = investments[i].totalReward;
            rates[i] = investments[i].rate;
            typeNums[i] = investments[i].typeNum;
            isReStakes[i] = investments[i].isReStake;
        }
    }


    function getInvestmentsEx() public view returns(uint[] memory periods){
        Investment[] memory investments = userMap[msg.sender].investments;
        periods = new uint[](investments.length);
        for (uint i = 0; i < investments.length; i++) {
            periods[i] = investments[i].period;
        }
    }

    function getIncreasePct() public view returns(uint increasePct){
        (,uint time) = block.timestamp.trySub(startTime);
        increasePct = time.div(increaseTime);
    }

    function calcReward(uint income, uint rate, uint period) public pure returns(uint reward){
        reward = income.mul(rate).mul(period).div(1000);
    }

    function calcRewardCompound(uint income, uint rate, uint period) public pure returns(uint reward){
        reward = income;
        for(uint i=0;i<18;i++){
            if(period > i)
                reward = reward.mul(rate).div(1000).add(reward);
            else
                reward = reward.mul(0).div(1000).add(reward);
        }
        reward = reward.sub(income);
    }

    function getPeriodAndRate(uint typeNum, uint income) public view returns(uint period, uint rate, uint totalReward){
        if(typeNum==1){
            period = 15;
            rate = getIncreasePct().add(80);
            totalReward = calcReward(income, rate, period);
        }else if(typeNum==2){
            period = 15;
            rate = getRandom().mul(10).add(getIncreasePct()).add(60);
            totalReward = calcReward(income, rate, period);
        }else if(typeNum==3){
            period = 15;
            rate = getIncreasePct().add(76);
            totalReward = calcRewardCompound(income, rate, period);
        }else if(typeNum==4){
            period = getRandom().add(12);
            rate = getIncreasePct().add(76);
            totalReward = calcRewardCompound(income, rate, period);
        }
    }

    function stake(address referrer, uint typeNum) public payable {
        require(block.timestamp>=startTime, "Not start");
        uint income = msg.value;
        require(income >= 5 * 10 ** (unit.sub(2)), "Minimum investment 0.05");
        require(income <= 100 * 10 ** unit, "Maximum investment 100");
        bindRelationship(referrer);
        addInvestment(typeNum, income, false);
        emit Stake(msg.sender, income);
    }

    function updateReward(uint amount) private returns(uint){
        uint income = getAmount();
        User storage user = userMap[msg.sender];
        if(amount == 0 || amount > income) amount = income;
        if(amount > pool) amount = pool;
        require(amount > 0, "Error amount");
        user.totalReward = income.sub(amount);
        user.totalWithdraw = user.totalWithdraw.add(amount);
        user.checkpoint = block.timestamp;
        pool = pool.sub(amount);
        if(insuranceTime == 0 && block.timestamp > startTime.add(dayTime.mul(2)) && pool < 10 * 10 ** unit)
            insuranceTime = block.timestamp.add(dayTime);
        return amount;
    }

    function reStake(uint typeNum, uint amount) public {
        amount = updateReward(amount);
        addInvestment(typeNum, amount, true);
        emit Retake(msg.sender, amount);
    }

    function withdraw(uint amount) public {
        amount = updateReward(amount);
        if(insuranceTime > 0 && insuranceTime < block.timestamp){
            msg.sender.transfer(amount);
        }else{
            insurancePool = insurancePool.add(amount.mul(5).div(100));
            msg.sender.transfer(amount.mul(95).div(100));
        }
        emit Withdraw(msg.sender, amount);
    }

    function getAmount() public view returns(uint amount){
        User memory user = userMap[msg.sender];
        amount = user.totalReward;
        Investment memory investment;
        for(uint i=0;i<user.investments.length;i++){
            investment = user.investments[i];
            if(user.checkpoint > investment.finish) continue;
            if(investment.typeNum > 2) {
                if(block.timestamp < investment.finish) continue;
                amount = amount.add(investment.totalReward);
            }else{
                uint rate = investment.totalReward.div(investment.period.mul(dayTime));
                uint start = investment.start.max(user.checkpoint);
                uint end = investment.finish.min(block.timestamp);
                if(start < end){
                    amount = amount.add(end.sub(start).mul(rate));
                }
            }
        }
    }

    function addInvestment(uint typeNum, uint income, bool isReStake) private{
        User storage user = userMap[msg.sender];
        uint reIncome = income;
        if(isReStake) reIncome = income.mul(102).div(100);
        (uint period, uint rate, uint totalReward) = getPeriodAndRate(typeNum, reIncome);
        uint finish = dayTime.mul(period).add(block.timestamp);
        if (period > 0) {
            address(uint160(tech)).transfer(income.mul(45).div(1000));
            address(uint160(ad)).transfer(income.mul(55).div(1000));
            if(block.timestamp>startTime.add(initialTime)){
                pool = pool.add(income.mul(85).div(100));
                rankPool = rankPool.add(income.mul(5).div(100));
            }else{
                pool = pool.add(income.mul(88).div(100));
                rankPool = rankPool.add(income.mul(2).div(100));
            }

            total = total.add(income);
            user.investment = user.investment.add(income);
            address referrer = user.referrer;
            uint index = getRankIndex();
            for(uint i=0;i<3;i++){
                if(!userMap[referrer].active) break;
                uint reward = income.mul(pcts[i]).div(100);
                userMap[referrer].recommendReward = userMap[referrer].recommendReward.add(reward);
                userMap[referrer].totalReward = userMap[referrer].totalReward.add(reward);
                userMap[referrer].subStake = userMap[referrer].subStake.add(income);
                if(i==0){
                    rankMap[index][referrer] = rankMap[index][referrer].add(income);
                    ranking(referrer, rankMap[index][referrer]);
                }
                referrer = userMap[referrer].referrer;
            }
            user.investments.push(Investment({
                start: block.timestamp,
                finish: finish,
                value: reIncome,
                totalReward: totalReward,
                period: period,
                rate: rate,
                typeNum: typeNum,
                isReStake: isReStake
                }));
            if(insuranceTime == 0 || insuranceTime > block.timestamp){
                insurances.push(Invest(msg.sender, income, 0, block.timestamp));
                insuranceIndex++;
                insuranceRewardIndex = insuranceIndex;
            }
        }
    }

    function ranking(address addr, uint value) private{
        uint index = getRankIndex();
        Invest storage invest;
        address tempAddr;
        uint tempValue;
        address origAddr = addr;
        for(uint i=0;i<rankMapArray[index].length;i++){
            invest = rankMapArray[index][i];
            if(addr==invest.addr) {
                invest.value = value;
                return;
            }else if(value > invest.value){
                tempAddr = invest.addr;
                tempValue = invest.value;
                invest.addr = addr;
                invest.value = value;
                if(origAddr == tempAddr) return;
                addr = tempAddr;
                value = tempValue;
            }
        }
    }

    function distributeRank(uint index) public{
        require(index >= 0 && index < getRankIndex() && !rankFlag[index], "Error index");
        rankFlag[index] = true;
        Invest[4] storage invests = rankMapArray[index];
        address payable addr;
        uint amount;
        uint distribute = rankPool.mul(15).div(100);
        for(uint i=0;i<invests.length;i++){
            addr = address(uint160(invests[i].addr));
            if(distribute <= 0 || addr==address(0)) break;
            amount = distribute.mul(rankPcts[i]).div(100);
            invests[i].reward = amount;
            invests[i].time = block.timestamp;
            addr.transfer(amount);
            emit Rank(addr, amount);
        }
        rankPool = rankPool.sub(distribute);
    }

    function distributeInsurance(uint length) public{
        require(insuranceTime > 0 && insuranceTime < block.timestamp, "Not end");
        address payable addr;
        uint amount;
        (,uint end) = insuranceRewardIndex.trySub(length);
        for(uint i=insuranceRewardIndex;i>end;i--){
            addr = address(uint160(insurances[i-1].addr));
            amount = insurances[i-1].value.mul(150).div(100);
            if(insurancePool <= 0 || addr==address(0) || amount <=0) break;
            amount = insurancePool.min(amount);
            insurancePool = insurancePool.sub(amount);
            insurances[i-1].reward = amount;
            addr.transfer(amount);
            emit Insurance(addr, amount);
            insuranceRewardIndex = i-1;
        }
    }

    function bindRelationship(address referrer) private {
        if (userMap[msg.sender].active) return;
        userMap[msg.sender].active = true;
        if (referrer == msg.sender || !userMap[referrer].active) referrer = team;
        userMap[msg.sender].referrer = referrer;
        userMap[referrer].subordinates.push(msg.sender);
        for(uint i=0;i<3;i++){
            userMap[referrer].subNum++;
            referrer = userMap[referrer].referrer;
            if(!userMap[referrer].active) return;
        }
    }
}

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"tech_","type":"address"},{"internalType":"address payable","name":"ad_","type":"address"},{"internalType":"address payable","name":"team_","type":"address"},{"internalType":"uint256","name":"startTime_","type":"uint256"},{"internalType":"uint256","name":"rankTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Insurance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rank","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Retake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ad","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"income","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"}],"name":"calcReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"income","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"}],"name":"calcRewardCompound","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"distributeInsurance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"distributeRank","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIncreasePct","outputs":[{"internalType":"uint256","name":"increasePct","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"getInsurances","outputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"uint256[]","name":"rewards","type":"uint256[]"},{"internalType":"uint256[]","name":"times","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInvestments","outputs":[{"internalType":"uint256[]","name":"times","type":"uint256[]"},{"internalType":"uint256[]","name":"starts","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"uint256[]","name":"totalRewards","type":"uint256[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"},{"internalType":"uint256[]","name":"typeNums","type":"uint256[]"},{"internalType":"bool[]","name":"isReStakes","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInvestmentsEx","outputs":[{"internalType":"uint256[]","name":"periods","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeNum","type":"uint256"},{"internalType":"uint256","name":"income","type":"uint256"}],"name":"getPeriodAndRate","outputs":[{"internalType":"uint256","name":"period","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"totalReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRankIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRanks","outputs":[{"internalType":"address[4]","name":"addresses","type":"address[4]"},{"internalType":"uint256[4]","name":"values","type":"uint256[4]"},{"internalType":"uint256[4]","name":"rewards","type":"uint256[4]"},{"internalType":"uint256[4]","name":"times","type":"uint256[4]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insurancePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceRewardIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"insurances","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rankFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"rankMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rankPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rankTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeNum","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"typeNum","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tech","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMap","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"recommendReward","type":"uint256"},{"internalType":"uint256","name":"investment","type":"uint256"},{"internalType":"uint256","name":"totalWithdraw","type":"uint256"},{"internalType":"uint256","name":"totalReward","type":"uint256"},{"internalType":"uint256","name":"checkpoint","type":"uint256"},{"internalType":"uint256","name":"subNum","type":"uint256"},{"internalType":"uint256","name":"subStake","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405262015180600a55614650600b556200002e6007600a546200046560201b62002b381790919060201c565b600c556012600d556040518060600160405280600560ff168152602001600260ff168152602001600160ff16815250600e9060036200006f92919062000503565b5033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060800160405280602860ff168152602001601e60ff168152602001601460ff168152602001600a60ff168152506013906004620000f49291906200055a565b503480156200010257600080fd5b50604051620045fe380380620045fe833981810160405260a08110156200012857600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506200017285620004f060201b60201c565b15620001e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f217465636841646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b620001f784620004f060201b60201c565b156200026b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f216164416464726573730000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6200027c83620004f060201b60201c565b15620002f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f217465616d41646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b84600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555060008214156200043e574291505b60008114156200044c574290505b81600081905550806006819055505050505050620005d0565b6000808314156200047a5760009050620004ea565b60008284029050828482816200048c57fe5b0414620004e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620045dd6021913960400191505060405180910390fd5b809150505b92915050565b600080823b905060008111915050919050565b82805482825590600052602060002090810192821562000547579160200282015b8281111562000546578251829060ff1690559160200191906001019062000524565b5b509050620005569190620005b1565b5090565b8280548282559060005260206000209081019282156200059e579160200282015b828111156200059d578251829060ff169055916020019190600101906200057b565b5b509050620005ad9190620005b1565b5090565b5b80821115620005cc576000816000905550600101620005b2565b5090565b613ffd80620005e06000396000f3fe6080604052600436106101ee5760003560e01c806378e979251161010d578063adc9772e116100a0578063cf59f86a1161006f578063cf59f86a14610b90578063d321fe2914610bbb578063d624722d14610be6578063dee120ea14610e02578063eea2817714610e69576101ee565b8063adc9772e14610a63578063aef2afc914610ab1578063b56d395214610adc578063cdd35fbe14610b2d576101ee565b80638da5cb5b116100dc5780638da5cb5b146108b85780639e9595d2146108f9578063aa28229514610934578063ab2adc0014610a38576101ee565b806378e97925146107b55780637f4f9870146107e0578063841062bd1461084c57806385f2aef214610877576101ee565b806342b39a5e116101855780635a9b0b89116101545780635a9b0b89146106c55780636a38b6461461071a5780637642c32a1461075f57806376bc10251461078a576101ee565b806342b39a5e1461059257806343b500e3146105f55780634fe7edff1461062057806359fb49f91461064b576101ee565b80632ddbd13a116101c15780632ddbd13a1461047c5780632e1a7d4d146104a75780633b7379e2146104e25780633e1430af14610551576101ee565b806302bd2ede146101f3578063095f2f161461035b57806316f0115b1461039c5780632bcc23f8146103c7575b600080fd5b3480156101ff57600080fd5b5061022c6004803603602081101561021657600080fd5b8101908080359060200190929190505050610ea4565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561027b578082015181840152602081019050610260565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102bd5780820151818401526020810190506102a2565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156102ff5780820151818401526020810190506102e4565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015610341578082015181840152602081019050610326565b505050509050019850505050505050505060405180910390f35b34801561036757600080fd5b50610370611166565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a857600080fd5b506103b161118c565b6040518082815260200191505060405180910390f35b3480156103d357600080fd5b50610416600480360360208110156103ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611192565b604051808a151581526020018973ffffffffffffffffffffffffffffffffffffffff168152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b34801561048857600080fd5b5061049161120d565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104e0600480360360208110156104ca57600080fd5b8101908080359060200190929190505050611213565b005b3480156104ee57600080fd5b5061053b6004803603604081101561050557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611382565b6040518082815260200191505060405180910390f35b34801561055d57600080fd5b506105666113a7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059e57600080fd5b506105df600480360360608110156105b557600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506113cd565b6040518082815260200191505060405180910390f35b34801561060157600080fd5b5061060a611411565b6040518082815260200191505060405180910390f35b34801561062c57600080fd5b50610635611447565b6040518082815260200191505060405180910390f35b34801561065757600080fd5b506106846004803603602081101561066e57600080fd5b810190808035906020019092919050505061144d565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b3480156106d157600080fd5b506106da6114ad565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b34801561072657600080fd5b5061075d6004803603604081101561073d57600080fd5b8101908080359060200190929190803590602001909291905050506114e3565b005b34801561076b57600080fd5b5061077461154c565b6040518082815260200191505060405180910390f35b34801561079657600080fd5b5061079f611552565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611558565b6040518082815260200191505060405180910390f35b3480156107ec57600080fd5b506107f561155e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561083857808201518184015260208101905061081d565b505050509050019250505060405180910390f35b34801561085857600080fd5b506108616116f6565b6040518082815260200191505060405180910390f35b34801561088357600080fd5b5061088c61172c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c457600080fd5b506108cd611752565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090557600080fd5b506109326004803603602081101561091c57600080fd5b8101908080359060200190929190505050611778565b005b34801561094057600080fd5b5061096d6004803603602081101561095757600080fd5b8101908080359060200190929190505050611a5a565b6040518085600460200280838360005b8381101561099857808201518184015260208101905061097d565b5050505090500184600460200280838360005b838110156109c65780820151818401526020810190506109ab565b5050505090500183600460200280838360005b838110156109f45780820151818401526020810190506109d9565b5050505090500182600460200280838360005b83811015610a22578082015181840152602081019050610a07565b5050505090500194505050505060405180910390f35b348015610a4457600080fd5b50610a4d611c40565b6040518082815260200191505060405180910390f35b610aaf60048036036040811015610a7957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c46565b005b348015610abd57600080fd5b50610ac6611e3a565b6040518082815260200191505060405180910390f35b348015610ae857600080fd5b50610b1560048036036020811015610aff57600080fd5b8101908080359060200190929190505050611e40565b60405180821515815260200191505060405180910390f35b348015610b3957600080fd5b50610b7a60048036036060811015610b5057600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611e60565b6040518082815260200191505060405180910390f35b348015610b9c57600080fd5b50610ba5611f20565b6040518082815260200191505060405180910390f35b348015610bc757600080fd5b50610bd0611f26565b6040518082815260200191505060405180910390f35b348015610bf257600080fd5b50610bfb6122cf565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b83811015610c56578082015181840152602081019050610c3b565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b83811015610c98578082015181840152602081019050610c7d565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b83811015610cda578082015181840152602081019050610cbf565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b83811015610d1c578082015181840152602081019050610d01565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b83811015610d5e578082015181840152602081019050610d43565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b83811015610da0578082015181840152602081019050610d85565b50505050905001888103825289818151815260200191508051906020019060200280838360005b83811015610de2578082015181840152602081019050610dc7565b505050509050019e50505050505050505050505050505060405180910390f35b348015610e0e57600080fd5b50610e4560048036036040811015610e2557600080fd5b810190808035906020019092919080359060200190929190505050612758565b60405180848152602001838152602001828152602001935050505060405180910390f35b348015610e7557600080fd5b50610ea260048036036020811015610e8c57600080fd5b8101908080359060200190929190505050612898565b005b606080606080600080610ec287601154612bbe90919063ffffffff16565b915050610eda81601154612be690919063ffffffff16565b96508667ffffffffffffffff81118015610ef357600080fd5b50604051908082528060200260200182016040528015610f225781602001602082028036833780820191505090505b5095508667ffffffffffffffff81118015610f3c57600080fd5b50604051908082528060200260200182016040528015610f6b5781602001602082028036833780820191505090505b5094508667ffffffffffffffff81118015610f8557600080fd5b50604051908082528060200260200182016040528015610fb45781602001602082028036833780820191505090505b5093508667ffffffffffffffff81118015610fce57600080fd5b50604051908082528060200260200182016040528015610ffd5781602001602082028036833780820191505090505b509250600060115490505b8181111561115c576010600182038154811061102057fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687848151811061105e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060018203815481106110a857fe5b9060005260206000209060040201600101548684815181106110c657fe5b602002602001018181525050601060018203815481106110e257fe5b90600052602060002090600402016003015484848151811061110057fe5b6020026020010181815250506010600182038154811061111c57fe5b90600052602060002090600402016002015485848151811061113a57fe5b6020026020010181815250508280600101935050808060019003915050611008565b5050509193509193565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60176020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154905089565b60015481565b61121c81612c69565b90506000600554118015611231575042600554105b15611282573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561127c573d6000803e3d6000fd5b50611331565b6112bd6112ac606461129e600585612b3890919063ffffffff16565b612e2e90919063ffffffff16565b600454612eb790919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff166108fc61130460646112f6605f86612b3890919063ffffffff16565b612e2e90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561132f573d6000803e3d6000fd5b505b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040518082815260200191505060405180910390a250565b6015602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114086103e86113fa846113ec8789612b3890919063ffffffff16565b612b3890919063ffffffff16565b612e2e90919063ffffffff16565b90509392505050565b60008061142960065442612bbe90919063ffffffff16565b915050611441600a5482612e2e90919063ffffffff16565b91505090565b60055481565b6010818154811061145d57600080fd5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60008060008060008060008054600154600254600354600454600554600654965096509650965096509650965090919293949596565b6114ec81612c69565b90506114fa82826001612f3f565b3373ffffffffffffffffffffffffffffffffffffffff167fb4f3774a35ef894e2fa407041b6832aa9df8f4aae5449664eaa08febb13f8c2d826040518082815260200191505060405180910390a25050565b60125481565b60065481565b60005481565b60606000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901805480602002602001604051908101604052809291908181526020016000905b82821015611658578382906000526020600020906008020160405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff161515151581525050815260200190600101906115c4565b505050509050805167ffffffffffffffff8111801561167657600080fd5b506040519080825280602002602001820160405280156116a55781602001602082028036833780820191505090505b50915060005b81518110156116f1578181815181106116c057fe5b6020026020010151608001518382815181106116d857fe5b60200260200101818152505080806001019150506116ab565b505090565b60008061170e60005442612bbe90919063ffffffff16565b915050611726600b5482612e2e90919063ffffffff16565b91505090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000811015801561178f575061178c611411565b81105b80156117b957506016600082815260200190815260200160002060009054906101000a900460ff16155b61182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4572726f7220696e64657800000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016016600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601460008381526020019081526020016000209050600080600061189c606461188e600f600354612b3890919063ffffffff16565b612e2e90919063ffffffff16565b905060005b6004811015611a37578481600481106118b657fe5b6004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935060008211158061191c5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561192657611a37565b61196360646119556013848154811061193b57fe5b906000526020600020015485612b3890919063ffffffff16565b612e2e90919063ffffffff16565b92508285826004811061197257fe5b60040201600201819055504285826004811061198a57fe5b60040201600301819055508373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156119db573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167fa5813c5e2f711d58d8c7185bf68cf1b23fe16776c003159f0a55bfa19187b1cf846040518082815260200191505060405180910390a280806001019150506118a1565b50611a4d81600354612be690919063ffffffff16565b6003819055505050505050565b611a62613f1b565b611a6a613f3d565b611a72613f3d565b611a7a613f3d565b600060146000878152602001908152602001600020600480602002604051908101604052809291906000905b82821015611b42578382600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611aa6565b50505050905060005b6004811015611c3757818160048110611b6057fe5b602002015160000151868260048110611b7557fe5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160048110611bb857fe5b602002015160200151858260048110611bcd57fe5b602002018181525050818160048110611be257fe5b602002015160400151848260048110611bf757fe5b602002018181525050818160048110611c0c57fe5b602002015160600151838260048110611c2157fe5b6020020181815250508080600101915050611b4b565b50509193509193565b60045481565b600054421015611cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000349050611cd96002600d54612be690919063ffffffff16565b600a0a600502811015611d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d696e696d756d20696e766573746d656e7420302e303500000000000000000081525060200191505060405180910390fd5b600d54600a0a606402811115611dd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d6178696d756d20696e766573746d656e74203130300000000000000000000081525060200191505060405180910390fd5b611ddb83613899565b611de782826000612f3f565b3373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a2505050565b60035481565b60166020528060005260406000206000915054906101000a900460ff1681565b600083905060005b6012811015611f035780831115611eb957611eb282611ea46103e8611e968887612b3890919063ffffffff16565b612e2e90919063ffffffff16565b612eb790919063ffffffff16565b9150611ef6565b611ef382611ee56103e8611ed7600087612b3890919063ffffffff16565b612e2e90919063ffffffff16565b612eb790919063ffffffff16565b91505b8080600101915050611e68565b50611f178482612be690919063ffffffff16565b90509392505050565b60115481565b600080601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882018054806020026020016040519081016040528092919081815260200182805480156120b057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612066575b5050505050815260200160098201805480602002602001604051908101604052809291908181526020016000905b82821015612172578382906000526020600020906008020160405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff161515151581525050815260200190600101906120de565b505050508152505090508060a00151915061218b613f5f565b60005b826101400151518110156122c95782610140015181815181106121ad57fe5b6020026020010151915081602001518360c0015111156121cc576122bc565b60028260c0015111156122085781602001514210156121ea576122bc565b612201826060015185612eb790919063ffffffff16565b93506122bb565b6000612239612226600a548560800151612b3890919063ffffffff16565b8460600151612e2e90919063ffffffff16565b905060006122588560c001518560000151613c5390919063ffffffff16565b90506000612273428660200151613c6d90919063ffffffff16565b9050808210156122b7576122b46122a5846122978585612be690919063ffffffff16565b612b3890919063ffffffff16565b88612eb790919063ffffffff16565b96505b5050505b5b808060010191505061218e565b50505090565b60608060608060608060606000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901805480602002602001604051908101604052809291908181526020016000905b828210156123d2578382906000526020600020906008020160405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250508152602001906001019061233e565b505050509050805167ffffffffffffffff811180156123f057600080fd5b5060405190808252806020026020018201604052801561241f5781602001602082028036833780820191505090505b509750805167ffffffffffffffff8111801561243a57600080fd5b506040519080825280602002602001820160405280156124695781602001602082028036833780820191505090505b509650805167ffffffffffffffff8111801561248457600080fd5b506040519080825280602002602001820160405280156124b35781602001602082028036833780820191505090505b509550805167ffffffffffffffff811180156124ce57600080fd5b506040519080825280602002602001820160405280156124fd5781602001602082028036833780820191505090505b509450805167ffffffffffffffff8111801561251857600080fd5b506040519080825280602002602001820160405280156125475781602001602082028036833780820191505090505b509350805167ffffffffffffffff8111801561256257600080fd5b506040519080825280602002602001820160405280156125915781602001602082028036833780820191505090505b509250805167ffffffffffffffff811180156125ac57600080fd5b506040519080825280602002602001820160405280156125db5781602001602082028036833780820191505090505b50915060005b815181101561274d578181815181106125f657fe5b60200260200101516020015189828151811061260e57fe5b60200260200101818152505081818151811061262657fe5b60200260200101516000015188828151811061263e57fe5b60200260200101818152505081818151811061265657fe5b60200260200101516040015187828151811061266e57fe5b60200260200101818152505081818151811061268657fe5b60200260200101516060015186828151811061269e57fe5b6020026020010181815250508181815181106126b657fe5b602002602001015160a001518582815181106126ce57fe5b6020026020010181815250508181815181106126e657fe5b602002602001015160c001518482815181106126fe57fe5b60200260200101818152505081818151811061271657fe5b602002602001015160e0015183828151811061272e57fe5b60200260200101901515908115158152505080806001019150506125e1565b505090919293949596565b6000806000600185141561279957600f925061278560506127776116f6565b612eb790919063ffffffff16565b91506127928483856113cd565b9050612891565b600285141561280157600f92506127ed603c6127df6127b66116f6565b6127d1600a6127c3613c86565b612b3890919063ffffffff16565b612eb790919063ffffffff16565b612eb790919063ffffffff16565b91506127fa8483856113cd565b9050612890565b600385141561283d57600f9250612829604c61281b6116f6565b612eb790919063ffffffff16565b9150612836848385611e60565b905061288f565b600485141561288e57612861600c612853613c86565b612eb790919063ffffffff16565b925061287e604c6128706116f6565b612eb790919063ffffffff16565b915061288b848385611e60565b90505b5b5b5b9250925092565b60006005541180156128ab575042600554105b61291d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f4e6f7420656e640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600061293784601254612bbe90919063ffffffff16565b915050600060125490505b81811115612b31576010600182038154811061295a57fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693506129d660646129c86096601060018603815481106129a857fe5b906000526020600020906004020160010154612b3890919063ffffffff16565b612e2e90919063ffffffff16565b92506000600454111580612a165750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80612a22575060008311155b15612a2c57612b31565b612a4183600454613c6d90919063ffffffff16565b9250612a5883600454612be690919063ffffffff16565b6004819055508260106001830381548110612a6f57fe5b9060005260206000209060040201600201819055508373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612aca573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f5ff3981d8447fccf06f5a30c0ae4700aaafc811f2dcae05fabbe9f40ba6b340f846040518082815260200191505060405180910390a260018103601281905550808060019003915050612942565b5050505050565b600080831415612b4b5760009050612bb8565b6000828402905082848281612b5c57fe5b0414612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613fa76021913960400191505060405180910390fd5b809150505b92915050565b60008083831115612bd55760008091509150612bdf565b6001838503915091505b9250929050565b600082821115612c5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080612c74611f26565b90506000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000841480612cc757508184115b15612cd0578193505b600254841115612ce05760025493505b60008411612d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4572726f7220616d6f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b612d698483612be690919063ffffffff16565b8160040181905550612d88848260030154612eb790919063ffffffff16565b8160030181905550428160050181905550612dae84600254612be690919063ffffffff16565b6002819055506000600554148015612dee5750612deb612dda6002600a54612b3890919063ffffffff16565b600054612eb790919063ffffffff16565b42115b8015612e035750600d54600a0a600a02600254105b15612e2457612e1d600a5442612eb790919063ffffffff16565b6005819055505b8392505050919050565b6000808211612ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381612eae57fe5b04905092915050565b600080828401905083811015612f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008390508215612fb757612fb46064612fa6606687612b3890919063ffffffff16565b612e2e90919063ffffffff16565b90505b6000806000612fc68885612758565b9250925092506000612ff542612fe786600a54612b3890919063ffffffff16565b612eb790919063ffffffff16565b9050600084111561388e57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6130646103e8613056602d8d612b3890919063ffffffff16565b612e2e90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561308f573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6130f46103e86130e660378d612b3890919063ffffffff16565b612e2e90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561311f573d6000803e3d6000fd5b50613137600c54600054612eb790919063ffffffff16565b4211156131c557613179613168606461315a60558c612b3890919063ffffffff16565b612e2e90919063ffffffff16565b600254612eb790919063ffffffff16565b6002819055506131ba6131a9606461319b60058c612b3890919063ffffffff16565b612e2e90919063ffffffff16565b600354612eb790919063ffffffff16565b600381905550613248565b6132006131ef60646131e160588c612b3890919063ffffffff16565b612e2e90919063ffffffff16565b600254612eb790919063ffffffff16565b600281905550613241613230606461322260028c612b3890919063ffffffff16565b612e2e90919063ffffffff16565b600354612eb790919063ffffffff16565b6003819055505b61325d88600154612eb790919063ffffffff16565b60018190555061327a888760020154612eb790919063ffffffff16565b866002018190555060008660000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006132b5611411565b905060005b60038110156136bc57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661331c576136bc565b600061335b606461334d600e858154811061333357fe5b90600052602060002001548f612b3890919063ffffffff16565b612e2e90919063ffffffff16565b90506133b281601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612eb790919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061344d81601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154612eb790919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506134e88c601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612eb790919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555060008214156136495761359a8c6015600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb790919063ffffffff16565b6015600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613648846015600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ce9565b5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505080806001019150506132ba565b50876009016040518061010001604052804281526020018581526020018981526020018681526020018881526020018781526020018d81526020018b15158152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff0219169083151502179055505050600060055414806137a0575042600554115b1561388b57601060405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020016000815260200142815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550506011600081548092919060010191905055506011546012819055505b50505b505050505050505050565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156138f357613c50565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806139d55750601760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16155b15613a0057600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b80601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b6003811015613c4e57601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008154809291906001019190505550601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613c415750613c50565b8080600101915050613b27565b505b50565b600081831015613c635781613c65565b825b905092915050565b6000818310613c7c5781613c7e565b825b905092915050565b600080600143034090506000613cdf60078342446040516020018084815260200183815260200182815260200193505050506040516020818303038152906040528051906020012060001c613e9290919063ffffffff16565b9050809250505090565b6000613cf3611411565b905060008060008086905060005b60146000878152602001908152602001600020506004811015613e8757601460008781526020019081526020016000208160048110613d3c57fe5b6004020194508460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415613dae57868560010181905550505050505050613e8e565b8460010154871115613e7a578460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935084600101549250878560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508685600101819055508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e7357505050505050613e8e565b8397508296505b8080600101915050613d01565b5050505050505b5050565b6000808211613f09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060200191505060405180910390fd5b818381613f1257fe5b06905092915050565b6040518060800160405280600490602082028036833780820191505090505090565b6040518060800160405280600490602082028036833780820191505090505090565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122086fd1c5b7684a936671cad89ddd73472ab4a928acaa03a4b1d1f01a89575b3fa64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f770000000000000000000000005d2a54f1e0f8cd6a284c6fddde518525dd6155830000000000000000000000008aae362a4a1ffa9ea6d54dcf48121e345c25993e000000000000000000000000ec6d05c7a9420d9dc643e1a9b03292beb0d0256c0000000000000000000000000000000000000000000000000000000060bb67400000000000000000000000000000000000000000000000000000000060c35040

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

0000000000000000000000005d2a54f1e0f8cd6a284c6fddde518525dd6155830000000000000000000000008aae362a4a1ffa9ea6d54dcf48121e345c25993e000000000000000000000000ec6d05c7a9420d9dc643e1a9b03292beb0d0256c0000000000000000000000000000000000000000000000000000000060bb67400000000000000000000000000000000000000000000000000000000060c35040

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000005d2a54f1e0f8cd6a284c6fddde518525dd615583
Arg [1] : 0000000000000000000000008aae362a4a1ffa9ea6d54dcf48121e345c25993e
Arg [2] : 000000000000000000000000ec6d05c7a9420d9dc643e1a9b03292beb0d0256c
Arg [3] : 0000000000000000000000000000000000000000000000000000000060bb6740
Arg [4] : 0000000000000000000000000000000000000000000000000000000060c35040


Deployed ByteCode Sourcemap

2791:15419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6467:736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3043:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2902:16;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4294:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:17;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11572:397;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4187:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3077:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8832:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5202:158;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2984:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3996:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5826:174;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11376:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4062:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3016:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2850:21;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8317:322;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8647:177;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3109:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3296:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16094:779;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6008:451;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2952:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10240:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2925:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8995:388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4029:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11977:913;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7211:1096;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9391:841;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16881:787;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6467:736;6523:26;6551:20;6582:21;6605:19;6636:10;6663:8;6675:29;6697:6;6675:14;;:21;;:29;;;;:::i;:::-;6661:43;;;6724:23;6743:3;6724:14;;:18;;:23;;;;:::i;:::-;6715:32;;6784:6;6770:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:33;;6822:6;6811:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:27;;6861:6;6850:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6840:28;;6898:6;6887:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6879:26;;6920:6;6927:14;;6920:21;;6916:280;6944:3;6942:1;:5;6916:280;;;6986:10;6999:1;6997;:3;6986:15;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;6967:9;6977:5;6967:16;;;;;;;;;;;;;:39;;;;;;;;;;;7037:10;7050:1;7048;:3;7037:15;;;;;;;;;;;;;;;;;;:21;;;7021:6;7028:5;7021:13;;;;;;;;;;;;;:37;;;;;7088:10;7101:1;7099;:3;7088:15;;;;;;;;;;;;;;;;;;:20;;;7073:5;7079;7073:12;;;;;;;;;;;;;:35;;;;;7140:10;7153:1;7151;:3;7140:15;;;;;;;;;;;;;;;;;;:22;;;7123:7;7131:5;7123:14;;;;;;;;;;;;;:39;;;;;7177:7;;;;;;;6948:3;;;;;;;;6916:280;;;;6467:736;;;;;;;:::o;3043:27::-;;;;;;;;;;;;;:::o;2902:16::-;;;;:::o;4294:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2878:17::-;;;;:::o;11572:397::-;11630:20;11643:6;11630:12;:20::i;:::-;11621:29;;11680:1;11664:13;;:17;:52;;;;;11701:15;11685:13;;:31;11664:52;11661:257;;;11732:10;:19;;:27;11752:6;11732:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11661:257;;;11806:41;11824:22;11842:3;11824:13;11835:1;11824:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;11806:13;;:17;;:41;;;;:::i;:::-;11790:13;:57;;;;11862:10;:19;;:44;11882:23;11901:3;11882:14;11893:2;11882:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11862:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11661:257;11942:10;11933:28;;;11954:6;11933:28;;;;;;;;;;;;;;;;;;11572:397;:::o;4187:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3077:25::-;;;;;;;;;;;;;:::o;8832:155::-;8909:11;8941:38;8974:4;8941:28;8962:6;8941:16;8952:4;8941:6;:10;;:16;;;;:::i;:::-;:20;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;8932:47;;8832:155;;;;;:::o;5202:158::-;5246:10;5271:9;5284:32;5307:8;;5284:15;:22;;:32;;;;:::i;:::-;5268:48;;;5335:17;5344:7;;5335:4;:8;;:17;;;;:::i;:::-;5327:25;;5202:158;;:::o;2984:25::-;;;;:::o;3996:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5826:174::-;5865:4;5870;5875;5880;5885;5890;5895;5919:9;;5930:5;;5937:4;;5943:8;;5953:13;;5968;;5983:8;;5911:81;;;;;;;;;;;;;;5826:174;;;;;;;:::o;11376:188::-;11447:20;11460:6;11447:12;:20::i;:::-;11438:29;;11478:36;11492:7;11501:6;11509:4;11478:13;:36::i;:::-;11537:10;11530:26;;;11549:6;11530:26;;;;;;;;;;;;;;;;;;11376:188;;:::o;4062:32::-;;;;:::o;3016:20::-;;;;:::o;2850:21::-;;;;:::o;8317:322::-;8365:21;8398:31;8432:7;:19;8440:10;8432:19;;;;;;;;;;;;;;;:31;;8398:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8495:11;:18;8484:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8474:40;;8530:6;8525:107;8546:11;:18;8542:1;:22;8525:107;;;8599:11;8611:1;8599:14;;;;;;;;;;;;;;:21;;;8586:7;8594:1;8586:10;;;;;;;;;;;;;:34;;;;;8566:3;;;;;;;8525:107;;;;8317:322;;:::o;8647:177::-;8693:16;8723:9;8736:33;8759:9;;8736:15;:22;;:33;;;;:::i;:::-;8721:48;;;8794:22;8803:12;;8794:4;:8;;:22;;;;:::i;:::-;8780:36;;8647:177;;:::o;3109:27::-;;;;;;;;;;;;;:::o;3296:33::-;;;;;;;;;;;;;:::o;16094:779::-;16164:1;16155:5;:10;;:36;;;;;16177:14;:12;:14::i;:::-;16169:5;:22;16155:36;:56;;;;;16196:8;:15;16205:5;16196:15;;;;;;;;;;;;;;;;;;;;;16195:16;16155:56;16147:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16256:4;16238:8;:15;16247:5;16238:15;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16271:25;16299:12;:19;16312:5;16299:19;;;;;;;;;;;16271:47;;16329:20;16360:11;16382:15;16400:25;16421:3;16400:16;16413:2;16400:8;;:12;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;16382:43;;16440:6;16436:384;16451:14;16449:1;:16;16436:384;;;16508:7;16516:1;16508:10;;;;;;;;;;:15;;;;;;;;;;;;16485:40;;16557:1;16543:10;:15;;:35;;;;16576:1;16562:16;;:4;:16;;;16543:35;16540:45;;;16580:5;;16540:45;16609:36;16641:3;16609:27;16624:8;16633:1;16624:11;;;;;;;;;;;;;;;;16609:10;:14;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;16600:45;;16680:6;16660:7;16668:1;16660:10;;;;;;;;;;:17;;:26;;;;16719:15;16701:7;16709:1;16701:10;;;;;;;;;;:15;;:33;;;;16749:4;:13;;:21;16763:6;16749:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16795:4;16790:18;;;16801:6;16790:18;;;;;;;;;;;;;;;;;;16466:3;;;;;;;16436:384;;;;16841:24;16854:10;16841:8;;:12;;:24;;;;:::i;:::-;16830:8;:35;;;;16094:779;;;;;:::o;6008:451::-;6058:27;;:::i;:::-;6087:21;;:::i;:::-;6119:22;;:::i;:::-;6143:20;;:::i;:::-;6175:24;6202:12;:19;6215:5;6202:19;;;;;;;;;;;6175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6236:6;6232:220;6247:14;6245:1;:16;6232:220;;;6296:7;6304:1;6296:10;;;;;;;;;;;:15;;;6281:9;6291:1;6281:12;;;;;;;;;;:30;;;;;;;;;;;6338:7;6346:1;6338:10;;;;;;;;;;;:16;;;6326:6;6333:1;6326:9;;;;;;;;;;:28;;;;;6382:7;6390:1;6382:10;;;;;;;;;;;:17;;;6369:7;6377:1;6369:10;;;;;;;;;;:30;;;;;6425:7;6433:1;6425:10;;;;;;;;;;;:15;;;6414:5;6420:1;6414:8;;;;;;;;;;:26;;;;;6262:3;;;;;;;6232:220;;;;6008:451;;;;;;:::o;2952:25::-;;;;:::o;10240:441::-;10338:9;;10321:15;:26;;10313:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10372:11;10386:9;10372:23;;10435:11;10444:1;10435:4;;:8;;:11;;;;:::i;:::-;10428:2;:19;10424:1;:23;10414:6;:33;;10406:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10516:4;;10510:2;:10;10504:3;:16;10494:6;:26;;10486:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10558:26;10575:8;10558:16;:26::i;:::-;10595:37;10609:7;10618:6;10626:5;10595:13;:37::i;:::-;10654:10;10648:25;;;10666:6;10648:25;;;;;;;;;;;;;;;;;;10240:441;;;:::o;2925:20::-;;;;:::o;4250:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;8995:388::-;9080:11;9112:6;9103:15;;9133:6;9129:209;9144:2;9142:1;:4;9129:209;;;9178:1;9169:6;:10;9166:160;;;9207:38;9238:6;9207:26;9228:4;9207:16;9218:4;9207:6;:10;;:16;;;;:::i;:::-;:20;;:26;;;;:::i;:::-;:30;;:38;;;;:::i;:::-;9198:47;;9166:160;;;9291:35;9319:6;9291:23;9309:4;9291:13;9302:1;9291:6;:10;;:13;;;;:::i;:::-;:17;;:23;;;;:::i;:::-;:27;;:35;;;;:::i;:::-;9282:44;;9166:160;9147:3;;;;;;;9129:209;;;;9357:18;9368:6;9357;:10;;:18;;;;:::i;:::-;9348:27;;8995:388;;;;;:::o;4029:26::-;;;;:::o;11977:913::-;12018:11;12041:16;12060:7;:19;12068:10;12060:19;;;;;;;;;;;;;;;12041:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12099:4;:16;;;12090:25;;12126:28;;:::i;:::-;12169:6;12165:718;12180:4;:16;;;:23;12178:1;:25;12165:718;;;12236:4;:16;;;12253:1;12236:19;;;;;;;;;;;;;;12223:32;;12291:10;:17;;;12273:4;:15;;;:35;12270:48;;;12310:8;;12270:48;12357:1;12336:10;:18;;;:22;12333:539;;;12400:10;:17;;;12382:15;:35;12379:48;;;12419:8;;12379:48;12455:34;12466:10;:22;;;12455:6;:10;;:34;;;;:::i;:::-;12446:43;;12333:539;;;12528:9;12540:58;12567:30;12589:7;;12567:10;:17;;;:21;;:30;;;;:::i;:::-;12540:10;:22;;;:26;;:58;;;;:::i;:::-;12528:70;;12617:10;12630:37;12651:4;:15;;;12630:10;:16;;;:20;;:37;;;;:::i;:::-;12617:50;;12686:8;12697:38;12719:15;12697:10;:17;;;:21;;:38;;;;:::i;:::-;12686:49;;12765:3;12757:5;:11;12754:103;;;12801:36;12812:24;12831:4;12812:14;12820:5;12812:3;:7;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;12801:6;:10;;:36;;;;:::i;:::-;12792:45;;12754:103;12333:539;;;;12165:718;12204:3;;;;;;;12165:718;;;;11977:913;;;:::o;7211:1096::-;7267:19;7287:20;7309;7331:26;7368:19;7389:22;7413:24;7455:31;7489:7;:19;7497:10;7489:19;;;;;;;;;;;;;;;:31;;7455:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:11;:18;7539:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7531:38;;7600:11;:18;7589:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7580:39;;7650:11;:18;7639:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7630:39;;7706:11;:18;7695:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:45;;7755:11;:18;7744:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7736:38;;7807:11;:18;7796:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7785:41;;7861:11;:18;7850:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7837:43;;7896:6;7891:409;7912:11;:18;7908:1;:22;7891:409;;;7963:11;7975:1;7963:14;;;;;;;;;;;;;;:21;;;7952:5;7958:1;7952:8;;;;;;;;;;;;;:32;;;;;8011:11;8023:1;8011:14;;;;;;;;;;;;;;:20;;;7999:6;8006:1;7999:9;;;;;;;;;;;;;:32;;;;;8058:11;8070:1;8058:14;;;;;;;;;;;;;;:20;;;8046:6;8053:1;8046:9;;;;;;;;;;;;;:32;;;;;8111:11;8123:1;8111:14;;;;;;;;;;;;;;:26;;;8093:12;8106:1;8093:15;;;;;;;;;;;;;:44;;;;;8163:11;8175:1;8163:14;;;;;;;;;;;;;;:19;;;8152:5;8158:1;8152:8;;;;;;;;;;;;;:30;;;;;8211:11;8223:1;8211:14;;;;;;;;;;;;;;:22;;;8197:8;8206:1;8197:11;;;;;;;;;;;;;:36;;;;;8264:11;8276:1;8264:14;;;;;;;;;;;;;;:24;;;8248:10;8259:1;8248:13;;;;;;;;;;;;;:40;;;;;;;;;;;7932:3;;;;;;;7891:409;;;;7211:1096;;;;;;;;:::o;9391:841::-;9464:11;9477:9;9488:16;9528:1;9519:7;:10;9516:709;;;9554:2;9545:11;;9578:24;9599:2;9578:16;:14;:16::i;:::-;:20;;:24;;;;:::i;:::-;9571:31;;9631:32;9642:6;9650:4;9656:6;9631:10;:32::i;:::-;9617:46;;9516:709;;;9692:1;9683:7;:10;9680:545;;;9718:2;9709:11;;9742:49;9788:2;9742:41;9766:16;:14;:16::i;:::-;9742:19;9758:2;9742:11;:9;:11::i;:::-;:15;;:19;;;;:::i;:::-;:23;;:41;;;;:::i;:::-;:45;;:49;;;;:::i;:::-;9735:56;;9820:32;9831:6;9839:4;9845:6;9820:10;:32::i;:::-;9806:46;;9680:545;;;9881:1;9872:7;:10;9869:356;;;9907:2;9898:11;;9931:24;9952:2;9931:16;:14;:16::i;:::-;:20;;:24;;;;:::i;:::-;9924:31;;9984:40;10003:6;10011:4;10017:6;9984:18;:40::i;:::-;9970:54;;9869:356;;;10053:1;10044:7;:10;10041:184;;;10079:19;10095:2;10079:11;:9;:11::i;:::-;:15;;:19;;;;:::i;:::-;10070:28;;10120:24;10141:2;10120:16;:14;:16::i;:::-;:20;;:24;;;;:::i;:::-;10113:31;;10173:40;10192:6;10200:4;10206:6;10173:18;:40::i;:::-;10159:54;;10041:184;9869:356;9680:545;9516:709;9391:841;;;;;:::o;16881:787::-;16964:1;16948:13;;:17;:52;;;;;16985:15;16969:13;;:31;16948:52;16940:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17023:20;17054:11;17078:8;17090:35;17118:6;17090:20;;:27;;:35;;;;:::i;:::-;17076:49;;;17140:6;17147:20;;17140:27;;17136:525;17170:3;17168:1;:5;17136:525;;;17216:10;17229:1;17227;:3;17216:15;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;17193:45;;17262:39;17297:3;17262:30;17288:3;17262:10;17275:1;17273;:3;17262:15;;;;;;;;;;;;;;;;;;:21;;;:25;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;17253:48;;17336:1;17319:13;;:18;;:38;;;;17355:1;17341:16;;:4;:16;;;17319:38;:52;;;;17370:1;17361:6;:10;;17319:52;17316:62;;;17373:5;;17316:62;17402:25;17420:6;17402:13;;:17;;:25;;;;:::i;:::-;17393:34;;17458:25;17476:6;17458:13;;:17;;:25;;;;:::i;:::-;17442:13;:41;;;;17523:6;17498:10;17511:1;17509;:3;17498:15;;;;;;;;;;;;;;;;;;:22;;:31;;;;17544:4;:13;;:21;17558:6;17544:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17595:4;17585:23;;;17601:6;17585:23;;;;;;;;;;;;;;;;;;17648:1;17646;:3;17623:20;:26;;;;17174:3;;;;;;;;17136:525;;;;16881:787;;;;:::o;1349:220::-;1407:7;1436:1;1431;:6;1427:20;;;1446:1;1439:8;;;;1427:20;1458:9;1474:1;1470;:5;1458:17;;1503:1;1498;1494;:5;;;;;;:10;1486:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1560:1;1553:8;;;1349:220;;;;;:::o;278:154::-;339:4;345:7;373:1;369;:5;365:28;;;384:5;391:1;376:17;;;;;;365:28;412:4;422:1;418;:5;404:20;;;;278:154;;;;;;:::o;1183:158::-;1241:7;1274:1;1269;:6;;1261:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:1;1328;:5;1321:12;;1183:158;;;;:::o;10689:679::-;10740:4;10756:11;10770;:9;:11::i;:::-;10756:25;;10792:17;10812:7;:19;10820:10;10812:19;;;;;;;;;;;;;;;10792:39;;10855:1;10845:6;:11;:30;;;;10869:6;10860;:15;10845:30;10842:50;;;10886:6;10877:15;;10842:50;10915:4;;10906:6;:13;10903:31;;;10930:4;;10921:13;;10903:31;10962:1;10953:6;:10;10945:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11010:18;11021:6;11010;:10;;:18;;;;:::i;:::-;10991:4;:16;;:37;;;;11060:30;11083:6;11060:4;:18;;;:22;;:30;;;;:::i;:::-;11039:4;:18;;:51;;;;11119:15;11101:4;:15;;:33;;;;11152:16;11161:6;11152:4;;:8;;:16;;;;:::i;:::-;11145:4;:23;;;;11199:1;11182:13;;:18;:69;;;;;11222:29;11236:14;11248:1;11236:7;;:11;;:14;;;;:::i;:::-;11222:9;;:13;;:29;;;;:::i;:::-;11204:15;:47;11182:69;:95;;;;;11273:4;;11267:2;:10;11262:2;:15;11255:4;;:22;11182:95;11179:157;;;11308:28;11328:7;;11308:15;:19;;:28;;;;:::i;:::-;11292:13;:44;;;;11179:157;11354:6;11347:13;;;;10689:679;;;:::o;1577:153::-;1635:7;1667:1;1663;:5;1655:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:1;1717;:5;;;;;;1710:12;;1577:153;;;;:::o;996:179::-;1054:7;1074:9;1090:1;1086;:5;1074:17;;1115:1;1110;:6;;1102:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:1;1159:8;;;996:179;;;;:::o;12898:2411::-;12982:17;13002:7;:19;13010:10;13002:19;;;;;;;;;;;;;;;12982:39;;13032:13;13048:6;13032:22;;13068:9;13065:49;;;13090:24;13110:3;13090:15;13101:3;13090:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;13079:35;;13065:49;13126:11;13139:9;13150:16;13170:35;13187:7;13196:8;13170:16;:35::i;:::-;13125:80;;;;;;13216:11;13230:40;13254:15;13230:19;13242:6;13230:7;;:11;;:19;;;;:::i;:::-;:23;;:40;;;;:::i;:::-;13216:54;;13294:1;13285:6;:10;13281:2021;;;13328:4;;;;;;;;;;;13312:31;;:57;13344:24;13363:4;13344:14;13355:2;13344:6;:10;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;13312:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13400:2;;;;;;;;;;;13384:29;;:55;13414:24;13433:4;13414:14;13425:2;13414:6;:10;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;13384:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13473:26;13487:11;;13473:9;;:13;;:26;;;;:::i;:::-;13457:15;:42;13454:332;;;13526:33;13535:23;13554:3;13535:14;13546:2;13535:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13526:4;;:8;;:33;;;;:::i;:::-;13519:4;:40;;;;13589:36;13602:22;13620:3;13602:13;13613:1;13602:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;13589:8;;:12;;:36;;;;:::i;:::-;13578:8;:47;;;;13454:332;;;13671:33;13680:23;13699:3;13680:14;13691:2;13680:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13671:4;;:8;;:33;;;;:::i;:::-;13664:4;:40;;;;13734:36;13747:22;13765:3;13747:13;13758:1;13747:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;13734:8;;:12;;:36;;;;:::i;:::-;13723:8;:47;;;;13454:332;13810:17;13820:6;13810:5;;:9;;:17;;;;:::i;:::-;13802:5;:25;;;;13860:27;13880:6;13860:4;:15;;;:19;;:27;;;;:::i;:::-;13842:4;:15;;:45;;;;13902:16;13921:4;:13;;;;;;;;;;;;13902:32;;13949:10;13962:14;:12;:14::i;:::-;13949:27;;13995:6;13991:684;14006:1;14004;:3;13991:684;;;14035:7;:17;14043:8;14035:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;14031:35;;14061:5;;14031:35;14085:11;14099:28;14123:3;14099:19;14110:4;14115:1;14110:7;;;;;;;;;;;;;;;;14099:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14085:42;;14182:45;14220:6;14182:7;:17;14190:8;14182:17;;;;;;;;;;;;;;;:33;;;:37;;:45;;;;:::i;:::-;14146:7;:17;14154:8;14146:17;;;;;;;;;;;;;;;:33;;:81;;;;14278:41;14312:6;14278:7;:17;14286:8;14278:17;;;;;;;;;;;;;;;:29;;;:33;;:41;;;;:::i;:::-;14246:7;:17;14254:8;14246:17;;;;;;;;;;;;;;;:29;;:73;;;;14367:38;14398:6;14367:7;:17;14375:8;14367:17;;;;;;;;;;;;;;;:26;;;:30;;:38;;;;:::i;:::-;14338:7;:17;14346:8;14338:17;;;;;;;;;;;;;;;:26;;:67;;;;14430:1;14427;:4;14424:180;;;14482:36;14511:6;14482:7;:14;14490:5;14482:14;;;;;;;;;;;:24;14497:8;14482:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;14455:7;:14;14463:5;14455:14;;;;;;;;;;;:24;14470:8;14455:24;;;;;;;;;;;;;;;:63;;;;14541:43;14549:8;14559:7;:14;14567:5;14559:14;;;;;;;;;;;:24;14574:8;14559:24;;;;;;;;;;;;;;;;14541:7;:43::i;:::-;14424:180;14633:7;:17;14641:8;14633:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;14622:37;;13991:684;14008:3;;;;;;;13991:684;;;;14689:4;:16;;14711:318;;;;;;;;14748:15;14711:318;;;;14790:6;14711:318;;;;14822:8;14711:318;;;;14862:11;14711:318;;;;14900:6;14711:318;;;;14931:4;14711:318;;;;14963:7;14711:318;;;;15000:9;14711:318;;;;;14689:341;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15065:1;15048:13;;:18;:53;;;;15086:15;15070:13;;:31;15048:53;15045:246;;;15121:10;15137:46;;;;;;;;15144:10;15137:46;;;;;;15156:6;15137:46;;;;15164:1;15137:46;;;;15167:15;15137:46;;;15121:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15203:14;;:16;;;;;;;;;;;;;15261:14;;15238:20;:37;;;;15045:246;13281:2021;;;12898:2411;;;;;;;;;:::o;17676:531::-;17743:7;:19;17751:10;17743:19;;;;;;;;;;;;;;;:26;;;;;;;;;;;;17739:39;;;17771:7;;17739:39;17817:4;17788:7;:19;17796:10;17788:19;;;;;;;;;;;;;;;:26;;;:33;;;;;;;;;;;;;;;;;;17848:10;17836:22;;:8;:22;;;:51;;;;17863:7;:17;17871:8;17863:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;17862:25;17836:51;17832:72;;;17900:4;;;;;;;;;;;17889:15;;17832:72;17946:8;17915:7;:19;17923:10;17915:19;;;;;;;;;;;;;;;:28;;;:39;;;;;;;;;;;;;;;;;;17965:7;:17;17973:8;17965:17;;;;;;;;;;;;;;;:30;;18001:10;17965:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18027:6;18023:177;18038:1;18036;:3;18023:177;;;18059:7;:17;18067:8;18059:17;;;;;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;18111:7;:17;18119:8;18111:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;18100:37;;18156:7;:17;18164:8;18156:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;18152:37;;18182:7;;;18152:37;18040:3;;;;;;;18023:177;;;;17676:531;;:::o;2417:107::-;2475:7;2507:1;2502;:6;;:14;;2515:1;2502:14;;;2511:1;2502:14;2495:21;;2417:107;;;;:::o;2532:106::-;2590:7;2621:1;2617;:5;:13;;2629:1;2617:13;;;2625:1;2617:13;2610:20;;2532:106;;;;:::o;5368:252::-;5411:7;5431:18;5475:1;5462:12;:14;5452:25;5431:46;;5488:14;5506:82;5586:1;5535:10;5546:15;5562:16;5524:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5514:66;;;;;;5506:75;;:79;;:82;;;;:::i;:::-;5488:100;;5606:6;5599:13;;;;5368:252;:::o;15317:769::-;15378:10;15391:14;:12;:14::i;:::-;15378:27;;15416:21;15448:16;15475:14;15500:16;15519:4;15500:23;;15538:6;15534:545;15549:12;:19;15562:5;15549:19;;;;;;;;;;;:26;;15547:1;:28;15534:545;;;15604:12;:19;15617:5;15604:19;;;;;;;;;;;15624:1;15604:22;;;;;;;;;;15595:31;;15650:6;:11;;;;;;;;;;;;15644:17;;:4;:17;;;15641:427;;;15697:5;15682:6;:12;;:20;;;;15721:7;;;;;;;;15641:427;15759:6;:12;;;15751:5;:20;15748:320;;;15802:6;:11;;;;;;;;;;;;15791:22;;15844:6;:12;;;15832:24;;15889:4;15875:6;:11;;;:18;;;;;;;;;;;;;;;;;;15927:5;15912:6;:12;;:20;;;;15966:8;15954:20;;:8;:20;;;15951:32;;;15976:7;;;;;;;;15951:32;16008:8;16001:15;;16043:9;16035:17;;15748:320;15576:3;;;;;;;15534:545;;;;15317:769;;;;;;;;:::o;1738:151::-;1796:7;1828:1;1824;:5;1816:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:1;1876;:5;;;;;;1869:12;;1738:151;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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