ETH Price: $2,605.99 (+3.08%)
 

Overview

ETH Balance

2 wei

Eth Value

Less Than $0.01 (@ $2,605.99/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Register Opinion58366262018-06-22 22:14:512573 days ago1529705691IN
0x393B5fd2...d3d5792E9
0.032 ETH0.00027051.011
Sponsor Opinion53154562018-03-24 21:39:562663 days ago1521927596IN
0x393B5fd2...d3d5792E9
0.01 ETH0.000078631
Register Opinion53154362018-03-24 21:35:482663 days ago1521927348IN
0x393B5fd2...d3d5792E9
0.032 ETH0.000619872
Register Opinion52811142018-03-19 3:52:142668 days ago1521431534IN
0x393B5fd2...d3d5792E9
0 ETH0.000104022
Sponsor Opinion52792062018-03-18 20:15:512669 days ago1521404151IN
0x393B5fd2...d3d5792E9
0.02222222 ETH0.000070331
Sponsor Opinion52790922018-03-18 19:50:402669 days ago1521402640IN
0x393B5fd2...d3d5792E9
0.01 ETH0.000078631
Register Opinion52790782018-03-18 19:47:362669 days ago1521402456IN
0x393B5fd2...d3d5792E9
0.032 ETH0.000711172
Register Opinion52293342018-03-10 8:47:152677 days ago1520671635IN
0x393B5fd2...d3d5792E9
0.032 ETH0.000618072
Sponsor Opinion52033192018-03-05 22:41:502682 days ago1520289710IN
0x393B5fd2...d3d5792E9
0.01 ETH0.000235913
Register Opinion52033042018-03-05 22:37:212682 days ago1520289441IN
0x393B5fd2...d3d5792E9
0.016 ETH0.001552875
Register Opinion52032882018-03-05 22:33:372682 days ago1520289217IN
0x393B5fd2...d3d5792E9
0.016 ETH0.000103642
Sponsor Opinion52032862018-03-05 22:33:182682 days ago1520289198IN
0x393B5fd2...d3d5792E9
0.01 ETH0.000235913
Register Opinion52032842018-03-05 22:32:592682 days ago1520289179IN
0x393B5fd2...d3d5792E9
0.008 ETH0.000328314
Register Opinion52032832018-03-05 22:32:412682 days ago1520289161IN
0x393B5fd2...d3d5792E9
0.016 ETH0.000618712
Register Opinion52032822018-03-05 22:32:212682 days ago1520289141IN
0x393B5fd2...d3d5792E9
0.008 ETH0.000164152
Register Opinion52032822018-03-05 22:32:212682 days ago1520289141IN
0x393B5fd2...d3d5792E9
0.008 ETH0.000100762.2
Register Opinion52032792018-03-05 22:31:352682 days ago1520289095IN
0x393B5fd2...d3d5792E9
0.016 ETH0.0031983912
Register Opinion52032782018-03-05 22:30:542682 days ago1520289054IN
0x393B5fd2...d3d5792E9
0.032 ETH0.001326684
Register Opinion52032752018-03-05 22:30:182682 days ago1520289018IN
0x393B5fd2...d3d5792E9
0.008 ETH0.000947121
Register Opinion52032742018-03-05 22:29:442682 days ago1520288984IN
0x393B5fd2...d3d5792E9
0.008 ETH0.001007414
Register Opinion52032722018-03-05 22:29:062682 days ago1520288946IN
0x393B5fd2...d3d5792E9
0.008 ETH0.00031577
Register Opinion52032702018-03-05 22:28:522682 days ago1520288932IN
0x393B5fd2...d3d5792E9
0.008 ETH0.001067414
Register Opinion52032662018-03-05 22:27:522682 days ago1520288872IN
0x393B5fd2...d3d5792E9
0.008 ETH0.001865737
Sponsor Opinion52032602018-03-05 22:26:562682 days ago1520288816IN
0x393B5fd2...d3d5792E9
0.02222222 ETH0.000422026
Sponsor Opinion52032522018-03-05 22:26:092682 days ago1520288769IN
0x393B5fd2...d3d5792E9
0.01 ETH0.000142296
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer58366262018-06-22 22:14:512573 days ago1529705691
0x393B5fd2...d3d5792E9
0.032 ETH
Transfer53154562018-03-24 21:39:562663 days ago1521927596
0x393B5fd2...d3d5792E9
0.001 ETH
Transfer53154562018-03-24 21:39:562663 days ago1521927596
0x393B5fd2...d3d5792E9
0.009 ETH
Transfer53154362018-03-24 21:35:482663 days ago1521927348
0x393B5fd2...d3d5792E9
0.032 ETH
Transfer52792062018-03-18 20:15:512669 days ago1521404151
0x393B5fd2...d3d5792E9
2 wei
Transfer52792062018-03-18 20:15:512669 days ago1521404151
0x393B5fd2...d3d5792E9
0.00222222 ETH
Transfer52792062018-03-18 20:15:512669 days ago1521404151
0x393B5fd2...d3d5792E9
0.01999999 ETH
Transfer52790922018-03-18 19:50:402669 days ago1521402640
0x393B5fd2...d3d5792E9
0.001 ETH
Transfer52790922018-03-18 19:50:402669 days ago1521402640
0x393B5fd2...d3d5792E9
0.009 ETH
Transfer52790782018-03-18 19:47:362669 days ago1521402456
0x393B5fd2...d3d5792E9
0.032 ETH
Transfer52293342018-03-10 8:47:152677 days ago1520671635
0x393B5fd2...d3d5792E9
0.032 ETH
Transfer52033192018-03-05 22:41:502682 days ago1520289710
0x393B5fd2...d3d5792E9
0.001 ETH
Transfer52033192018-03-05 22:41:502682 days ago1520289710
0x393B5fd2...d3d5792E9
0.009 ETH
Transfer52033042018-03-05 22:37:212682 days ago1520289441
0x393B5fd2...d3d5792E9
0.016 ETH
Transfer52032862018-03-05 22:33:182682 days ago1520289198
0x393B5fd2...d3d5792E9
0.001 ETH
Transfer52032862018-03-05 22:33:182682 days ago1520289198
0x393B5fd2...d3d5792E9
0.009 ETH
Transfer52032832018-03-05 22:32:412682 days ago1520289161
0x393B5fd2...d3d5792E9
0.016 ETH
Transfer52032792018-03-05 22:31:352682 days ago1520289095
0x393B5fd2...d3d5792E9
0.016 ETH
Transfer52032782018-03-05 22:30:542682 days ago1520289054
0x393B5fd2...d3d5792E9
0.032 ETH
Transfer52032742018-03-05 22:29:442682 days ago1520288984
0x393B5fd2...d3d5792E9
0.008 ETH
Transfer52032702018-03-05 22:28:522682 days ago1520288932
0x393B5fd2...d3d5792E9
0.008 ETH
Transfer52032662018-03-05 22:27:522682 days ago1520288872
0x393B5fd2...d3d5792E9
0.008 ETH
Transfer52032602018-03-05 22:26:562682 days ago1520288816
0x393B5fd2...d3d5792E9
2 wei
Transfer52032602018-03-05 22:26:562682 days ago1520288816
0x393B5fd2...d3d5792E9
0.00222222 ETH
Transfer52032602018-03-05 22:26:562682 days ago1520288816
0x393B5fd2...d3d5792E9
0.01999999 ETH
View All Internal 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:
OpinionToken

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-03
*/

pragma solidity ^0.4.18; // solhint-disable-line



/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
contract ERC721 {
  // Required methods
  function approve(address _to, uint256 _tokenId) public;
  function balanceOf(address _owner) public view returns (uint256 balance);
  function implementsERC721() public pure returns (bool);
  function ownerOf(uint256 _tokenId) public view returns (address addr);
  function takeOwnership(uint256 _tokenId) public;
  function totalSupply() public view returns (uint256 total);
  function transferFrom(address _from, address _to, uint256 _tokenId) public;
  function transfer(address _to, uint256 _tokenId) public;

  event Transfer(address indexed from, address indexed to, uint256 tokenId);
  event Approval(address indexed owner, address indexed approved, uint256 tokenId);

  // Optional
  // function name() public view returns (string name);
  // function symbol() public view returns (string symbol);
  // function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 tokenId);
  // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);
}


contract OpinionToken is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new opinion comes into existence.
  event Birth(uint256 tokenId, string name, address owner);

  /// @dev The TokenSold event is fired whenever a token is sold.
  event TokenSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, string name);

  /// @dev Transfer event as defined in current draft of ERC721. 
  ///  ownership is assigned, including births.
  event Transfer(address from, address to, uint256 tokenId);

  /*** CONSTANTS ***/

  /// @notice Name and symbol of the non fungible token, as defined in ERC721.
  string public constant NAME = "Cryptopinions"; // solhint-disable-line
  string public constant SYMBOL = "OpinionToken"; // solhint-disable-line
  string public constant DEFAULT_TEXT = "";

  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;
  uint256 private numIssued=5; //number of tokens issued initially
  uint256 private constant stepMultiplier=2;//multiplier for initial opinion registration cost, not sponsorship
  uint256 private startingPrice = 0.001 ether; //will increase every token issued by stepMultiplier times
  uint256 private sponsorStartingCost=0.01 ether;//initial cost to sponsor an opinion
  //uint256 private currentIssueRemaining;
  /*** STORAGE ***/

  /// @dev A mapping from opinion IDs to the address that owns them. All opinions have
  ///  some valid owner address.
  mapping (uint256 => address) public opinionIndexToOwner;

  // @dev A mapping from owner address to count of tokens that address owns.
  //  Used internally inside balanceOf() to resolve ownership count.
  mapping (address => uint256) private ownershipTokenCount;

  /// @dev A mapping from opinionIDs to an address that has been approved to call
  ///  transferFrom(). Each opinion can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public opinionIndexToApproved;

  // @dev A mapping from opinionIDs to the price of the token.
  mapping (uint256 => uint256) private opinionIndexToPrice;
  
  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;

  /*** DATATYPES ***/
  struct Opinion {
    string text;
    bool claimed;
    bool deleted;
    uint8 comment;
    address sponsor;
    address antisponsor;
    uint256 totalsponsored;
    uint256 totalantisponsored;
    uint256 timestamp;
  }

  Opinion[] private opinions;

  /*** ACCESS MODIFIERS ***/
  /// @dev Access modifier for CEO-only functionality
  modifier onlyCEO() {
    require(msg.sender == ceoAddress);
    _;
  }

  /// @dev Access modifier for COO-only functionality
  modifier onlyCOO() {
    require(msg.sender == cooAddress);
    _;
  }

  /// Access modifier for contract owner only functionality
  modifier onlyCLevel() {
    require(
      msg.sender == ceoAddress ||
      msg.sender == cooAddress
    );
    _;
  }

  /*** CONSTRUCTOR ***/
  function OpinionToken() public {
    ceoAddress = msg.sender;
    cooAddress = msg.sender;
  }

  /*** PUBLIC FUNCTIONS ***/
  /// @notice Grant another address the right to transfer token via takeOwnership() and transferFrom().
  /// @param _to The address to be granted transfer approval. Pass address(0) to
  ///  clear all approvals.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function approve(
    address _to,
    uint256 _tokenId
  ) public {
    // Caller must own token.
    require(_owns(msg.sender, _tokenId));

    opinionIndexToApproved[_tokenId] = _to;

    Approval(msg.sender, _to, _tokenId);
  }

  /// For querying balance of a particular account
  /// @param _owner The address for balance query
  /// @dev Required for ERC-721 compliance.
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return ownershipTokenCount[_owner];
  }
  /// @dev Creates initial set of opinions. Can only be called once.
  function createInitialItems() public onlyCOO {
    require(opinions.length==0);
    _createOpinionSet();
  }

  /// @notice Returns all the relevant information about a specific opinion.
  /// @param _tokenId The tokenId of the opinion of interest.
  function getOpinion(uint256 _tokenId) public view returns (
    uint256 sellingPrice,
    address owner,
    address sponsor,
    address antisponsor,
    uint256 amountsponsored,
    uint256 amountantisponsored,
    uint8 acomment,
    uint256 timestamp,
    string opinionText
  ) {
    Opinion storage opinion = opinions[_tokenId];
    opinionText = opinion.text;
    sellingPrice = opinionIndexToPrice[_tokenId];
    owner = opinionIndexToOwner[_tokenId];
    acomment=opinion.comment;
    sponsor=opinion.sponsor;
    antisponsor=opinion.antisponsor;
    amountsponsored=opinion.totalsponsored;
    amountantisponsored=opinion.totalantisponsored;
    timestamp=opinion.timestamp;
  }

  function compareStrings (string a, string b) public pure returns (bool){
       return keccak256(a) == keccak256(b);
   }
  
  function hasDuplicate(string _tocheck) public view returns (bool){
    return hasPriorDuplicate(_tocheck,opinions.length);
  }
  
  function hasPriorDuplicate(string _tocheck,uint256 index) public view returns (bool){
    for(uint i = 0; i<index; i++){
        if(compareStrings(_tocheck,opinions[i].text)){
            return true;
        }
    }
    return false;
  }
  
  function implementsERC721() public pure returns (bool) {
    return true;
  }

  /// @dev Required for ERC-721 compliance.
  function name() public pure returns (string) {
    return NAME;
  }

  /// For querying owner of token
  /// @param _tokenId The tokenID for owner inquiry
  /// @dev Required for ERC-721 compliance.
  function ownerOf(uint256 _tokenId)
    public
    view
    returns (address owner)
  {
    owner = opinionIndexToOwner[_tokenId];
    require(owner != address(0));
  }

  function payout(address _to) public onlyCLevel {
    _payout(_to);
  }

  function sponsorOpinion(uint256 _tokenId,uint8 comment,bool _likesOpinion) public payable {
      //ensure comment corresponds to status of token. Tokens with a comment of 0 are unregistered.
      require(comment!=0);
      require((_likesOpinion && comment<100) || (!_likesOpinion && comment>100));
      address sponsorAdr = msg.sender;
      require(_addressNotNull(sponsorAdr));
      // Making sure sent amount is greater than or equal to the sellingPrice
      uint256 sellingPrice = opinionIndexToPrice[_tokenId];
      address currentOwner=opinionIndexToOwner[_tokenId];
      address newOwner = msg.sender;
      require(_addressNotNull(newOwner));
      require(_addressNotNull(currentOwner));
      require(msg.value >= sellingPrice);
      uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 90), 100));
      uint256 ownerTake=uint256(SafeMath.div(SafeMath.mul(sellingPrice, 10), 100));
      uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
          // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 90);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 120), 90);
    } else {
      // third stage
      opinionIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 115), 90);
    }
    Opinion storage opinion = opinions[_tokenId];
    require(opinion.claimed);
    require(sponsorAdr!=opinion.sponsor);
    require(sponsorAdr!=opinion.antisponsor);
    require(sponsorAdr!=currentOwner);
    opinion.comment=comment;
    if(_likesOpinion){
        if(_addressNotNull(opinion.sponsor)){
            opinion.sponsor.transfer(payment);
            currentOwner.transfer(ownerTake);
        }
        else{
            currentOwner.transfer(sellingPrice);
        }
        opinion.sponsor=sponsorAdr;
        opinion.totalsponsored=SafeMath.add(opinion.totalsponsored,sellingPrice);
    }
    else{
        if(_addressNotNull(opinion.sponsor)){
            opinion.antisponsor.transfer(payment);
            ceoAddress.transfer(ownerTake);
        }
        else{
            ceoAddress.transfer(sellingPrice); //eth for initial antisponsor goes to Cryptopinions, because you wouldn't want it to go to the creator of an opinion you don't like
        }
        opinion.antisponsor=sponsorAdr;
        opinion.totalantisponsored=SafeMath.add(opinion.totalantisponsored,sellingPrice);
    }
    msg.sender.transfer(purchaseExcess);
  }
  
  //lets you permanently delete someone elses opinion.
  function deleteThis(uint256 _tokenId) public payable{
    //Cost is 1 eth or five times the current valuation of the opinion, whichever is higher.
    uint256 sellingPrice = SafeMath.mul(opinionIndexToPrice[_tokenId],5);
    if(sellingPrice<1 ether){
        sellingPrice=1 ether;
    }
    require(msg.value >= sellingPrice);
    ceoAddress.transfer(sellingPrice);
    Opinion storage opinion = opinions[_tokenId];
    opinion.deleted=true;
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
    msg.sender.transfer(purchaseExcess);
  }
  
  // Allows someone to send ether and obtain the (unclaimed only) token
  function registerOpinion(uint256 _tokenId,string _newOpinion) public payable {
    
    //Set opinion to the new opinion
    _initOpinion(_tokenId,_newOpinion);
    
    address oldOwner = opinionIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = opinionIndexToPrice[_tokenId];

    // Making sure token owner is not sending to self
    require(oldOwner != newOwner);

    // Safety check to prevent against an unexpected 0x0 default.
    require(_addressNotNull(newOwner));

    // Making sure sent amount is greater than or equal to the sellingPrice
    require(msg.value >= sellingPrice);
    
    uint256 payment = sellingPrice;
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
    opinionIndexToPrice[_tokenId] = sponsorStartingCost; //initial cost to sponsor

    _transfer(oldOwner, newOwner, _tokenId);

    ceoAddress.transfer(payment);

    TokenSold(_tokenId, sellingPrice, opinionIndexToPrice[_tokenId], oldOwner, newOwner, opinions[_tokenId].text);

    msg.sender.transfer(purchaseExcess);
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return opinionIndexToPrice[_tokenId];
  }

  /// @dev Assigns a new address to act as the CEO. Only available to the current CEO.
  /// @param _newCEO The address of the new CEO
  function setCEO(address _newCEO) public onlyCEO {
    _setCEO(_newCEO);
  }
   function _setCEO(address _newCEO) private{
         require(_newCEO != address(0));
         ceoAddress = _newCEO;
   }
  /// @dev Assigns a new address to act as the COO. Only available to the current COO.
  /// @param _newCOO The address of the new COO
  function setCOO(address _newCOO) public onlyCEO {
    require(_newCOO != address(0));

    cooAddress = _newCOO;
  }

  /// @dev Required for ERC-721 compliance.
  function symbol() public pure returns (string) {
    return SYMBOL;
  }

  /// @notice Allow pre-approved user to take ownership of a token
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function takeOwnership(uint256 _tokenId) public {
    address newOwner = msg.sender;
    address oldOwner = opinionIndexToOwner[_tokenId];

    // Safety check to prevent against an unexpected 0x0 default.
    require(_addressNotNull(newOwner));

    // Making sure transfer is approved
    require(_approved(newOwner, _tokenId));

    _transfer(oldOwner, newOwner, _tokenId);
  }

  /// @param _owner The owner whose celebrity tokens we are interested in.
  /// @dev This method MUST NEVER be called by smart contract code. First, it's fairly
  ///  expensive (it walks the entire opinions array looking for opinions belonging to owner),
  ///  but it also returns a dynamic array, which is only supported for web3 calls, and
  ///  not contract-to-contract calls.
  function tokensOfOwner(address _owner) public view returns(uint256[] ownerTokens) {
    uint256 tokenCount = balanceOf(_owner);
    if (tokenCount == 0) {
        // Return an empty array
      return new uint256[](0);
    } else {
      uint256[] memory result = new uint256[](tokenCount);
      uint256 totalOpinions = totalSupply();
      uint256 resultIndex = 0;

      uint256 opinionId;
      for (opinionId = 0; opinionId <= totalOpinions; opinionId++) {
        if (opinionIndexToOwner[opinionId] == _owner) {
          result[resultIndex] = opinionId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return opinions.length;
  }

  /// Owner initates the transfer of the token to another account
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transfer(
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(msg.sender, _tokenId));
    require(_addressNotNull(_to));

    _transfer(msg.sender, _to, _tokenId);
  }

  /// Third-party initiates transfer of token from address _from to address _to
  /// @param _from The address for the token to be transferred from.
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(_from, _tokenId));
    require(_approved(_to, _tokenId));
    require(_addressNotNull(_to));

    _transfer(_from, _to, _tokenId);
  }
  
