ETH Price: $1,937.79 (-3.47%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint Tokens220660332025-03-17 10:31:47349 days ago1742207507IN
Viberate: Token Sale
0 ETH0.000025440.92343908
Transfer44686062017-11-01 6:12:263043 days ago1509516746IN
Viberate: Token Sale
0.07 ETH0.00044121
Salvage Tokens F...43186072017-09-28 8:56:563076 days ago1506589016IN
Viberate: Token Sale
0 ETH0.000538521
Transfer42979462017-09-21 10:03:453083 days ago1505988225IN
Viberate: Token Sale
0.06332 ETH0.1343786420
Transfer42621082017-09-11 11:18:293093 days ago1505128709IN
Viberate: Token Sale
2.5 ETH0.12625505
Transfer42609052017-09-11 2:46:013094 days ago1505097961IN
Viberate: Token Sale
18 ETH0.01560
Transfer42603382017-09-10 22:51:263094 days ago1505083886IN
Viberate: Token Sale
13 ETH0.1342478420
Transfer42596062017-09-10 18:18:193094 days ago1505067499IN
Viberate: Token Sale
0.558076 ETH0.00056727
Transfer42596052017-09-10 18:17:483094 days ago1505067468IN
Viberate: Token Sale
0.558076 ETH0.16227
Transfer42564482017-09-09 20:50:313095 days ago1504990231IN
Viberate: Token Sale
9 ETH0.13420
Transfer42560492017-09-09 18:05:443095 days ago1504980344IN
Viberate: Token Sale
3 ETH0.13420
Transfer42452492017-09-06 17:31:203098 days ago1504719080IN
Viberate: Token Sale
0.08 ETH0.0052521
Transfer42440132017-09-06 9:02:233098 days ago1504688543IN
Viberate: Token Sale
20 ETH0.0250001100
Transfer42435592017-09-06 5:50:313099 days ago1504677031IN
Viberate: Token Sale
0.8 ETH0.031850435
Transfer42434552017-09-06 5:10:133099 days ago1504674613IN
Viberate: Token Sale
1.9 ETH0.0088221
Transfer42433362017-09-06 4:16:553099 days ago1504671415IN
Viberate: Token Sale
0.5 ETH0.0062525
Transfer42429902017-09-06 1:45:353099 days ago1504662335IN
Viberate: Token Sale
1.2 ETH0.0052521
Transfer42429662017-09-06 1:32:393099 days ago1504661559IN
Viberate: Token Sale
0.0387785 ETH0.00251
Transfer42428942017-09-06 1:07:383099 days ago1504660058IN
Viberate: Token Sale
3.1 ETH0.00041
Transfer42428862017-09-06 1:05:083099 days ago1504659908IN
Viberate: Token Sale
2 ETH0.000312511.25
Transfer42428862017-09-06 1:05:083099 days ago1504659908IN
Viberate: Token Sale
0.1 ETH0.000251
Transfer42428862017-09-06 1:05:083099 days ago1504659908IN
Viberate: Token Sale
1 ETH0.000251
Transfer42428852017-09-06 1:04:403099 days ago1504659880IN
Viberate: Token Sale
0.1 ETH0.000251
Transfer42428852017-09-06 1:04:403099 days ago1504659880IN
Viberate: Token Sale
0.05 ETH0.000251
Transfer42428852017-09-06 1:04:403099 days ago1504659880IN
Viberate: Token Sale
3 ETH0.000251
View all transactions

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer42410032017-09-05 12:28:033099 days ago1504614483
Viberate: Token Sale
4.7 ETH
Transfer42410032017-09-05 12:28:033099 days ago1504614483
Viberate: Token Sale
0.0598407 ETH
Transfer42409952017-09-05 12:23:043099 days ago1504614184
Viberate: Token Sale
10,663.55353898 ETH
Transfer42409952017-09-05 12:23:043099 days ago1504614184
Viberate: Token Sale
1 ETH
Transfer42409502017-09-05 12:02:343099 days ago1504612954
Viberate: Token Sale
4.2356709 ETH
Transfer42409502017-09-05 12:02:343099 days ago1504612954
Viberate: Token Sale
71.10092258 ETH
Transfer42409402017-09-05 12:00:003099 days ago1504612800
Viberate: Token Sale
67.11160917 ETH
Transfer42409362017-09-05 11:57:573099 days ago1504612677
Viberate: Token Sale
1 ETH
Transfer42409362017-09-05 11:57:573099 days ago1504612677
Viberate: Token Sale
1 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ViberateCrowdsale

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-09-05
*/

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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;
  }

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

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

