Contract Overview
Balance: 8.25284552002 Ether
Ether Value: $1,037.63 (@ $125.73/ETH)
Transactions: 691 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x156dd44dbda3a4d8b27d99d6f9484702f5b526f6at txn 0x0370e4b1ff6058c9b02fc2e5d33180e2c5e2e6e92681d4013a0d7685ff18e114
 Latest 25 transactions from a total of 691 transactions

TxHash Age From To Value [TxFee]
0x69f0c1251b1f14542c1181af96b4ac8ebe940874b66f02e11b6b4eb58edf6d366 hrs 21 mins ago0xa36baee01088db46a0315e30d2705c694045983d  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000052404
0xf418de0cfa369d4e19fe7d6d7deb0275d160c063b369239b079d37ee112521dc6 hrs 21 mins ago0xa36baee01088db46a0315e30d2705c694045983d  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000107394
0x34800a524bdc24857f49309937bbc73f9dd6da987657d48ece4abcfc4f8d68901 day 9 hrs ago0x15517214b2ee748b001be7d3a12ca13e7c19682b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00026266
0x2752653366281b97f64c741e2ef100b5cf93d10aa01106016009e2707a3873081 day 9 hrs ago0x15517214b2ee748b001be7d3a12ca13e7c19682b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00026266
0xd75c9bcf68cfd4d4a5455eed1241a7bb22d24952c0bba60ac564ace402970d811 day 9 hrs ago0x15517214b2ee748b001be7d3a12ca13e7c19682b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00026266
0xc1bc28a111b4b41d7157f71f852b74f9e7696de48119ad74c78bd16a956ba4f11 day 9 hrs ago0x15517214b2ee748b001be7d3a12ca13e7c19682b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00026202
0xc86ad029844f50ec31d34b782878ebaca432a0620ebe40d90eb895f5a784dcc51 day 9 hrs ago0x15517214b2ee748b001be7d3a12ca13e7c19682b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00145386
0x2ffc1cb9c29c6a55b78d8b2fea4a1b7ee2dcfcd4a44c06bbea4b863ad69527da2 days 17 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000052532
0xc991d7ed654fdebabe70af8a11fd255dfc2cfc79d3dc903383e78fb318dbf6f42 days 17 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000052532
0x033b26ec2a83c807f3deb4366e8f3d0ca07daf3ca9eeef5c54aa3bbe0e8e21262 days 20 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00016852
0x6c7b4c1468bc469fe3371df3ce9744b10e6905708ddd97c887f927bb61571b622 days 2 hrs ago0x332a97d6df06079ad5e6261e26ef674ab74835ed  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0x18959c75078a9dcfc2f29abd77933cf0838876b5d4a6331d45c588130f2468ff2 days 2 hrs ago0x332a97d6df06079ad5e6261e26ef674ab74835ed  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0xbc52e6c8576ffd10fbde6b99e5c8de2d5034c287733c7e0a7fe158ceb65249d12 days 2 hrs ago0x332a97d6df06079ad5e6261e26ef674ab74835ed  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00085386
0xb22505a679c27b0b5e4b41cc3e89cbac3b5f90ad54a47bad74d59f79cbc030242 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.1 Ether0.00086889
0x36dc5c85d2842bfc114dfe86f558f523067bd0148fbd8fe21e63bd6f167d150e2 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.05 Ether0.00086889
0xf6a75c8acaaad184e333e60772791780de8f924ffbc6f8f5651cc9664f1926fa2 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.03 Ether0.00086889
0x8aaa1a02cef8d693c8284bdd9150baba037d8957c16fd3e6becb04a4fbbf08112 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.01 Ether0.0012305759
0x5d2ccdc88264a612256ce7647ed78287240dd754f17f74901493d694e7d0b7242 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.1 Ether0.000588
0xef7441754a710aa77892e2a3c1df92cf1710b4adeedeafa35ef1d78bd30191662 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.05 Ether0.000588
0xa57a5aa291a997d387e46d36163ec4373b1f3f346ee37a6e4ac0accf76dfa1482 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.03 Ether0.00063
0x9d8d5672a5b005c3ecafea5881ea6d34b957d41c36be4100cc6fc0d60aef4a252 days 3 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.01 Ether0.000588
0xee0910d70adddb0f43a08eaf9a97d4a5539a213635e0049a5f51b58a31658eb62 days 10 hrs ago0xfa6a28bfde90dc5a146292e8221fefa41cdd369f  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0002651685
0x2386e9190e5996825c1cd7a869bf6bb6e1c80b0cef6ab86c18dc3ddd1d3f5a652 days 21 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000052532
0x209bc20e2d22888908877efcfd691dfeece20a5f6c0971f5fa381a0ea82741682 days 21 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000052532
0xc647b19a64f953bebf299aafcaf1c8bcf67629225197d1648f9c06b4bc9e32da2 days 21 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00016852
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x69f0c1251b1f14542c1181af96b4ac8ebe940874b66f02e11b6b4eb58edf6d3670926866 hrs 21 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xa36baee01088db46a0315e30d2705c694045983d0.023346312 Ether
0x34800a524bdc24857f49309937bbc73f9dd6da987657d48ece4abcfc4f8d689070863361 day 9 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x15517214b2ee748b001be7d3a12ca13e7c19682b0.005068448 Ether
0x2752653366281b97f64c741e2ef100b5cf93d10aa01106016009e2707a38730870863301 day 9 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x15517214b2ee748b001be7d3a12ca13e7c19682b0.0024241728 Ether
0xd75c9bcf68cfd4d4a5455eed1241a7bb22d24952c0bba60ac564ace402970d8170863281 day 9 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x15517214b2ee748b001be7d3a12ca13e7c19682b0.0013883968 Ether
0xc1bc28a111b4b41d7157f71f852b74f9e7696de48119ad74c78bd16a956ba4f170863261 day 9 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x15517214b2ee748b001be7d3a12ca13e7c19682b0.000440776 Ether
0x2ffc1cb9c29c6a55b78d8b2fea4a1b7ee2dcfcd4a44c06bbea4b863ad69527da70828172 days 17 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.01201793175 Ether
0xc991d7ed654fdebabe70af8a11fd255dfc2cfc79d3dc903383e78fb318dbf6f470828152 days 17 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.00276013138 Ether
0x6c7b4c1468bc469fe3371df3ce9744b10e6905708ddd97c887f927bb61571b6270824302 days 2 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x332a97d6df06079ad5e6261e26ef674ab74835ed0.00693425448 Ether
0x18959c75078a9dcfc2f29abd77933cf0838876b5d4a6331d45c588130f2468ff70824232 days 2 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x332a97d6df06079ad5e6261e26ef674ab74835ed0.09806987685 Ether
0xb22505a679c27b0b5e4b41cc3e89cbac3b5f90ad54a47bad74d59f79cbc0302470821522 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.014 Ether
0xb22505a679c27b0b5e4b41cc3e89cbac3b5f90ad54a47bad74d59f79cbc0302470821522 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.001 Ether
0x36dc5c85d2842bfc114dfe86f558f523067bd0148fbd8fe21e63bd6f167d150e70821462 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.007 Ether
0x36dc5c85d2842bfc114dfe86f558f523067bd0148fbd8fe21e63bd6f167d150e70821462 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0005 Ether
0xf6a75c8acaaad184e333e60772791780de8f924ffbc6f8f5651cc9664f1926fa70821422 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.0042 Ether
0xf6a75c8acaaad184e333e60772791780de8f924ffbc6f8f5651cc9664f1926fa70821422 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0003 Ether
0x8aaa1a02cef8d693c8284bdd9150baba037d8957c16fd3e6becb04a4fbbf081170821152 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.0014 Ether
0x8aaa1a02cef8d693c8284bdd9150baba037d8957c16fd3e6becb04a4fbbf081170821152 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0001 Ether
0x5d2ccdc88264a612256ce7647ed78287240dd754f17f74901493d694e7d0b72470821062 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.014 Ether
0x5d2ccdc88264a612256ce7647ed78287240dd754f17f74901493d694e7d0b72470821062 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.001 Ether
0xef7441754a710aa77892e2a3c1df92cf1710b4adeedeafa35ef1d78bd301916670821032 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.007 Ether
0xef7441754a710aa77892e2a3c1df92cf1710b4adeedeafa35ef1d78bd301916670821032 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0005 Ether
0xa57a5aa291a997d387e46d36163ec4373b1f3f346ee37a6e4ac0accf76dfa14870820992 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.0042 Ether
0xa57a5aa291a997d387e46d36163ec4373b1f3f346ee37a6e4ac0accf76dfa14870820992 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0003 Ether
0x9d8d5672a5b005c3ecafea5881ea6d34b957d41c36be4100cc6fc0d60aef4a2570820992 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.0014 Ether
0x9d8d5672a5b005c3ecafea5881ea6d34b957d41c36be4100cc6fc0d60aef4a2570820992 days 3 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0001 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: MyMillions
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/*
*__/\\\\____________/\\\\________________/\\\\____________/\\\\________/\\\\\\_____/\\\\\\___________________________________________________
* _\/\\\\\\________/\\\\\\_______________\/\\\\\\________/\\\\\\_______\////\\\____\////\\\___________________________________________________
*  _\/\\\//\\\____/\\\//\\\____/\\\__/\\\_\/\\\//\\\____/\\\//\\\__/\\\____\/\\\_______\/\\\_____/\\\__________________________________________
*   _\/\\\\///\\\/\\\/_\/\\\___\//\\\/\\\__\/\\\\///\\\/\\\/_\/\\\_\///_____\/\\\_______\/\\\____\///______/\\\\\_____/\\/\\\\\\____/\\\\\\\\\\_
*    _\/\\\__\///\\\/___\/\\\____\//\\\\\___\/\\\__\///\\\/___\/\\\__/\\\____\/\\\_______\/\\\_____/\\\___/\\\///\\\__\/\\\////\\\__\/\\\//////__
*     _\/\\\____\///_____\/\\\_____\//\\\____\/\\\____\///_____\/\\\_\/\\\____\/\\\_______\/\\\____\/\\\__/\\\__\//\\\_\/\\\__\//\\\_\/\\\\\\\\\\_
*      _\/\\\_____________\/\\\__/\\_/\\\_____\/\\\_____________\/\\\_\/\\\____\/\\\_______\/\\\____\/\\\_\//\\\__/\\\__\/\\\___\/\\\_\////////\\\_
*       _\/\\\_____________\/\\\_\//\\\\/______\/\\\_____________\/\\\_\/\\\__/\\\\\\\\\__/\\\\\\\\\_\/\\\__\///\\\\\/___\/\\\___\/\\\__/\\\\\\\\\\_
*        _\///______________\///___\////________\///______________\///__\///__\/////////__\/////////__\///_____\/////_____\///____\///__\//////////__
*/