//Allows purchase of the entire contract. All revenue provisioned to ceoAddress will go to the new address specified.
//If you contact us following purchase we will transfer domain, website source code etc. to you free of charge, otherwise we will continue to maintain the frontend site for 1 year.
uint256 contractPrice=300 ether;
function buyCryptopinions(address _newCEO) payable public{
    require(msg.value >= contractPrice);
    ceoAddress.transfer(msg.value);
    _setCEO(_newCEO);
    _setPrice(9999999 ether);
}
function setPrice(uint256 newprice) public onlyCEO{
    _setPrice(newprice);
}
function _setPrice(uint256 newprice) private{
    contractPrice=newprice;
}

  /*** PRIVATE FUNCTIONS ***/
  /// Safety check on _to address to prevent against an unexpected 0x0 default.
  function _addressNotNull(address _to) private pure returns (bool) {
    return _to != address(0);
  }

  /// For checking approval of transfer for address _to
  function _approved(address _to, uint256 _tokenId) private view returns (bool) {
    return opinionIndexToApproved[_tokenId] == _to;
  }
  
  function _createOpinionSet() private {
      for(uint i = 0; i<numIssued; i++){
        _createOpinion(DEFAULT_TEXT,ceoAddress,startingPrice);
      }
      //startingPrice = SafeMath.mul(startingPrice,stepMultiplier); //increase the price for the next set of tokens
      //currentIssueRemaining=numIssued;
      
  }
  
  //for registering an Opinion
  function _initOpinion(uint256 _tokenId,string _newOpinion) private {
      Opinion storage opinion = opinions[_tokenId];
      opinion.timestamp=now;
      opinion.text=_newOpinion;
      opinion.comment=1;
      require(!opinion.claimed);
        uint256 newprice=SafeMath.mul(stepMultiplier,opinionIndexToPrice[_tokenId]);
        //max price 1 eth
        if(newprice > 0.1 ether){ //max price for a new opinion, 1 ether
            newprice=0.1 ether;
        }
        _createOpinion("",ceoAddress,newprice); //make a new opinion for someone else to buy
        opinion.claimed=true;
      
          //currentIssueRemaining=SafeMath.sub(currentIssueRemaining,1);
          //if this is the last remaining token for sale, issue more
          //if(currentIssueRemaining == 0){
          //    _createOpinionSet();
          //}
      
      
  }
  
  /// For creating Opinion
  function _createOpinion(string _name, address _owner, uint256 _price) private {
    Opinion memory _opinion = Opinion({
      text: _name,
      claimed: false,
      deleted: false,
      comment: 0,
      sponsor: _owner,
      antisponsor: ceoAddress,
      totalsponsored:0,
      totalantisponsored:0,
      timestamp:now
    });
    uint256 newOpinionId = opinions.push(_opinion) - 1;

    // It's probably never going to happen, 4 billion tokens are A LOT, but
    // let's just be 100% sure we never let this happen.
    require(newOpinionId == uint256(uint32(newOpinionId)));

    Birth(newOpinionId, _name, _owner);

    opinionIndexToPrice[newOpinionId] = _price;

    // This will assign ownership, and also emit the Transfer event as
    // per ERC721 draft
    _transfer(address(0), _owner, newOpinionId);
  }

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == opinionIndexToOwner[_tokenId];
  }

  /// For paying out balance on contract
  function _payout(address _to) private {
    if (_to == address(0)) {
      ceoAddress.transfer(this.balance);
    } else {
      _to.transfer(this.balance);
    }
  }

  /// @dev Assigns ownership of a specific opinion to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of opinions is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    opinionIndexToOwner[_tokenId] = _to;

    // When creating new opinions _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete opinionIndexToApproved[_tokenId];
    }

    // Emit the transfer event.
    Transfer(_from, _to, _tokenId);
  }
}
library SafeMath {

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

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"opinionIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"opinionIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tocheck","type":"string"}],"name":"hasDuplicate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DEFAULT_TEXT","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getOpinion","outputs":[{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"sponsor","type":"address"},{"name":"antisponsor","type":"address"},{"name":"amountsponsored","type":"uint256"},{"name":"amountantisponsored","type":"uint256"},{"name":"acomment","type":"uint8"},{"name":"timestamp","type":"uint256"},{"name":"opinionText","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"deleteThis","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newprice","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tocheck","type":"string"},{"name":"index","type":"uint256"}],"name":"hasPriorDuplicate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"string"},{"name":"b","type":"string"}],"name":"compareStrings","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newOpinion","type":"string"}],"name":"registerOpinion","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"comment","type":"uint8"},{"name":"_likesOpinion","type":"bool"}],"name":"sponsorOpinion","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"buyCryptopinions","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createInitialItems","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"owner","type":"address"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

