ETH Price: $3,270.79 (+0.66%)
Gas: 1 Gwei

Contract

0x01bbec6573ed7EcA0f307a10d2B4CEB669816B4a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer56874962018-05-27 20:23:442254 days ago1527452624IN
0x01bbec65...669816B4a
0.7 ETH0.0002777813
Transfer55423952018-05-02 7:55:512279 days ago1525247751IN
0x01bbec65...669816B4a
1 ETH0.00446922210
Transfer55110922018-04-26 20:52:552285 days ago1524775975IN
0x01bbec65...669816B4a
1 ETH0.001068450
Transfer54456722018-04-15 15:22:432296 days ago1523805763IN
0x01bbec65...669816B4a
0.7 ETH0.000085474
Transfer52641042018-03-16 6:44:222326 days ago1521182662IN
0x01bbec65...669816B4a
0.22 ETH0.000087864
Transfer52058542018-03-06 9:09:562336 days ago1520327396IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51864472018-03-03 2:14:372339 days ago1520043277IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51648162018-02-27 10:15:532343 days ago1519726553IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51648152018-02-27 10:14:342343 days ago1519726474IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51648132018-02-27 10:14:152343 days ago1519726455IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51648132018-02-27 10:14:152343 days ago1519726455IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51539232018-02-25 13:07:272345 days ago1519564047IN
0x01bbec65...669816B4a
1 ETH0.001098350
Allocate Marketi...51474282018-02-24 10:47:132346 days ago1519469233IN
0x01bbec65...669816B4a
0 ETH0.0043854441
Transfer51429202018-02-23 16:24:272347 days ago1519403067IN
0x01bbec65...669816B4a
0.56 ETH0.001098350
Transfer51429202018-02-23 16:24:272347 days ago1519403067IN
0x01bbec65...669816B4a
0.55 ETH0.001098350
Transfer51429202018-02-23 16:24:272347 days ago1519403067IN
0x01bbec65...669816B4a
0.55 ETH0.001098350
Transfer51428872018-02-23 16:14:252347 days ago1519402465IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51420652018-02-23 12:47:572347 days ago1519390077IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51420642018-02-23 12:47:362347 days ago1519390056IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51419572018-02-23 12:19:242347 days ago1519388364IN
0x01bbec65...669816B4a
0.6988 ETH0.001098350
Transfer51417092018-02-23 11:21:142347 days ago1519384874IN
0x01bbec65...669816B4a
1 ETH0.001098350
Transfer51409482018-02-23 8:18:562347 days ago1519373936IN
0x01bbec65...669816B4a
1 ETH0.00115555
Transfer51397452018-02-23 3:25:312347 days ago1519356331IN
0x01bbec65...669816B4a
0.11 ETH0.000021961
Transfer51397372018-02-23 3:23:082347 days ago1519356188IN
0x01bbec65...669816B4a
1 ETH0.000087864
Transfer51397372018-02-23 3:23:082347 days ago1519356188IN
0x01bbec65...669816B4a
1 ETH0.000087864
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.17343783 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.82656216 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.25 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.19 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.94 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.6 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.21479423 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
0.2 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
51355442018-02-22 10:14:022348 days ago1519294442
0x01bbec65...669816B4a
1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TEFoodsCrowdsale

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-22
*/

pragma solidity ^0.4.19;