contract Ownable {
    address public owner;
    address public developers = 0x0c05aE835f26a8d4a89Ae80c7A0e5495e5361ca1;
    address public marketers = 0xE222Dd2DD012FCAC0256B1f3830cc033418B6889;
    uint256 public constant developersPercent = 1;
    uint256 public constant marketersPercent = 14;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event DevelopersChanged(address indexed previousDevelopers, address indexed newDevelopers);
    event MarketersChanged(address indexed previousMarketers, address indexed newMarketers);

    function Ownable() public {
        owner = msg.sender;
    }

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

    modifier onlyThisOwner(address _owner) {
        require(owner == _owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function setDevelopers(address newDevelopers) public onlyOwner {
        require(newDevelopers != address(0));
        emit DevelopersChanged(developers, newDevelopers);
        developers = newDevelopers;
    }

    function setMarketers(address newMarketers) public onlyOwner {
        require(newMarketers != address(0));
        emit MarketersChanged(marketers, newMarketers);
        marketers = newMarketers;
    }

}

library SafeMath {
    function mul(uint256 _a, uint256 _b) internal pure returns(uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (_a == 0) {
            return 0;
        }

        uint256 c = _a * _b;
        require(c / _a == _b);

        return c;
    }

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

        return c;
    }

    function sub(uint256 _a, uint256 _b) internal pure returns(uint256) {
        require(_b <= _a);
        uint256 c = _a - _b;

        return c;
    }

    function add(uint256 _a, uint256 _b) internal pure returns(uint256) {
        uint256 c = _a + _b;
        require(c >= _a);

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns(uint256) {
        require(b != 0);
        return a % b;
    }
}

library Math {
    function max(uint a, uint b) returns (uint) {
        if (a > b) return a;
        else return b;
    }
    function min(uint a, uint b) returns (uint) {
        if (a < b) return a;
        else return b;
    }
}

contract LeaderSystem {
    using SafeMath for uint256;

    event NewLeader(uint256 _indexTable, address _addr, uint256 _index, uint256 _sum);
    event LeadersClear(uint256 _indexTable);

    uint8 public constant leadersCount = 7;
    mapping (uint8 => uint256) public leaderBonuses;

    struct LeadersTable {
        uint256 timestampEnd;              // timestamp of closing table
        uint256 duration;                   // duration compute
        uint256 minSum;                     // min sum of leaders
        address[] leaders;                  // leaders array
        mapping (address => uint256) users; // sum all users
    }

    LeadersTable[] public leaders;

    function setupLeaderSystemModule() internal {
        leaderBonuses[0] = 10;  // 10%
        leaderBonuses[1] = 7;   // 7%
        leaderBonuses[2] = 5;   // 5%
        leaderBonuses[3] = 3;   // 3%
        leaderBonuses[4] = 1;   // 1%
        leaderBonuses[5] = 0;   // 0%
        leaderBonuses[6] = 0;   // 0%

        leaders.push(LeadersTable(now + 86400, 86400, 0, new address[](0)));
        leaders.push(LeadersTable(now + 604800, 604800, 0, new address[](0)));
        leaders.push(LeadersTable(now + 77760000, 77760000, 0, new address[](0)));
        leaders.push(LeadersTable(now + 31536000, 31536000, 0, new address[](0)));
    }

    function _clearLeadersTable(uint256 _indexTable) internal {
        LeadersTable storage _leader = leaders[_indexTable];
        leaders[_indexTable] = LeadersTable(_leader.timestampEnd + _leader.duration, _leader.duration, 0, new address[](0));

        emit LeadersClear(_indexTable);
    }

    function quickSort(LeadersTable storage leader, int left, int right) internal {
        int i = left;
        int j = right;
        if (i == j) return;
        uint pivot = leader.users[leader.leaders[uint(left + (right - left) / 2)]];
        while (i <= j) {
            while (leader.users[leader.leaders[uint(i)]] > pivot) i++;
            while (pivot > leader.users[leader.leaders[uint(j)]]) j--;
            if (i <= j) {
                (leader.leaders[uint(i)], leader.leaders[uint(j)]) = (leader.leaders[uint(j)], leader.leaders[uint(i)]);
                i++;
                j--;
            }
        }
        if (left < j)
            quickSort(leader, left, j);
        if (i < right)
            quickSort(leader, i, right);
    }

    function _updateLeadersTable(uint256 i, address _addr, uint256 _value) internal {
        if (now > leaders[i].timestampEnd) _clearLeadersTable(i);

        LeadersTable storage leader = leaders[i];
        bool isExist = leader.users[_addr] >= leader.minSum;

        uint256 oldSum = leader.users[_addr];
        uint256 newSum = oldSum.add(_value);
        leader.users[_addr] = newSum;

        if (newSum < leader.minSum && leader.leaders.length == leadersCount) return;

        if (!isExist || leader.leaders.length == 0) leader.leaders.push(_addr);

        if (leader.leaders.length > 1) quickSort(leader, 0, int256(leader.leaders.length - 1));
        if (leader.leaders.length > leadersCount) {
            delete leader.leaders[leadersCount - 1];
        }

        leader.minSum = leader.users[leader.leaders[leader.leaders.length - 1]];
    }

    function _updateLeaders(address _addr, uint256 _value) internal {
        for (uint i = 0; i < leaders.length; i++) {
            _updateLeadersTable(i, _addr, _value);
        }
    }

    function getLeadersTableInfo(uint256 _indexTable) public view returns(uint256, uint256, uint256) {
        return (leaders[_indexTable].timestampEnd, leaders[_indexTable].duration, leaders[_indexTable].minSum);
    }

    function getLeaders(uint256 _indexTable) public view returns(address[], uint256[]) {
        LeadersTable storage leader = leaders[_indexTable];
        uint256[] memory balances = new uint256[](leader.leaders.length);

        for (uint i = 0; i < leader.leaders.length; i++) {
            balances[i] = leader.users[leader.leaders[i]];
        }

        return (leader.leaders, balances);
    }

}

contract Factoring {

    enum FactoryType { Wood, Metal, Oil, PreciousMetal }

    mapping (uint8 => uint256) public resourcePrices;

    function setupFactoringModule() internal {
        resourcePrices[uint8(FactoryType.Wood)]         = 0.02315 szabo;
        resourcePrices[uint8(FactoryType.Metal)]        = 0.03646 szabo;
        resourcePrices[uint8(FactoryType.Oil)]          = 0.04244 szabo;
        resourcePrices[uint8(FactoryType.PreciousMetal)]= 0.06655 szabo;
    }

    function getResourcePrice(uint8 _type) public view returns(uint256) {
        return resourcePrices[_type];
    }

}

contract Improvements is Factoring {

    mapping (uint8 => mapping (uint8 => Params)) public levelStack;
    uint8 public constant levelsCount = 7;

    struct Params {
        uint256 price;      // improvements cost
        uint256 ppm;        // products per minute
        uint256 ppmBonus;   // bonus per minute
    }

    function setupImprovementsModule() internal {
        // initial pricess
        levelStack[uint8(FactoryType.Wood)][0]          = Params(0.01 ether, 200, 0);
        levelStack[uint8(FactoryType.Metal)][0]         = Params(0.03 ether, 400, 0);
        levelStack[uint8(FactoryType.Oil)][0]           = Params(0.05 ether, 600, 0);
        levelStack[uint8(FactoryType.PreciousMetal)][0] = Params(0.10 ether, 800, 0);

        // level 1
        levelStack[uint8(FactoryType.Wood)][1]          = Params(0.05 ether, 1200, 120);
        levelStack[uint8(FactoryType.Metal)][1]         = Params(0.09 ether, 1600, 138);
        levelStack[uint8(FactoryType.Oil)][1]           = Params(0.15 ether, 2400, 164);
        levelStack[uint8(FactoryType.PreciousMetal)][1] = Params(0.50 ether, 4800, 418);

        // level 2
        levelStack[uint8(FactoryType.Wood)][2]          = Params(0.12 ether, 3600, 540);
        levelStack[uint8(FactoryType.Metal)][2]         = Params(0.27 ether, 5200, 866);
        levelStack[uint8(FactoryType.Oil)][2]           = Params(0.35 ether, 6600, 1050);
        levelStack[uint8(FactoryType.PreciousMetal)][2] = Params(1.00 ether, 12800, 1670);

        // level 3
        levelStack[uint8(FactoryType.Wood)][3]          = Params(0.30 ether, 9600, 2400);
        levelStack[uint8(FactoryType.Metal)][3]         = Params(0.75 ether, 15200, 3980);
        levelStack[uint8(FactoryType.Oil)][3]           = Params(1.15 ether, 20400, 5099);
        levelStack[uint8(FactoryType.PreciousMetal)][3] = Params(3.50 ether, 40800, 11531);

        // level 4
        levelStack[uint8(FactoryType.Wood)][4]          = Params(0.90 ether, 27600, 9660);
        levelStack[uint8(FactoryType.Metal)][4]         = Params(2.13 ether, 43600, 15568);
        levelStack[uint8(FactoryType.Oil)][4]           = Params(3.00 ether, 56400, 17943);
        levelStack[uint8(FactoryType.PreciousMetal)][4] = Params(7.00 ether, 96800, 31567);

        // level 5
        levelStack[uint8(FactoryType.Wood)][5]          = Params(1.80 ether, 63600, 25440);
        levelStack[uint8(FactoryType.Metal)][5]         = Params(5.31 ether, 114400, 49022);
        levelStack[uint8(FactoryType.Oil)][5]           = Params(7.30 ether, 144000, 55629);
        levelStack[uint8(FactoryType.PreciousMetal)][5] = Params(17.10 ether, 233600, 96492);

        // level 6
        levelStack[uint8(FactoryType.Wood)][6]          = Params(5.40 ether, 171600, 85800);
        levelStack[uint8(FactoryType.Metal)][6]         = Params(13.89 ether, 298400, 158120);
        levelStack[uint8(FactoryType.Oil)][6]           = Params(24.45 ether, 437400, 218674);
        levelStack[uint8(FactoryType.PreciousMetal)][6] = Params(55.50 ether, 677600, 353545);
    }

    function getPrice(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].price;
    }

    function getProductsPerMinute(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].ppm;
    }

    function getBonusPerMinute(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].ppmBonus;
    }
}

