ETH Price: $2,839.12 (-9.93%)
 

Overview

ETH Balance

0.0054209480304 ETH

Eth Value

$15.39 (@ $2,839.12/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer80519502019-06-29 9:23:462045 days ago1561800226IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0066718413.1
Transfer80460132019-06-28 11:15:432046 days ago1561720543IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer80392262019-06-27 9:39:492047 days ago1561628389IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0005317220.1
Transfer80392112019-06-27 9:35:092047 days ago1561628109IN
0x5c5ddfe4...DBD7B84F5
0.01 ETH0.0013579920.1
Transfer80392012019-06-27 9:33:312047 days ago1561628011IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0020007320.1
Transfer80352392019-06-26 18:42:092048 days ago1561574529IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer80349752019-06-26 17:34:072048 days ago1561570447IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0002671810.1
Transfer80349132019-06-26 17:22:572048 days ago1561569777IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer80335852019-06-26 12:27:032048 days ago1561552023IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0001055
Transfer80325052019-06-26 8:18:552048 days ago1561537135IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer80279722019-06-25 15:27:322049 days ago1561476452IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer80279722019-06-25 15:27:322049 days ago1561476452IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0001055
Transfer80215512019-06-24 15:31:302050 days ago1561390290IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer80202472019-06-24 10:39:282050 days ago1561372768IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer80040922019-06-21 22:23:462053 days ago1561155826IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.000237255.1
Transfer80029212019-06-21 17:58:122053 days ago1561139892IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.000237255.1
Transfer79973932019-06-20 21:09:422054 days ago1561064982IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer79937582019-06-20 7:33:092054 days ago1561015989IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer79876682019-06-19 8:28:532055 days ago1560932933IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer79780402019-06-17 20:24:212057 days ago1560803061IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.0004698510.1
Transfer79701392019-06-16 14:42:312058 days ago1560696151IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer79646222019-06-15 18:04:502059 days ago1560621890IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.000190734.1
Transfer79630042019-06-15 11:58:162059 days ago1560599896IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.000237255.1
Transfer79621172019-06-15 8:38:212059 days ago1560587901IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
Transfer79496862019-06-13 9:57:442061 days ago1560419864IN
0x5c5ddfe4...DBD7B84F5
0 ETH0.00023265
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
80519502019-06-29 9:23:462045 days ago1561800226
0x5c5ddfe4...DBD7B84F5
 Contract Creation0 ETH
80460132019-06-28 11:15:432046 days ago1561720543
0x5c5ddfe4...DBD7B84F5
0.066822 ETH
80392112019-06-27 9:35:092047 days ago1561628109
0x5c5ddfe4...DBD7B84F5
0.0007 ETH
80392112019-06-27 9:35:092047 days ago1561628109
0x5c5ddfe4...DBD7B84F5
0.001 ETH
80392012019-06-27 9:33:312047 days ago1561628011
0x5c5ddfe4...DBD7B84F5
 Contract Creation0 ETH
80352392019-06-26 18:42:092048 days ago1561574529
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
80349132019-06-26 17:22:572048 days ago1561569777
0x5c5ddfe4...DBD7B84F5
0.0222 ETH
80325052019-06-26 8:18:552048 days ago1561537135
0x5c5ddfe4...DBD7B84F5
0.0666 ETH
80279722019-06-25 15:27:322049 days ago1561476452
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
80215512019-06-24 15:31:302050 days ago1561390290
0x5c5ddfe4...DBD7B84F5
0.1332 ETH
80202472019-06-24 10:39:282050 days ago1561372768
0x5c5ddfe4...DBD7B84F5
0.12624652 ETH
80040922019-06-21 22:23:462053 days ago1561155826
0x5c5ddfe4...DBD7B84F5
0.0666 ETH
80029212019-06-21 17:58:122053 days ago1561139892
0x5c5ddfe4...DBD7B84F5
0.0333 ETH
79973932019-06-20 21:09:422054 days ago1561064982
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
79937582019-06-20 7:33:092054 days ago1561015989
0x5c5ddfe4...DBD7B84F5
0.1332 ETH
79876682019-06-19 8:28:532055 days ago1560932933
0x5c5ddfe4...DBD7B84F5
0.08416435 ETH
79780402019-06-17 20:24:212057 days ago1560803061
0x5c5ddfe4...DBD7B84F5
0.1332 ETH
79701392019-06-16 14:42:312058 days ago1560696151
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
79646222019-06-15 18:04:502059 days ago1560621890
0x5c5ddfe4...DBD7B84F5
0.1998 ETH
79630042019-06-15 11:58:162059 days ago1560599896
0x5c5ddfe4...DBD7B84F5
0.03885 ETH
79621172019-06-15 8:38:212059 days ago1560587901
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
79496862019-06-13 9:57:442061 days ago1560419864
0x5c5ddfe4...DBD7B84F5
0.04208217 ETH
79452922019-06-12 17:37:252062 days ago1560361045
0x5c5ddfe4...DBD7B84F5
0.2664 ETH
79396282019-06-11 20:13:392063 days ago1560284019
0x5c5ddfe4...DBD7B84F5
0.12624652 ETH
79197352019-06-08 17:33:312066 days ago1560015211
0x5c5ddfe4...DBD7B84F5
0.08416435 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Revolution

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-14
*/

pragma solidity ^0.4.23;

/**
*
* ETH CRYPTOCURRENCY DISTRIBUTION PROJECT
* Web              - https://222eth.io
* Twitter          - https://twitter.com/222eth_io
* Telegram_channel - https://t.me/Ethereum222
* EN  Telegram_chat: https://t.me/Ethereum222_chat_en
* RU  Telegram_chat: https://t.me/Ethereum222_chat_ru
* KOR Telegram_chat: https://t.me/Ethereum222_chat_kor
* Email:             mailto:support(at sign)222eth.io
* 
*  - GAIN 2,22% PER 24 HOURS (every 5900 blocks)
*  - Life-long payments
*  - The revolutionary reliability
*  - Minimal contribution 0.01 eth
*  - Currency and payment - ETH
*  - Contribution allocation schemes:
*    -- 83% payments
*    -- 17% Marketing + Operating Expenses
*
*   ---About the Project
*  Blockchain-enabled smart contracts have opened a new era of trustless relationships without 
*  intermediaries. This technology opens incredible financial possibilities. Our automated investment 
*  distribution model is written into a smart contract, uploaded to the Ethereum blockchain and can be 
*  freely accessed online. In order to insure our investors' complete security, full control over the 
*  project has been transferred from the organizers to the smart contract: nobody can influence the 
*  system's permanent autonomous functioning.
* 
* ---How to use:
*  1. Send from ETH wallet to the smart contract address 0x5c5ddfe49572287c6Cb44b99C5daec0DBD7B84F5
*     any amount from 0.01 ETH.
*  2. Verify your transaction in the history of your application or etherscan.io, specifying the address 
*     of your wallet.
*  3a. Claim your profit by sending 0 ether transaction (every day, every week, i don't care unless you're 
*      spending too much on GAS)
*  OR
*  3b. For reinvest, you need to first remove the accumulated percentage of charges (by sending 0 ether 
*      transaction), and only after that, deposit the amount that you want to reinvest.
*  
* RECOMMENDED GAS LIMIT: 200000
* RECOMMENDED GAS PRICE: https://ethgasstation.info/
* You can check the payments on the etherscan.io site, in the "Internal Txns" tab of your wallet.
*
* ---It is not allowed to transfer from exchanges, only from your personal ETH wallet, for which you 
* have private keys.
* 
* Contracts reviewed and approved by pros!
* 
* Main contract - Revolution. Scroll down to find it.
*/


contract InvestorsStorage {
  struct investor {
    uint keyIndex;
    uint value;
    uint paymentTime;
    uint refBonus;
  }
  struct itmap {
    mapping(address => investor) data;
    address[] keys;
  }
  itmap private s;
  address private owner;

  modifier onlyOwner() {
    require(msg.sender == owner, "access denied");
    _;
  }

  constructor() public {
    owner = msg.sender;
    s.keys.length++;
  }

  function insert(address addr, uint value) public onlyOwner returns (bool) {
    uint keyIndex = s.data[addr].keyIndex;
    if (keyIndex != 0) return false;
    s.data[addr].value = value;
    keyIndex = s.keys.length++;
    s.data[addr].keyIndex = keyIndex;
    s.keys[keyIndex] = addr;
    return true;
  }

  function investorFullInfo(address addr) public view returns(uint, uint, uint, uint) {
    return (
      s.data[addr].keyIndex,
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorBaseInfo(address addr) public view returns(uint, uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorShortInfo(address addr) public view returns(uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].refBonus
    );
  }

  function addRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus += refBonus;
    return true;
  }

  function addValue(address addr, uint value) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].value += value;
    return true;
  }

  function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].paymentTime = paymentTime;
    return true;
  }

  function setRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus = refBonus;
    return true;
  }

  function keyFromIndex(uint i) public view returns (address) {
    return s.keys[i];
  }

  function contains(address addr) public view returns (bool) {
    return s.data[addr].keyIndex > 0;
  }

  function size() public view returns (uint) {
    return s.keys.length;
  }

  function iterStart() public pure returns (uint) {
    return 1;
  }
}


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 Percent {
  // Solidity automatically throws when dividing by 0
  struct percent {
    uint num;
    uint den;
  }
  function mul(percent storage p, uint a) internal view returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function div(percent storage p, uint a) internal view returns (uint) {
    return a/p.num*p.den;
  }

  function sub(percent storage p, uint a) internal view returns (uint) {
    uint b = mul(p, a);
    if (b >= a) return 0;
    return a - b;
  }

  function add(percent storage p, uint a) internal view returns (uint) {
    return a + mul(p, a);
  }
}