library SafeMath {
  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;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract Ownable {
  address public owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

contract ERC20Interface {
  function totalSupply() public constant returns (uint);
  function balanceOf(address tokenOwner) public constant returns (uint balance);
  function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
  function transfer(address to, uint tokens) public returns (bool success);
  function approve(address spender, uint tokens) public returns (bool success);
  function transferFrom(address from, address to, uint tokens) public returns (bool success);
  event Transfer(address indexed from, address indexed to, uint tokens);
  event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


contract ERC827 {

  function approve( address _spender, uint256 _value, bytes _data ) public returns (bool);
  function transfer( address _to, uint256 _value, bytes _data ) public returns (bool);
  function transferFrom( address _from, address _to, uint256 _value, bytes _data ) public returns (bool);

}


contract TEFoodsToken is Ownable, ERC20Interface {

  using SafeMath for uint;

  string public constant name = "TEFOOD FARM TO FORK FOOD TRACEABILITY SYSTEM LICENSE TOKEN";
  string public constant symbol = "TFOOD";
  uint8 public constant decimals = 18;
  uint constant _totalSupply = 1000000000 * 1 ether;
  uint public transferrableTime = 1521712800;
  uint _vestedSupply;
  uint _circulatingSupply;
  mapping (address => uint) balances;
  mapping (address => mapping(address => uint)) allowed;

  struct vestedBalance {
    address addr;
    uint balance;
  }
  mapping (uint => vestedBalance[]) vestingMap;



  function TEFoodsToken () public {
    owner = msg.sender;
    balances[0x00] = _totalSupply;
  }

  event VestedTokensReleased(address to, uint amount);

  function allocateTokens (address addr, uint amount) public onlyOwner returns (bool) {
    require (addr != 0x00);
    require (amount > 0);
    balances[0x00] = balances[0x00].sub(amount);
    balances[addr] = balances[addr].add(amount);
    _circulatingSupply = _circulatingSupply.add(amount);
    assert (_vestedSupply.add(_circulatingSupply).add(balances[0x00]) == _totalSupply);
    return true;
  }

  function allocateVestedTokens (address addr, uint amount, uint vestingPeriod) public onlyOwner returns (bool) {
    require (addr != 0x00);
    require (amount > 0);
    require (vestingPeriod > 0);
    balances[0x00] = balances[0x00].sub(amount);
    vestingMap[vestingPeriod].push( vestedBalance (addr,amount) );
    _vestedSupply = _vestedSupply.add(amount);
    assert (_vestedSupply.add(_circulatingSupply).add(balances[0x00]) == _totalSupply);
    return true;
  }

  function releaseVestedTokens (uint vestingPeriod) public {
    require (now >= transferrableTime.add(vestingPeriod));
    require (vestingMap[vestingPeriod].length > 0);
    require (vestingMap[vestingPeriod][0].balance > 0);
    var v = vestingMap[vestingPeriod];
    for (uint8 i = 0; i < v.length; i++) {
      balances[v[i].addr] = balances[v[i].addr].add(v[i].balance);
      _circulatingSupply = _circulatingSupply.add(v[i].balance);
      _vestedSupply = _vestedSupply.sub(v[i].balance);
      v[i].balance = 0;
      VestedTokensReleased(v[i].addr, v[i].balance);
    }
  }

  function enableTransfers () public onlyOwner returns (bool) {
    if (now.add(86400) < transferrableTime) {
      transferrableTime = now.add(86400);
    }
    owner = 0x00;
    return true;
  }

  function () public payable {
    revert();
  }

  function totalSupply() public constant returns (uint) {
    return _circulatingSupply;
  }

  function balanceOf(address tokenOwner) public constant returns (uint balance) {
    return balances[tokenOwner];
  }

  function vestedBalanceOf(address tokenOwner, uint vestingPeriod) public constant returns (uint balance) {
    var v = vestingMap[vestingPeriod];
    for (uint8 i = 0; i < v.length; i++) {
      if (v[i].addr == tokenOwner) return v[i].balance;
    }
    return 0;
  }

  function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
    return allowed[tokenOwner][spender];
  }

  function transfer(address to, uint tokens) public returns (bool success) {
    require (now >= transferrableTime);
    require (to != address(this));
    require (balances[msg.sender] >= tokens);
    balances[msg.sender] = balances[msg.sender].sub(tokens);
    balances[to] = balances[to].add(tokens);
    Transfer(msg.sender, to, tokens);
    return true;
  }

  function approve(address spender, uint tokens) public returns (bool success) {
    require (spender != address(this));
    allowed[msg.sender][spender] = tokens;
    Approval(msg.sender, spender, tokens);
    return true;
  }

  function transferFrom(address from, address to, uint tokens) public returns (bool success) {
    require (now >= transferrableTime);
    require (to != address(this));
    require (allowed[from][msg.sender] >= tokens);
    balances[from] = balances[from].sub(tokens);
    allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
    balances[to] = balances[to].add(tokens);
    Transfer(from, to, tokens);
    return true;
  }

}

contract TEFoods827Token is TEFoodsToken, ERC827 {

  function approve(address _spender, uint256 _value, bytes _data) public returns (bool) {
    super.approve(_spender, _value);
    require(_spender.call(_data));
    return true;
  }

  function transfer(address _to, uint256 _value, bytes _data) public returns (bool) {
    super.transfer(_to, _value);
    require(_to.call(_data));
    return true;
  }

  function transferFrom(address _from, address _to, uint256 _value, bytes _data) public returns (bool) {
    super.transferFrom(_from, _to, _value);
    require(_to.call(_data));
    return true;
  }

}


contract TEFoodsCrowdsale is Ownable {

  using SafeMath for uint;

  TEFoods827Token public tokenContract;

  uint public constant crowdsaleStartTime = 1519293600;
  uint public constant crowdsaleUncappedTime = 1519336800;
  uint public constant crowdsaleClosedTime = 1521712800;
  uint public maxGasPriceInWei = 50000000000;
  uint public constant contributionCapInWei = 1000000000000000000;
  address public constant teFoodsAddress = 0x27Ca683EdeAB8D03c6B5d7818f78Ba27a2025159;

  uint public constant tokenRateInUsdCents = 5;
  uint public constant ethRateInUsdCents = 92500;
  uint public constant amountToRaiseInUsdCents = 1910000000;
  uint public constant minContributionInUsdCents = 10000;

  uint[4] public tokenBonusTimes = [1519898400,1520503200,1521108000,1521712800];
  uint[4] public tokenBonusPct = [15,12,10,5];

  uint public whitelistedAddressCount;
  uint public contributorCount;
  bool public crowdsaleFinished;
  uint public amountRaisedInUsdCents;

  uint public constant totalTokenSupply = 1000000000 * 1 ether;
  uint public tokensAllocated;

  uint public constant marketingTokenAllocation = 60000000 * 1 ether;
  uint public marketingTokensDistributed;

  mapping (address => bool) presaleAllocated;
  mapping (address => bool) marketingAllocated;

  struct Contributor {
    bool authorised;
    bool contributed;
  }
  mapping (address => Contributor) whitelist;


  event PresaleAllocation(address to, uint usdAmount, uint tokenAmount);
  event MarketingAllocation(address to, uint tokenAmount);
  event CrowdsaleClosed(uint usdRaisedInCents);
  event TokensTransferrable();

  function TEFoodsCrowdsale () public {
    require (teFoodsAddress != 0x00);
    tokenContract = new TEFoods827Token();
  }

  function allocatePresaleTokens (address recipient, uint amountInUsdCents, uint bonusPct, uint vestingPeriodInSeconds) public onlyOwner  {
    require (now < crowdsaleStartTime);
    require (!presaleAllocated[recipient]);
    uint tokenAmount = amountInUsdCents.mul(1 ether).div(tokenRateInUsdCents);
    uint bonusAmount = tokenAmount.mul(bonusPct).div(100);

    if (vestingPeriodInSeconds > 0) {
      require (tokenContract.allocateTokens(recipient, tokenAmount));
      require (tokenContract.allocateVestedTokens(recipient, bonusAmount, vestingPeriodInSeconds));
    } else {
      require (tokenContract.allocateTokens(recipient, tokenAmount.add(bonusAmount)));
    }
    amountRaisedInUsdCents = amountRaisedInUsdCents.add(amountInUsdCents);
    tokensAllocated = tokensAllocated.add(tokenAmount).add(bonusAmount);
    presaleAllocated[recipient] = true;
    PresaleAllocation(recipient, amountInUsdCents, tokenAmount.add(bonusAmount));
  }

  function allocateMarketingTokens (address recipient, uint tokenAmount) public onlyOwner {
    require (!marketingAllocated[recipient]);
    require (marketingTokensDistributed.add(tokenAmount) <= marketingTokenAllocation);
    marketingTokensDistributed = marketingTokensDistributed.add(tokenAmount);
    tokensAllocated = tokensAllocated.add(tokenAmount);
    require (tokenContract.allocateTokens(recipient, tokenAmount));
    marketingAllocated[recipient] = true;
    MarketingAllocation(recipient, tokenAmount);
  }

  function whitelistUsers (address[] addressList) public onlyOwner {
    require (now < crowdsaleStartTime);
    for (uint8 i = 0; i < addressList.length; i++) {
      require (!whitelist[i].authorised);
      whitelist[addressList[i]].authorised = true;
    }
    whitelistedAddressCount = whitelistedAddressCount.add(addressList.length);
  }

  function revokeUsers (address[] addressList) public onlyOwner {
    require (now < crowdsaleStartTime);
    for (uint8 i = 0; i < addressList.length; i++) {
      require (whitelist[i].authorised);
      whitelist[addressList[i]].authorised = false;
    }
    whitelistedAddressCount = whitelistedAddressCount.sub(addressList.length);
  }

  function setMaxGasPrice (uint newMaxInWei) public onlyOwner {
    require(newMaxInWei >= 1000000000);
    maxGasPriceInWei = newMaxInWei;
  }

  function checkWhitelisted (address addr) public view returns (bool) {
    return whitelist[addr].authorised;
  }

  function isOpen () public view returns (bool) {
    return (now >= crowdsaleStartTime && !crowdsaleFinished && now < crowdsaleClosedTime);
  }


  function getRemainingEthAvailable () public view returns (uint) {
    if (crowdsaleFinished || now > crowdsaleClosedTime) return 0;
    return amountToRaiseInUsdCents.sub(amountRaisedInUsdCents).mul(1 ether).div(ethRateInUsdCents);
  }

  function _applyBonus (uint amount) internal view returns (uint) {
    for (uint8 i = 0; i < 3; i++) {
      if (tokenBonusTimes[i] > now) {
        return amount.add(amount.mul(tokenBonusPct[i]).div(100));
      }
    }
    return amount.add(amount.mul(tokenBonusPct[3]).div(100));
  }

  function _allocateTokens(address addr, uint amount) internal {
    require (tokensAllocated.add(amount) <= totalTokenSupply);
    tokensAllocated = tokensAllocated.add(amount);
    teFoodsAddress.transfer(this.balance);
    if (!whitelist[addr].contributed) {
      whitelist[addr].contributed = true;
      contributorCount = contributorCount.add(1);
    }
    require(tokenContract.allocateTokens(addr, amount));
  }

  function () public payable {
    require (tx.gasprice <= maxGasPriceInWei);
    require (msg.value > 0);
    require (now >= crowdsaleStartTime && now <= crowdsaleClosedTime);
    require (whitelist[msg.sender].authorised);
    require (!crowdsaleFinished);
    if (now < crowdsaleUncappedTime) {
      require (!whitelist[msg.sender].contributed);
      require (msg.value <= contributionCapInWei);
    }
    uint usdAmount = msg.value.mul(ethRateInUsdCents).div(1 ether);
    require (usdAmount >= minContributionInUsdCents);
    uint tokenAmount = _applyBonus(msg.value.mul(ethRateInUsdCents).div(tokenRateInUsdCents));
    amountRaisedInUsdCents = amountRaisedInUsdCents.add(usdAmount);
    if (amountRaisedInUsdCents >= amountToRaiseInUsdCents) {
      closeCrowdsale();
    } else {
      _allocateTokens(msg.sender, tokenAmount);
    }
  }

  function closeCrowdsale () public {
    require (!crowdsaleFinished);
    require (now >= crowdsaleStartTime);
    require (msg.sender == owner || amountRaisedInUsdCents >= amountToRaiseInUsdCents);
    crowdsaleFinished = true;

    if (msg.value > 0 && amountRaisedInUsdCents >= amountToRaiseInUsdCents) {

      uint excessEth = amountRaisedInUsdCents.sub(amountToRaiseInUsdCents).mul(1 ether).div(ethRateInUsdCents);
      uint tokenAmount = _applyBonus(msg.value.sub(excessEth).mul(ethRateInUsdCents).div(tokenRateInUsdCents));
      amountRaisedInUsdCents = amountToRaiseInUsdCents;
      msg.sender.transfer(excessEth);
      _allocateTokens(msg.sender, tokenAmount);
    } else if ( amountRaisedInUsdCents < amountToRaiseInUsdCents) {
      tokenAmount = amountToRaiseInUsdCents.sub(amountRaisedInUsdCents).mul(1 ether).div(tokenRateInUsdCents);
      tokensAllocated = tokensAllocated.add(tokenAmount); // burn
    }
    CrowdsaleClosed(amountRaisedInUsdCents);
  }

  function enableTokenTransfers () public onlyOwner {
    require (crowdsaleFinished);
    require (marketingTokensDistributed == marketingTokenAllocation);
    uint remainingTokens = totalTokenSupply.sub(tokensAllocated);
    uint oneYear = remainingTokens.mul(25).div(100);
    uint twoYears = remainingTokens.sub(oneYear);
    tokensAllocated = tokensAllocated.add(remainingTokens);
    require (tokenContract.allocateVestedTokens(teFoodsAddress, oneYear, 31536000));
    require (tokenContract.allocateVestedTokens(teFoodsAddress, twoYears, 63072000));
    require (tokenContract.enableTransfers());
    TokensTransferrable();
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenBonusPct","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributionCapInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTokenTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"checkWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethRateInUsdCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"tokenAmount","type":"uint256"}],"name":"allocateMarketingTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"amountToRaiseInUsdCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokenAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleUncappedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionInUsdCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistedAddressCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addressList","type":"address[]"}],"name":"revokeUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleClosedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountRaisedInUsdCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teFoodsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRateInUsdCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokensDistributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenBonusTimes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxGasPriceInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amountInUsdCents","type":"uint256"},{"name":"bonusPct","type":"uint256"},{"name":"vestingPeriodInSeconds","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMaxInWei","type":"uint256"}],"name":"setMaxGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getRemainingEthAvailable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addressList","type":"address[]"}],"name":"whitelistUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"usdAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"PresaleAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"MarketingAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"usdRaisedInCents","type":"uint256"}],"name":"CrowdsaleClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"TokensTransferrable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052640ba43b740060025560806040519081016040908152635a97cf208252635aa109a06020830152635aaa442090820152635ab37ea060608201526200004e906003906004620000f3565b5060806040519081016040908152600f8252600c6020830152600a9082015260056060820152620000849060079060046200013e565b5034156200009157600080fd5b60008054600160a060020a03191633600160a060020a0316179055620000b662000174565b604051809103906000f0801515620000cd57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055620001a5565b82600481019282156200012c579160200282015b828111156200012c578251829063ffffffff1690559160200191906001019062000107565b506200013a92915062000185565b5090565b82600481019282156200012c579160200282015b828111156200012c578251829060ff1690559160200191906001019062000152565b604051611252806200175a83390190565b620001a291905b808211156200013a57600081556001016200018c565b90565b6115a580620001b56000396000f3006060604052600436106101875763ffffffff60e060020a6000350416630600b81481146102eb57806308998acb146103135780631788de80146103265780631ca8b6cb1461033b57806320d8dad01461034e5780632a04e88a146103815780632e76a6d41461039457806338e95d55146103b65780633a6a43f4146103c957806347535d7b146103dc57806355a373d6146103ef578063582b6fe41461041e578063588ec17f146104315780636bce8a96146104445780636fdb4f4214610457578063755e3e28146104a657806378c5e86f146104b95780637968196c146104cc5780638418dc36146104df57806387136940146104f25780638da5cb5b14610505578063983c0a0114610518578063a17177a11461052b578063adb27ded1461053e578063af7ed9d714610554578063d13c9c1e14610567578063d2fa635e1461058f578063da074874146105a5578063e2fc421d146105b8578063ece84fd5146105cb578063ecfd8928146105de578063edec5f27146105f1578063f2fde38b14610640575b6000806002543a1115151561019b57600080fd5b600034116101a857600080fd5b635a8e94a042101580156101c05750635ab37ea04211155b15156101cb57600080fd5b600160a060020a03331660009081526013602052604090205460ff1615156101f257600080fd5b600d5460ff161561020257600080fd5b635a8f3d6042101561024e5733600160a060020a0316600090815260136020526040902054610100900460ff161561023957600080fd5b670de0b6b3a764000034111561024e57600080fd5b610279670de0b6b3a764000061026d346201695463ffffffff61065f16565b9063ffffffff61069516565b915061271082101561028a57600080fd5b6102aa6102a5600561026d346201695463ffffffff61065f16565b6106ac565b600e549091506102c0908363ffffffff61073816565b600e8190556371d8498090106102dd576102d8610747565b6102e7565b6102e733826108f1565b5050005b34156102f657600080fd5b610301600435610a67565b60405190815260200160405180910390f35b341561031e57600080fd5b610301610a7b565b341561033157600080fd5b610339610a87565b005b341561034657600080fd5b610301610d1f565b341561035957600080fd5b61036d600160a060020a0360043516610d2f565b604051901515815260200160405180910390f35b341561038c57600080fd5b610301610d4d565b341561039f57600080fd5b610339600160a060020a0360043516602435610d54565b34156103c157600080fd5b610301610edf565b34156103d457600080fd5b610301610ee7565b34156103e757600080fd5b61036d610ef6565b34156103fa57600080fd5b610402610f24565b604051600160a060020a03909116815260200160405180910390f35b341561042957600080fd5b610301610f33565b341561043c57600080fd5b610301610f3b565b341561044f57600080fd5b610301610f41565b341561046257600080fd5b6103396004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610f4795505050505050565b34156104b157600080fd5b61030161100d565b34156104c457600080fd5b610301611013565b34156104d757600080fd5b61030161101b565b34156104ea57600080fd5b610402611021565b34156104fd57600080fd5b610301611039565b341561051057600080fd5b61040261103e565b341561052357600080fd5b610339610747565b341561053657600080fd5b61030161104d565b341561054957600080fd5b610301600435611053565b341561055f57600080fd5b610301611060565b341561057257600080fd5b610339600160a060020a0360043516602435604435606435611066565b341561059a57600080fd5b610339600435611376565b34156105b057600080fd5b6103016113a7565b34156105c357600080fd5b6103016113f7565b34156105d657600080fd5b61036d6113ff565b34156105e957600080fd5b610301611408565b34156105fc57600080fd5b610339600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061140e95505050505050565b341561064b57600080fd5b610339600160a060020a03600435166114cc565b600080831515610672576000915061068e565b5082820282848281151561068257fe5b041461068a57fe5b8091505b5092915050565b60008082848115156106a357fe5b04949350505050565b6000805b60038160ff16101561071b5742600360ff8316600481106106cd57fe5b015411156107135761070c6106ff606461026d600760ff8616600481106106f057fe5b0154879063ffffffff61065f16565b849063ffffffff61073816565b9150610732565b6001016106b0565b61072f6106ff606461026d600760036106f0565b91505b50919050565b60008282018381101561068a57fe5b600d54600090819060ff161561075c57600080fd5b635a8e94a042101561076d57600080fd5b60005433600160a060020a039081169116148061079057506371d84980600e5410155b151561079b57600080fd5b600d805460ff191660011790556000341180156107be57506371d84980600e5410155b15610866576107fb6201695461026d670de0b6b3a76400006107ef6371d84980600e5461156790919063ffffffff16565b9063ffffffff61065f16565b915061081c6102a5600561026d620169546107ef348863ffffffff61156716565b6371d84980600e559050600160a060020a03331682156108fc0283604051600060405180830381858888f19350505050151561085757600080fd5b61086133826108f1565b6108b8565b6371d84980600e5410156108b85761089e600561026d670de0b6b3a76400006107ef600e546371d8498061156790919063ffffffff16565b600f549091506108b4908263ffffffff61073816565b600f555b7fb83fc6b65e70d33a47c6cbe391762638027180c963b17704fa33ec100f8830bc600e5460405190815260200160405180910390a15050565b600f546b033b2e3c9fd0803ce800000090610912908363ffffffff61073816565b111561091d57600080fd5b600f54610930908263ffffffff61073816565b600f557327ca683edeab8d03c6b5d7818f78ba27a202515930600160a060020a03163180156108fc0290604051600060405180830381858888f19350505050151561097a57600080fd5b600160a060020a038216600090815260136020526040902054610100900460ff1615156109de57600160a060020a0382166000908152601360205260409020805461ff001916610100179055600c546109da90600163ffffffff61073816565b600c555b600154600160a060020a03166386ce0285838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a3d57600080fd5b6102c65a03f11515610a4e57600080fd5b505050604051805190501515610a6357600080fd5b5050565b60078160048110610a7457fe5b0154905081565b670de0b6b3a764000081565b600080548190819033600160a060020a03908116911614610aa757600080fd5b600d5460ff161515610ab857600080fd5b6010546a31a17e847807b1bc00000014610ad157600080fd5b600f54610af1906b033b2e3c9fd0803ce80000009063ffffffff61156716565b9250610b09606461026d85601963ffffffff61065f16565b9150610b1b838363ffffffff61156716565b600f54909150610b31908463ffffffff61073816565b600f55600154600160a060020a031663a29cc6c87327ca683edeab8d03c6b5d7818f78ba27a2025159846301e1338060006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610bb457600080fd5b6102c65a03f11515610bc557600080fd5b505050604051805190501515610bda57600080fd5b600154600160a060020a031663a29cc6c87327ca683edeab8d03c6b5d7818f78ba27a2025159836303c2670060006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610c5a57600080fd5b6102c65a03f11515610c6b57600080fd5b505050604051805190501515610c8057600080fd5b600154600160a060020a031663af35c6c76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610cc857600080fd5b6102c65a03f11515610cd957600080fd5b505050604051805190501515610cee57600080fd5b7f723c37f7839f53f2add3aa932fc7ba08148847bbf96f0669ce379fa46ded1c5060405160405180910390a1505050565b6b033b2e3c9fd0803ce800000081565b600160a060020a031660009081526013602052604090205460ff1690565b6201695481565b60005433600160a060020a03908116911614610d6f57600080fd5b600160a060020a03821660009081526012602052604090205460ff1615610d9557600080fd5b6010546a31a17e847807b1bc00000090610db5908363ffffffff61073816565b1115610dc057600080fd5b601054610dd3908263ffffffff61073816565b601055600f54610de9908263ffffffff61073816565b600f55600154600160a060020a03166386ce0285838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e4b57600080fd5b6102c65a03f11515610e5c57600080fd5b505050604051805190501515610e7157600080fd5b600160a060020a03821660009081526012602052604090819020805460ff191660011790557f914de6d6f1b6bbd53ded49253e175bd9d6820c692f27ce4fc525d5a20cc47213908390839051600160a060020a03909216825260208201526040908101905180910390a15050565b6371d8498081565b6a31a17e847807b1bc00000081565b6000635a8e94a04210158015610f0f5750600d5460ff16155b8015610f1e5750635ab37ea042105b90505b90565b600154600160a060020a031681565b635a8f3d6081565b61271081565b600b5481565b6000805433600160a060020a03908116911614610f6357600080fd5b635a8e94a04210610f7357600080fd5b5060005b81518160ff161015610ff25760ff808216600090815260136020526040902054161515610fa357600080fd5b600060136000848460ff1681518110610fb857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610f77565b6110068251600b549063ffffffff61156716565b600b555050565b600f5481565b635ab37ea081565b600e5481565b7327ca683edeab8d03c6b5d7818f78ba27a202515981565b600581565b600054600160a060020a031681565b60105481565b60038160048110610a7457fe5b60025481565b60008054819033600160a060020a0390811691161461108457600080fd5b635a8e94a0421061109457600080fd5b600160a060020a03861660009081526011602052604090205460ff16156110ba57600080fd5b6110d7600561026d87670de0b6b3a764000063ffffffff61065f16565b91506110ee606461026d848763ffffffff61065f16565b9050600083111561121157600154600160a060020a03166386ce0285878460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561115857600080fd5b6102c65a03f1151561116957600080fd5b50505060405180519050151561117e57600080fd5b600154600160a060020a031663a29cc6c887838660006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156111e657600080fd5b6102c65a03f115156111f757600080fd5b50505060405180519050151561120c57600080fd5b6112a5565b600154600160a060020a03166386ce028587611233858563ffffffff61073816565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561127f57600080fd5b6102c65a03f1151561129057600080fd5b5050506040518051905015156112a557600080fd5b600e546112b8908663ffffffff61073816565b600e55600f546112e09082906112d4908563ffffffff61073816565b9063ffffffff61073816565b600f55600160a060020a0386166000908152601160205260409020805460ff191660011790557ffe08577515d71da059c4fb03d6a1791d1e1d7950758bd1c8ae0f349d3d6141358686611339858563ffffffff61073816565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1505050505050565b60005433600160a060020a0390811691161461139157600080fd5b633b9aca008110156113a257600080fd5b600255565b600d5460009060ff16806113be5750635ab37ea042115b156113cb57506000610f21565b610f1e6201695461026d670de0b6b3a76400006107ef600e546371d8498061156790919063ffffffff16565b635a8e94a081565b600d5460ff1681565b600c5481565b6000805433600160a060020a0390811691161461142a57600080fd5b635a8e94a0421061143a57600080fd5b5060005b81518160ff1610156114b85760ff808216600090815260136020526040902054161561146957600080fd5b600160136000848460ff168151811061147e57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010161143e565b6110068251600b549063ffffffff61073816565b60005433600160a060020a039081169116146114e757600080fd5b600160a060020a03811615156114fc57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561157357fe5b509003905600a165627a7a723058200a42cb5d0b5101e2c3bd9ed76ca4f3f347fa7c756aa5aeb0e1c54637da953e0200296060604052635ab37ea060015560008054600160a060020a033316600160a060020a03199182168117909116178155805260046020526b033b2e3c9fd0803ce80000007f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec556111df806100736000396000f3006060604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610116578063084bdabe146101a0578063095ea7b3146101d457806318160ddd1461020a57806323b872dd1461021d578063313ce567146102455780635c17f9f41461026e57806370a08231146102d35780637d2aeb8a146102f257806386ce02851461030a5780638da5cb5b1461032c57806395d89b411461035b578063a29cc6c81461036e578063a9059cbb14610393578063ab67aa58146103b5578063af35c6c714610421578063be45fd6214610434578063bf15ea7614610499578063dd62ed3e146104ac578063f2fde38b146104d1575b600080fd5b341561012157600080fd5b6101296104f0565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016557808201518382015260200161014d565b50505050905090810190601f1680156101925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101ab57600080fd5b6101c2600160a060020a0360043516602435610550565b60405190815260200160405180910390f35b34156101df57600080fd5b6101f6600160a060020a03600435166024356105e6565b604051901515815260200160405180910390f35b341561021557600080fd5b6101c2610672565b341561022857600080fd5b6101f6600160a060020a0360043581169060243516604435610679565b341561025057600080fd5b6102586107f3565b60405160ff909116815260200160405180910390f35b341561027957600080fd5b6101f660048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506107f895505050505050565b34156102de57600080fd5b6101c2600160a060020a0360043516610895565b34156102fd57600080fd5b6103086004356108b0565b005b341561031557600080fd5b6101f6600160a060020a0360043516602435610b32565b341561033757600080fd5b61033f610c5d565b604051600160a060020a03909116815260200160405180910390f35b341561036657600080fd5b610129610c6c565b341561037957600080fd5b6101f6600160a060020a0360043516602435604435610ca3565b341561039e57600080fd5b6101f6600160a060020a0360043516602435610e0a565b34156103c057600080fd5b6101f6600160a060020a036004803582169160248035909116916044359160849060643590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610f2295505050505050565b341561042c57600080fd5b6101f6610fc1565b341561043f57600080fd5b6101f660048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061103395505050505050565b34156104a457600080fd5b6101c261103f565b34156104b757600080fd5b6101c2600160a060020a0360043581169060243516611045565b34156104dc57600080fd5b610308600160a060020a0360043516611070565b606060405190810160405280603a81526020017f5445464f4f44204641524d20544f20464f524b20464f4f44205452414345414281526020017f494c4954592053595354454d204c4943454e534520544f4b454e00000000000081525081565b6000818152600660205260408120815b815460ff821610156105d95784600160a060020a0316828260ff1681548110151561058757fe5b6000918252602090912060029091020154600160a060020a031614156105d157818160ff168154811015156105b857fe5b90600052602060002090600202016001015492506105de565b600101610560565b600092505b505092915050565b600030600160a060020a031683600160a060020a03161415151561060957600080fd5b600160a060020a03338116600081815260056020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6003545b90565b60015460009042101561068b57600080fd5b30600160a060020a031683600160a060020a0316141515156106ac57600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054829010156106e057600080fd5b600160a060020a038416600090815260046020526040902054610709908363ffffffff61110b16565b600160a060020a038086166000908152600460209081526040808320949094556005815283822033909316825291909152205461074c908363ffffffff61110b16565b600160a060020a0380861660009081526005602090815260408083203385168452825280832094909455918616815260049091522054610792908363ffffffff61111d16565b600160a060020a03808516600081815260046020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b601281565b600061080484846105e6565b5083600160a060020a03168260405180828051906020019080838360005b8381101561083a578082015183820152602001610822565b50505050905090810190601f1680156108675780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f1915050151561088b57600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b6000806108c88360015461111d90919063ffffffff16565b4210156108d457600080fd5b600083815260066020526040812054116108ed57600080fd5b600083815260066020526040812080548290811061090757fe5b90600052602060002090600202016001015411151561092557600080fd5b50506000818152600660205260408120905b815460ff82161015610b2d576109b4828260ff1681548110151561095757fe5b90600052602060002090600202016001015460046000858560ff1681548110151561097e57fe5b60009182526020808320600290920290910154600160a060020a031683528201929092526040019020549063ffffffff61111d16565b60046000848460ff168154811015156109c957fe5b60009182526020808320600290920290910154600160a060020a031683528201929092526040019020558154610a2b90839060ff8416908110610a0857fe5b90600052602060002090600202016001015460035461111d90919063ffffffff16565b6003558154610a6690839060ff8416908110610a4357fe5b90600052602060002090600202016001015460025461110b90919063ffffffff16565b6002558154600090839060ff8416908110610a7d57fe5b9060005260206000209060020201600101819055507f6bc5063c7239b75c8bf325a2a2238f726fada322163996bb6c93d5594fb119f0828260ff16815481101515610ac457fe5b60009182526020909120600290910201548354600160a060020a0390911690849060ff8516908110610af257fe5b906000526020600020906002020160010154604051600160a060020a03909216825260208201526040908101905180910390a1600101610937565b505050565b6000805433600160a060020a03908116911614610b4e57600080fd5b600160a060020a0383161515610b6357600080fd5b60008211610b7057600080fd5b60008052600460205260008051602061119483398151915254610b99908363ffffffff61110b16565b600460205260008051602061119483398151915255600160a060020a03831660009081526040902054610bd2908363ffffffff61111d16565b600160a060020a038416600090815260046020526040902055600354610bfe908363ffffffff61111d16565b6003819055600080526004602052600080516020611194833981519152546002546b033b2e3c9fd0803ce800000092610c4d9291610c419163ffffffff61111d16565b9063ffffffff61111d16565b14610c5457fe5b50600192915050565b600054600160a060020a031681565b60408051908101604052600581527f54464f4f44000000000000000000000000000000000000000000000000000000602082015281565b6000805433600160a060020a03908116911614610cbf57600080fd5b600160a060020a0384161515610cd457600080fd5b60008311610ce157600080fd5b60008211610cee57600080fd5b60008052600460205260008051602061119483398151915254610d17908463ffffffff61110b16565b600080516020611194833981519152556000828152600660205260409020805460018101610d458382611133565b9160005260206000209060020201600060408051908101604052600160a060020a0388168152602081018790529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001909101555050600254610dbf908463ffffffff61111d16565b6002819055600080526004602052600080516020611194833981519152546003546b033b2e3c9fd0803ce800000092610e039291610c41919063ffffffff61111d16565b1461088b57fe5b600154600090421015610e1c57600080fd5b30600160a060020a031683600160a060020a031614151515610e3d57600080fd5b600160a060020a03331660009081526004602052604090205482901015610e6357600080fd5b600160a060020a033316600090815260046020526040902054610e8c908363ffffffff61110b16565b600160a060020a033381166000908152600460205260408082209390935590851681522054610ec1908363ffffffff61111d16565b600160a060020a0380851660008181526004602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b6000610f2f858585610679565b5083600160a060020a03168260405180828051906020019080838360005b83811015610f65578082015183820152602001610f4d565b50505050905090810190601f168015610f925780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f19150501515610fb657600080fd5b506001949350505050565b6000805433600160a060020a03908116911614610fdd57600080fd5b600154610ff3426201518063ffffffff61111d16565b10156110105761100c426201518063ffffffff61111d16565b6001555b506000805473ffffffffffffffffffffffffffffffffffffffff19169055600190565b60006108048484610e0a565b60015481565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461108b57600080fd5b600160a060020a03811615156110a057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561111757fe5b50900390565b60008282018381101561112c57fe5b9392505050565b815481835581811511610b2d57600083815260209020610b2d916106769160029182028101918502015b8082111561118f57805473ffffffffffffffffffffffffffffffffffffffff191681556000600182015560020161115d565b5090560017ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3eca165627a7a72305820d5379aecd22d460c38a7096d55fe00093b947671deab5e8f6d575cd6d672266c0029