contract ReferralsSystem {

    struct ReferralGroup {
        uint256 minSum;
        uint256 maxSum;
        uint16[] percents;
    }

    uint256 public constant minSumReferral = 0.01 ether;
    uint256 public constant referralLevelsGroups = 3;
    uint256 public constant referralLevelsCount = 5;
    ReferralGroup[] public referralGroups;

    function setupReferralsSystemModule() internal {
        ReferralGroup memory refGroupFirsty = ReferralGroup(minSumReferral, 10 ether - 1 wei, new uint16[](referralLevelsCount));
        refGroupFirsty.percents[0] = 300;   // 3%
        refGroupFirsty.percents[1] = 75;    // 0.75%
        refGroupFirsty.percents[2] = 60;    // 0.6%
        refGroupFirsty.percents[3] = 40;    // 0.4%
        refGroupFirsty.percents[4] = 25;    // 0.25%
        referralGroups.push(refGroupFirsty);

        ReferralGroup memory refGroupLoyalty = ReferralGroup(10 ether, 50 ether - 1 wei, new uint16[](referralLevelsCount));
        refGroupLoyalty.percents[0] = 500;  // 5%
        refGroupLoyalty.percents[1] = 200;  // 2%
        refGroupLoyalty.percents[2] = 150;  // 1.5%
        refGroupLoyalty.percents[3] = 100;  // 1%
        refGroupLoyalty.percents[4] = 50;   // 0.5%
        referralGroups.push(refGroupLoyalty);

        ReferralGroup memory refGroupUltraPremium = ReferralGroup(50 ether, 2**256 - 1, new uint16[](referralLevelsCount));
        refGroupUltraPremium.percents[0] = 700; // 7%
        refGroupUltraPremium.percents[1] = 300; // 3%
        refGroupUltraPremium.percents[2] = 250; // 2.5%
        refGroupUltraPremium.percents[3] = 150; // 1.5%
        refGroupUltraPremium.percents[4] = 100; // 1%
        referralGroups.push(refGroupUltraPremium);
    }

    function getReferralPercents(uint256 _sum) public view returns(uint16[]) {
        for (uint i = 0; i < referralLevelsGroups; i++) {
            ReferralGroup memory group = referralGroups[i];
            if (_sum >= group.minSum && _sum <= group.maxSum) return group.percents;
        }
    }

    function getReferralPercentsByIndex(uint256 _index) public view returns(uint16[]) {
        return referralGroups[_index].percents;
    }

}