contract Accessibility {
  enum AccessRank { None, Payout, Paymode, Full }
  mapping(address => AccessRank) internal m_admins;
  modifier onlyAdmin(AccessRank  r) {
    require(
      m_admins[msg.sender] == r || m_admins[msg.sender] == AccessRank.Full,
      "access denied"
    );
    _;
  }
  event LogProvideAccess(address indexed whom, uint when,  AccessRank rank);

  constructor() public {
    m_admins[msg.sender] = AccessRank.Full;
    emit LogProvideAccess(msg.sender, now, AccessRank.Full);
  }
  
  function provideAccess(address addr, AccessRank rank) public onlyAdmin(AccessRank.Full) {
    require(rank <= AccessRank.Full, "invalid access rank");
    require(m_admins[addr] != AccessRank.Full, "cannot change full access rank");
    if (m_admins[addr] != rank) {
      m_admins[addr] = rank;
      emit LogProvideAccess(addr, now, rank);
    }
  }

  function access(address addr) public view returns(AccessRank rank) {
    rank = m_admins[addr];
  }
}


contract PaymentSystem {
  // https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls
  enum Paymode { Push, Pull }
  struct PaySys {
    uint latestTime;
    uint latestKeyIndex;
    Paymode mode; 
  }
  PaySys internal m_paysys;

  modifier atPaymode(Paymode mode) {
    require(m_paysys.mode == mode, "pay mode does not the same");
    _;
  }
  event LogPaymodeChanged(uint when, Paymode indexed mode);
  
  function paymode() public view returns(Paymode mode) {
    mode = m_paysys.mode;
  }

  function changePaymode(Paymode mode) internal {
    require(mode <= Paymode.Pull, "invalid pay mode");
    if (mode == m_paysys.mode ) return; 
    if (mode == Paymode.Pull) require(m_paysys.latestTime != 0, "cannot set pull pay mode if latest time is 0");
    if (mode == Paymode.Push) m_paysys.latestTime = 0;
    m_paysys.mode = mode;
    emit LogPaymodeChanged(now, m_paysys.mode);
  }
}


library Zero {
  function requireNotZero(uint a) internal pure {
    require(a != 0, "require not zero");
  }

  function requireNotZero(address addr) internal pure {
    require(addr != address(0), "require not zero address");
  }

  function notZero(address addr) internal pure returns(bool) {
    return !(addr == address(0));
  }

  function isZero(address addr) internal pure returns(bool) {
    return addr == address(0);
  }
}


library ToAddress {
  function toAddr(uint source) internal pure returns(address) {
    return address(source);
  }

  function toAddr(bytes source) internal pure returns(address addr) {
    assembly { addr := mload(add(source,0x14)) }
    return addr;
  }
}