contract Owned {
    address public owner;
    address public newOwner;

    function Owned() {
        owner = msg.sender;
    }

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

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != owner);
        newOwner = _newOwner;
    }

    function acceptOwnership() public {
        require(msg.sender == newOwner);
        OwnerUpdate(owner, newOwner);
        owner = newOwner;
        newOwner = 0x0;
    }

    event OwnerUpdate(address _prevOwner, address _newOwner);
}

contract Lockable is Owned{

  uint256 public lockedUntilBlock;

  event ContractLocked(uint256 _untilBlock, string _reason);

  modifier lockAffected {
      require(block.number > lockedUntilBlock);
      _;
  }

  function lockFromSelf(uint256 _untilBlock, string _reason) internal {
    lockedUntilBlock = _untilBlock;
    ContractLocked(_untilBlock, _reason);
  }


  function lockUntil(uint256 _untilBlock, string _reason) onlyOwner {
    lockedUntilBlock = _untilBlock;
    ContractLocked(_untilBlock, _reason);
  }
}

contract ReentrancyHandlingContract{

    bool locked;

    modifier noReentrancy() {
        require(!locked);
        locked = true;
        _;
        locked = false;
    }
}
contract IMintableToken {
  function mintTokens(address _to, uint256 _amount){}
}
contract IERC20Token {
  function totalSupply() constant returns (uint256 totalSupply);
  function balanceOf(address _owner) constant returns (uint256 balance) {}
  function transfer(address _to, uint256 _value) returns (bool success) {}
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
  function approve(address _spender, uint256 _value) returns (bool success) {}
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contract ItokenRecipient {
  function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}
contract IToken {
  function totalSupply() constant returns (uint256 totalSupply);
  function mintTokens(address _to, uint256 _amount) {}
}






contract Crowdsale is ReentrancyHandlingContract, Owned{

  struct ContributorData{
    uint contributionAmount;
    uint tokensIssued;
  }

  mapping(address => ContributorData) public contributorList;
  uint nextContributorIndex;
  mapping(uint => address) contributorIndexes;

  state public crowdsaleState = state.pendingStart;
  enum state { pendingStart, crowdsale, crowdsaleEnded }

  uint public crowdsaleStartBlock;
  uint public crowdsaleEndedBlock;

  event CrowdsaleStarted(uint blockNumber);
  event CrowdsaleEnded(uint blockNumber);
  event ErrorSendingETH(address to, uint amount);
  event MinCapReached(uint blockNumber);
  event MaxCapReached(uint blockNumber);

  address tokenAddress = 0x0;
  uint decimals = 18;

  uint ethToTokenConversion;

  uint public minCap;
  uint public maxCap;
  uint public ethRaised;
  uint public tokenTotalSupply = 200000000 * 10**decimals;

  address public multisigAddress;
  uint blocksInADay;

  uint nextContributorToClaim;
  mapping(address => bool) hasClaimedEthWhenFail;

  uint crowdsaleTokenCap =          120000000 * 10**decimals;
  uint foundersAndTeamTokens =       32000000 * 10**decimals;
  uint advisorAndAmbassadorTokens =  16000000 * 10**decimals;
  uint investorTokens =               8000000 * 10**decimals;
  uint viberateContributorTokens =   10000000 * 10**decimals;
  uint futurePartnerTokens =         14000000 * 10**decimals;
  bool foundersAndTeamTokensClaimed = false;
  bool advisorAndAmbassadorTokensClaimed = false;
  bool investorTokensClaimed = false;
  bool viberateContributorTokensClaimed = false;
  bool futurePartnerTokensClaimed = false;

  //
  // Unnamed function that runs when eth is sent to the contract
  //
  function() noReentrancy payable{
    require(msg.value != 0);                        // Throw if value is 0
    require(crowdsaleState != state.crowdsaleEnded);// Check if crowdsale has ended

    bool stateChanged = checkCrowdsaleState();      // Check blocks and calibrate crowdsale state

    if(crowdsaleState == state.crowdsale){
      processTransaction(msg.sender, msg.value);    // Process transaction and issue tokens
    }
    else{
      refundTransaction(stateChanged);              // Set state and return funds or throw
    }
  }

  //
  // Check crowdsale state and calibrate it
  //
  function checkCrowdsaleState() internal returns (bool){
    if (ethRaised == maxCap && crowdsaleState != state.crowdsaleEnded){                         // Check if max cap is reached
      crowdsaleState = state.crowdsaleEnded;
      CrowdsaleEnded(block.number);                                                             // Raise event
      return true;
    }

    if(block.number > crowdsaleStartBlock && block.number <= crowdsaleEndedBlock){        // Check if we are in crowdsale state
      if (crowdsaleState != state.crowdsale){                                                   // Check if state needs to be changed
        crowdsaleState = state.crowdsale;                                                       // Set new state
        CrowdsaleStarted(block.number);                                                         // Raise event
        return true;
      }
    }else{
      if (crowdsaleState != state.crowdsaleEnded && block.number > crowdsaleEndedBlock){        // Check if crowdsale is over
        crowdsaleState = state.crowdsaleEnded;                                                  // Set new state
        CrowdsaleEnded(block.number);                                                           // Raise event
        return true;
      }
    }
    return false;
  }

  //
  // Decide if throw or only return ether
  //
  function refundTransaction(bool _stateChanged) internal{
    if (_stateChanged){
      msg.sender.transfer(msg.value);
    }else{
      revert();
    }
  }

  //
  //
  //
  function calculateEthToVibe(uint _eth, uint _blockNumber) constant returns(uint) {
    if (_blockNumber < crowdsaleStartBlock) return _eth * 3158;
    if (_blockNumber >= crowdsaleStartBlock && _blockNumber < crowdsaleStartBlock + blocksInADay * 2) return _eth * 3158;
    if (_blockNumber >= crowdsaleStartBlock + blocksInADay * 2 && _blockNumber < crowdsaleStartBlock + blocksInADay * 7) return _eth * 3074;
    if (_blockNumber >= crowdsaleStartBlock + blocksInADay * 7 && _blockNumber < crowdsaleStartBlock + blocksInADay * 14) return _eth * 2989;
    if (_blockNumber >= crowdsaleStartBlock + blocksInADay * 14 && _blockNumber < crowdsaleStartBlock + blocksInADay * 21) return _eth * 2905;
    if (_blockNumber >= crowdsaleStartBlock + blocksInADay * 21 ) return _eth * 2820;
  }

  //
  // Issue tokens and return if there is overflow
  //
  function processTransaction(address _contributor, uint _amount) internal{
    uint contributionAmount = _amount;
    uint returnAmount = 0;

    if (_amount > (maxCap - ethRaised)){                                           // Check if max contribution is lower than _amount sent
      contributionAmount = maxCap - ethRaised;                                     // Set that user contibutes his maximum alowed contribution
      returnAmount = _amount - contributionAmount;                                 // Calculate howmuch he must get back
    }

    if (ethRaised + contributionAmount > minCap && minCap > ethRaised){
      MinCapReached(block.number);
    }

    if (ethRaised + contributionAmount == maxCap && ethRaised < maxCap){
      MaxCapReached(block.number);
    }

    if (contributorList[_contributor].contributionAmount == 0){
        contributorIndexes[nextContributorIndex] = _contributor;
        nextContributorIndex += 1;
    }

    contributorList[_contributor].contributionAmount += contributionAmount;
    contributorList[_contributor].tokensIssued += contributionAmount;
    ethRaised += contributionAmount;                                              // Add to eth raised

    uint tokenAmount = calculateEthToVibe(contributionAmount, block.number);      // Calculate how much tokens must contributor get
    if (tokenAmount > 0){
      IToken(tokenAddress).mintTokens(_contributor, tokenAmount);                 // Issue new tokens
      contributorList[_contributor].tokensIssued += tokenAmount;                  // log token issuance
    }
    if (returnAmount != 0) _contributor.transfer(returnAmount);
  }

  function pushAngelInvestmentData(address _address, uint _ethContributed) onlyOwner{
      assert(ethRaised + _ethContributed <= maxCap);
      processTransaction(_address, _ethContributed);
  }
  function depositAngelInvestmentEth() payable onlyOwner {}
  

  //
  // Method is needed for recovering tokens accedentaly sent to token address
  //
  function salvageTokensFromContract(address _tokenAddress, address _to, uint _amount) onlyOwner{
    IERC20Token(_tokenAddress).transfer(_to, _amount);
  }

  //
  // withdrawEth when minimum cap is reached
  //
  function withdrawEth() onlyOwner{
    require(this.balance != 0);
    require(ethRaised >= minCap);

    multisigAddress.transfer(this.balance);
  }

  //
  // Users can claim their contribution if min cap is not raised
  //
  function claimEthIfFailed(){
    require(block.number > crowdsaleEndedBlock && ethRaised < minCap);    // Check if crowdsale has failed
    require(contributorList[msg.sender].contributionAmount > 0);          // Check if contributor has contributed to crowdsaleEndedBlock
    require(!hasClaimedEthWhenFail[msg.sender]);                          // Check if contributor has already claimed his eth

    uint ethContributed = contributorList[msg.sender].contributionAmount; // Get contributors contribution
    hasClaimedEthWhenFail[msg.sender] = true;                             // Set that he has claimed
    if (!msg.sender.send(ethContributed)){                                // Refund eth
      ErrorSendingETH(msg.sender, ethContributed);                        // If there is an issue raise event for manual recovery
    }
  }

  //
  // Owner can batch return contributors contributions(eth)
  //
  function batchReturnEthIfFailed(uint _numberOfReturns) onlyOwner{
    require(block.number > crowdsaleEndedBlock && ethRaised < minCap);                // Check if crowdsale has failed
    address currentParticipantAddress;
    uint contribution;
    for (uint cnt = 0; cnt < _numberOfReturns; cnt++){
      currentParticipantAddress = contributorIndexes[nextContributorToClaim];         // Get next unclaimed participant
      if (currentParticipantAddress == 0x0) return;                                   // Check if all the participants were compensated
      if (!hasClaimedEthWhenFail[currentParticipantAddress]) {                        // Check if participant has already claimed
        contribution = contributorList[currentParticipantAddress].contributionAmount; // Get contribution of participant
        hasClaimedEthWhenFail[currentParticipantAddress] = true;                      // Set that he has claimed
        if (!currentParticipantAddress.send(contribution)){                           // Refund eth
          ErrorSendingETH(currentParticipantAddress, contribution);                   // If there is an issue raise event for manual recovery
        }
      }
      nextContributorToClaim += 1;                                                    // Repeat
    }
  }

  //
  // If there were any issue/attach with refund owner can withraw eth at the end for manual recovery
  //
  function withdrawRemainingBalanceForManualRecovery() onlyOwner{
    require(this.balance != 0);                                  // Check if there are any eth to claim
    require(block.number > crowdsaleEndedBlock);                 // Check if crowdsale is over
    require(contributorIndexes[nextContributorToClaim] == 0x0);  // Check if all the users were refunded
    multisigAddress.transfer(this.balance);                      // Withdraw to multisig
  }

  function claimTeamTokens(address _to, uint _choice) onlyOwner{
    require(crowdsaleState == state.crowdsaleEnded);
    require(ethRaised >= minCap);

    uint mintAmount;
    if(_choice == 1){
      assert(!advisorAndAmbassadorTokensClaimed);
      mintAmount = advisorAndAmbassadorTokens;
      advisorAndAmbassadorTokensClaimed = true;
    }else if(_choice == 2){
      assert(!investorTokensClaimed);
      mintAmount = investorTokens;
      investorTokensClaimed = true;
    }else if(_choice == 3){
      assert(!viberateContributorTokensClaimed);
      mintAmount = viberateContributorTokens;
      viberateContributorTokensClaimed = true;
    }else if(_choice == 4){
      assert(!futurePartnerTokensClaimed);
      mintAmount = futurePartnerTokens;
      futurePartnerTokensClaimed = true;
    }else if(_choice == 5){
      assert(!foundersAndTeamTokensClaimed);
      assert(advisorAndAmbassadorTokensClaimed);
      assert(investorTokensClaimed);
      assert(viberateContributorTokensClaimed);
      assert(futurePartnerTokensClaimed);
      assert(tokenTotalSupply > IERC20Token(tokenAddress).totalSupply());
      mintAmount = tokenTotalSupply - IERC20Token(tokenAddress).totalSupply();
      foundersAndTeamTokensClaimed = true;
    }
    else{
      revert();
    }
    IToken(tokenAddress).mintTokens(_to, mintAmount);
  }


  //
  // Owner can set multisig address for crowdsale
  //
  function setMultisigAddress(address _newAddress) onlyOwner{
    multisigAddress = _newAddress;
  }

  //
  // Owner can set token address where mints will happen
  //
  function setToken(address _newAddress) onlyOwner{
    tokenAddress = _newAddress;
  }

  function getTokenAddress() constant returns(address){
    return tokenAddress;
  }

  function investorCount() constant returns(uint){
    return nextContributorIndex;
  }
}









contract ViberateCrowdsale is Crowdsale {
  function ViberateCrowdsale(){

    crowdsaleStartBlock = 4240935;
    crowdsaleEndedBlock = 4348935;

    minCap = 3546099290780000000000;
    maxCap = 37993920972640000000000;

    blocksInADay = 3600;

  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setMultisigAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndedBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawRemainingBalanceForManualRecovery","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multisigAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_eth","type":"uint256"},{"name":"_blockNumber","type":"uint256"}],"name":"calculateEthToVibe","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimEthIfFailed","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_numberOfReturns","type":"uint256"}],"name":"batchReturnEthIfFailed","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_choice","type":"uint256"}],"name":"claimTeamTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributorList","outputs":[{"name":"contributionAmount","type":"uint256"},{"name":"tokensIssued","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"salvageTokensFromContract","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"depositAngelInvestmentEth","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_ethContributed","type":"uint256"}],"name":"pushAngelInvestmentData","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ethRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"CrowdsaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"CrowdsaleEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ErrorSendingETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"MinCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"MaxCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]

60606040526000600560006101000a81548160ff0219169083600281111561002357fe5b02179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600955600954600a0a630bebc20002600e55600954600a0a6307270e0002601355600954600a0a6301e8480002601455600954600a0a62f4240002601555600954600a0a627a120002601655600954600a0a6298968002601755600954600a0a62d59f80026018556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff0219169083151502179055506000601960036101000a81548160ff0219169083151502179055506000601960046101000a81548160ff021916908315150217905550341561016657600080fd5b5b5b33600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6240b62760068190555062425c0760078190555068c03c0374ecd6871800600b8190555069080ba792c0320711c000600c81905550610e106010819055505b5b6121c3806101f96000396000f30060606040523615610152576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063055405341461024357806310fe9ae81461027c578063144fa6d7146102d157806320d191811461030a5780632165e1aa1461033357806323548b8b146103485780633fa615b0146103715780635462870d1461039a5780636deaf623146103ef57806379ba50971461042f5780637d6651b9146104445780637f86033014610459578063826776fa1461047c5780638da5cb5b146104be57806392acb4d614610513578063a0929cda14610567578063a0ef91df146105c8578063cdd3574a146105dd578063d4ee1d9014610606578063d7e64c001461065b578063de271ee014610684578063e7bb52331461068e578063f28afb1e146106c5578063f2fde38b14610707578063f7abab9e14610740578063fddf0fc014610769575b6102415b60008060009054906101000a900460ff1615151561017357600080fd5b60016000806101000a81548160ff0219169083151502179055506000341415151561019d57600080fd5b6002808111156101a957fe5b600560009054906101000a900460ff1660028111156101c457fe5b141515156101d157600080fd5b6101d9610792565b9050600160028111156101e857fe5b600560009054906101000a900460ff16600281111561020357fe5b141561021857610213333461098d565b610222565b61022181610d52565b5b5b60008060006101000a81548160ff0219169083151502179055505b50565b005b341561024e57600080fd5b61027a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610da6565b005b341561028757600080fd5b61028f610e45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102dc57600080fd5b610308600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e70565b005b341561031557600080fd5b61031d610f0f565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610f15565b005b341561035357600080fd5b61035b61107c565b6040518082815260200191505060405180910390f35b341561037c57600080fd5b610384611082565b6040518082815260200191505060405180910390f35b34156103a557600080fd5b6103ad611088565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fa57600080fd5b61041960048080359060200190919080359060200190919050506110ae565b6040518082815260200191505060405180910390f35b341561043a57600080fd5b6104426111ac565b005b341561044f57600080fd5b61045761138b565b005b341561046457600080fd5b61047a600480803590602001909190505061159e565b005b341561048757600080fd5b6104bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611842565b005b34156104c957600080fd5b6104d1611cec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051e57600080fd5b61054a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d12565b604051808381526020018281526020019250505060405180910390f35b341561057257600080fd5b6105c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d36565b005b34156105d357600080fd5b6105db611e5d565b005b34156105e857600080fd5b6105f0611f6d565b6040518082815260200191505060405180910390f35b341561061157600080fd5b610619611f73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b61066e611f99565b6040518082815260200191505060405180910390f35b61068c611fa4565b005b341561069957600080fd5b6106a1612001565b604051808260028111156106b157fe5b60ff16815260200191505060405180910390f35b34156106d057600080fd5b610705600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612014565b005b341561071257600080fd5b61073e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061208f565b005b341561074b57600080fd5b61075361218b565b6040518082815260200191505060405180910390f35b341561077457600080fd5b61077c612191565b6040518082815260200191505060405180910390f35b6000600c54600d541480156107cc57506002808111156107ae57fe5b600560009054906101000a900460ff1660028111156107c957fe5b14155b15610835576002600560006101000a81548160ff021916908360028111156107f057fe5b02179055507f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b436040518082815260200191505060405180910390a16001905061098a565b6006544311801561084857506007544311155b156108e5576001600281111561085a57fe5b600560009054906101000a900460ff16600281111561087557fe5b1415156108e0576001600560006101000a81548160ff0219169083600281111561089b57fe5b02179055507f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d501436040518082815260200191505060405180910390a16001905061098a565b610985565b6002808111156108f157fe5b600560009054906101000a900460ff16600281111561090c57fe5b1415801561091b575060075443115b15610984576002600560006101000a81548160ff0219169083600281111561093f57fe5b02179055507f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b436040518082815260200191505060405180910390a16001905061098a565b5b600090505b90565b600080600083925060009150600d54600c54038411156109b657600d54600c5403925082840391505b600b5483600d54011180156109ce5750600d54600b54115b15610a0b577f71bd1f47064193be653e360173639170d33d2cfe47bf52a3de621ca4040e2358436040518082815260200191505060405180910390a15b600c5483600d5401148015610a235750600c54600d54105b15610a60577f38caa2c61728c18eb71cbd06d1915e4164ffe51c69a09b68d78be1f125a5dea7436040518082815260200191505060405180910390a15b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b11578460046000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016003600082825401925050819055505b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254019250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555082600d60008282540192505081905550610bcb83436110ae565b90506000811115610cff57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c86836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c9a57600080fd5b6102c65a03f11515610cab57600080fd5b50505080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055505b600082141515610d4a578473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610d4957600080fd5b5b5b5050505050565b8015610d9d573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610d9857600080fd5b610da2565b600080fd5b5b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dff57fe5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ec957fe5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60075481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f6e57fe5b60003073ffffffffffffffffffffffffffffffffffffffff163114151515610f9557600080fd5b60075443111515610fa557600080fd5b600060046000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561107857600080fd5b5b5b565b600c5481565b600b5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006006548210156110c657610c56830290506111a6565b60065482101580156110e057506002601054026006540182105b156110f157610c56830290506111a6565b60026010540260065401821015801561111257506007601054026006540182105b1561112357610c02830290506111a6565b6007601054026006540182101580156111445750600e601054026006540182105b1561115557610bad830290506111a6565b600e6010540260065401821015801561117657506015601054026006540182105b1561118757610b59830290506111a6565b60156010540260065401821015156111a557610b04830290506111a6565b5b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120857600080fd5b7f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b565b6000600754431180156113a15750600b54600d54105b15156113ac57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115156113fd57600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561145657600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561159a577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d33382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50565b60008060008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fb57fe5b6007544311801561160f5750600b54600d54105b151561161a57600080fd5b600090505b8381101561183a5760046000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925060008373ffffffffffffffffffffffffffffffffffffffff1614156116835761183b565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181b57600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561181a577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d38383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b60016011600082825401925050819055505b808060010191505061161f565b5b5b50505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189c57fe5b6002808111156118a857fe5b600560009054906101000a900460ff1660028111156118c357fe5b1415156118cf57600080fd5b600b54600d54101515156118e257600080fd5b600182141561192957601960019054906101000a900460ff1615151561190457fe5b60155490506001601960016101000a81548160ff021916908315150217905550611c0d565b600282141561197057601960029054906101000a900460ff1615151561194b57fe5b60165490506001601960026101000a81548160ff021916908315150217905550611c0c565b60038214156119b757601960039054906101000a900460ff1615151561199257fe5b60175490506001601960036101000a81548160ff021916908315150217905550611c0b565b60048214156119fe57601960049054906101000a900460ff161515156119d957fe5b60185490506001601960046101000a81548160ff021916908315150217905550611c0a565b6005821415611c0457601960009054906101000a900460ff16151515611a2057fe5b601960019054906101000a900460ff161515611a3857fe5b601960029054906101000a900460ff161515611a5057fe5b601960039054906101000a900460ff161515611a6857fe5b601960049054906101000a900460ff161515611a8057fe5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611b0e57600080fd5b6102c65a03f11515611b1f57600080fd5b50505060405180519050600e54111515611b3557fe5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611bc357600080fd5b6102c65a03f11515611bd457600080fd5b50505060405180519050600e540390506001601960006101000a81548160ff021916908315150217905550611c09565b600080fd5b5b5b5b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611cd157600080fd5b6102c65a03f11515611ce257600080fd5b5050505b5b505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000154908060010154905082565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8f57fe5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611e3a57600080fd5b6102c65a03f11515611e4b57600080fd5b50505060405180519050505b5b505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eb657fe5b60003073ffffffffffffffffffffffffffffffffffffffff163114151515611edd57600080fd5b600b54600d5410151515611ef057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611f6957600080fd5b5b5b565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060035490505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57fe5b5b5b565b600560009054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561206d57fe5b600c5481600d54011115151561207f57fe5b612089828261098d565b5b5b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e857fe5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561214557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600e5481565b600d54815600a165627a7a723058207c1f8feb2087c188c51695c514a7cdf22c2707b3895eeee90f50eb412ce328800029

Deployed Bytecode

0x60606040523615610152576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063055405341461024357806310fe9ae81461027c578063144fa6d7146102d157806320d191811461030a5780632165e1aa1461033357806323548b8b146103485780633fa615b0146103715780635462870d1461039a5780636deaf623146103ef57806379ba50971461042f5780637d6651b9146104445780637f86033014610459578063826776fa1461047c5780638da5cb5b146104be57806392acb4d614610513578063a0929cda14610567578063a0ef91df146105c8578063cdd3574a146105dd578063d4ee1d9014610606578063d7e64c001461065b578063de271ee014610684578063e7bb52331461068e578063f28afb1e146106c5578063f2fde38b14610707578063f7abab9e14610740578063fddf0fc014610769575b6102415b60008060009054906101000a900460ff1615151561017357600080fd5b60016000806101000a81548160ff0219169083151502179055506000341415151561019d57600080fd5b6002808111156101a957fe5b600560009054906101000a900460ff1660028111156101c457fe5b141515156101d157600080fd5b6101d9610792565b9050600160028111156101e857fe5b600560009054906101000a900460ff16600281111561020357fe5b141561021857610213333461098d565b610222565b61022181610d52565b5b5b60008060006101000a81548160ff0219169083151502179055505b50565b005b341561024e57600080fd5b61027a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610da6565b005b341561028757600080fd5b61028f610e45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102dc57600080fd5b610308600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e70565b005b341561031557600080fd5b61031d610f0f565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610f15565b005b341561035357600080fd5b61035b61107c565b6040518082815260200191505060405180910390f35b341561037c57600080fd5b610384611082565b6040518082815260200191505060405180910390f35b34156103a557600080fd5b6103ad611088565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fa57600080fd5b61041960048080359060200190919080359060200190919050506110ae565b6040518082815260200191505060405180910390f35b341561043a57600080fd5b6104426111ac565b005b341561044f57600080fd5b61045761138b565b005b341561046457600080fd5b61047a600480803590602001909190505061159e565b005b341561048757600080fd5b6104bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611842565b005b34156104c957600080fd5b6104d1611cec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051e57600080fd5b61054a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d12565b604051808381526020018281526020019250505060405180910390f35b341561057257600080fd5b6105c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d36565b005b34156105d357600080fd5b6105db611e5d565b005b34156105e857600080fd5b6105f0611f6d565b6040518082815260200191505060405180910390f35b341561061157600080fd5b610619611f73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066657600080fd5b61066e611f99565b6040518082815260200191505060405180910390f35b61068c611fa4565b005b341561069957600080fd5b6106a1612001565b604051808260028111156106b157fe5b60ff16815260200191505060405180910390f35b34156106d057600080fd5b610705600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612014565b005b341561071257600080fd5b61073e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061208f565b005b341561074b57600080fd5b61075361218b565b6040518082815260200191505060405180910390f35b341561077457600080fd5b61077c612191565b6040518082815260200191505060405180910390f35b6000600c54600d541480156107cc57506002808111156107ae57fe5b600560009054906101000a900460ff1660028111156107c957fe5b14155b15610835576002600560006101000a81548160ff021916908360028111156107f057fe5b02179055507f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b436040518082815260200191505060405180910390a16001905061098a565b6006544311801561084857506007544311155b156108e5576001600281111561085a57fe5b600560009054906101000a900460ff16600281111561087557fe5b1415156108e0576001600560006101000a81548160ff0219169083600281111561089b57fe5b02179055507f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d501436040518082815260200191505060405180910390a16001905061098a565b610985565b6002808111156108f157fe5b600560009054906101000a900460ff16600281111561090c57fe5b1415801561091b575060075443115b15610984576002600560006101000a81548160ff0219169083600281111561093f57fe5b02179055507f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b436040518082815260200191505060405180910390a16001905061098a565b5b600090505b90565b600080600083925060009150600d54600c54038411156109b657600d54600c5403925082840391505b600b5483600d54011180156109ce5750600d54600b54115b15610a0b577f71bd1f47064193be653e360173639170d33d2cfe47bf52a3de621ca4040e2358436040518082815260200191505060405180910390a15b600c5483600d5401148015610a235750600c54600d54105b15610a60577f38caa2c61728c18eb71cbd06d1915e4164ffe51c69a09b68d78be1f125a5dea7436040518082815260200191505060405180910390a15b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b11578460046000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016003600082825401925050819055505b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254019250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555082600d60008282540192505081905550610bcb83436110ae565b90506000811115610cff57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c86836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c9a57600080fd5b6102c65a03f11515610cab57600080fd5b50505080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055505b600082141515610d4a578473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610d4957600080fd5b5b5b5050505050565b8015610d9d573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610d9857600080fd5b610da2565b600080fd5b5b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dff57fe5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ec957fe5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60075481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f6e57fe5b60003073ffffffffffffffffffffffffffffffffffffffff163114151515610f9557600080fd5b60075443111515610fa557600080fd5b600060046000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561107857600080fd5b5b5b565b600c5481565b600b5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006006548210156110c657610c56830290506111a6565b60065482101580156110e057506002601054026006540182105b156110f157610c56830290506111a6565b60026010540260065401821015801561111257506007601054026006540182105b1561112357610c02830290506111a6565b6007601054026006540182101580156111445750600e601054026006540182105b1561115557610bad830290506111a6565b600e6010540260065401821015801561117657506015601054026006540182105b1561118757610b59830290506111a6565b60156010540260065401821015156111a557610b04830290506111a6565b5b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120857600080fd5b7f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b565b6000600754431180156113a15750600b54600d54105b15156113ac57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115156113fd57600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561145657600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561159a577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d33382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50565b60008060008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fb57fe5b6007544311801561160f5750600b54600d54105b151561161a57600080fd5b600090505b8381101561183a5760046000601154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925060008373ffffffffffffffffffffffffffffffffffffffff1614156116835761183b565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181b57600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561181a577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d38383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b60016011600082825401925050819055505b808060010191505061161f565b5b5b50505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189c57fe5b6002808111156118a857fe5b600560009054906101000a900460ff1660028111156118c357fe5b1415156118cf57600080fd5b600b54600d54101515156118e257600080fd5b600182141561192957601960019054906101000a900460ff1615151561190457fe5b60155490506001601960016101000a81548160ff021916908315150217905550611c0d565b600282141561197057601960029054906101000a900460ff1615151561194b57fe5b60165490506001601960026101000a81548160ff021916908315150217905550611c0c565b60038214156119b757601960039054906101000a900460ff1615151561199257fe5b60175490506001601960036101000a81548160ff021916908315150217905550611c0b565b60048214156119fe57601960049054906101000a900460ff161515156119d957fe5b60185490506001601960046101000a81548160ff021916908315150217905550611c0a565b6005821415611c0457601960009054906101000a900460ff16151515611a2057fe5b601960019054906101000a900460ff161515611a3857fe5b601960029054906101000a900460ff161515611a5057fe5b601960039054906101000a900460ff161515611a6857fe5b601960049054906101000a900460ff161515611a8057fe5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611b0e57600080fd5b6102c65a03f11515611b1f57600080fd5b50505060405180519050600e54111515611b3557fe5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611bc357600080fd5b6102c65a03f11515611bd457600080fd5b50505060405180519050600e540390506001601960006101000a81548160ff021916908315150217905550611c09565b600080fd5b5b5b5b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611cd157600080fd5b6102c65a03f11515611ce257600080fd5b5050505b5b505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000154908060010154905082565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8f57fe5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611e3a57600080fd5b6102c65a03f11515611e4b57600080fd5b50505060405180519050505b5b505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eb657fe5b60003073ffffffffffffffffffffffffffffffffffffffff163114151515611edd57600080fd5b600b54600d5410151515611ef057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611f6957600080fd5b5b5b565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060035490505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57fe5b5b5b565b600560009054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561206d57fe5b600c5481600d54011115151561207f57fe5b612089828261098d565b5b5b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e857fe5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561214557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600e5481565b600d54815600a165627a7a723058207c1f8feb2087c188c51695c514a7cdf22c2707b3895eeee90f50eb412ce328800029

Swarm Source

bzzr://7c1f8feb2087c188c51695c514a7cdf22c2707b3895eeee90f50eb412ce32880

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.