/// @title Smart-contract of MyMillions ecosystem
/// @author Shagaleev Alexey
contract MyMillions is Ownable, Improvements, ReferralsSystem, LeaderSystem {
    using SafeMath for uint256;

    event CreateUser(uint256 _index, address _address, uint256 _balance);
    event ReferralRegister(uint256 _refferalId, uint256 _userId);
    event ReferrerDistribute(uint256 _userId, uint256 _referrerId, uint256 _sum);
    event Deposit(uint256 _userId, uint256 _value);
    event PaymentProceed(uint256 _userId, uint256 _factoryId, FactoryType _factoryType, uint256 _price);
    event CollectResources(FactoryType _type, uint256 _resources);
    event LevelUp(uint256 _factoryId, uint8 _newLevel, uint256 _userId, uint256 _price);
    event Sell(uint256 _userId, uint8 _type, uint256 _sum);

    bool isSetted = false;
    uint256 public minSumDeposit = 0.01 ether;

    struct User {
        address addr;                                   // user address
        uint256 balance;                                // balance of account
        uint256 totalPay;                               // sum of all input pay
        uint256 referrersReceived;                      // total deposit from referrals
        uint256[] resources;                            // collected resources
        uint256[] referrersByLevel;                     // referrers user ids
        mapping (uint8 => uint256[]) referralsByLevel;  // all referrals user ids
    }

    User[] public users;
    mapping (address => uint256) public addressToUser;
    uint256 public totalUsers = 0;
    uint256 public totalDeposit = 0;

    struct Factory {
        FactoryType ftype;      // factory type
        uint8 level;            // factory level
        uint256 collected_at;   // timestamp updated
    }

    Factory[] public factories;
    mapping (uint256 => uint256) public factoryToUser;
    mapping (uint256 => uint256[]) public userToFactories;

    modifier onlyExistingUser() {
        require(addressToUser[msg.sender] != 0);
        _;
    }
    modifier onlyNotExistingUser() {
        require(addressToUser[msg.sender] == 0);
        _;
    }

    constructor() public payable {
        users.push(User(0x0, 0, 0, 0, new uint256[](4), new uint256[](referralLevelsCount)));  // for find by addressToUser map
    }

    function setup() public onlyOwner {
        require(isSetted == false);
        isSetted = true;

        setupFactoringModule();
        setupImprovementsModule();
        setupReferralsSystemModule();
        setupLeaderSystemModule();
    }

    // @dev register for only new users with min pay
    /// @return id of new user
    function register() public payable onlyNotExistingUser returns(uint256) {
        require(addressToUser[msg.sender] == 0);

        uint256 index = users.push(User(msg.sender, msg.value, 0, 0, new uint256[](4), new uint256[](referralLevelsCount))) - 1;
        addressToUser[msg.sender] = index;
        totalUsers++;

        emit CreateUser(index, msg.sender, msg.value);
        return index;
    }


    /// @notice just registry by referral link
    /// @param _refId the ID of the user who gets the affiliate fee
    /// @return id of new user
    function registerWithRefID(uint256 _refId) public payable onlyNotExistingUser returns(uint256) {
        require(_refId < users.length);

        uint256 index = register();
        _updateReferrals(index, _refId);

        emit ReferralRegister(_refId, index);
        return index;
    }

    /// @notice update referrersByLevel and referralsByLevel of new user
    /// @param _newUserId the ID of the new user
    /// @param _refUserId the ID of the user who gets the affiliate fee
    function _updateReferrals(uint256 _newUserId, uint256 _refUserId) private {
        if (_newUserId == _refUserId) return;
        users[_newUserId].referrersByLevel[0] = _refUserId;

        for (uint i = 1; i < referralLevelsCount; i++) {
            uint256 _refId = users[_refUserId].referrersByLevel[i - 1];
            users[_newUserId].referrersByLevel[i] = _refId;
            users[_refId].referralsByLevel[uint8(i)].push(_newUserId);
        }

        users[_refUserId].referralsByLevel[0].push(_newUserId);
    }

    /// @notice distribute value of tx to referrers of user
    /// @param _userId the ID of the user who gets the affiliate fee
    /// @param _sum value of ethereum for distribute to referrers of user
    function _distributeReferrers(uint256 _userId, uint256 _sum) private {
        uint256[] memory referrers = users[_userId].referrersByLevel;

        for (uint i = 0; i < referralLevelsCount; i++) {
            uint256 referrerId = referrers[i];

            if (referrers[i] == 0) break;
            if (users[referrerId].totalPay < minSumReferral) continue;

            uint16[] memory percents = getReferralPercents(users[referrerId].totalPay);
            uint256 value = _sum * percents[i] / 10000;
            users[referrerId].balance = users[referrerId].balance.add(value);
            users[referrerId].referrersReceived = users[referrerId].referrersReceived.add(value);

            emit ReferrerDistribute(_userId, referrerId, value);
        }
    }

    /// @notice deposit ethereum for user
    /// @return balance value of user
    function deposit() public payable onlyExistingUser returns(uint256) {
        require(msg.value > minSumDeposit, "Deposit does not enough");
        uint256 userId = addressToUser[msg.sender];
        users[userId].balance = users[userId].balance.add(msg.value);
        totalDeposit += msg.value;

        // distribute
        _distributeInvestment(msg.value);
        _updateLeaders(msg.sender, msg.value);

        emit Deposit(userId, msg.value);
        return users[userId].balance;
    }

    /// @notice getter for balance of user
    /// @return balance value of user
    function balanceOf() public view returns (uint256) {
        return users[addressToUser[msg.sender]].balance;
    }

    /// @notice getter for resources of user
    /// @return resources value of user
    function resoucesOf() public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].resources;
    }

    /// @notice getter for referrers of user
    /// @return array of referrers id
    function referrersOf() public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].referrersByLevel;
    }

    /// @notice getter for referrals of user by level
    /// @param _level level of referrals user needed
    /// @return array of referrals id
    function referralsOf(uint8 _level) public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].referralsByLevel[uint8(_level)];
    }

    /// @notice getter for extended information of user
    /// @param _userId id of user needed
    /// @return address of user
    /// @return balance of user
    /// @return totalPay of user
    /// @return array of resources user
    /// @return array of referrers id user
    function userInfo(uint256 _userId) public view returns(address, uint256, uint256, uint256, uint256[], uint256[]) {
        User memory user = users[_userId];
        return (user.addr, user.balance, user.totalPay, user.referrersReceived, user.resources, user.referrersByLevel);
    }

    /// @notice mechanics of buying any factory
    /// @param _type type of factory needed
    /// @return id of new factory
    function buyFactory(FactoryType _type) public payable onlyExistingUser returns (uint256) {
        uint256 userId = addressToUser[msg.sender];

        // if user not registered
        if (addressToUser[msg.sender] == 0)
            userId = register();

        return _paymentProceed(userId, Factory(_type, 0, now));
    }

    /// @notice get factories of user
    /// @param _user_id id of user
    /// @return array of id factory
    function getFactories(uint256 _user_id) public view returns (uint256[]) {
        return userToFactories[_user_id];
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Wood
    /// @return id of new factory
    function buyWoodFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Wood);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Metal
    /// @return id of new factory
    function buyMetalFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Metal);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Oil
    /// @return id of new factory
    function buyOilFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Oil);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.PreciousMetal
    /// @return id of new factory
    function buyPreciousMetal() public payable returns (uint256) {
        return buyFactory(FactoryType.PreciousMetal);
    }

    /// @notice distribute investment when user buy anything
    /// @param _value value of investment
    function _distributeInvestment(uint256 _value) private {
        developers.transfer(msg.value * developersPercent / 100);
        marketers.transfer(msg.value * marketersPercent / 100);
    }

    /// @notice function of proceed payment
    /// @dev for only buy new factory
    /// @return id of new factory
    function _paymentProceed(uint256 _userId, Factory _factory) private returns(uint256) {
        User storage user = users[_userId];

        require(_checkPayment(user, _factory.ftype, _factory.level));

        uint256 price = getPrice(_factory.ftype, 0);
        user.balance = user.balance.add(msg.value);
        user.balance = user.balance.sub(price);
        user.totalPay = user.totalPay.add(price);
        totalDeposit += msg.value;

        uint256 index = factories.push(_factory) - 1;
        factoryToUser[index] = _userId;
        userToFactories[_userId].push(index);

        // distribute
        _distributeInvestment(msg.value);
        _distributeReferrers(_userId, price);
        _updateLeaders(msg.sender, msg.value);

        emit PaymentProceed(_userId, index, _factory.ftype, price);
        return index;
    }

    /// @notice check available investment
    /// @return true if user does enough balance for investment
    function _checkPayment(User _user, FactoryType _type, uint8 _level) private view returns(bool) {
        uint256 totalBalance = _user.balance.add(msg.value);

        if (totalBalance < getPrice(_type, _level)) return false;

        return true;
    }

    /// @notice level up for factory
    /// @param _factoryId id of factory
    function levelUp(uint256 _factoryId) public payable onlyExistingUser {
        Factory storage factory = factories[_factoryId];
        uint256 price = getPrice(factory.ftype, factory.level + 1);

        uint256 userId = addressToUser[msg.sender];
        User storage user = users[userId];

        require(_checkPayment(user, factory.ftype, factory.level + 1));

        // payment
        user.balance = user.balance.add(msg.value);
        user.balance = user.balance.sub(price);
        user.totalPay = user.totalPay.add(price);
        totalDeposit += msg.value;

        _distributeInvestment(msg.value);
        _distributeReferrers(userId, price);

        // collect
        _collectResource(factory, user);
        factory.level++;

        _updateLeaders(msg.sender, msg.value);

        emit LevelUp(_factoryId, factory.level, userId, price);
    }

    /// @notice sell resources of user with type
    /// @param _type type of resources
    /// @return sum of sell
    function sellResources(uint8 _type) public onlyExistingUser returns(uint256) {
        uint256 userId = addressToUser[msg.sender];
        uint256 sum = Math.min(users[userId].resources[_type] * getResourcePrice(_type), address(this).balance);
        users[userId].resources[_type] = 0;

        msg.sender.transfer(sum);

        emit Sell(userId, _type, sum);
        return sum;
    }

    /// @notice function for compute worktime factory
    /// @param _collected_at timestamp of start
    /// @return duration minutes
    function worktimeAtDate(uint256 _collected_at) public view returns(uint256) {
        return (now - _collected_at) / 60;
    }

    /// @notice function for compute duration work factory
    /// @param _factoryId id of factory
    /// @return timestamp of duration
    function worktime(uint256 _factoryId) public view returns(uint256) {
        return worktimeAtDate(factories[_factoryId].collected_at);
    }

    /// @notice function for compute resource factory at time
    /// @param _type type of factory
    /// @param _level level of factory
    /// @param _collected_at timestamp for collect
    /// @return count of resources
    function _resourcesAtTime(FactoryType _type, uint8 _level, uint256 _collected_at) public view returns(uint256) {
        return worktimeAtDate(_collected_at) * (getProductsPerMinute(_type, _level) + getBonusPerMinute(_type, _level)) / 100;
    }

    /// @notice function for compute resource factory at time
    /// @dev wrapper over _resourcesAtTime
    /// @param _factoryId id of factory
    /// @return count of resources
    function resourcesAtTime(uint256 _factoryId) public view returns(uint256) {
        Factory storage factory = factories[_factoryId];
        return _resourcesAtTime(factory.ftype, factory.level, factory.collected_at);
    }

    /// @notice function for collect resource
    /// @param _factory factory object
    /// @param _user user object
    /// @return count of resources
    function _collectResource(Factory storage _factory, User storage _user) internal returns(uint256) {
        uint256 resources = _resourcesAtTime(_factory.ftype, _factory.level, _factory.collected_at);
        _user.resources[uint8(_factory.ftype)] = _user.resources[uint8(_factory.ftype)].add(resources);
        _factory.collected_at = now;

        emit CollectResources(_factory.ftype, resources);
        return resources;
    }

    /// @notice function for collect all resources from all factories
    /// @dev wrapper over _collectResource
    function collectResources() public onlyExistingUser {
        uint256 index = addressToUser[msg.sender];
        User storage user = users[index];
        uint256[] storage factoriesIds = userToFactories[addressToUser[msg.sender]];

        for (uint256 i = 0; i < factoriesIds.length; i++) {
            _collectResource(factories[factoriesIds[i]], user);
        }
    }

}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"leaderBonuses","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"levelUp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"marketersPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"register","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_collected_at","type":"uint256"}],"name":"worktimeAtDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyOilFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"developers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"users","outputs":[{"name":"addr","type":"address"},{"name":"balance","type":"uint256"},{"name":"totalPay","type":"uint256"},{"name":"referrersReceived","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"resoucesOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMarketers","type":"address"}],"name":"setMarketers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developersPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"collectResources","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_indexTable","type":"uint256"}],"name":"getLeadersTableInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"factoryToUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"}],"name":"getResourcePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_indexTable","type":"uint256"}],"name":"getLeaders","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"}],"name":"userInfo","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getReferralPercentsByIndex","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user_id","type":"uint256"}],"name":"getFactories","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minSumReferral","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyWoodFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"factories","outputs":[{"name":"ftype","type":"uint8"},{"name":"level","type":"uint8"},{"name":"collected_at","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getBonusPerMinute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"},{"name":"_collected_at","type":"uint256"}],"name":"_resourcesAtTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"levelsCount","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDevelopers","type":"address"}],"name":"setDevelopers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sum","type":"uint256"}],"name":"getReferralPercents","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"leadersCount","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_refId","type":"uint256"}],"name":"registerWithRefID","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"referralGroups","outputs":[{"name":"minSum","type":"uint256"},{"name":"maxSum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referrersOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getProductsPerMinute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyMetalFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"leaders","outputs":[{"name":"timestampEnd","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"minSum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"}],"name":"sellResources","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUsers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"worktime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"resourcePrices","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralLevelsGroups","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"},{"name":"","type":"uint8"}],"name":"levelStack","outputs":[{"name":"price","type":"uint256"},{"name":"ppm","type":"uint256"},{"name":"ppmBonus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_level","type":"uint8"}],"name":"referralsOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"}],"name":"buyFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"buyPreciousMetal","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressToUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minSumDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"resourcesAtTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralLevelsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"userToFactories","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_address","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"CreateUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_refferalId","type":"uint256"},{"indexed":false,"name":"_userId","type":"uint256"}],"name":"ReferralRegister","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_referrerId","type":"uint256"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"ReferrerDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_factoryId","type":"uint256"},{"indexed":false,"name":"_factoryType","type":"uint8"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"PaymentProceed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_type","type":"uint8"},{"indexed":false,"name":"_resources","type":"uint256"}],"name":"CollectResources","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_factoryId","type":"uint256"},{"indexed":false,"name":"_newLevel","type":"uint8"},{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"LevelUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_type","type":"uint8"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"Sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_indexTable","type":"uint256"},{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"NewLeader","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_indexTable","type":"uint256"}],"name":"LeadersClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDevelopers","type":"address"},{"indexed":true,"name":"newDevelopers","type":"address"}],"name":"DevelopersChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousMarketers","type":"address"},{"indexed":true,"name":"newMarketers","type":"address"}],"name":"MarketersChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60018054600160a060020a0319908116730c05ae835f26a8d4a89ae80c7a0e5495e5361ca11790915560028054821673e222dd2dd012fcac0256b1f3830cc033418b68891790556008805460ff19169055662386f26fc100006009556000600c819055600d819055805490911633178155608081815260a082905260c082905260e09190915260046101408181526101e0604052600a929161010091906101608480388339505050815260408051600580825260c08201909252602092830192909190820160a080388339505050905281546001808201808555600094855260209485902084516007909402018054600160a060020a031916600160a060020a039094169390931783558385015191830191909155604083015160028301556060830151600383015560808301518051919462000145926004850192909101906200016d565b5060a08201518051620001639160058401916020909101906200016d565b50505050620001dd565b828054828255906000526020600020908101928215620001ab579160200282015b82811115620001ab5782518255916020019190600101906200018e565b50620001b9929150620001bd565b5090565b620001da91905b80821115620001b95760008155600101620001c4565b90565b61499380620001ed6000396000f30060806040526004361061029d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302ceb8b381146102a25780630ce90ec2146102cf5780630f3fc087146102dc5780631aa3a008146102f15780631cdb86a3146102f9578063208d5e9f146103115780632bc31ca414610319578063365b98b21461034a5780633887dae91461039257806339347d52146103f75780633a033915146104185780633bbfe1411461042d5780633eb1137e146104425780633fc282ef1461047857806342583c02146104905780634bd51822146104a55780634db2a711146104c057806351d70bc4146105715780635875455e146106505780635a2587f4146106685780635b9280f6146106805780635ee6e3a21461069557806360e5ef3a1461069d578063672383c4146106be57806368ec45121461070e578063715b3ec91461072f578063722713f71461075357806383c6a62b146107685780638ab476bf146107935780638da5cb5b146107b457806391ddb16d146107c9578063930efb711461076857806393d1c8ad146107e157806397ff49e7146107ec578063994678ea1461081d5780639a08b33814610832578063a16e8b2014610853578063a36e65771461085b578063af6a1a9a14610873578063ba0bba401461088e578063bff1f9e1146108a3578063c4e26656146108b8578063d0e30db0146108d0578063d9fe8286146108d8578063da0aedb1146108f3578063e1fc887e14610908578063e5d7bd4f14610929578063e8364cde14610944578063eae84a3014610952578063edf538861461095a578063f2fde38b1461097b578063f6153ccd1461099c578063f6d90974146109b1578063f7ad68ed146109c6578063f93745f0146109de578063fc412987146109f3575b600080fd5b3480156102ae57600080fd5b506102bd60ff60043516610a0e565b60408051918252519081900360200190f35b6102da600435610a20565b005b3480156102e857600080fd5b506102bd610cb2565b6102bd610cb7565b34801561030557600080fd5b506102bd600435610e5e565b6102bd610e69565b34801561032557600080fd5b5061032e610e7b565b60408051600160a060020a039092168252519081900360200190f35b34801561035657600080fd5b50610362600435610e8a565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561039e57600080fd5b506103a7610ecc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103e35781810151838201526020016103cb565b505050509050019250505060405180910390f35b34801561040357600080fd5b506102da600160a060020a0360043516610f51565b34801561042457600080fd5b506102bd610fd9565b34801561043957600080fd5b506102da610fde565b34801561044e57600080fd5b5061045a6004356110a5565b60408051938452602084019290925282820152519081900360600190f35b34801561048457600080fd5b506102bd60043561111a565b34801561049c57600080fd5b5061032e61112c565b3480156104b157600080fd5b506102bd60ff6004351661113b565b3480156104cc57600080fd5b506104d8600435611150565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561051c578181015183820152602001610504565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561055b578181015183820152602001610543565b5050505090500194505050505060405180910390f35b34801561057d57600080fd5b50610589600435611286565b6040518087600160a060020a0316600160a060020a031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561063657818101518382015260200161061e565b505050509050019850505050505050505060405180910390f35b34801561065c57600080fd5b506103a76004356113cd565b34801561067457600080fd5b506103a760043561146d565b34801561068c57600080fd5b506102bd6114ce565b6102bd6114d9565b3480156106a957600080fd5b506102bd60ff600435811690602435166114e5565b3480156106ca57600080fd5b506106d6600435611523565b604051808460038111156106e657fe5b60ff1681526020018360ff1660ff168152602001828152602001935050505060405180910390f35b34801561071a57600080fd5b506102bd60ff6004358116906024351661155d565b34801561073b57600080fd5b506102bd60ff6004358116906024351660443561159e565b34801561075f57600080fd5b506102bd6115d3565b34801561077457600080fd5b5061077d611609565b6040805160ff9092168252519081900360200190f35b34801561079f57600080fd5b506102da600160a060020a036004351661160e565b3480156107c057600080fd5b5061032e611696565b3480156107d557600080fd5b506103a76004356116a5565b6102bd6004356117b8565b3480156107f857600080fd5b50610804600435611837565b6040805192835260208301919091528051918290030190f35b34801561082957600080fd5b506103a7611863565b34801561083e57600080fd5b506102bd60ff600435811690602435166118e6565b6102bd611927565b34801561086757600080fd5b5061045a600435611933565b34801561087f57600080fd5b506102bd60ff60043516611964565b34801561089a57600080fd5b506102da611b39565b3480156108af57600080fd5b506102bd611b8f565b3480156108c457600080fd5b506102bd600435611b95565b6102bd611bc6565b3480156108e457600080fd5b506102bd60ff60043516611d38565b3480156108ff57600080fd5b506102bd611d4a565b34801561091457600080fd5b5061045a60ff60043581169060243516611d4f565b34801561093557600080fd5b506103a760ff60043516611d7b565b6102bd60ff60043516611e0b565b6102bd611e83565b34801561096657600080fd5b506102bd600160a060020a0360043516611e8f565b34801561098757600080fd5b506102da600160a060020a0360043516611ea1565b3480156109a857600080fd5b506102bd611f28565b3480156109bd57600080fd5b506102bd611f2e565b3480156109d257600080fd5b506102bd600435611f34565b3480156109ea57600080fd5b506102bd611f76565b3480156109ff57600080fd5b506102bd600435602435611f7b565b60066020526000908152604090205481565b336000908152600b60205260408120548190819081901515610a4157600080fd5b600e805486908110610a4f57fe5b600091825260209091206002909102018054909450610a7c9060ff808216916101009004166001016114e5565b336000908152600b6020526040902054600a80549295509093509083908110610aa157fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a0316835260018101548385015260028101548383015260038101546060840152600481018054835181870281018701909452808452919550610bb59486936080860193909291830182828015610b3c57602002820191906000526020600020905b815481526020019060010190808311610b28575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610b9457602002820191906000526020600020905b815481526020019060010190808311610b80575b505050919092525050865460ff808216925061010090910416600101611fab565b1515610bc057600080fd5b6001810154610bd5903463ffffffff611fee16565b60018201819055610bec908463ffffffff61200016565b60018201556002810154610c06908463ffffffff611fee16565b6002820155600d805434908101909155610c1f90612017565b610c298284612097565b610c3384826122cc565b50835460ff61010080830482166001019091160261ff0019909116178455610c5b33346123c6565b83546040805187815261010090920460ff16602083015281810184905260608201859052517fc2947d4d847973e25404afd7931f9ffeb6d01890ee4578d3c65041c4276bb667916080908290030190a15050505050565b600e81565b336000908152600b6020526040812054819015610cd357600080fd5b336000908152600b602052604090205415610ced57600080fd5b6040805160c081018252338152346020820152600081830181905260608201528151600480825260a08201909352600192600a92916080830191816020016020820280388339505050815260408051600580825260c08201909252602092830192909190820160a080388339505050905281546001808201808555600094855260209485902084516007909402018054600160a060020a031916600160a060020a0390941693909317835583850151918301919091556040830151600283015560608301516003830155608083015180519194610dd29260048501929091019061475b565b5060a08201518051610dee91600584019160209091019061475b565b5050336000818152600b60209081526040918290209590940394859055600c805460010190558051858152938401919091523483820152519293507f4f936a96f51e2c2ffe18b6b6f1e4387c6bf1cddeb935d58cab653eb22ead430a9291829003606001919050a18091505b5090565b603c42919091030490565b6000610e756002611e0b565b90505b90565b600154600160a060020a031681565b600a805482908110610e9857fe5b60009182526020909120600790910201805460018201546002830154600390930154600160a060020a039092169350919084565b336000908152600b6020526040902054600a8054606092908110610eec57fe5b9060005260206000209060070201600401805480602002602001604051908101604052809291908181526020018280548015610f4757602002820191906000526020600020905b815481526020019060010190808311610f33575b5050505050905090565b600054600160a060020a03163314610f6857600080fd5b600160a060020a0381161515610f7d57600080fd5b600254604051600160a060020a038084169216907f5650bc3484c51d95070941164495fa61356f571133f65393510e90fa461118fc90600090a360028054600160a060020a031916600160a060020a0392909216919091179055565b600181565b336000908152600b60205260408120548190819081901515610fff57600080fd5b336000908152600b6020526040902054600a8054919550908590811061102157fe5b60009182526020808320338452600b8252604080852054855260109092529083206007909202019450925090505b815481101561109f57611096600e838381548110151561106b57fe5b906000526020600020015481548110151561108257fe5b9060005260206000209060020201846122cc565b5060010161104f565b50505050565b60008060006007848154811015156110b957fe5b9060005260206000209060050201600001546007858154811015156110da57fe5b9060005260206000209060050201600101546007868154811015156110fb57fe5b9060005260206000209060050201600201549250925092509193909250565b600f6020526000908152604090205481565b600254600160a060020a031681565b60ff1660009081526003602052604090205490565b60608060006060600060078681548110151561116857fe5b9060005260206000209060050201925082600301805490506040519080825280602002602001820160405280156111a9578160200160208202803883390190505b509150600090505b60038301548110156112195782600401600084600301838154811015156111d457fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054825183908390811061120757fe5b602090810290910101526001016111b1565b82600301828180548060200260200160405190810160405280929190818152602001828054801561127357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611255575b5050505050915094509450505050915091565b6000806000806060806112976147a2565b600a8054899081106112a557fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a03168352600181015483850152600281015483830152600381015460608401526004810180548351818702810187019094528084529394919360808601939283018282801561133957602002820191906000526020600020905b815481526020019060010190808311611325575b505050505081526020016005820180548060200260200160405190810160405280929190818152602001828054801561139157602002820191906000526020600020905b81548152602001906001019080831161137d575b5050509190925250508151602083015160408401516060850151608086015160a090960151939e929d50909b5099509297509550909350505050565b60606005828154811015156113de57fe5b906000526020600020906003020160020180548060200260200160405190810160405280929190818152602001828054801561146157602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114285790505b50505050509050919050565b60008181526010602090815260409182902080548351818402810184019094528084526060939283018282801561146157602002820191906000526020600020905b8154815260200190600101908083116114af5750505050509050919050565b662386f26fc1000081565b6000610e756000611e0b565b6000600460008460038111156114f757fe5b60ff90811682526020808301939093526040918201600090812091861681529252902054905092915050565b600e80548290811061153157fe5b60009182526020909120600290910201805460019091015460ff80831693506101009092049091169083565b60006004600084600381111561156f57fe5b60ff90811682526020808301939093526040918201600090812091861681529252902060020154905092915050565b600060646115ac858561155d565b6115b686866118e6565b016115c084610e5e565b028115156115ca57fe5b04949350505050565b336000908152600b6020526040812054600a805490919081106115f257fe5b906000526020600020906007020160010154905090565b600781565b600054600160a060020a0316331461162557600080fd5b600160a060020a038116151561163a57600080fd5b600154604051600160a060020a038084169216907f7d28dbfe9b3b0a2416f60ca7bc6f6cd19d476b00cec731d9c37ac02a09613d7390600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a031681565b606060006116b16147e2565b600091505b60038210156117b15760058054839081106116cd57fe5b90600052602060002090600302016060604051908101604052908160008201548152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561177257602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116117395790505b505050505081525050905080600001518410158015611795575080602001518411155b156117a657806040015192506117b1565b6001909101906116b6565b5050919050565b336000908152600b60205260408120548190156117d457600080fd5b600a5483106117e257600080fd5b6117ea610cb7565b90506117f681846123eb565b604080518481526020810183905281517fb900dc1fba63117f0809180dec6da68c5bc269d0d8338586b2d57235a0671c13929181900390910190a192915050565b600580548290811061184557fe5b60009182526020909120600390910201805460019091015490915082565b336000908152600b6020526040902054600a805460609290811061188357fe5b9060005260206000209060070201600501805480602002602001604051908101604052809291908181526020018280548015610f475760200282019190600052602060002090815481526020019060010190808311610f33575050505050905090565b6000600460008460038111156118f857fe5b60ff90811682526020808301939093526040918201600090812091861681529252902060010154905092915050565b6000610e756001611e0b565b600780548290811061194157fe5b600091825260209091206005909102018054600182015460029092015490925083565b336000908152600b602052604081205481908190151561198357600080fd5b336000908152600b60205260409020549150739a103a76447a747194ec6439de5e2e6eac597db1637ae2b5c76119b88661113b565b600a8054869081106119c657fe5b90600052602060002090600702016004018760ff168154811015156119e757fe5b90600052602060002001540230600160a060020a0316316040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015611a5557600080fd5b505af4158015611a69573d6000803e3d6000fd5b505050506040513d6020811015611a7f57600080fd5b5051600a805491925060009184908110611a9557fe5b90600052602060002090600702016004018560ff16815481101515611ab657fe5b6000918252602082200191909155604051339183156108fc02918491818181858888f19350505050158015611aef573d6000803e3d6000fd5b506040805183815260ff8616602082015280820183905290517fdef385fd9bc4ede5eab81b236ae5ae807f524e23733877f374ab4c709179a2d99181900360600190a19392505050565b600054600160a060020a03163314611b5057600080fd5b60085460ff1615611b6057600080fd5b6008805460ff19166001179055611b7561254b565b611b7d6125f7565b611b856136bc565b611b8d613bed565b565b600c5481565b6000611bc0600e83815481101515611ba957fe5b906000526020600020906002020160010154610e5e565b92915050565b336000908152600b602052604081205481901515611be357600080fd5b6009543411611c5357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4465706f73697420646f6573206e6f7420656e6f756768000000000000000000604482015290519081900360640190fd5b50336000908152600b6020526040902054600a8054611c9891349184908110611c7857fe5b906000526020600020906007020160010154611fee90919063ffffffff16565b600a805483908110611ca657fe5b6000918252602090912060016007909202010155600d805434908101909155611cce90612017565b611cd833346123c6565b6040805182815234602082015281517fa3af609bf46297028ce551832669030f9effef2b02606d02cbbcc40fe6b47c55929181900390910190a1600a805482908110611d2057fe5b90600052602060002090600702016001015491505090565b60036020526000908152604090205481565b600381565b600460209081526000928352604080842090915290825290208054600182015460029092015490919083565b336000908152600b6020526040902054600a8054606092908110611d9b57fe5b6000918252602080832060ff8616845260066007909302019190910181526040918290208054835181840281018401909452808452909183018282801561146157602002820191906000526020600020908154815260200190600101908083116114af5750505050509050919050565b336000908152600b602052604081205481901515611e2857600080fd5b50336000908152600b6020526040902054801515611e4b57611e48610cb7565b90505b611e7c81606060405190810160405280866003811115611e6757fe5b81526000602082015242604090910152613fea565b9392505050565b6000610e756003611e0b565b600b6020526000908152604090205481565b600054600160a060020a03163314611eb857600080fd5b600160a060020a0381161515611ecd57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600d5481565b60095481565b600080600e83815481101515611f4657fe5b6000918252602090912060029091020180546001820154919250611e7c9160ff808316926101009004169061159e565b600581565b601060205281600052604060002081815481101515611f9657fe5b90600052602060002001600091509150505481565b600080611fc5348660200151611fee90919063ffffffff16565b9050611fd184846114e5565b811015611fe15760009150611fe6565b600191505b509392505050565b600082820183811015611e7c57600080fd5b6000808383111561201057600080fd5b5050900390565b600154604051600160a060020a03909116906064340480156108fc02916000818181858888f19350505050158015612053573d6000803e3d6000fd5b50600254604051600160a060020a03909116906064600e34020480156108fc02916000818181858888f19350505050158015612093573d6000803e3d6000fd5b5050565b606060008060606000600a878154811015156120af57fe5b906000526020600020906007020160050180548060200260200160405190810160405280929190818152602001828054801561210a57602002820191906000526020600020905b8154815260200190600101908083116120f6575b50505050509450600093505b60058410156122c357848481518110151561212d57fe5b906020019060200201519250848481518110151561214757fe5b906020019060200201516000141561215e576122c3565b662386f26fc10000600a8481548110151561217557fe5b9060005260206000209060070201600201541015612192576122b8565b6121bb600a848154811015156121a457fe5b9060005260206000209060070201600201546116a5565b915061271082858151811015156121ce57fe5b9060200190602002015161ffff1687028115156121e757fe5b0490506121fd81600a85815481101515611c7857fe5b600a80548590811061220b57fe5b90600052602060002090600702016001018190555061225381600a8581548110151561223357fe5b906000526020600020906007020160030154611fee90919063ffffffff16565b600a80548590811061226157fe5b60009182526020918290206003600790920201019190915560408051898152918201859052818101839052517f211f658fbe3faa22f0ca8b56ad45888186f5bd0737b447cea43e6a0894b330109181900360600190a15b600190930192612116565b50505050505050565b8154600183015460009182916122ef9160ff80821692610100909204169061159e565b8454909150612335908290600486019060ff16600381111561230d57fe5b60ff1681548110151561231c57fe5b9060005260206000200154611fee90919063ffffffff16565b8454600485019060ff16600381111561234a57fe5b60ff1681548110151561235957fe5b60009182526020909120015542600185015583546040517f5dc5b82e66c5dcc43c01835de9ee74f6380209b673fbdd18668826fc898c66b19160ff16908390808360038111156123a557fe5b60ff1681526020018281526020019250505060405180910390a19392505050565b60005b6007548110156123e6576123de8184846142b0565b6001016123c9565b505050565b600080828414156123fb5761109f565b82600a8581548110151561240b57fe5b9060005260206000209060070201600501600081548110151561242a57fe5b600091825260209091200155600191505b600582101561250757600a80548490811061245257fe5b90600052602060002090600702016005016001830381548110151561247357fe5b9060005260206000200154905080600a8581548110151561249057fe5b9060005260206000209060070201600501838154811015156124ae57fe5b600091825260209091200155600a8054829081106124c857fe5b6000918252602080832060ff8616845260066007909302019190910181526040822080546001818101835591845291909220018590559091019061243b565b600a80548490811061251557fe5b60009182526020808320838052600660079093020191909101815260408220805460018101825590835291200184905550505050565b60036020819052640563d8f7807f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5564087d2f73007fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c556409e19f02007fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d55600052640f7eb069807fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af55565b6040805160608082018352662386f26fc10000825260c8602080840191825260008486018181528180527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec80845295517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f75592517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f85591517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f95584518084018652666a94d74f43000081526101908183019081528187018481528480527fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0580855292517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db45590517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db555517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db6558551808501875266b1a2bc2ec500008082526102588285019081528289018681528680527f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a780875293517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7d5590517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7e55517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7f558751808701895267016345785d8a00008152610320818601908152818a018781528780527f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa080885292517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a25590517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a355517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a45588518088018a529182526104b08286019081526078838b0190815260018089528a885293517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed3f5590517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed4055517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed415588518088018a5267013fbe85edc900008152610640818701908152608a828c0190815284895286885291517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a3755517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a3855517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a395588518088018a52670214e8348c4f0000815261096081870181815260a4838d01908152858a5286895292517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81ca55517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81cb5590517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81cc5589518089018b526706f05b59d3b2000081526112c08188019081526101a2828d0190815294895283885290517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d13655517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d1375591517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d1385588518088018a526701aa535d3d0c00008152610e1081870190815261021c828c019081526002808a528b895292517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688cc5590517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688cd55517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688ce5589518089018b526703bf3b91c95b00008152611450818801908152610362828d01908152838a5287895291517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5d55517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5e55517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5f5589518089018b526704db73254763000081526119c881880190815261041a828d01908152838a5286895291517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba88259e55517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba88259f55517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba8825a05589518089018b52670de0b6b3a76400008152613200818801908152610686828d0190815292895283885290517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97a55517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97b55517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97c5588518088018a52670429d069189e00008152612580818701908152818b0193845260038089528a885291517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26d855517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26d95591517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26da5588518088018a52670a688906bd8b00008152613b60818701908152610f8c828c0190815284895286885291517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab17143255517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab17143355517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab1714345588518088018a52670ff59ee833b300008152614fb08187019081526113eb828c0190815284895285885291517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c63755517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c63855517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c6395588518088018a526730927f74c9de00008152619f60818701908152612d0b828c0190815293885282875290517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa255517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa35590517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa45587518087018952670c7d713b49da00008152616bd08186019081526125bc828b0190815260048089528a885292517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a4905590517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a49155517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a4925588518088018a52671d8f47b6fb950000815261aa50818701908152613cd0828c0190815283895286885291517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc2760455517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc2760555517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc276065588518088018a526729a2241af62c0000815261dc50818701908152614617828c0190815283895285885291517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e555517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e655517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e75588518088018a52676124fee993bc0000815262017a20818701908152617b4f828c0190815292885283875290517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9955517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9a55517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9b55875180870189526718fae27693b40000815261f870818601908152616360828b0190815260058089528a885292517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab70f5590517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab71055517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab7115588518088018a526749b0e8ddcd53000081526201bee081870190815261bf7e828c0190815283895286885291517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23955517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23a55517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23b5588518088018a5267654ecf52ac5a000081526202328081870190815261d94d828c0190815283895285885291517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddae855517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddae955517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddaea5588518088018a5267ed4f67667b2e0000815262039080818701908152620178ec828c0190815292885283875290517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2f955517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2fa55517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2fb5587518087018952674af0a763bb1c0000815262029e5081860190815262014f28828b01908152600680895299875291517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58855517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58955517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58a558751808701895267c0c331685a2d0000815262048da0818601908152620269a8828b0190815289885294865290517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa3855517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa395591517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa3a55865180860188526801534fd975564d000081526206ac9881850190815262035632828a0190815288875292855290517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6be955517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6bea55517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6beb5585519384018652680302379bf2ca2e00008452620a56e0848301908152620565099685019687529490925252517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2e955517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2ea55517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2eb55565b6136c46147e2565b6136cc6147e2565b6136d46147e2565b60408051606081018252662386f26fc100008152678ac7230489e7ffff60208201528151600580825260c082018452919283019181602001602082028038833950505090526040810151805191945061012c91600090811061373257fe5b61ffff90921660209283029091019091015260408301518051604b9190600190811061375a57fe5b61ffff90921660209283029091019091015260408301518051603c9190600290811061378257fe5b61ffff909216602092830290910190910152604083015180516028919060039081106137aa57fe5b61ffff909216602092830290910190910152604083015180516019919060049081106137d257fe5b61ffff90921660209283029091018201526005805460018101808355600092909252855160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255868401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18201556040870151805193948894613884937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b505060408051606081018252678ac7230489e8000081526802b5e3af16b187ffff60208201528151600580825260c08201845291945091840192508160200160208202803883395050509052604081015180519193506101f49160009081106138e957fe5b61ffff9092166020928302909101909101526040820151805160c89190600190811061391157fe5b61ffff9092166020928302909101909101526040820151805160969190600290811061393957fe5b61ffff9092166020928302909101909101526040820151805160649190600390811061396157fe5b61ffff9092166020928302909101909101526040820151805160329190600490811061398957fe5b61ffff90921660209283029091018201526005805460018101808355600092909252845160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255858401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18201556040860151805193948794613a3b937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b5050604080516060810182526802b5e3af16b1880000815260001960208201528151600580825260c08201845291945091840192508160200160208202803883395050509052604081015180519192506102bc916000908110613a9a57fe5b61ffff9092166020928302909101909101526040810151805161012c91906001908110613ac357fe5b61ffff9092166020928302909101909101526040810151805160fa91906002908110613aeb57fe5b61ffff90921660209283029091019091015260408101518051609691906003908110613b1357fe5b61ffff90921660209283029091019091015260408101518051606491906004908110613b3b57fe5b61ffff90921660209283029091018201526005805460018101808355600092909252835160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255848401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015560408501518051939486946122c3937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b60066020908152600a7f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85560077f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3181905560057f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace2981905560037f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d25560017fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed81905560007fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b8190557f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f819055604080516080810182526201518042810182528188019081528183018481528351858152808a019094526060830193845287549586018089559790945281517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68895909602948501958655517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68985015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a84015551805194959194613de5937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b019291909101906148a9565b5050505060076080604051908101604052804262093a8001815260200162093a808152602001600081526020016000604051908082528060200260200182016040528015613e3d578160200160208202803883390190505b5090528154600181810180855560009485526020948590208451600590940201928355848401519183019190915560408301516002830155606083015180519194613e90926003850192909101906148a9565b505050506007608060405190810160405280426304a286000181526020016304a286008152602001600081526020016000604051908082528060200260200182016040528015613eea578160200160208202803883390190505b5090528154600181810180855560009485526020948590208451600590940201928355848401519183019190915560408301516002830155606083015180519194613f3d926003850192909101906148a9565b505050506007608060405190810160405280426301e133800181526020016301e133808152602001600081526020016000604051908082528060200260200182016040528015613f97578160200160208202803883390190505b509052815460018181018085556000948552602094859020845160059094020192835584840151918301919091556040830151600283015560608301518051919461109f926003850192909101906148a9565b600080600080600a86815481101515613fff57fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a031683526001810154838501526002810154838301526003810154606084015260048101805483518187028101870190945280845291975061410a948893608086019390929183018282801561409a57602002820191906000526020600020905b815481526020019060010190808311614086575b50505050508152602001600582018054806020026020016040519081016040528092919081815260200182805480156140f257602002820191906000526020600020905b8154815260200190600101908083116140de575b50505050508152505086600001518760200151611fab565b151561411557600080fd5b84516141229060006114e5565b600184015490925061413a903463ffffffff611fee16565b60018401819055614151908363ffffffff61200016565b6001840155600283015461416b908363ffffffff611fee16565b600280850191909155600d805434019055600e805460018181018084556000939093528851919093027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054899290829060ff1916868360038111156141ce57fe5b0217905550602082810151825460ff9091166101000261ff0019909116178255604092830151600192830155939092036000818152600f85528281208b90558a81526010855291822080549384018155825292902001819055905061423234612017565b61423c8683612097565b61424633346123c6565b7f8f59dce00c1ab7202394532f1ca472fd1968974b94e346f4bb01270676cbe89686828760000151856040518085815260200184815260200183600381111561428b57fe5b60ff16815260200182815260200194505050505060405180910390a195945050505050565b6000806000806007878154811015156142c557fe5b9060005260206000209060050201600001544211156142e7576142e78761446f565b60078054889081106142f557fe5b60009182526020808320600260059093020191820154600160a060020a038a16845260048301909152604090922054909550908110159350915061433f828663ffffffff611fee16565b600160a060020a03871660009081526004860160205260409020819055600285015490915081108015614376575060038401546007145b15614380576122c3565b82158061438f57506003840154155b156143c55760038401805460018101825560009182526020909120018054600160a060020a031916600160a060020a0388161790555b6003840154600110156143e8576143e8846000600187600301805490500361455a565b60038401546007101561442057600384018054600690811061440657fe5b60009182526020909120018054600160a060020a03191690555b6003840180546004860191600091600019810190811061443c57fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054600285015550505050505050565b600060078281548110151561448057fe5b6000918252602080832060408051608081018252600594909402909101600181015481548101855284840152838201859052815194855291840190526060820192909252600780549293509091849081106144d757fe5b9060005260206000209060050201600082015181600001556020820151816001015560408201518160020155606082015181600301908051906020019061451f9291906148a9565b50506040805184815290517f7cce3b409f5d6aca017a29bcb7332d4626c08cc76a25438953274f45723716c692509081900360200190a15050565b818160008183141561456b57614753565b60048601600060038801600288880305880181548110151561458957fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205490505b81831361472d575b8086600401600088600301868154811015156145d157fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020541115614607576001909201916145b9565b856004016000876003018481548110151561461e57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020548111156146565760001990910190614607565b818313614728576003860180548390811061466d57fe5b600091825260209091200154600387018054600160a060020a03909216918590811061469557fe5b600091825260209091200154600388018054600160a060020a0390921691869081106146bd57fe5b90600052602060002001600089600301868154811015156146da57fe5b60009182526020909120018054600160a060020a03948516600160a060020a031990911617905581549383166101009190910a90810292021990921617905560019290920191600019909101905b6145b1565b818512156147405761474086868461455a565b838312156147535761475386848661455a565b505050505050565b828054828255906000526020600020908101928215614796579160200282015b8281111561479657825182559160200191906001019061477b565b50610e5a92915061490a565b60c0604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160608152602001606081525090565b6060604051908101604052806000815260200160008152602001606081525090565b82805482825590600052602060002090600f0160109004810192821561489d5791602002820160005b8382111561486d57835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030261482d565b801561489b5782816101000a81549061ffff021916905560020160208160010104928301926001030261486d565b505b50610e5a929150614924565b8280548282559060005260206000209081019282156148fe579160200282015b828111156148fe5782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906148c9565b50610e5a929150614943565b610e7891905b80821115610e5a5760008155600101614910565b610e7891905b80821115610e5a57805461ffff1916815560010161492a565b610e7891905b80821115610e5a578054600160a060020a03191681556001016149495600a165627a7a7230582001b84be694a48107af3fc4e24ca99f2f35387aa892b94a6ddf2e95544a564d990029

   Library Used
Math : 0x9a103a76447a747194ec6439de5e2e6eac597db1

   Swarm Source:
bzzr://01b84be694a48107af3fc4e24ca99f2f35387aa892b94a6ddf2e95544a564d99

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.