Contract Overview | NebulaAI
Balance: 0 Ether
Ether Value: $0
Transactions: 10651 txns
Token Tracker: Nebula AI Token (NBAI)
 Latest 25 transactions from a total of 10651 transactions

TxHash Age From To Value [TxFee]
0x2a475459ecd98dcbcc7d150c530fb4ebd18719adbb79763f40ca455b6e7dc67510 mins ago0x8899af1aa48cdfdedbf394221ab5fb9b69f4ae7b  IN   NebulaAI0 Ether0.000485667
0x927a84645bde9056bbffa14e4d95b822d657db696e18badbdeba8c1bfd7a6b6d30 mins ago0x98c7d97299aa2b2b1a3871057b9608cbb1617531  IN   NebulaAI0 Ether0.001236924
0x5769e820564d560ef58a8506c75dbef6952c60cd8ea36ef7b1692a7b9ae250611 hr 30 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000484003
0x79ac656dddc25df77374ffcf59620e7347fea1c40fc1087b6ef016c36d1388ca1 hr 31 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000574541
0xf92e2bc84593929833cd083175edf340a0ef59227ef085cb951d1f39e001a6f31 hr 36 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000573837
0xb972a85431368ab72beab9cf7e760ededbabdc4ad93fc611e9fb956e5e994c1b1 hr 38 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000492930062
0x4b9dc4747223099b34eb3b9d4c130b0d001a28b6c94e2f311f0a4321477719341 hr 42 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000446772
0xa3e39e3eee61865a35d4778b847331aedb6013b2490d60d572281bc92271fc941 hr 45 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000679003
0xd1bf4a7ab9667262fcd26b3456f4ec4634f254d5abd31811ba9df616f75f80761 hr 48 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000446004
0x72fdcdd5cdfcbcfb8d5f1ab5826f919e517a8ceef61205a7df20fe50948f92501 hr 51 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.00052103
0xbf15365ed4f6d8d22b7af36a8c2a998d738f02e5da5e4191acaa0108714c2fdf1 hr 53 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.0004596328
0xec09fdbca3a1f01961da4e384c8ef00eacf99250198d649917706a8e95c3a6151 hr 55 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000470079
0x925977c5dae5c58b48cae7642c012ebaa6eaf4134cb11815e49abc8b7c2bd5022 hrs ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.00052231
0xfb8a98648efff9ade896a7d386355bc5d0af80db464b6bd57f495406832ef33f2 hrs 2 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.00052231
0x8460a256dfbd3eeceb121418e3e176655c75bd5f454c7adc57befaec608b43482 hrs 5 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000409541
0xeb2c35f1644f1656a5dc04e239a4d43b06be228fd9bdededa72ad6445e95c55a2 hrs 9 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000417336
0x6e78ff22db6549a156e31ece87aa633e7465b3784800be1f3e01124624257f842 hrs 12 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000408837
0x1219f0f65d096b46d437a03490ba06ad976adf9ca2d243c9e8ba51545766badc2 hrs 14 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.0004125537
0x939e6b62abf0241dabb7c0ec6ec787dc4d53d4508205d63ca502543e5b6f93a52 hrs 18 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000626772
0x16eafc894ae26d8a4f18c12f1e71856b36059a4072a64cf6fe31890b1a196b482 hrs 19 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000626004
0x4be1b2e045a2ced19d6d5b05e27296e19b175b06af39a30cf906c0cacec20a252 hrs 24 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000626004
0x228684b868d61beb0a1303de8d27e69e3b020062ff7875f4fe4c18b244ce4bc62 hrs 27 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.0006886044
0x3bd89ba1cb791bfa670b07876f18f4ca2cc3b583a6492a3aeff0677d98ab8bb42 hrs 28 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000573133
0xb504935f1ed8ddd74ee03676de7b2a43c538c940fc3f83fb075f0332e91943902 hrs 33 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.000573837
0xfa5f686d258bb707673159f065b68ec0303e26c7efb5a8521af87b988f5659592 hrs 36 mins ago0x14544633a34fd9bbe30ef18072f4f649c48c3b11  IN   NebulaAI0 Ether0.0006886044
[ 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
0x112ec3de38ddd1cf7723f74e6e561c3fc59e6b241f34306991e7e58febae07485477913212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xbfe428c70c392486a9c7de3bee94c0f63422de66b1f7bd559666b20509e8fb5f5477908212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x5bb4e8fa37f54a583a76de436a4d44b8d997be33eb7469ab4d418c57b8b56dfe5477899212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xb55ed660e826415e5495e41ac42a02eae893671445e353eac6842538b669cb8b5477875212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xa799cef55aa0681b10fbbf2d29fdf6e84158f0e412c0643381ffc45708e00f665477872212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xa64e65a0ab89d03a03276faf5fb928a1b629974713ac21ccbff7143d090bbbf65477852212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xe00d9074206ff0cd223a64d08caad03a5e37fc77d100fcda5b7196b92e6172415477846212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xad42331765a74fe42f8fffe1f605ef39555e4bc7c65ead267180b328ecd4f9265477827212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x02e41663886736052b6b885c7a7dd26ed00d5102022f96713f8a74f32bbc5f8e5477803212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x36b55e953d638ab30cc6a0f2ef9b380b3f1930b6052dbae1da3a6f5369a068195477787212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xf15ab007fb4b761cd8149f42a53296924c3cd7ecfdf717ce2caf39b121544fb45477782212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x3bede89e8ebedb1a9f19587128f212cc8fdab098712c0e2d11c46b39f1693aab5477765212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x682f38ca4d0548cffcfb480e678e7e42b886896fcb1446bd4675ff1f0142d2a85477760212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xa752fc4e8ad7a3250d2680a136ca8a3e5976d7f327b2ebe4179fedf7136e409c5477746212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x3d45f21b8ac5a7869a755e3efb66af9280a53ffe47ae550ddb3524bae9d92a3b5477739212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xf1c268ba5452f662bb50e5de89d3b97e1ed506bd63fa024cccb114b25d053e6b5477721212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x8b1b5b4cab1e352252623b793eac79c66606b3e0dca733ef6603f0dad1d49b125477721212 days 7 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xdbb769a29da745ab955de2b4318db2c1ec4f921a774e04881c50dd9c2d444dca5477691212 days 8 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x070eb2f5d1d2470148ad368599ab43bc483b9bbac10f2101d71b298cfba586a45477628212 days 8 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x9b01de9d8aaf0abbd9699d053d8ee44ce6ec3a1e972748500eeaf0a3a0d659e35477600212 days 8 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xb5d5a38b0ff62b7deda848cf38fcd60760e5c88e75f905276b8b2b7f1e5dd5e85477597212 days 8 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0xe1f716f105102eabfcfd7578f0f680365a31268f296377875eae725384d691335477499212 days 8 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x70daa74d0dcb8c31f222c3dae9780ef594e95ad22d15828f33640c5f742321525477451212 days 9 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x5130abc589168466161bf8f2f498a4550a5afe4359b5b9a88b77c2eb7dcfcd525477449212 days 9 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
0x411c84f5730ac2b69d00566d6c2079a2dbf95209ad87005cbd7095169ccd71695477413212 days 9 hrs ago0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: NebulaToken
Compiler Text: v0.4.19+commit.c4cbbb05
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.19;

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;
  mapping(address => uint256) balances;
  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}