606060405266be78bd4c57d0006000556707d72165f25ed000600155600560025566038d7ea4c68000600355662386f26fc10000600455681043561a8829300000600c55341561004e57600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613236806100df6000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461019b578063095ea7b3146102295780630a0f81681461026b5780630b7e9c44146102c05780631051db34146102f9578063151a7b6a146103265780631764d2471461038957806318160ddd146103ec5780631e9447f31461041557806323b872dd1461048a57806327d7874c146104eb5780632ba73c15146105245780632fdeca371461055d5780634f8dd40a146105eb5780635e65db7f146107495780636352211e1461076157806370a08231146107c45780638462151c1461081157806391b7f5ed1461089f57806395d89b41146108c2578063a3f4df7e14610950578063a9059cbb146109de578063b047fb5014610a20578063b2e6ceeb14610a75578063b915683014610a98578063b9186d7d14610b16578063bed34bba14610b4d578063cd5a57cb14610c05578063f02152ab14610c60578063f2429b1c14610c8f578063f76f8d7814610cbd578063fd28feb314610d4b575b600080fd5b34156101a657600080fd5b6101ae610d60565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023457600080fd5b610269600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610da3565b005b341561027657600080fd5b61027e610e73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102cb57600080fd5b6102f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e99565b005b341561030457600080fd5b61030c610f59565b604051808215151515815260200191505060405180910390f35b341561033157600080fd5b6103476004808035906020019091905050610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039457600080fd5b6103aa6004808035906020019091905050610f95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103f757600080fd5b6103ff610fc8565b6040518082815260200191505060405180910390f35b341561042057600080fd5b610470600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610fd5565b604051808215151515815260200191505060405180910390f35b341561049557600080fd5b6104e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fed565b005b34156104f657600080fd5b610522600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061103b565b005b341561052f57600080fd5b61055b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110a3565b005b341561056857600080fd5b61057061117f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b0578082015181840152602081019050610595565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105f657600080fd5b61060c6004808035906020019091905050611193565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b61075f6004808035906020019091905050611338565b005b341561076c57600080fd5b6107826004808035906020019091905050611478565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107cf57600080fd5b6107fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114f1565b6040518082815260200191505060405180910390f35b341561081c57600080fd5b610848600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061153a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088b578082015181840152602081019050610870565b505050509050019250505060405180910390f35b34156108aa57600080fd5b6108c06004808035906020019091905050611671565b005b34156108cd57600080fd5b6108d56116d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109155780820151818401526020810190506108fa565b50505050905090810190601f1680156109425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561095b57600080fd5b61096361171c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a3578082015181840152602081019050610988565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109e957600080fd5b610a1e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611755565b005b3415610a2b57600080fd5b610a3361178d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8057600080fd5b610a9660048080359060200190919050506117b3565b005b3415610aa357600080fd5b610afc600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050611828565b604051808215151515815260200191505060405180910390f35b3415610b2157600080fd5b610b376004808035906020019091905050611921565b6040518082815260200191505060405180910390f35b3415610b5857600080fd5b610beb600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061193e565b604051808215151515815260200191505060405180910390f35b610c5e600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a17565b005b610c8d600480803590602001909190803560ff169060200190919080351515906020019091905050611d1f565b005b610cbb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123c5565b005b3415610cc857600080fd5b610cd0612458565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d10578082015181840152602081019050610cf5565b50505050905090810190601f168015610d3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610d5657600080fd5b610d5e612491565b005b610d68612ed8565b6040805190810160405280600d81526020017f43727970746f70696e696f6e7300000000000000000000000000000000000000815250905090565b610dad338261250b565b1515610db857600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f425750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610f4d57600080fd5b610f5681612577565b50565b60006001905090565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b80549050905090565b6000610fe682600b80549050611828565b9050919050565b610ff7838261250b565b151561100257600080fd5b61100c8282612685565b151561101757600080fd5b611020826126f1565b151561102b57600080fd5b61103683838361272a565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109757600080fd5b6110a08161292c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ff57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561113b57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602060405190810160405280600081525081565b6000806000806000806000806111a7612ed8565b6000600b8b8154811015156111b857fe5b90600052602060002090600602019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112605780601f1061123557610100808354040283529160200191611260565b820191906000526020600020905b81548152906001019060200180831161124357829003601f168201915b50505050509150600860008c8152602001908152602001600020549950600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508060010160029054906101000a900460ff1693508060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650806003015495508060040154945080600501549250509193959799909294969850565b600080600061135b600860008681526020019081526020016000205460056129ac565b9250670de0b6b3a764000083101561137957670de0b6b3a764000092505b82341015151561138857600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156113ea57600080fd5b600b848154811015156113f957fe5b9060005260206000209060060201915060018260010160016101000a81548160ff02191690831515021790555061143034846129e7565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561147257600080fd5b50505050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114ec57600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611542612eec565b600061154c612eec565b600080600061155a876114f1565b9450600085141561158c5760006040518059106115745750595b90808252806020026020018201604052509550611667565b8460405180591061159a5750595b908082528060200260200182016040525093506115b5610fc8565b925060009150600090505b8281111515611663578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116565780848381518110151561163f57fe5b906020019060200201818152505081806001019250505b80806001019150506115c0565b8395505b5050505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b6116d681612a00565b50565b6116e1612ed8565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e0000000000000000000000000000000000000000815250905090565b6040805190810160405280600d81526020017f43727970746f70696e696f6e730000000000000000000000000000000000000081525081565b61175f338261250b565b151561176a57600080fd5b611773826126f1565b151561177e57600080fd5b61178933838361272a565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506117f8826126f1565b151561180357600080fd5b61180d8284612685565b151561181857600080fd5b61182381838561272a565b505050565b600080600090505b82811015611915576118fa84600b8381548110151561184b57fe5b90600052602060002090600602016000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f05780601f106118c5576101008083540402835291602001916118f0565b820191906000526020600020905b8154815290600101906020018083116118d357829003601f168201915b505050505061193e565b15611908576001915061191a565b8080600101915050611830565b600091505b5092915050565b600060086000838152602001908152602001600020549050919050565b6000816040518082805190602001908083835b6020831015156119765780518252602082019150602081019050602083039250611951565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916836040518082805190602001908083835b6020831015156119dd57805182526020820191506020810190506020830392506119b8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614905092915050565b6000806000806000611a298787612a0a565b6005600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600860008881526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611ab357600080fd5b611abc846126f1565b1515611ac757600080fd5b823410151515611ad657600080fd5b829150611ae334846129e7565b90506004546008600089815260200190815260200160002081905550611b0a85858961272a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611b6c57600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8784600860008b8152602001908152602001600020548888600b8d815481101515611bb357fe5b9060005260206000209060060201600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611cc35780601f10611c9857610100808354040283529160200191611cc3565b820191906000526020600020905b815481529060010190602001808311611ca657829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611d1657600080fd5b50505050505050565b60008060008060008060008060008a60ff1614151515611d3e57600080fd5b888015611d4e575060648a60ff16105b80611d66575088158015611d65575060648a60ff16115b5b1515611d7157600080fd5b339750611d7d886126f1565b1515611d8857600080fd5b600860008c8152602001908152602001600020549650600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550339450611de0856126f1565b1515611deb57600080fd5b611df4866126f1565b1515611dff57600080fd5b863410151515611e0e57600080fd5b611e23611e1c88605a6129ac565b6064612b26565b9350611e3a611e3388600a6129ac565b6064612b26565b9250611e4634886129e7565b9150600054871015611e8357611e67611e608860c86129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eec565b600154871015611ebe57611ea2611e9b8860786129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eeb565b611ed3611ecc8860736129ac565b605a612b26565b600860008d8152602001908152602001600020819055505b5b600b8b815481101515611efb57fe5b906000526020600020906006020190508060010160009054906101000a900460ff161515611f2857600080fd5b8060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611f8757600080fd5b8060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611fe657600080fd5b8573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415151561202157600080fd5b898160010160026101000a81548160ff021916908360ff16021790555088156121be576120718160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b1561211f578060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156120da57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561211a57600080fd5b612160565b8573ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561215f57600080fd5b5b878160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121b1816003015488612b41565b8160030181905550612378565b6121eb8160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b156122bb578060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561225457600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156122b657600080fd5b61231e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561231d57600080fd5b5b878160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061236f816004015488612b41565b81600401819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156123b857600080fd5b5050505050505050505050565b600c5434101515156123d657600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561243857600080fd5b6124418161292c565b6124556a08459508334a94a29c0000612a00565b50565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e000000000000000000000000000000000000000081525081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124ed57600080fd5b6000600b8054905014151561250157600080fd5b612509612b5f565b565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561262557600080fd5b612682565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561268157600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561288857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561296857600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008414156129c157600091506129e0565b82840290508284828115156129d257fe5b041415156129dc57fe5b8091505b5092915050565b60008282111515156129f557fe5b818303905092915050565b80600c8190555050565b600080600b84815481101515612a1c57fe5b9060005260206000209060060201915042826005018190555082826000019080519060200190612a4d929190612f00565b5060018260010160026101000a81548160ff021916908360ff1602179055508160010160009054906101000a900460ff16151515612a8a57600080fd5b612aa8600260086000878152602001908152602001600020546129ac565b905067016345785d8a0000811115612ac65767016345785d8a000090505b612b036020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612bbe565b60018260010160006101000a81548160ff02191690831515021790555050505050565b6000808284811515612b3457fe5b0490508091505092915050565b6000808284019050838110151515612b5557fe5b8091505092915050565b60008090505b600254811015612bbb57612bae6020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600354612bbe565b8080600101915050612b65565b50565b612bc6612f80565b600061012060405190810160405280868152602001600015158152602001600015158152602001600060ff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020014281525091506001600b8054806001018281612c7b9190613006565b916000526020600020906006020160008590919091506000820151816000019080519060200190612cad929190613038565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548160ff021916908360ff16021790555060808201518160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816003015560e08201518160040155610100820151816005015550500390508063ffffffff1681141515612dd557600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015612e71578082015181840152602081019050612e56565b50505050905090810190601f168015612e9e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1826008600083815260200190815260200160002081905550612ed16000858361272a565b5050505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f4157805160ff1916838001178555612f6f565b82800160010185558215612f6f579182015b82811115612f6e578251825591602001919060010190612f53565b5b509050612f7c91906130b8565b5090565b61012060405190810160405280612f956130dd565b8152602001600015158152602001600015158152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b8154818355818115116130335760060281600602836000526020600020918201910161303291906130f1565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061307957805160ff19168380011785556130a7565b828001600101855582156130a7579182015b828111156130a657825182559160200191906001019061308b565b5b5090506130b491906130b8565b5090565b6130da91905b808211156130d65760008160009055506001016130be565b5090565b90565b602060405190810160405280600081525090565b6131bf91905b808211156131bb576000808201600061311091906131c2565b6001820160006101000a81549060ff02191690556001820160016101000a81549060ff02191690556001820160026101000a81549060ff02191690556001820160036101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055506006016130f7565b5090565b90565b50805460018160011615610100020316600290046000825580601f106131e85750613207565b601f01602090049060005260206000209081019061320691906130b8565b5b505600a165627a7a72305820b757091e3a976fe4046bd5e0e815543cc6e31d1657a6609b85eb90400b4982160029