contract Revolution is Accessibility, PaymentSystem {
  using Percent for Percent.percent;
  using SafeMath for uint;
  using Zero for *;
  using ToAddress for *;

  // investors storage - iterable map;
  InvestorsStorage private m_investors;
  mapping(address => bool) private m_referrals;
  bool private m_nextWave;

  // automatically generates getters
  address public adminAddr;
  address public payerAddr;
  uint public waveStartup;
  uint public investmentsNum;
  uint public constant minInvesment = 10 finney; // 0.01 eth
  uint public constant maxBalance = 333e5 ether; // 33,300,000 eth
  uint public constant pauseOnNextWave = 168 hours; 

  // percents 
  Percent.percent private m_dividendsPercent = Percent.percent(222, 10000); // 222/10000*100% = 2.22%
  Percent.percent private m_adminPercent = Percent.percent(1, 10); // 1/10*100% = 10%
  Percent.percent private m_payerPercent = Percent.percent(7, 100); // 7/100*100% = 7%
  Percent.percent private m_refPercent = Percent.percent(2, 100); // 2/100*100% = 2%

  // more events for easy read from blockchain
  event LogNewInvestor(address indexed addr, uint when, uint value);
  event LogNewInvesment(address indexed addr, uint when, uint value);
  event LogNewReferral(address indexed addr, uint when, uint value);
  event LogPayDividends(address indexed addr, uint when, uint value);
  event LogPayReferrerBonus(address indexed addr, uint when, uint value);
  event LogBalanceChanged(uint when, uint balance);
  event LogAdminAddrChanged(address indexed addr, uint when);
  event LogPayerAddrChanged(address indexed addr, uint when);
  event LogNextWave(uint when);

  modifier balanceChanged {
    _;
    emit LogBalanceChanged(now, address(this).balance);
  }

  modifier notOnPause() {
    require(waveStartup+pauseOnNextWave <= now, "pause on next wave not expired");
    _;
  }

  constructor() public {
    adminAddr = msg.sender;
    emit LogAdminAddrChanged(msg.sender, now);

    payerAddr = msg.sender;
    emit LogPayerAddrChanged(msg.sender, now);

    nextWave();
    waveStartup = waveStartup.sub(pauseOnNextWave);
  }

  function() public payable {
    // investor get him dividends
    if (msg.value == 0) {
      getMyDividends();
      return;
    }

    // sender do invest
    address a = msg.data.toAddr();
    address[3] memory refs;
    if (a.notZero()) {
      refs[0] = a;
      doInvest(refs); 
    } else {
      doInvest(refs);
    }
  }

  function investorsNumber() public view returns(uint) {
    return m_investors.size()-1;
    // -1 because see InvestorsStorage constructor where keys.length++ 
  }

  function balanceETH() public view returns(uint) {
    return address(this).balance;
  }

  function payerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_payerPercent.num, m_payerPercent.den);
  }

  function dividendsPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_dividendsPercent.num, m_dividendsPercent.den);
  }

  function adminPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_adminPercent.num, m_adminPercent.den);
  }

  function referrerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_refPercent.num, m_refPercent.den);
  }

  function investorInfo(address addr) public view returns(uint value, uint paymentTime, uint refBonus, bool isReferral) {
    (value, paymentTime, refBonus) = m_investors.investorBaseInfo(addr);
    isReferral = m_referrals[addr];
  }

  function latestPayout() public view returns(uint timestamp) {
    return m_paysys.latestTime;
  }

  function getMyDividends() public notOnPause atPaymode(Paymode.Pull) balanceChanged {
    // check investor info
    InvestorsStorage.investor memory investor = getMemInvestor(msg.sender);
    require(investor.keyIndex > 0, "sender is not investor"); 
    if (investor.paymentTime < m_paysys.latestTime) {
      assert(m_investors.setPaymentTime(msg.sender, m_paysys.latestTime));
      investor.paymentTime = m_paysys.latestTime;
    }

    // calculate days after latest payment
    uint256 daysAfter = now.sub(investor.paymentTime).div(24 hours);
    require(daysAfter > 0, "the latest payment was earlier than 24 hours");
    assert(m_investors.setPaymentTime(msg.sender, now));

    // check enough eth 
    uint value = m_dividendsPercent.mul(investor.value) * daysAfter;
    if (address(this).balance < value + investor.refBonus) {
      nextWave();
      return;
    }

    // send dividends and ref bonus
    if (investor.refBonus > 0) {
      assert(m_investors.setRefBonus(msg.sender, 0));
      sendDividendsWithRefBonus(msg.sender, value, investor.refBonus);
    } else {
      sendDividends(msg.sender, value);
    }
  }

  function doInvest(address[3] refs) private notOnPause balanceChanged {
    require(msg.value >= minInvesment, "msg.value must be >= minInvesment");
    require(address(this).balance <= maxBalance, "the contract eth balance limit");

    uint value = msg.value;
    // ref system works only once for sender-referral
    if (!m_referrals[msg.sender]) {
      // level 1
      if (notZeroNotSender(refs[0]) && m_investors.contains(refs[0])) {
        uint reward = m_refPercent.mul(value);
        assert(m_investors.addRefBonus(refs[0], reward)); // referrer 1 bonus
        m_referrals[msg.sender] = true;
        value = m_dividendsPercent.add(value); // referral bonus
        emit LogNewReferral(msg.sender, now, value);
        // level 2
        if (notZeroNotSender(refs[1]) && m_investors.contains(refs[1]) && refs[0] != refs[1]) { 
          assert(m_investors.addRefBonus(refs[1], reward)); // referrer 2 bonus
          // level 3
          if (notZeroNotSender(refs[2]) && m_investors.contains(refs[2]) && refs[0] != refs[2] && refs[1] != refs[2]) { 
            assert(m_investors.addRefBonus(refs[2], reward)); // referrer 3 bonus
          }
        }
      }
    }

    // commission
    adminAddr.transfer(m_adminPercent.mul(msg.value));
    payerAddr.transfer(m_payerPercent.mul(msg.value));    
    
    // write to investors storage
    if (m_investors.contains(msg.sender)) {
      assert(m_investors.addValue(msg.sender, value));
    } else {
      assert(m_investors.insert(msg.sender, value));
      emit LogNewInvestor(msg.sender, now, value); 
    }
    
    if (m_paysys.mode == Paymode.Pull)
      assert(m_investors.setPaymentTime(msg.sender, now));

    emit LogNewInvesment(msg.sender, now, value);   
    investmentsNum++;
  }

  function payout() public notOnPause onlyAdmin(AccessRank.Payout) atPaymode(Paymode.Push) balanceChanged {
    if (m_nextWave) {
      nextWave(); 
      return;
    }
   
    // if m_paysys.latestKeyIndex == m_investors.iterStart() then payout NOT in process and we must check latest time of payment.
    if (m_paysys.latestKeyIndex == m_investors.iterStart()) {
      require(now>m_paysys.latestTime+12 hours, "the latest payment was earlier than 12 hours");
      m_paysys.latestTime = now;
    }

    uint i = m_paysys.latestKeyIndex;
    uint value;
    uint refBonus;
    uint size = m_investors.size();
    address investorAddr;
    
    // gasleft and latest key index  - prevent gas block limit 
    for (i; i < size && gasleft() > 50000; i++) {
      investorAddr = m_investors.keyFromIndex(i);
      (value, refBonus) = m_investors.investorShortInfo(investorAddr);
      value = m_dividendsPercent.mul(value);

      if (address(this).balance < value + refBonus) {
        m_nextWave = true;
        break;
      }

      if (refBonus > 0) {
        require(m_investors.setRefBonus(investorAddr, 0), "internal error");
        sendDividendsWithRefBonus(investorAddr, value, refBonus);
        continue;
      }

      sendDividends(investorAddr, value);
    }

    if (i == size) 
      m_paysys.latestKeyIndex = m_investors.iterStart();
    else 
      m_paysys.latestKeyIndex = i;
  }

  function setAdminAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (adminAddr != addr) {
      adminAddr = addr;
      emit LogAdminAddrChanged(addr, now);
    }    
  }

  function setPayerAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (payerAddr != addr) {
      payerAddr = addr;
      emit LogPayerAddrChanged(addr, now);
    }  
  }

  function setPullPaymode() public onlyAdmin(AccessRank.Paymode) atPaymode(Paymode.Push) {
    changePaymode(Paymode.Pull);
  }

  function getMemInvestor(address addr) internal view returns(InvestorsStorage.investor) {
    (uint a, uint b, uint c, uint d) = m_investors.investorFullInfo(addr);
    return InvestorsStorage.investor(a, b, c, d);
  }

  function notZeroNotSender(address addr) internal view returns(bool) {
    return addr.notZero() && addr != msg.sender;
  }

  function sendDividends(address addr, uint value) private {
    if (addr.send(value)) emit LogPayDividends(addr, now, value); 
  }

  function sendDividendsWithRefBonus(address addr, uint value,  uint refBonus) private {
    if (addr.send(value+refBonus)) {
      emit LogPayDividends(addr, now, value);
      emit LogPayReferrerBonus(addr, now, refBonus);
    }
  }

  function nextWave() private {
    m_investors = new InvestorsStorage();
    changePaymode(Paymode.Push);
    m_paysys.latestKeyIndex = m_investors.iterStart();
    investmentsNum = 0;
    waveStartup = now;
    m_nextWave = false;
    emit LogNextWave(now);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"investmentsNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setPayerAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"referrerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"access","outputs":[{"name":"rank","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseOnNextWave","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paymode","outputs":[{"name":"mode","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestPayout","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"rank","type":"uint8"}],"name":"provideAccess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"investorInfo","outputs":[{"name":"value","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"refBonus","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividendsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setPullPaymode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayReferrerBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogAdminAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogPayerAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":true,"name":"mode","type":"uint8"}],"name":"LogPaymodeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whom","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rank","type":"uint8"}],"name":"LogProvideAccess","type":"event"}]

60de608081905261271060a0819052600a918255600b55600160c081905260e0829052600c55600d5560076101008190526064610120819052600e91909155600f81905561018060405260026101408190526101608290526010556011553480156200006a57600080fd5b503360008181526020818152604091829020805460ff1916600390811790915582514281529182015281517f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60929181900390910190a26006805461010060a860020a031916336101008102919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e691916020908290030190a260078054600160a060020a031916339081179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a26200016b64010000000062000194810204565b6008546200018b9062093a806401000000006200223e620002c982021704565b600855620004cb565b6200019e620004ba565b604051809103906000f080158015620001bb573d6000803e3d6000fd5b5060048054600160a060020a031916600160a060020a0392909216919091179055620001f16000640100000000620002e1810204565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050506040513d60208110156200027b57600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b60008083831115620002da57600080fd5b5050900390565b6001816001811115620002f057fe5b11156200035e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff1660018111156200037057fe5b8160018111156200037d57fe5b14156200038a57620004b7565b60018160018111156200039957fe5b1415620004375760015415156200043757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b60008160018111156200044657fe5b1415620004535760006001555b6003805482919060ff1916600183818111156200046c57fe5b021790555060035460ff1660018111156200048357fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a25b50565b60405161086e806200352d83390190565b61305280620004db6000396000f3006080604052600436106101195763ffffffff60e060020a6000350416631680eb4e81146101ac5780632b82aed6146101d35780633d7ac9f8146101f657806341a28df61461020b578063636d98b11461022c57806363bd1d4a1461025a578063653c31741461026f5780636fae3d761461028457806373ad468a146102c9578063816f5617146102de57806381830593146102f3578063922a842514610324578063a4d6bb2b14610349578063bb41f4211461035e578063c0dab51614610373578063d50030ad14610388578063d70d532b1461039d578063dbcbaca4146103c4578063dcc7094a1461040d578063eafecc7a14610422578063ecbdbb3214610437578063f2c0cdbe1461044c578063fc043cad14610461575b6000610123612740565b34151561013757610132610476565b6101a8565b6101716000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506108fd945050505050565b915061018582600160a060020a0316610904565b1561019f57600160a060020a038216815261013281610912565b6101a881610912565b5050005b3480156101b857600080fd5b506101c1611329565b60408051918252519081900360200190f35b3480156101df57600080fd5b506101f4600160a060020a036004351661132f565b005b34801561020257600080fd5b506101c1611448565b34801561021757600080fd5b506101f4600160a060020a0360043516611453565b34801561023857600080fd5b50610241611578565b6040805192835260208301919091528051918290030190f35b34801561026657600080fd5b506101f4611582565b34801561027b57600080fd5b506101c1611c28565b34801561029057600080fd5b506102a5600160a060020a0360043516611cb9565b604051808260038111156102b557fe5b60ff16815260200191505060405180910390f35b3480156102d557600080fd5b506101c1611cd7565b3480156102ea57600080fd5b506101c1611ce6565b3480156102ff57600080fd5b50610308611ced565b60408051600160a060020a039092168252519081900360200190f35b34801561033057600080fd5b50610339611d01565b604051808260018111156102b557fe5b34801561035557600080fd5b506101c1611d0a565b34801561036a57600080fd5b50610241611d10565b34801561037f57600080fd5b50610241611d1a565b34801561039457600080fd5b506101f4610476565b3480156103a957600080fd5b506101f4600160a060020a036004351660ff60243516611d24565b3480156103d057600080fd5b506103e5600160a060020a0360043516611f5e565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561041957600080fd5b50610308612036565b34801561042e57600080fd5b506101c1612045565b34801561044357600080fd5b506101c161204b565b34801561045857600080fd5b50610241612050565b34801561046d57600080fd5b506101f461205a565b61047e61275f565b6000804262093a8060085401111515156104e2576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b60018060035460ff1660018111156104f657fe5b1461054b576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b6105543361215b565b80519094506000106105b0576040805160e560020a62461bcd02815260206004820152601660248201527f73656e646572206973206e6f7420696e766573746f7200000000000000000000604482015290519081900360640190fd5b6001546040850151101561066d5760048054600154604080517f440135850000000000000000000000000000000000000000000000000000000081523394810194909452602484019190915251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561063057600080fd5b505af1158015610644573d6000803e3d6000fd5b505050506040513d602081101561065a57600080fd5b5051151561066457fe5b60015460408501525b6106976201518061068b86604001514261223e90919063ffffffff16565b9063ffffffff61225516565b925060008311610717576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20323420686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b60048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b505115156107b857fe5b826107d18560200151600a61227890919063ffffffff16565b6060860151910292508201303110156107f1576107ec6122a5565b6108bc565b6000846060015111156108b25760048054604080517ffbeac9c900000000000000000000000000000000000000000000000000000000815233938101939093526000602484018190529051600160a060020a039092169263fbeac9c99260448083019360209383900390910190829087803b15801561086f57600080fd5b505af1158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b505115156108a357fe5b6107ec338386606001516123d6565b6108bc338361248c565b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050565b6014015190565b600160a060020a0316151590565b6000804262093a806008540111151515610976576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b662386f26fc100003410156109fb576040805160e560020a62461bcd02815260206004820152602160248201527f6d73672e76616c7565206d757374206265203e3d206d696e496e7665736d656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a480000030311115610a5f576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b3360009081526005602052604090205434925060ff161515610f3f57610a8c8360005b60200201516124fd565b8015610b245750600454600160a060020a0316635dbe47e884600060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610af757600080fd5b505af1158015610b0b573d6000803e3d6000fd5b505050506040513d6020811015610b2157600080fd5b50515b15610f3f57610b3a60108363ffffffff61227816565b600480548551604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525193945016916311302818916044808201926020929091908290030181600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d6020811015610bd857600080fd5b50511515610be257fe5b336000908152600560205260409020805460ff19166001179055610c0d600a8363ffffffff61252b16565b6040805142815260208101839052815192945033927f51dd0a60788a76a784e14408dda19543a507171e513d8a1aab1859626c30d448929181900390910190a2610c58836001610a82565b8015610cf05750600454600160a060020a0316635dbe47e884600160200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610cc357600080fd5b505af1158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b50515b8015610d0e575060208301518351600160a060020a03908116911614155b15610f3f5760048054602080860151604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a03928316958101959095526024850186905251921692631130281892604480830193928290030181600087803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b505050506040513d6020811015610dae57600080fd5b50511515610db857fe5b610dc3836002610a82565b8015610e5b5750600454600160a060020a0316635dbe47e884600260200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610e2e57600080fd5b505af1158015610e42573d6000803e3d6000fd5b505050506040513d6020811015610e5857600080fd5b50515b8015610e79575060408301518351600160a060020a03908116911614155b8015610e9a575060408301516020840151600160a060020a03908116911614155b15610f3f57600454600160a060020a031663113028188460026020020151836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b505050506040513d6020811015610f3557600080fd5b50511515610f3f57fe5b6006546101009004600160a060020a03166108fc610f5e600c34612278565b6040518115909202916000818181858888f19350505050158015610f86573d6000803e3d6000fd5b50600754600160a060020a03166108fc610fa7600e3463ffffffff61227816565b6040518115909202916000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b5060048054604080517f5dbe47e8000000000000000000000000000000000000000000000000000000008152339381019390935251600160a060020a0390911691635dbe47e89160248083019260209291908290030181600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b505050506040513d602081101561106157600080fd5b50511561110f5760048054604080517fca0b187800000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a039091169163ca0b18789160448083019260209291908290030181600087803b1580156110d657600080fd5b505af11580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b5051151561110a57fe5b6111ec565b60048054604080517f0fd0ae1000000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a0390911691630fd0ae109160448083019260209291908290030181600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b505115156111b157fe5b6040805142815260208101849052815133927f5299e1ad8e7b5bcb9a8bfb1ce23cc0210bfea47a33518ab518a93fef68427d98928290030190a25b600160035460ff1660018111156111ff57fe5b14156112a65760048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505115156112a657fe5b6040805142815260208101849052815133927f28c94178af4152674986540aaca61b18b89f54283f74283ef675a90583339b8f928290030190a2600980546001019055604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a1505050565b60095481565b6003803360009081526020819052604090205460ff16600381111561135057fe5b1480611379575060033360009081526020819052604090205460ff16600381111561137757fe5b145b15156113bd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6113cf82600160a060020a0316612540565b600754600160a060020a038381169116146114445760078054600160a060020a03841673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a25b5050565b662386f26fc1000081565b6003803360009081526020819052604090205460ff16600381111561147457fe5b148061149d575060033360009081526020819052604090205460ff16600381111561149b57fe5b145b15156114e1576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6114f382600160a060020a0316612540565b600654600160a060020a0383811661010090920416146114445760068054600160a060020a038416610100810274ffffffffffffffffffffffffffffffffffffffff0019909216919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e6919181900360200190a25050565b6010546011549091565b60008060008060004262093a8060085401111515156115eb576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b6001803360009081526020819052604090205460ff16600381111561160c57fe5b1480611635575060033360009081526020819052604090205460ff16600381111561163357fe5b145b1515611679576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b60008060035460ff16600181111561168d57fe5b146116e2576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b60065460ff16156116fa576116f56122a5565b611be4565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561175757600080fd5b505af115801561176b573d6000803e3d6000fd5b505050506040513d602081101561178157600080fd5b505160025414156118145760015461a8c001421161180f576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20313220686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b426001555b60025460048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051939a50600160a060020a039091169263949d225d928281019260209291908290030181600087803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b505193505b83871080156118b7575061c3505a115b15611b455760048054604080517f460d674b0000000000000000000000000000000000000000000000000000000081529283018a905251600160a060020a039091169163460d674b9160248083019260209291908290030181600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b505050506040513d602081101561194b57600080fd5b505160048054604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a03808616948201949094528151949750929091169263993d34899260248082019392918290030181600087803b1580156119b857600080fd5b505af11580156119cc573d6000803e3d6000fd5b505050506040513d60408110156119e257600080fd5b5080516020909101519096509450611a01600a8763ffffffff61227816565b955084860130311015611a20576006805460ff19166001179055611b45565b6000851115611b305760048054604080517ffbeac9c9000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094526000602482018190529151939092169263fbeac9c9926044808201936020939283900390910190829087803b158015611a9e57600080fd5b505af1158015611ab2573d6000803e3d6000fd5b505050506040513d6020811015611ac857600080fd5b50511515611b20576040805160e560020a62461bcd02815260206004820152600e60248201527f696e7465726e616c206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b611b2b8387876123d6565b611b3a565b611b3a838761248c565b6001909601956118a7565b83871415611bde5760048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b158015611baa57600080fd5b505af1158015611bbe573d6000803e3d6000fd5b505050506040513d6020811015611bd457600080fd5b5051600255611be4565b60028790555b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050565b60048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600093600193600160a060020a03169263949d225d928183019260209282900301818887803b158015611c8757600080fd5b505af1158015611c9b573d6000803e3d6000fd5b505050506040513d6020811015611cb157600080fd5b505103905090565b600160a060020a031660009081526020819052604090205460ff1690565b6a1b8b8c9e000e82a480000081565b62093a8081565b6006546101009004600160a060020a031681565b60035460ff1690565b60015490565b600e54600f549091565b600c54600d549091565b6003803360009081526020819052604090205460ff166003811115611d4557fe5b1480611d6e575060033360009081526020819052604090205460ff166003811115611d6c57fe5b145b1515611db2576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6003826003811115611dc057fe5b1115611e16576040805160e560020a62461bcd02815260206004820152601360248201527f696e76616c6964206163636573732072616e6b00000000000000000000000000604482015290519081900360640190fd5b6003600160a060020a03841660009081526020819052604090205460ff166003811115611e3f57fe5b1415611e95576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f74206368616e67652066756c6c206163636573732072616e6b0000604482015290519081900360640190fd5b816003811115611ea157fe5b600160a060020a03841660009081526020819052604090205460ff166003811115611ec857fe5b14611f5957600160a060020a0383166000908152602081905260409020805483919060ff19166001836003811115611efc57fe5b021790555082600160a060020a03167f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60428460405180838152602001826003811115611f4457fe5b60ff1681526020019250505060405180910390a25b505050565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663743c6775866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b158015611fd457600080fd5b505af1158015611fe8573d6000803e3d6000fd5b505050506040513d6060811015611ffe57600080fd5b508051602080830151604093840151600160a060020a03909916600090815260059092529290205490979196955060ff169350915050565b600754600160a060020a031681565b60085481565b303190565b600a54600b549091565b6002803360009081526020819052604090205460ff16600381111561207b57fe5b14806120a4575060033360009081526020819052604090205460ff1660038111156120a257fe5b145b15156120e8576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b60008060035460ff1660018111156120fc57fe5b14612151576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b61144460016125a3565b61216361275f565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663634d6e57876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050608060405180830381600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b505050506040513d608081101561220357600080fd5b508051602080830151604080850151606095860151825160808101845295865293850192909252830152918101919091529695505050505050565b6000808383111561224e57600080fd5b5050900390565b60008080831161226457600080fd5b828481151561226f57fe5b04949350505050565b60008115156122895750600061229f565b60018301548354830281151561229b57fe5b0490505b92915050565b6122ad612788565b604051809103906000f0801580156122c9573d6000803e3d6000fd5b506004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561230160006125a3565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561235e57600080fd5b505af1158015612372573d6000803e3d6000fd5b505050506040513d602081101561238857600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b604051600160a060020a0384169083830180156108fc02916000818181858888f1935050505015611f595760408051428152602081018490528151600160a060020a038616927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a260408051428152602081018390528151600160a060020a038616927f8e3ff7e294a4411929d6ec573691ed656c8e5c691be6dc7d776fadb286dbfe82928290030190a2505050565b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050156114445760408051428152602081018390528151600160a060020a038516927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a25050565b600061251182600160a060020a0316610904565b801561229f5750600160a060020a03821633141592915050565b60006125378383612278565b90910192915050565b600160a060020a03811615156125a0576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b50565b60018160018111156125b157fe5b1115612607576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff16600181111561261857fe5b81600181111561262457fe5b141561262f576125a0565b600181600181111561263d57fe5b14156126c25760015415156126c2576040805160e560020a62461bcd02815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b60008160018111156126d057fe5b14156126dc5760006001555b6003805482919060ff1916600183818111156126f457fe5b021790555060035460ff16600181111561270a57fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a250565b6060604051908101604052806003906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60405161086e80612799833901905600608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a723058208c5960600e5ff62026505e93c2c0378a2bd42c21b3ad97d9e9b5c76b97712efb00296163636573732064656e69656400000000000000000000000000000000000000a165627a7a7230582043166ccaf46de7bcb19cd3af19294f1b0c1cbdb7485470b7b3bc7343b67d2a730029608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a723058208c5960600e5ff62026505e93c2c0378a2bd42c21b3ad97d9e9b5c76b97712efb0029

Deployed Bytecode

0x6080604052600436106101195763ffffffff60e060020a6000350416631680eb4e81146101ac5780632b82aed6146101d35780633d7ac9f8146101f657806341a28df61461020b578063636d98b11461022c57806363bd1d4a1461025a578063653c31741461026f5780636fae3d761461028457806373ad468a146102c9578063816f5617146102de57806381830593146102f3578063922a842514610324578063a4d6bb2b14610349578063bb41f4211461035e578063c0dab51614610373578063d50030ad14610388578063d70d532b1461039d578063dbcbaca4146103c4578063dcc7094a1461040d578063eafecc7a14610422578063ecbdbb3214610437578063f2c0cdbe1461044c578063fc043cad14610461575b6000610123612740565b34151561013757610132610476565b6101a8565b6101716000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506108fd945050505050565b915061018582600160a060020a0316610904565b1561019f57600160a060020a038216815261013281610912565b6101a881610912565b5050005b3480156101b857600080fd5b506101c1611329565b60408051918252519081900360200190f35b3480156101df57600080fd5b506101f4600160a060020a036004351661132f565b005b34801561020257600080fd5b506101c1611448565b34801561021757600080fd5b506101f4600160a060020a0360043516611453565b34801561023857600080fd5b50610241611578565b6040805192835260208301919091528051918290030190f35b34801561026657600080fd5b506101f4611582565b34801561027b57600080fd5b506101c1611c28565b34801561029057600080fd5b506102a5600160a060020a0360043516611cb9565b604051808260038111156102b557fe5b60ff16815260200191505060405180910390f35b3480156102d557600080fd5b506101c1611cd7565b3480156102ea57600080fd5b506101c1611ce6565b3480156102ff57600080fd5b50610308611ced565b60408051600160a060020a039092168252519081900360200190f35b34801561033057600080fd5b50610339611d01565b604051808260018111156102b557fe5b34801561035557600080fd5b506101c1611d0a565b34801561036a57600080fd5b50610241611d10565b34801561037f57600080fd5b50610241611d1a565b34801561039457600080fd5b506101f4610476565b3480156103a957600080fd5b506101f4600160a060020a036004351660ff60243516611d24565b3480156103d057600080fd5b506103e5600160a060020a0360043516611f5e565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561041957600080fd5b50610308612036565b34801561042e57600080fd5b506101c1612045565b34801561044357600080fd5b506101c161204b565b34801561045857600080fd5b50610241612050565b34801561046d57600080fd5b506101f461205a565b61047e61275f565b6000804262093a8060085401111515156104e2576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b60018060035460ff1660018111156104f657fe5b1461054b576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b6105543361215b565b80519094506000106105b0576040805160e560020a62461bcd02815260206004820152601660248201527f73656e646572206973206e6f7420696e766573746f7200000000000000000000604482015290519081900360640190fd5b6001546040850151101561066d5760048054600154604080517f440135850000000000000000000000000000000000000000000000000000000081523394810194909452602484019190915251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561063057600080fd5b505af1158015610644573d6000803e3d6000fd5b505050506040513d602081101561065a57600080fd5b5051151561066457fe5b60015460408501525b6106976201518061068b86604001514261223e90919063ffffffff16565b9063ffffffff61225516565b925060008311610717576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20323420686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b60048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b505115156107b857fe5b826107d18560200151600a61227890919063ffffffff16565b6060860151910292508201303110156107f1576107ec6122a5565b6108bc565b6000846060015111156108b25760048054604080517ffbeac9c900000000000000000000000000000000000000000000000000000000815233938101939093526000602484018190529051600160a060020a039092169263fbeac9c99260448083019360209383900390910190829087803b15801561086f57600080fd5b505af1158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b505115156108a357fe5b6107ec338386606001516123d6565b6108bc338361248c565b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050565b6014015190565b600160a060020a0316151590565b6000804262093a806008540111151515610976576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b662386f26fc100003410156109fb576040805160e560020a62461bcd02815260206004820152602160248201527f6d73672e76616c7565206d757374206265203e3d206d696e496e7665736d656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a480000030311115610a5f576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b3360009081526005602052604090205434925060ff161515610f3f57610a8c8360005b60200201516124fd565b8015610b245750600454600160a060020a0316635dbe47e884600060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610af757600080fd5b505af1158015610b0b573d6000803e3d6000fd5b505050506040513d6020811015610b2157600080fd5b50515b15610f3f57610b3a60108363ffffffff61227816565b600480548551604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525193945016916311302818916044808201926020929091908290030181600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d6020811015610bd857600080fd5b50511515610be257fe5b336000908152600560205260409020805460ff19166001179055610c0d600a8363ffffffff61252b16565b6040805142815260208101839052815192945033927f51dd0a60788a76a784e14408dda19543a507171e513d8a1aab1859626c30d448929181900390910190a2610c58836001610a82565b8015610cf05750600454600160a060020a0316635dbe47e884600160200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610cc357600080fd5b505af1158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b50515b8015610d0e575060208301518351600160a060020a03908116911614155b15610f3f5760048054602080860151604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a03928316958101959095526024850186905251921692631130281892604480830193928290030181600087803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b505050506040513d6020811015610dae57600080fd5b50511515610db857fe5b610dc3836002610a82565b8015610e5b5750600454600160a060020a0316635dbe47e884600260200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610e2e57600080fd5b505af1158015610e42573d6000803e3d6000fd5b505050506040513d6020811015610e5857600080fd5b50515b8015610e79575060408301518351600160a060020a03908116911614155b8015610e9a575060408301516020840151600160a060020a03908116911614155b15610f3f57600454600160a060020a031663113028188460026020020151836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b505050506040513d6020811015610f3557600080fd5b50511515610f3f57fe5b6006546101009004600160a060020a03166108fc610f5e600c34612278565b6040518115909202916000818181858888f19350505050158015610f86573d6000803e3d6000fd5b50600754600160a060020a03166108fc610fa7600e3463ffffffff61227816565b6040518115909202916000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b5060048054604080517f5dbe47e8000000000000000000000000000000000000000000000000000000008152339381019390935251600160a060020a0390911691635dbe47e89160248083019260209291908290030181600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b505050506040513d602081101561106157600080fd5b50511561110f5760048054604080517fca0b187800000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a039091169163ca0b18789160448083019260209291908290030181600087803b1580156110d657600080fd5b505af11580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b5051151561110a57fe5b6111ec565b60048054604080517f0fd0ae1000000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a0390911691630fd0ae109160448083019260209291908290030181600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b505115156111b157fe5b6040805142815260208101849052815133927f5299e1ad8e7b5bcb9a8bfb1ce23cc0210bfea47a33518ab518a93fef68427d98928290030190a25b600160035460ff1660018111156111ff57fe5b14156112a65760048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505115156112a657fe5b6040805142815260208101849052815133927f28c94178af4152674986540aaca61b18b89f54283f74283ef675a90583339b8f928290030190a2600980546001019055604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a1505050565b60095481565b6003803360009081526020819052604090205460ff16600381111561135057fe5b1480611379575060033360009081526020819052604090205460ff16600381111561137757fe5b145b15156113bd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6113cf82600160a060020a0316612540565b600754600160a060020a038381169116146114445760078054600160a060020a03841673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a25b5050565b662386f26fc1000081565b6003803360009081526020819052604090205460ff16600381111561147457fe5b148061149d575060033360009081526020819052604090205460ff16600381111561149b57fe5b145b15156114e1576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6114f382600160a060020a0316612540565b600654600160a060020a0383811661010090920416146114445760068054600160a060020a038416610100810274ffffffffffffffffffffffffffffffffffffffff0019909216919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e6919181900360200190a25050565b6010546011549091565b60008060008060004262093a8060085401111515156115eb576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b6001803360009081526020819052604090205460ff16600381111561160c57fe5b1480611635575060033360009081526020819052604090205460ff16600381111561163357fe5b145b1515611679576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b60008060035460ff16600181111561168d57fe5b146116e2576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b60065460ff16156116fa576116f56122a5565b611be4565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561175757600080fd5b505af115801561176b573d6000803e3d6000fd5b505050506040513d602081101561178157600080fd5b505160025414156118145760015461a8c001421161180f576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20313220686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b426001555b60025460048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051939a50600160a060020a039091169263949d225d928281019260209291908290030181600087803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b505193505b83871080156118b7575061c3505a115b15611b455760048054604080517f460d674b0000000000000000000000000000000000000000000000000000000081529283018a905251600160a060020a039091169163460d674b9160248083019260209291908290030181600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b505050506040513d602081101561194b57600080fd5b505160048054604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a03808616948201949094528151949750929091169263993d34899260248082019392918290030181600087803b1580156119b857600080fd5b505af11580156119cc573d6000803e3d6000fd5b505050506040513d60408110156119e257600080fd5b5080516020909101519096509450611a01600a8763ffffffff61227816565b955084860130311015611a20576006805460ff19166001179055611b45565b6000851115611b305760048054604080517ffbeac9c9000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094526000602482018190529151939092169263fbeac9c9926044808201936020939283900390910190829087803b158015611a9e57600080fd5b505af1158015611ab2573d6000803e3d6000fd5b505050506040513d6020811015611ac857600080fd5b50511515611b20576040805160e560020a62461bcd02815260206004820152600e60248201527f696e7465726e616c206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b611b2b8387876123d6565b611b3a565b611b3a838761248c565b6001909601956118a7565b83871415611bde5760048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b158015611baa57600080fd5b505af1158015611bbe573d6000803e3d6000fd5b505050506040513d6020811015611bd457600080fd5b5051600255611be4565b60028790555b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050565b60048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600093600193600160a060020a03169263949d225d928183019260209282900301818887803b158015611c8757600080fd5b505af1158015611c9b573d6000803e3d6000fd5b505050506040513d6020811015611cb157600080fd5b505103905090565b600160a060020a031660009081526020819052604090205460ff1690565b6a1b8b8c9e000e82a480000081565b62093a8081565b6006546101009004600160a060020a031681565b60035460ff1690565b60015490565b600e54600f549091565b600c54600d549091565b6003803360009081526020819052604090205460ff166003811115611d4557fe5b1480611d6e575060033360009081526020819052604090205460ff166003811115611d6c57fe5b145b1515611db2576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b6003826003811115611dc057fe5b1115611e16576040805160e560020a62461bcd02815260206004820152601360248201527f696e76616c6964206163636573732072616e6b00000000000000000000000000604482015290519081900360640190fd5b6003600160a060020a03841660009081526020819052604090205460ff166003811115611e3f57fe5b1415611e95576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f74206368616e67652066756c6c206163636573732072616e6b0000604482015290519081900360640190fd5b816003811115611ea157fe5b600160a060020a03841660009081526020819052604090205460ff166003811115611ec857fe5b14611f5957600160a060020a0383166000908152602081905260409020805483919060ff19166001836003811115611efc57fe5b021790555082600160a060020a03167f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60428460405180838152602001826003811115611f4457fe5b60ff1681526020019250505060405180910390a25b505050565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663743c6775866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b158015611fd457600080fd5b505af1158015611fe8573d6000803e3d6000fd5b505050506040513d6060811015611ffe57600080fd5b508051602080830151604093840151600160a060020a03909916600090815260059092529290205490979196955060ff169350915050565b600754600160a060020a031681565b60085481565b303190565b600a54600b549091565b6002803360009081526020819052604090205460ff16600381111561207b57fe5b14806120a4575060033360009081526020819052604090205460ff1660038111156120a257fe5b145b15156120e8576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613007833981519152604482015290519081900360640190fd5b60008060035460ff1660018111156120fc57fe5b14612151576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b61144460016125a3565b61216361275f565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663634d6e57876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050608060405180830381600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b505050506040513d608081101561220357600080fd5b508051602080830151604080850151606095860151825160808101845295865293850192909252830152918101919091529695505050505050565b6000808383111561224e57600080fd5b5050900390565b60008080831161226457600080fd5b828481151561226f57fe5b04949350505050565b60008115156122895750600061229f565b60018301548354830281151561229b57fe5b0490505b92915050565b6122ad612788565b604051809103906000f0801580156122c9573d6000803e3d6000fd5b506004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561230160006125a3565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561235e57600080fd5b505af1158015612372573d6000803e3d6000fd5b505050506040513d602081101561238857600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b604051600160a060020a0384169083830180156108fc02916000818181858888f1935050505015611f595760408051428152602081018490528151600160a060020a038616927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a260408051428152602081018390528151600160a060020a038616927f8e3ff7e294a4411929d6ec573691ed656c8e5c691be6dc7d776fadb286dbfe82928290030190a2505050565b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050156114445760408051428152602081018390528151600160a060020a038516927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a25050565b600061251182600160a060020a0316610904565b801561229f5750600160a060020a03821633141592915050565b60006125378383612278565b90910192915050565b600160a060020a03811615156125a0576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b50565b60018160018111156125b157fe5b1115612607576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff16600181111561261857fe5b81600181111561262457fe5b141561262f576125a0565b600181600181111561263d57fe5b14156126c25760015415156126c2576040805160e560020a62461bcd02815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b60008160018111156126d057fe5b14156126dc5760006001555b6003805482919060ff1916600183818111156126f457fe5b021790555060035460ff16600181111561270a57fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a250565b6060604051908101604052806003906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60405161086e80612799833901905600608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a723058208c5960600e5ff62026505e93c2c0378a2bd42c21b3ad97d9e9b5c76b97712efb00296163636573732064656e69656400000000000000000000000000000000000000a165627a7a7230582043166ccaf46de7bcb19cd3af19294f1b0c1cbdb7485470b7b3bc7343b67d2a730029

Swarm Source

bzzr://8c5960600e5ff62026505e93c2c0378a2bd42c21b3ad97d9e9b5c76b97712efb

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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