contract Ownable {
  address public owner;

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

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}
contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply_ = totalSupply_.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}

contract CappedToken is MintableToken {

  uint256 public cap;

  function CappedToken(uint256 _cap) public {
    require(_cap > 0);
    cap = _cap;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    require(totalSupply_.add(_amount) <= cap);

    return super.mint(_to, _amount);
  }

}
contract TokenTimelock {
  using SafeERC20 for ERC20Basic;

  // ERC20 basic token contract being held
  ERC20Basic public token;

  // beneficiary of tokens after they are released
  address public beneficiary;

  // timestamp when token release is enabled
  uint256 public releaseTime;

  function TokenTimelock(ERC20Basic _token, address _beneficiary, uint256 _releaseTime) public {
    require(_releaseTime > now);
    token = _token;
    beneficiary = _beneficiary;
    releaseTime = _releaseTime;
  }

  /**
   * @notice Transfers tokens held by timelock to beneficiary.
   */
  function release() public {
    require(now >= releaseTime);

    uint256 amount = token.balanceOf(this);
    require(amount > 0);

    token.safeTransfer(beneficiary, amount);
  }
}
contract TokenVesting is Ownable {
  using SafeMath for uint256;
  using SafeERC20 for ERC20Basic;

  event Released(uint256 amount);
  event Revoked();

  // beneficiary of tokens after they are released
  address public beneficiary;

  uint256 public cliff;
  uint256 public start;
  uint256 public duration;

  bool public revocable;

  mapping (address => uint256) public released;
  mapping (address => bool) public revoked;

  /**
   * @dev Creates a vesting contract that vests its balance of any ERC20 token to the
   * _beneficiary, gradually in a linear fashion until _start + _duration. By then all
   * of the balance will have vested.
   * @param _beneficiary address of the beneficiary to whom vested tokens are transferred
   * @param _cliff duration in seconds of the cliff in which tokens will begin to vest
   * @param _duration duration in seconds of the period in which the tokens will vest
   * @param _revocable whether the vesting is revocable or not
   */
  function TokenVesting(address _beneficiary, uint256 _start, uint256 _cliff, uint256 _duration, bool _revocable) public {
    require(_beneficiary != address(0));
    require(_cliff <= _duration);

    beneficiary = _beneficiary;
    revocable = _revocable;
    duration = _duration;
    cliff = _start.add(_cliff);
    start = _start;
  }

  /**
   * @notice Transfers vested tokens to beneficiary.
   * @param token ERC20 token which is being vested
   */
  function release(ERC20Basic token) public {
    uint256 unreleased = releasableAmount(token);

    require(unreleased > 0);

    released[token] = released[token].add(unreleased);

    token.safeTransfer(beneficiary, unreleased);

    Released(unreleased);
  }

  /**
   * @notice Allows the owner to revoke the vesting. Tokens already vested
   * remain in the contract, the rest are returned to the owner.
   * @param token ERC20 token which is being vested
   */
  function revoke(ERC20Basic token) public onlyOwner {
    require(revocable);
    require(!revoked[token]);

    uint256 balance = token.balanceOf(this);

    uint256 unreleased = releasableAmount(token);
    uint256 refund = balance.sub(unreleased);

    revoked[token] = true;

    token.safeTransfer(owner, refund);

    Revoked();
  }

  /**
   * @dev Calculates the amount that has already vested but hasn't been released yet.
   * @param token ERC20 token which is being vested
   */
  function releasableAmount(ERC20Basic token) public view returns (uint256) {
    return vestedAmount(token).sub(released[token]);
  }

  /**
   * @dev Calculates the amount that has already vested.
   * @param token ERC20 token which is being vested
   */
  function vestedAmount(ERC20Basic token) public view returns (uint256) {
    uint256 currentBalance = token.balanceOf(this);
    uint256 totalBalance = currentBalance.add(released[token]);

    if (now < cliff) {
      return 0;
    } else if (now >= start.add(duration) || revoked[token]) {
      return totalBalance;
    } else {
      return totalBalance.mul(now.sub(start)).div(duration);
    }
  }
}
contract NebulaToken is CappedToken{
    using SafeMath for uint256;
    string public constant name = "Nebula AI Token";
    string public constant symbol = "NBAI";
    uint8 public constant decimals = 18;

    bool public pvt_plmt_set;
    uint256 public pvt_plmt_max_in_Wei;
    uint256 public pvt_plmt_remaining_in_Wei;
    uint256 public pvt_plmt_token_generated;

    TokenVesting public foundation_vesting_contract;
    uint256 public token_unlock_time = 1524887999; //April 27th 2018 23:59:59 GMT-4:00, 7 days after completion

    mapping(address => TokenTimelock[]) public time_locked_reclaim_addresses;

    //vesting starts on April 21th 2018 00:00 GMT-4:00
    //vesting duration is 3 years
    function NebulaToken() CappedToken(6700000000 * 1 ether) public{
        uint256 foundation_held = cap.mul(55).div(100);//55% fixed for early investors, partners, nebula internal and foundation
        address foundation_beneficiary_wallet = 0xD86FCe1890bf98fC086b264a66cA96C7E3B03B40;//multisig wallet
        foundation_vesting_contract = new TokenVesting(foundation_beneficiary_wallet, 1524283200, 0, 3 years, false);
        assert(mint(foundation_vesting_contract, foundation_held));
        FoundationTokenGenerated(foundation_vesting_contract, foundation_beneficiary_wallet, foundation_held);
    }

    //Crowdsale contract mints and stores tokens in time locked contracts during crowdsale.
    //Ownership is transferred back to the owner of crowdsale contract once crowdsale is finished(finalize())
    function create_public_sale_token(address _beneficiary, uint256 _token_amount) external onlyOwner returns(bool){
        assert(mint_time_locked_token(_beneficiary, _token_amount) != address(0));
        return true;
    }

    //@dev Can only set once
    function set_private_sale_total(uint256 _pvt_plmt_max_in_Wei) external onlyOwner returns(bool){
        require(!pvt_plmt_set && _pvt_plmt_max_in_Wei >= 5000 ether);//_pvt_plmt_max_in_wei is minimum the soft cap
        pvt_plmt_set = true;
        pvt_plmt_max_in_Wei = _pvt_plmt_max_in_Wei;
        pvt_plmt_remaining_in_Wei = pvt_plmt_max_in_Wei;
        PrivateSalePlacementLimitSet(pvt_plmt_max_in_Wei);
    }
    /**
     * Private sale distributor
     * private sale total is set once, irreversible and not modifiable
     * Once this amount in wei is reduced to 0, no more token can be generated as private sale!
     * Maximum token generated by private sale is pvt_plmt_max_in_Wei * 125000 (discount upper limit)
     * Note 1, Private sale limit is the balance of private sale fond wallet balance as of 23:59 UTC March 29th 2019
     * Note 2, no ether is transferred to neither the crowdsale contract nor this one for private sale
     * totalSupply_ = pvt_plmt_token_generated + foundation_held + weiRaised * 100000
     * _beneficiary: private sale buyer address
     * _wei_amount: amount in wei that the buyer bought
     * _rate: rate that the private sale buyer has agreed with NebulaAi
     */
    function distribute_private_sale_fund(address _beneficiary, uint256 _wei_amount, uint256 _rate) public onlyOwner returns(bool){
        require(pvt_plmt_set && _beneficiary != address(0) && pvt_plmt_remaining_in_Wei >= _wei_amount && _rate >= 100000 && _rate <= 125000);

        pvt_plmt_remaining_in_Wei = pvt_plmt_remaining_in_Wei.sub(_wei_amount);//remove from limit
        uint256 _token_amount = _wei_amount.mul(_rate); //calculate token amount to be generated
        pvt_plmt_token_generated = pvt_plmt_token_generated.add(_token_amount);//add generated amount to total private sale token

        //Mint token if unlocked time has been reached, directly mint to beneficiary, else create time locked contract
        address _ret;
        if(now < token_unlock_time) assert((_ret = mint_time_locked_token(_beneficiary, _token_amount))!=address(0));
        else assert(mint(_beneficiary, _token_amount));

        PrivateSaleTokenGenerated(_ret, _beneficiary, _token_amount);
        return true;
    }
    //used for private and public sale to create time locked contract before lock release time
    //Note: TokenTimelock constructor will throw after token unlock time is reached
    function mint_time_locked_token(address _beneficiary, uint256 _token_amount) internal returns(TokenTimelock _locked){
        _locked = new TokenTimelock(this, _beneficiary, token_unlock_time);
        time_locked_reclaim_addresses[_beneficiary].push(_locked);
        assert(mint(_locked, _token_amount));
    }

    //Release all tokens held by time locked contracts to the beneficiary address stored in the contract
    //Note: requirement is checked in time lock contract
    function release_all(address _beneficiary) external returns(bool){
        require(time_locked_reclaim_addresses[_beneficiary].length > 0);
        TokenTimelock[] memory _locks = time_locked_reclaim_addresses[_beneficiary];
        for(uint256 i = 0 ; i < _locks.length; ++i) _locks[i].release();
        return true;
    }

    //override to add a checker
    function finishMinting() onlyOwner canMint public returns (bool){
        require(pvt_plmt_set && pvt_plmt_remaining_in_Wei == 0);
        super.finishMinting();
    }

    function get_time_locked_contract_size(address _owner) external view returns(uint256){
        return time_locked_reclaim_addresses[_owner].length;
    }

    event PrivateSaleTokenGenerated(address indexed _time_locked, address indexed _beneficiary, uint256 _amount);
    event FoundationTokenGenerated(address indexed _vesting, address indexed _beneficiary, uint256 _amount);
    event PrivateSalePlacementLimitSet(uint256 _limit);
    function () public payable{revert();}//This contract is not payable
}
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws 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;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_pvt_plmt_max_in_Wei","type":"uint256"}],"name":"set_private_sale_total","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundation_vesting_contract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_wei_amount","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"distribute_private_sale_fund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pvt_plmt_set","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"time_locked_reclaim_addresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_token_amount","type":"uint256"}],"name":"create_public_sale_token","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"release_all","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pvt_plmt_max_in_Wei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"get_time_locked_contract_size","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_unlock_time","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":"pvt_plmt_token_generated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pvt_plmt_remaining_in_Wei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_time_locked","type":"address"},{"indexed":true,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"PrivateSaleTokenGenerated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_vesting","type":"address"},{"indexed":true,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"FoundationTokenGenerated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_limit","type":"uint256"}],"name":"PrivateSalePlacementLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","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":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000600360146101000a81548160ff021916908315150217905550635ae3f1bf600a5534156200003357600080fd5b6000806b15a61c2fc85b5b31ac00000033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000811115156200009457600080fd5b8060048190555050620000e56064620000c860376004546200029e6401000000000262002254179091906401000000009004565b620002dd640100000000026200251b179091906401000000009004565b915073d86fce1890bf98fc086b264a66ca96c7e3b03b40905080635adab74060006305a39a80600062000117620005fa565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018215151515815260200195505050505050604051809103906000f08015156200018457600080fd5b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000206600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683620002f9640100000000026200105d176401000000009004565b15156200020f57fe5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa9aa5c04d88d4fa986f099fd5c5b5dbce10532eabba64fe122dbafcdef3bf865846040518082815260200191505060405180910390a350506200060b565b6000806000841415620002b55760009150620002d6565b8284029050828482811515620002c757fe5b04141515620002d257fe5b8091505b5092915050565b6000808284811515620002ec57fe5b0490508091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200035857600080fd5b600360149054906101000a900460ff161515156200037557600080fd5b6004546200039d83600154620003d36401000000000262002050179091906401000000009004565b11151515620003ab57600080fd5b620003cb8383620003f2640100000000026200206e176401000000009004565b905092915050565b6000808284019050838110151515620003e857fe5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200045157600080fd5b600360149054906101000a900460ff161515156200046e57600080fd5b6200049382600154620003d36401000000000262002050179091906401000000009004565b600181905550620004fa826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620003d36401000000000262002050179091906401000000009004565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b604051610f3a806200307583390190565b612a5a806200061b6000396000f300606060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063015773b61461017a57806305d2035b146101b557806306fdde03146101e2578063095ea7b31461027057806318160ddd146102ca57806323b872dd146102f3578063288365a71461036c578063313ce567146103c1578063355274ea146103f057806340c10f191461041957806345b17abb146104735780634854bde0146104d657806349f539b214610503578063661884631461058557806368e757a0146105df57806370a08231146106395780637d64bcb4146106865780638da5cb5b146106b357806395d89b41146107085780639c29379214610796578063a9059cbb146107e7578063cf0023ec14610841578063d73dd6231461086a578063dd62ed3e146108c4578063df713abd14610930578063e9e488421461097d578063f2fde38b146109a6578063f9084729146109df578063fd92579514610a08575b600080fd5b341561018557600080fd5b61019b6004808035906020019091905050610a31565b604051808215151515815260200191505060405180910390f35b34156101c057600080fd5b6101c8610b2a565b604051808215151515815260200191505060405180910390f35b34156101ed57600080fd5b6101f5610b3d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023557808201518184015260208101905061021a565b50505050905090810190601f1680156102625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027b57600080fd5b6102b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b76565b604051808215151515815260200191505060405180910390f35b34156102d557600080fd5b6102dd610c68565b6040518082815260200191505060405180910390f35b34156102fe57600080fd5b610352600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c72565b604051808215151515815260200191505060405180910390f35b341561037757600080fd5b61037f61102c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103cc57600080fd5b6103d4611052565b604051808260ff1660ff16815260200191505060405180910390f35b34156103fb57600080fd5b610403611057565b6040518082815260200191505060405180910390f35b341561042457600080fd5b610459600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061105d565b604051808215151515815260200191505060405180910390f35b341561047e57600080fd5b6104bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190505061110e565b604051808215151515815260200191505060405180910390f35b34156104e157600080fd5b6104e9611313565b604051808215151515815260200191505060405180910390f35b341561050e57600080fd5b610543600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611326565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561059057600080fd5b6105c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611374565b604051808215151515815260200191505060405180910390f35b34156105ea57600080fd5b61061f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611605565b604051808215151515815260200191505060405180910390f35b341561064457600080fd5b610670600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116af565b6040518082815260200191505060405180910390f35b341561069157600080fd5b6106996116f7565b604051808215151515815260200191505060405180910390f35b34156106be57600080fd5b6106c66117a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071357600080fd5b61071b6117cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075b578082015181840152602081019050610740565b50505050905090810190601f1680156107885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107a157600080fd5b6107cd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611805565b604051808215151515815260200191505060405180910390f35b34156107f257600080fd5b610827600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119d9565b604051808215151515815260200191505060405180910390f35b341561084c57600080fd5b610854611bf8565b6040518082815260200191505060405180910390f35b341561087557600080fd5b6108aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bfe565b604051808215151515815260200191505060405180910390f35b34156108cf57600080fd5b61091a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dfa565b6040518082815260200191505060405180910390f35b341561093b57600080fd5b610967600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e81565b6040518082815260200191505060405180910390f35b341561098857600080fd5b610990611ecd565b6040518082815260200191505060405180910390f35b34156109b157600080fd5b6109dd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ed3565b005b34156109ea57600080fd5b6109f261202b565b6040518082815260200191505060405180910390f35b3415610a1357600080fd5b610a1b612031565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8f57600080fd5b600560009054906101000a900460ff16158015610ab6575069010f0cf064dd592000008210155b1515610ac157600080fd5b6001600560006101000a81548160ff021916908315150217905550816006819055506006546007819055507f4a56b7e8268aa0185d492502b8b59d35b25ffe10aef8ec35413494ab264df9df6006546040518082815260200191505060405180910390a1919050565b600360149054906101000a900460ff1681565b6040805190810160405280600f81526020017f4e6562756c6120414920546f6b656e000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610caf57600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610cfc57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d8757600080fd5b610dd8826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461203790919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e6b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f3c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461203790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b60045481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110bb57600080fd5b600360149054906101000a900460ff161515156110d757600080fd5b6004546110ef8360015461205090919063ffffffff16565b111515156110fc57600080fd5b611106838361206e565b905092915050565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561116f57600080fd5b600560009054906101000a900460ff1680156111b85750600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156111c657508460075410155b80156111d55750620186a08410155b80156111e457506201e8488411155b15156111ef57600080fd5b6112048560075461203790919063ffffffff16565b60078190555061121d848661225490919063ffffffff16565b91506112348260085461205090919063ffffffff16565b600881905550600a5442101561128e57600073ffffffffffffffffffffffffffffffffffffffff16611266878461228f565b91508173ffffffffffffffffffffffffffffffffffffffff161415151561128957fe5b6112a1565b611298868361105d565b15156112a057fe5b5b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f553bfd209cdb4504e0b01494b3ad6acb6a67152e88b8e6bea244a80f33d7e3f9846040518082815260200191505060405180910390a36001925050509392505050565b600560009054906101000a900460ff1681565b600b6020528160005260406000208181548110151561134157fe5b90600052602060002090016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611485576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611519565b611498838261203790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16611685848461228f565b73ffffffffffffffffffffffffffffffffffffffff16141515156116a557fe5b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561175557600080fd5b600360149054906101000a900460ff1615151561177157600080fd5b600560009054906101000a900460ff16801561178f57506000600754145b151561179a57600080fd5b6117a26123de565b5090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600481526020017f4e4241490000000000000000000000000000000000000000000000000000000081525081565b600061180f6124a6565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011151561186157600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561192057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d6575b50505050509150600090505b81518110156119ce57818181518110151561194357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166386d1a69f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156119af57600080fd5b6102c65a03f115156119c057600080fd5b50505080600101905061192c565b600192505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611a1657600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611a6357600080fd5b611ab4826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461203790919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b47826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60065481565b6000611c8f82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f2f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f6b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60075481565b600082821115151561204557fe5b818303905092915050565b600080828401905083811015151561206457fe5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120cc57600080fd5b600360149054906101000a900460ff161515156120e857600080fd5b6120fd8260015461205090919063ffffffff16565b600181905550612154826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008414156122695760009150612288565b828402905082848281151561227a57fe5b0414151561228457fe5b8091505b5092915050565b60003083600a5461229e6124ba565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f080151561232457600080fd5b9050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480600101828161237791906124ca565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506123d0818361105d565b15156123d857fe5b92915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561243c57600080fd5b600360149054906101000a900460ff1615151561245857600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b602060405190810160405280600081525090565b6040516104f88061253783390190565b8154818355818115116124f1578183600052602060002091820191016124f091906124f6565b5b505050565b61251891905b808211156125145760008160009055506001016124fc565b5090565b90565b600080828481151561252957fe5b049050809150509291505056006060604052341561000f57600080fd5b6040516060806104f883398101604052808051906020019091908051906020019091908051906020019091905050428111151561004b57600080fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505050610413806100e56000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338af3eed1461006757806386d1a69f146100bc578063b91d4001146100d1578063fc0c546a146100fa575b600080fd5b341561007257600080fd5b61007a61014f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100c757600080fd5b6100cf610175565b005b34156100dc57600080fd5b6100e46102e9565b6040518082815260200191505060405180910390f35b341561010557600080fd5b61010d6102ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254421015151561018857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561024c57600080fd5b6102c65a03f1151561025d57600080fd5b50505060405180519050905060008111151561027857600080fd5b6102e6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103149092919063ffffffff16565b50565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103bf57600080fd5b6102c65a03f115156103d057600080fd5b5050506040518051905015156103e257fe5b5050505600a165627a7a723058204757dbda1031a23e79cc25c87a302e4bbd6e299e75c1b1188df662ed6b856e5e0029a165627a7a723058200edb3945438ead0368c40e924401e8af0ae9c4eb9577ac129d422e67dc937dae00296060604052341561000f57600080fd5b60405160a080610f3a83398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156100cb57600080fd5b8183111515156100da57600080fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff0219169083151502179055508160048190555061015c838561017364010000000002610c27179091906401000000009004565b600281905550836003819055505050505050610191565b600080828401905083811015151561018757fe5b8091505092915050565b610d9a806101a06000396000f3006060604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fb5a6b4146100ca57806313d033c0146100f35780631726cbc81461011c5780631916558714610169578063384711cc146101a257806338af3eed146101ef57806374a8f10314610244578063872a78101461027d5780638da5cb5b146102aa5780639852595c146102ff578063be9a65551461034c578063f2fde38b14610375578063fa01dc06146103ae575b600080fd5b34156100d557600080fd5b6100dd6103ff565b6040518082815260200191505060405180910390f35b34156100fe57600080fd5b610106610405565b6040518082815260200191505060405180910390f35b341561012757600080fd5b610153600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061040b565b6040518082815260200191505060405180910390f35b341561017457600080fd5b6101a0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061046e565b005b34156101ad57600080fd5b6101d9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105a7565b6040518082815260200191505060405180910390f35b34156101fa57600080fd5b610202610793565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61027b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107b9565b005b341561028857600080fd5b610290610a43565b604051808215151515815260200191505060405180910390f35b34156102b557600080fd5b6102bd610a56565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561030a57600080fd5b610336600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a7b565b6040518082815260200191505060405180910390f35b341561035757600080fd5b61035f610a93565b6040518082815260200191505060405180910390f35b341561038057600080fd5b6103ac600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a99565b005b34156103b957600080fd5b6103e5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bee565b604051808215151515815260200191505060405180910390f35b60045481565b60025481565b6000610467600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610459846105a7565b610c0e90919063ffffffff16565b9050919050565b60006104798261040b565b905060008111151561048a57600080fd5b6104dc81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2790919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061056c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610c459092919063ffffffff16565b7ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c565816040518082815260200191505060405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561064f57600080fd5b6102c65a03f1151561066057600080fd5b5050506040518051905091506106be600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610c2790919063ffffffff16565b90506002544210156106d3576000925061078c565b6106ea600454600354610c2790919063ffffffff16565b421015806107415750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561074e5780925061078c565b61078960045461077b61076c60035442610c0e90919063ffffffff16565b84610d1890919063ffffffff16565b610d5390919063ffffffff16565b92505b5050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561081957600080fd5b600560009054906101000a900460ff16151561083457600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561088d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b5050506040518051905092506109568461040b565b915061096b8284610c0e90919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a116000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828673ffffffffffffffffffffffffffffffffffffffff16610c459092919063ffffffff16565b7f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee660405160405180910390a150505050565b600560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610af457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b3057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000828211151515610c1c57fe5b818303905092915050565b6000808284019050838110151515610c3b57fe5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610cf057600080fd5b6102c65a03f11515610d0157600080fd5b505050604051805190501515610d1357fe5b505050565b6000806000841415610d2d5760009150610d4c565b8284029050828482811515610d3e57fe5b04141515610d4857fe5b8091505b5092915050565b6000808284811515610d6157fe5b04905080915050929150505600a165627a7a7230582004c1987b1d71ac003044c610bd2af0c5eba1e35927499300b1e11a82cc0b70e70029

   Swarm Source:
bzzr://04c1987b1d71ac003044c610bd2af0c5eba1e35927499300b1e11a82cc0b70e7

 

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.