Deployed Bytecode

0x606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461019b578063095ea7b3146102295780630a0f81681461026b5780630b7e9c44146102c05780631051db34146102f9578063151a7b6a146103265780631764d2471461038957806318160ddd146103ec5780631e9447f31461041557806323b872dd1461048a57806327d7874c146104eb5780632ba73c15146105245780632fdeca371461055d5780634f8dd40a146105eb5780635e65db7f146107495780636352211e1461076157806370a08231146107c45780638462151c1461081157806391b7f5ed1461089f57806395d89b41146108c2578063a3f4df7e14610950578063a9059cbb146109de578063b047fb5014610a20578063b2e6ceeb14610a75578063b915683014610a98578063b9186d7d14610b16578063bed34bba14610b4d578063cd5a57cb14610c05578063f02152ab14610c60578063f2429b1c14610c8f578063f76f8d7814610cbd578063fd28feb314610d4b575b600080fd5b34156101a657600080fd5b6101ae610d60565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023457600080fd5b610269600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610da3565b005b341561027657600080fd5b61027e610e73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102cb57600080fd5b6102f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e99565b005b341561030457600080fd5b61030c610f59565b604051808215151515815260200191505060405180910390f35b341561033157600080fd5b6103476004808035906020019091905050610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039457600080fd5b6103aa6004808035906020019091905050610f95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103f757600080fd5b6103ff610fc8565b6040518082815260200191505060405180910390f35b341561042057600080fd5b610470600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610fd5565b604051808215151515815260200191505060405180910390f35b341561049557600080fd5b6104e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fed565b005b34156104f657600080fd5b610522600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061103b565b005b341561052f57600080fd5b61055b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110a3565b005b341561056857600080fd5b61057061117f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b0578082015181840152602081019050610595565b50505050905090810190601f1680156105dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105f657600080fd5b61060c6004808035906020019091905050611193565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b61075f6004808035906020019091905050611338565b005b341561076c57600080fd5b6107826004808035906020019091905050611478565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107cf57600080fd5b6107fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114f1565b6040518082815260200191505060405180910390f35b341561081c57600080fd5b610848600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061153a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088b578082015181840152602081019050610870565b505050509050019250505060405180910390f35b34156108aa57600080fd5b6108c06004808035906020019091905050611671565b005b34156108cd57600080fd5b6108d56116d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109155780820151818401526020810190506108fa565b50505050905090810190601f1680156109425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561095b57600080fd5b61096361171c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a3578082015181840152602081019050610988565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109e957600080fd5b610a1e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611755565b005b3415610a2b57600080fd5b610a3361178d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8057600080fd5b610a9660048080359060200190919050506117b3565b005b3415610aa357600080fd5b610afc600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050611828565b604051808215151515815260200191505060405180910390f35b3415610b2157600080fd5b610b376004808035906020019091905050611921565b6040518082815260200191505060405180910390f35b3415610b5857600080fd5b610beb600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061193e565b604051808215151515815260200191505060405180910390f35b610c5e600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a17565b005b610c8d600480803590602001909190803560ff169060200190919080351515906020019091905050611d1f565b005b610cbb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123c5565b005b3415610cc857600080fd5b610cd0612458565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d10578082015181840152602081019050610cf5565b50505050905090810190601f168015610d3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610d5657600080fd5b610d5e612491565b005b610d68612ed8565b6040805190810160405280600d81526020017f43727970746f70696e696f6e7300000000000000000000000000000000000000815250905090565b610dad338261250b565b1515610db857600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f425750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610f4d57600080fd5b610f5681612577565b50565b60006001905090565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b80549050905090565b6000610fe682600b80549050611828565b9050919050565b610ff7838261250b565b151561100257600080fd5b61100c8282612685565b151561101757600080fd5b611020826126f1565b151561102b57600080fd5b61103683838361272a565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109757600080fd5b6110a08161292c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ff57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561113b57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602060405190810160405280600081525081565b6000806000806000806000806111a7612ed8565b6000600b8b8154811015156111b857fe5b90600052602060002090600602019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112605780601f1061123557610100808354040283529160200191611260565b820191906000526020600020905b81548152906001019060200180831161124357829003601f168201915b50505050509150600860008c8152602001908152602001600020549950600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508060010160029054906101000a900460ff1693508060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650806003015495508060040154945080600501549250509193959799909294969850565b600080600061135b600860008681526020019081526020016000205460056129ac565b9250670de0b6b3a764000083101561137957670de0b6b3a764000092505b82341015151561138857600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156113ea57600080fd5b600b848154811015156113f957fe5b9060005260206000209060060201915060018260010160016101000a81548160ff02191690831515021790555061143034846129e7565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561147257600080fd5b50505050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114ec57600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611542612eec565b600061154c612eec565b600080600061155a876114f1565b9450600085141561158c5760006040518059106115745750595b90808252806020026020018201604052509550611667565b8460405180591061159a5750595b908082528060200260200182016040525093506115b5610fc8565b925060009150600090505b8281111515611663578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116565780848381518110151561163f57fe5b906020019060200201818152505081806001019250505b80806001019150506115c0565b8395505b5050505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b6116d681612a00565b50565b6116e1612ed8565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e0000000000000000000000000000000000000000815250905090565b6040805190810160405280600d81526020017f43727970746f70696e696f6e730000000000000000000000000000000000000081525081565b61175f338261250b565b151561176a57600080fd5b611773826126f1565b151561177e57600080fd5b61178933838361272a565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506117f8826126f1565b151561180357600080fd5b61180d8284612685565b151561181857600080fd5b61182381838561272a565b505050565b600080600090505b82811015611915576118fa84600b8381548110151561184b57fe5b90600052602060002090600602016000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f05780601f106118c5576101008083540402835291602001916118f0565b820191906000526020600020905b8154815290600101906020018083116118d357829003601f168201915b505050505061193e565b15611908576001915061191a565b8080600101915050611830565b600091505b5092915050565b600060086000838152602001908152602001600020549050919050565b6000816040518082805190602001908083835b6020831015156119765780518252602082019150602081019050602083039250611951565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916836040518082805190602001908083835b6020831015156119dd57805182526020820191506020810190506020830392506119b8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614905092915050565b6000806000806000611a298787612a0a565b6005600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600860008881526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611ab357600080fd5b611abc846126f1565b1515611ac757600080fd5b823410151515611ad657600080fd5b829150611ae334846129e7565b90506004546008600089815260200190815260200160002081905550611b0a85858961272a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611b6c57600080fd5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8784600860008b8152602001908152602001600020548888600b8d815481101515611bb357fe5b9060005260206000209060060201600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611cc35780601f10611c9857610100808354040283529160200191611cc3565b820191906000526020600020905b815481529060010190602001808311611ca657829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611d1657600080fd5b50505050505050565b60008060008060008060008060008a60ff1614151515611d3e57600080fd5b888015611d4e575060648a60ff16105b80611d66575088158015611d65575060648a60ff16115b5b1515611d7157600080fd5b339750611d7d886126f1565b1515611d8857600080fd5b600860008c8152602001908152602001600020549650600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550339450611de0856126f1565b1515611deb57600080fd5b611df4866126f1565b1515611dff57600080fd5b863410151515611e0e57600080fd5b611e23611e1c88605a6129ac565b6064612b26565b9350611e3a611e3388600a6129ac565b6064612b26565b9250611e4634886129e7565b9150600054871015611e8357611e67611e608860c86129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eec565b600154871015611ebe57611ea2611e9b8860786129ac565b605a612b26565b600860008d815260200190815260200160002081905550611eeb565b611ed3611ecc8860736129ac565b605a612b26565b600860008d8152602001908152602001600020819055505b5b600b8b815481101515611efb57fe5b906000526020600020906006020190508060010160009054906101000a900460ff161515611f2857600080fd5b8060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611f8757600080fd5b8060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611fe657600080fd5b8573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415151561202157600080fd5b898160010160026101000a81548160ff021916908360ff16021790555088156121be576120718160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b1561211f578060010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156120da57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561211a57600080fd5b612160565b8573ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561215f57600080fd5b5b878160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121b1816003015488612b41565b8160030181905550612378565b6121eb8160010160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126f1565b156122bb578060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561225457600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156122b657600080fd5b61231e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561231d57600080fd5b5b878160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061236f816004015488612b41565b81600401819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156123b857600080fd5b5050505050505050505050565b600c5434101515156123d657600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561243857600080fd5b6124418161292c565b6124556a08459508334a94a29c0000612a00565b50565b6040805190810160405280600c81526020017f4f70696e696f6e546f6b656e000000000000000000000000000000000000000081525081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124ed57600080fd5b6000600b8054905014151561250157600080fd5b612509612b5f565b565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561262557600080fd5b612682565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561268157600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561288857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561296857600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008414156129c157600091506129e0565b82840290508284828115156129d257fe5b041415156129dc57fe5b8091505b5092915050565b60008282111515156129f557fe5b818303905092915050565b80600c8190555050565b600080600b84815481101515612a1c57fe5b9060005260206000209060060201915042826005018190555082826000019080519060200190612a4d929190612f00565b5060018260010160026101000a81548160ff021916908360ff1602179055508160010160009054906101000a900460ff16151515612a8a57600080fd5b612aa8600260086000878152602001908152602001600020546129ac565b905067016345785d8a0000811115612ac65767016345785d8a000090505b612b036020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612bbe565b60018260010160006101000a81548160ff02191690831515021790555050505050565b6000808284811515612b3457fe5b0490508091505092915050565b6000808284019050838110151515612b5557fe5b8091505092915050565b60008090505b600254811015612bbb57612bae6020604051908101604052806000815250600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600354612bbe565b8080600101915050612b65565b50565b612bc6612f80565b600061012060405190810160405280868152602001600015158152602001600015158152602001600060ff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020014281525091506001600b8054806001018281612c7b9190613006565b916000526020600020906006020160008590919091506000820151816000019080519060200190612cad929190613038565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548160ff021916908360ff16021790555060808201518160010160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816003015560e08201518160040155610100820151816005015550500390508063ffffffff1681141515612dd557600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015612e71578082015181840152602081019050612e56565b50505050905090810190601f168015612e9e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1826008600083815260200190815260200160002081905550612ed16000858361272a565b5050505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f4157805160ff1916838001178555612f6f565b82800160010185558215612f6f579182015b82811115612f6e578251825591602001919060010190612f53565b5b509050612f7c91906130b8565b5090565b61012060405190810160405280612f956130dd565b8152602001600015158152602001600015158152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b8154818355818115116130335760060281600602836000526020600020918201910161303291906130f1565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061307957805160ff19168380011785556130a7565b828001600101855582156130a7579182015b828111156130a657825182559160200191906001019061308b565b5b5090506130b491906130b8565b5090565b6130da91905b808211156130d65760008160009055506001016130be565b5090565b90565b602060405190810160405280600081525090565b6131bf91905b808211156131bb576000808201600061311091906131c2565b6001820160006101000a81549060ff02191690556001820160016101000a81549060ff02191690556001820160026101000a81549060ff02191690556001820160036101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055506006016130f7565b5090565b90565b50805460018160011615610100020316600290046000825580601f106131e85750613207565b601f01602090049060005260206000209081019061320691906130b8565b5b505600a165627a7a72305820b757091e3a976fe4046bd5e0e815543cc6e31d1657a6609b85eb90400b4982160029

Swarm Source

bzzr://b757091e3a976fe4046bd5e0e815543cc6e31d1657a6609b85eb90400b498216

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.