Deployed Bytecode

0x6060604052600436106101875763ffffffff60e060020a6000350416630600b81481146102eb57806308998acb146103135780631788de80146103265780631ca8b6cb1461033b57806320d8dad01461034e5780632a04e88a146103815780632e76a6d41461039457806338e95d55146103b65780633a6a43f4146103c957806347535d7b146103dc57806355a373d6146103ef578063582b6fe41461041e578063588ec17f146104315780636bce8a96146104445780636fdb4f4214610457578063755e3e28146104a657806378c5e86f146104b95780637968196c146104cc5780638418dc36146104df57806387136940146104f25780638da5cb5b14610505578063983c0a0114610518578063a17177a11461052b578063adb27ded1461053e578063af7ed9d714610554578063d13c9c1e14610567578063d2fa635e1461058f578063da074874146105a5578063e2fc421d146105b8578063ece84fd5146105cb578063ecfd8928146105de578063edec5f27146105f1578063f2fde38b14610640575b6000806002543a1115151561019b57600080fd5b600034116101a857600080fd5b635a8e94a042101580156101c05750635ab37ea04211155b15156101cb57600080fd5b600160a060020a03331660009081526013602052604090205460ff1615156101f257600080fd5b600d5460ff161561020257600080fd5b635a8f3d6042101561024e5733600160a060020a0316600090815260136020526040902054610100900460ff161561023957600080fd5b670de0b6b3a764000034111561024e57600080fd5b610279670de0b6b3a764000061026d346201695463ffffffff61065f16565b9063ffffffff61069516565b915061271082101561028a57600080fd5b6102aa6102a5600561026d346201695463ffffffff61065f16565b6106ac565b600e549091506102c0908363ffffffff61073816565b600e8190556371d8498090106102dd576102d8610747565b6102e7565b6102e733826108f1565b5050005b34156102f657600080fd5b610301600435610a67565b60405190815260200160405180910390f35b341561031e57600080fd5b610301610a7b565b341561033157600080fd5b610339610a87565b005b341561034657600080fd5b610301610d1f565b341561035957600080fd5b61036d600160a060020a0360043516610d2f565b604051901515815260200160405180910390f35b341561038c57600080fd5b610301610d4d565b341561039f57600080fd5b610339600160a060020a0360043516602435610d54565b34156103c157600080fd5b610301610edf565b34156103d457600080fd5b610301610ee7565b34156103e757600080fd5b61036d610ef6565b34156103fa57600080fd5b610402610f24565b604051600160a060020a03909116815260200160405180910390f35b341561042957600080fd5b610301610f33565b341561043c57600080fd5b610301610f3b565b341561044f57600080fd5b610301610f41565b341561046257600080fd5b6103396004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610f4795505050505050565b34156104b157600080fd5b61030161100d565b34156104c457600080fd5b610301611013565b34156104d757600080fd5b61030161101b565b34156104ea57600080fd5b610402611021565b34156104fd57600080fd5b610301611039565b341561051057600080fd5b61040261103e565b341561052357600080fd5b610339610747565b341561053657600080fd5b61030161104d565b341561054957600080fd5b610301600435611053565b341561055f57600080fd5b610301611060565b341561057257600080fd5b610339600160a060020a0360043516602435604435606435611066565b341561059a57600080fd5b610339600435611376565b34156105b057600080fd5b6103016113a7565b34156105c357600080fd5b6103016113f7565b34156105d657600080fd5b61036d6113ff565b34156105e957600080fd5b610301611408565b34156105fc57600080fd5b610339600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061140e95505050505050565b341561064b57600080fd5b610339600160a060020a03600435166114cc565b600080831515610672576000915061068e565b5082820282848281151561068257fe5b041461068a57fe5b8091505b5092915050565b60008082848115156106a357fe5b04949350505050565b6000805b60038160ff16101561071b5742600360ff8316600481106106cd57fe5b015411156107135761070c6106ff606461026d600760ff8616600481106106f057fe5b0154879063ffffffff61065f16565b849063ffffffff61073816565b9150610732565b6001016106b0565b61072f6106ff606461026d600760036106f0565b91505b50919050565b60008282018381101561068a57fe5b600d54600090819060ff161561075c57600080fd5b635a8e94a042101561076d57600080fd5b60005433600160a060020a039081169116148061079057506371d84980600e5410155b151561079b57600080fd5b600d805460ff191660011790556000341180156107be57506371d84980600e5410155b15610866576107fb6201695461026d670de0b6b3a76400006107ef6371d84980600e5461156790919063ffffffff16565b9063ffffffff61065f16565b915061081c6102a5600561026d620169546107ef348863ffffffff61156716565b6371d84980600e559050600160a060020a03331682156108fc0283604051600060405180830381858888f19350505050151561085757600080fd5b61086133826108f1565b6108b8565b6371d84980600e5410156108b85761089e600561026d670de0b6b3a76400006107ef600e546371d8498061156790919063ffffffff16565b600f549091506108b4908263ffffffff61073816565b600f555b7fb83fc6b65e70d33a47c6cbe391762638027180c963b17704fa33ec100f8830bc600e5460405190815260200160405180910390a15050565b600f546b033b2e3c9fd0803ce800000090610912908363ffffffff61073816565b111561091d57600080fd5b600f54610930908263ffffffff61073816565b600f557327ca683edeab8d03c6b5d7818f78ba27a202515930600160a060020a03163180156108fc0290604051600060405180830381858888f19350505050151561097a57600080fd5b600160a060020a038216600090815260136020526040902054610100900460ff1615156109de57600160a060020a0382166000908152601360205260409020805461ff001916610100179055600c546109da90600163ffffffff61073816565b600c555b600154600160a060020a03166386ce0285838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a3d57600080fd5b6102c65a03f11515610a4e57600080fd5b505050604051805190501515610a6357600080fd5b5050565b60078160048110610a7457fe5b0154905081565b670de0b6b3a764000081565b600080548190819033600160a060020a03908116911614610aa757600080fd5b600d5460ff161515610ab857600080fd5b6010546a31a17e847807b1bc00000014610ad157600080fd5b600f54610af1906b033b2e3c9fd0803ce80000009063ffffffff61156716565b9250610b09606461026d85601963ffffffff61065f16565b9150610b1b838363ffffffff61156716565b600f54909150610b31908463ffffffff61073816565b600f55600154600160a060020a031663a29cc6c87327ca683edeab8d03c6b5d7818f78ba27a2025159846301e1338060006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610bb457600080fd5b6102c65a03f11515610bc557600080fd5b505050604051805190501515610bda57600080fd5b600154600160a060020a031663a29cc6c87327ca683edeab8d03c6b5d7818f78ba27a2025159836303c2670060006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610c5a57600080fd5b6102c65a03f11515610c6b57600080fd5b505050604051805190501515610c8057600080fd5b600154600160a060020a031663af35c6c76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610cc857600080fd5b6102c65a03f11515610cd957600080fd5b505050604051805190501515610cee57600080fd5b7f723c37f7839f53f2add3aa932fc7ba08148847bbf96f0669ce379fa46ded1c5060405160405180910390a1505050565b6b033b2e3c9fd0803ce800000081565b600160a060020a031660009081526013602052604090205460ff1690565b6201695481565b60005433600160a060020a03908116911614610d6f57600080fd5b600160a060020a03821660009081526012602052604090205460ff1615610d9557600080fd5b6010546a31a17e847807b1bc00000090610db5908363ffffffff61073816565b1115610dc057600080fd5b601054610dd3908263ffffffff61073816565b601055600f54610de9908263ffffffff61073816565b600f55600154600160a060020a03166386ce0285838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e4b57600080fd5b6102c65a03f11515610e5c57600080fd5b505050604051805190501515610e7157600080fd5b600160a060020a03821660009081526012602052604090819020805460ff191660011790557f914de6d6f1b6bbd53ded49253e175bd9d6820c692f27ce4fc525d5a20cc47213908390839051600160a060020a03909216825260208201526040908101905180910390a15050565b6371d8498081565b6a31a17e847807b1bc00000081565b6000635a8e94a04210158015610f0f5750600d5460ff16155b8015610f1e5750635ab37ea042105b90505b90565b600154600160a060020a031681565b635a8f3d6081565b61271081565b600b5481565b6000805433600160a060020a03908116911614610f6357600080fd5b635a8e94a04210610f7357600080fd5b5060005b81518160ff161015610ff25760ff808216600090815260136020526040902054161515610fa357600080fd5b600060136000848460ff1681518110610fb857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610f77565b6110068251600b549063ffffffff61156716565b600b555050565b600f5481565b635ab37ea081565b600e5481565b7327ca683edeab8d03c6b5d7818f78ba27a202515981565b600581565b600054600160a060020a031681565b60105481565b60038160048110610a7457fe5b60025481565b60008054819033600160a060020a0390811691161461108457600080fd5b635a8e94a0421061109457600080fd5b600160a060020a03861660009081526011602052604090205460ff16156110ba57600080fd5b6110d7600561026d87670de0b6b3a764000063ffffffff61065f16565b91506110ee606461026d848763ffffffff61065f16565b9050600083111561121157600154600160a060020a03166386ce0285878460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561115857600080fd5b6102c65a03f1151561116957600080fd5b50505060405180519050151561117e57600080fd5b600154600160a060020a031663a29cc6c887838660006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156111e657600080fd5b6102c65a03f115156111f757600080fd5b50505060405180519050151561120c57600080fd5b6112a5565b600154600160a060020a03166386ce028587611233858563ffffffff61073816565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561127f57600080fd5b6102c65a03f1151561129057600080fd5b5050506040518051905015156112a557600080fd5b600e546112b8908663ffffffff61073816565b600e55600f546112e09082906112d4908563ffffffff61073816565b9063ffffffff61073816565b600f55600160a060020a0386166000908152601160205260409020805460ff191660011790557ffe08577515d71da059c4fb03d6a1791d1e1d7950758bd1c8ae0f349d3d6141358686611339858563ffffffff61073816565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1505050505050565b60005433600160a060020a0390811691161461139157600080fd5b633b9aca008110156113a257600080fd5b600255565b600d5460009060ff16806113be5750635ab37ea042115b156113cb57506000610f21565b610f1e6201695461026d670de0b6b3a76400006107ef600e546371d8498061156790919063ffffffff16565b635a8e94a081565b600d5460ff1681565b600c5481565b6000805433600160a060020a0390811691161461142a57600080fd5b635a8e94a0421061143a57600080fd5b5060005b81518160ff1610156114b85760ff808216600090815260136020526040902054161561146957600080fd5b600160136000848460ff168151811061147e57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010161143e565b6110068251600b549063ffffffff61073816565b60005433600160a060020a039081169116146114e757600080fd5b600160a060020a03811615156114fc57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561157357fe5b509003905600a165627a7a723058200a42cb5d0b5101e2c3bd9ed76ca4f3f347fa7c756aa5aeb0e1c54637da953e020029

Swarm Source

bzzr://d5379aecd22d460c38a7096d55fe00093b947671deab5e8f6d575cd6d672266c

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.