ETH Price: $3,680.28 (-5.22%)

Contract

0x41f2EfdcD15eadf974D8F9BeA14c2936823D095F
 

Overview

ETH Balance

0.007593299044514456 ETH

Eth Value

$27.95 (@ $3,680.28/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase65717682018-10-24 0:52:062247 days ago1540342326IN
0x41f2Efdc...6823D095F
0.0125775 ETH0.000422664
Purchase65384532018-10-18 14:00:502253 days ago1539871250IN
0x41f2Efdc...6823D095F
0.02925002 ETH0.000067953
Purchase65384352018-10-18 13:58:222253 days ago1539871102IN
0x41f2Efdc...6823D095F
0.02925002 ETH0.0003623
Purchase65214462018-10-15 19:30:402256 days ago1539631840IN
0x41f2Efdc...6823D095F
0.09491623 ETH0.000383563
Purchase64569482018-10-05 8:32:352266 days ago1538728355IN
0x41f2Efdc...6823D095F
0.0125775 ETH0.000456033
Purchase54166482018-04-10 17:56:192444 days ago1523382979IN
0x41f2Efdc...6823D095F
0.09491623 ETH0.000112851
Payout52354482018-03-11 9:48:012474 days ago1520761681IN
0x41f2Efdc...6823D095F
0 ETH0.000187086
Purchase51999642018-03-05 8:55:342480 days ago1520240134IN
0x41f2Efdc...6823D095F
0.00540832 ETH0.000211332
Purchase51996952018-03-05 7:47:002480 days ago1520236020IN
0x41f2Efdc...6823D095F
0.00232558 ETH0.000117735
Purchase51996762018-03-05 7:40:182480 days ago1520235618IN
0x41f2Efdc...6823D095F
0.0125775 ETH0.000410643
Purchase51996592018-03-05 7:36:522480 days ago1520235412IN
0x41f2Efdc...6823D095F
0.00232558 ETH0.000487274
Purchase51996592018-03-05 7:36:522480 days ago1520235412IN
0x41f2Efdc...6823D095F
0.00540832 ETH0.000362664
Purchase51996482018-03-05 7:34:122480 days ago1520235252IN
0x41f2Efdc...6823D095F
0.00232558 ETH0.000453343
Purchase51996282018-03-05 7:29:312480 days ago1520234971IN
0x41f2Efdc...6823D095F
0 ETH0.00124
Purchase51996242018-03-05 7:28:292480 days ago1520234909IN
0x41f2Efdc...6823D095F
0.001 ETH0.000555744
Purchase51996242018-03-05 7:28:292480 days ago1520234909IN
0x41f2Efdc...6823D095F
0 ETH0.000091114
Create Contract ...51996182018-03-05 7:26:532480 days ago1520234813IN
0x41f2Efdc...6823D095F
0 ETH0.001138888
Purchase51996132018-03-05 7:25:572480 days ago1520234757IN
0x41f2Efdc...6823D095F
0 ETH0.000091114
Purchase51996112018-03-05 7:25:062480 days ago1520234706IN
0x41f2Efdc...6823D095F
0.001 ETH0.000392674
Create Contract ...51996032018-03-05 7:23:592480 days ago1520234639IN
0x41f2Efdc...6823D095F
0 ETH0.00071025
Purchase51995922018-03-05 7:21:212480 days ago1520234481IN
0x41f2Efdc...6823D095F
0 ETH0.00124
Create Contract ...51995722018-03-05 7:15:202480 days ago1520234120IN
0x41f2Efdc...6823D095F
0 ETH0.000354123
Purchase51995552018-03-05 7:11:402480 days ago1520233900IN
0x41f2Efdc...6823D095F
0.0125775 ETH0.000093924
Purchase51995472018-03-05 7:09:512480 days ago1520233791IN
0x41f2Efdc...6823D095F
0.0125775 ETH0.000422664
Purchase51995422018-03-05 7:09:002480 days ago1520233740IN
0x41f2Efdc...6823D095F
0.00540832 ETH0.000605994
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.01081665 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.0005031 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.0005031 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.00025155 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.00025155 ETH
65717682018-10-24 0:52:062247 days ago1540342326
0x41f2Efdc...6823D095F
0.00025155 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
999 wei
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.02515501 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.00117 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.00117 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.000585 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.000585 ETH
65384352018-10-18 13:58:222253 days ago1539871102
0x41f2Efdc...6823D095F
0.000585 ETH
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
990 wei
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
0.08162796 ETH
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
0.00379664 ETH
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
0.00189832 ETH
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
0.00189832 ETH
65214462018-10-15 19:30:402256 days ago1539631840
0x41f2Efdc...6823D095F
0.00189832 ETH
64569482018-10-05 8:32:352266 days ago1538728355
0x41f2Efdc...6823D095F
0 ETH
64569482018-10-05 8:32:352266 days ago1538728355
0x41f2Efdc...6823D095F
0.01081665 ETH
64569482018-10-05 8:32:352266 days ago1538728355
0x41f2Efdc...6823D095F
0.0005031 ETH
64569482018-10-05 8:32:352266 days ago1538728355
0x41f2Efdc...6823D095F
0.0005031 ETH
64569482018-10-05 8:32:352266 days ago1538728355
0x41f2Efdc...6823D095F
0.00025155 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoPepeMarketToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.18; 



/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
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 CryptoPepeMarketToken is ERC721 {

  // Modified CryptoCelebs contract
  // Note: "Item" refers to a SocialMedia asset.
  
  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new item 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);

  /// @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 = "CryptoSocialMedia"; // solhint-disable-line
  string public constant SYMBOL = "CryptoPepeMarketToken"; // solhint-disable-line

  uint256 private startingPrice = 0.001 ether;
  uint256 private constant PROMO_CREATION_LIMIT = 5000;
  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;

  mapping (uint256 => TopOwner) private topOwner;
  mapping (uint256 => address) public lastBuyer;

  /*** STORAGE ***/

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

  // @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 ItemIDs to an address that has been approved to call
  ///  transferFrom(). Each item can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public itemIndexToApproved;

  // @dev A mapping from ItemIDs to the price of the token.
  mapping (uint256 => uint256) private itemIndexToPrice;

  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;

  struct TopOwner {
    address addr;
    uint256 price;
  }

  /*** DATATYPES ***/
  struct Item {
    string name;
	bytes32 message;
	address creatoraddress;		// Creators get the dev fee for item sales.
  }

  Item[] private items;

  /*** 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 CryptoPepeMarketToken() public {
    ceoAddress = msg.sender;
    cooAddress = msg.sender;

	// Restored bag holders
	 _createItem("Feelsgood", 0x7d9450A4E85136f46BA3F519e20Fea52f5BEd063,359808729788989630,"",address(this));
	_createItem("Ree",0x2C3756c4cB4Ff488F666a3856516ba981197f3f3,184801761494400960,"",address(this));
	_createItem("TwoGender",0xb16948C62425ed389454186139cC94178D0eFbAF,359808729788989630,"",address(this));
	_createItem("Gains",0xA69E065734f57B73F17b38436f8a6259cCD090Fd,359808729788989630,"",address(this));
	_createItem("Trump",0xBcce2CE773bE0250bdDDD4487d927aCCd748414F,94916238056430340,"",address(this));
	_createItem("Brain",0xBcce2CE773bE0250bdDDD4487d927aCCd748414F,94916238056430340,"",address(this));
	_createItem("Illuminati",0xbd6A9D2C44b571F33Ee2192BD2d46aBA2866405a,94916238056430340,"",address(this));
	_createItem("Hang",0x2C659bf56012deeEc69Aea6e87b6587664B99550,94916238056430340,"",address(this));
	_createItem("Pepesaur",0x7d9450A4E85136f46BA3F519e20Fea52f5BEd063,184801761494400960,"",address(this));
	_createItem("BlockChain",0x2C3756c4cB4Ff488F666a3856516ba981197f3f3,184801761494400960,"",address(this));
	_createItem("Wanderer",0xBcce2CE773bE0250bdDDD4487d927aCCd748414F,184801761494400960,"",address(this));
	_createItem("Link",0xBcce2CE773bE0250bdDDD4487d927aCCd748414F,184801761494400960,"",address(this));

	// Set top owners.
	topOwner[1] = TopOwner(0x7d9450A4E85136f46BA3F519e20Fea52f5BEd063,350000000000000000); 
    topOwner[2] = TopOwner(0xb16948C62425ed389454186139cC94178D0eFbAF, 350000000000000000); 
    topOwner[3] = TopOwner(0xA69E065734f57B73F17b38436f8a6259cCD090Fd, 350000000000000000); 
	lastBuyer[1] = ceoAddress;
  }

  /*** 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));

    itemIndexToApproved[_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 a new Item with the given name.
  function createContractItem(string _name, bytes32 _message, address _creatoraddress) public onlyCOO {
    _createItem(_name, address(this), startingPrice, _message, _creatoraddress);
  }

  /// @notice Returns all the relevant information about a specific item.
  /// @param _tokenId The tokenId of the item of interest.
  function getItem(uint256 _tokenId) public view returns (
    string itemName,
    uint256 sellingPrice,
    address owner,
	bytes32 itemMessage,
	address creator
  ) {
    Item storage item = items[_tokenId];

    itemName = item.name;
	itemMessage = item.message;
    sellingPrice = itemIndexToPrice[_tokenId];
    owner = itemIndexToOwner[_tokenId];
	creator = item.creatoraddress;
  }

  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 = itemIndexToOwner[_tokenId];
    require(owner != address(0));
  }

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

  // Allows someone to send ether and obtain the token
  function purchase(uint256 _tokenId, bytes32 _message) public payable {
    address oldOwner = itemIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = itemIndexToPrice[_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
    uint256 msgPrice = msg.value;
    require(msgPrice >= sellingPrice);

	// Onwer of the item gets 86%
    uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 86), 100));

	// Top 3 owners get 6% (2% each)
	uint256 twoPercentFee = uint256(SafeMath.mul(SafeMath.div(sellingPrice, 100), 2));
	topOwner[1].addr.transfer(twoPercentFee); 
    topOwner[2].addr.transfer(twoPercentFee); 
    topOwner[3].addr.transfer(twoPercentFee);

	uint256 fourPercentFee = uint256(SafeMath.mul(SafeMath.div(sellingPrice, 100), 4));

	// Transfer 4% to the last buyer
	lastBuyer[1].transfer(fourPercentFee);

	// Transfer 4% to the item creator. (Don't transfer if creator is the contract owner)
	if(items[_tokenId].creatoraddress != address(this)){
		items[_tokenId].creatoraddress.transfer(fourPercentFee);
	}


    // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      itemIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 86);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      itemIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 120), 86);
    } else {
      // third stage
      itemIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 115), 86);
    }

    _transfer(oldOwner, newOwner, _tokenId);
	
    // ## Pay previous tokenOwner if owner is not contract
    if (oldOwner != address(this)) {
      oldOwner.transfer(payment);
    }

	// Update the message of the item 
	items[_tokenId].message = _message;

    TokenSold(_tokenId, sellingPrice, itemIndexToPrice[_tokenId], oldOwner, newOwner);

	// Set last buyer
	lastBuyer[1] = msg.sender;

	// Set next top owner (If applicable)
	if(sellingPrice > topOwner[3].price){
        for(uint8 i = 3; i >= 1; i--){
            if(sellingPrice > topOwner[i].price){
                if(i <= 2){ topOwner[3] = topOwner[2]; }
                if(i <= 1){ topOwner[2] = topOwner[1]; }
                topOwner[i] = TopOwner(msg.sender, sellingPrice);
                break;
            }
        }
    }

	// refund any excess eth to buyer
	uint256 excess = SafeMath.sub(msg.value, sellingPrice);
	msg.sender.transfer(excess);
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return itemIndexToPrice[_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 {
    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 = itemIndexToOwner[_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 social media 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 Items array looking for items 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 totalItems = totalSupply();
      uint256 resultIndex = 0;

      uint256 itemId;
      for (itemId = 0; itemId <= totalItems; itemId++) {
        if (itemIndexToOwner[itemId] == _owner) {
          result[resultIndex] = itemId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return items.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);
  }

  /*** 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 itemIndexToApproved[_tokenId] == _to;
  }

  /// For creating Item
  function _createItem(string _name, address _owner, uint256 _price, bytes32 _message, address _creatoraddress) private {
    Item memory _item = Item({
      name: _name,
	  message: _message,
	  creatoraddress: _creatoraddress
    });
    uint256 newItemId = items.push(_item) - 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(newItemId == uint256(uint32(newItemId)));

    Birth(newItemId, _name, _owner);

    itemIndexToPrice[newItemId] = _price;

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

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == itemIndexToOwner[_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 Item to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of items is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    itemIndexToOwner[_tokenId] = _to;

    // When creating new items _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete itemIndexToApproved[_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

[{"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":"lastBuyer","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":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":"_tokenId","type":"uint256"}],"name":"getItem","outputs":[{"name":"itemName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"itemMessage","type":"bytes32"},{"name":"creator","type":"address"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_message","type":"bytes32"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","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":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_message","type":"bytes32"},{"name":"_creatoraddress","type":"address"}],"name":"createContractItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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"}],"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"}]

606060405266038d7ea4c6800060005566be78bd4c57d0006001556707d72165f25ed00060025534156200003257600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001296040805190810160405280600981526020017f4665656c73676f6f640000000000000000000000000000000000000000000000815250737d9450a4e85136f46ba3f519e20fea52f5bed0636704fe4c22262840be600030620008b86401000000000262002218176401000000009004565b6200019e6040805190810160405280600381526020017f5265650000000000000000000000000000000000000000000000000000000000815250732c3756c4cb4ff488f666a3856516ba981197f3f36702908c3913bd7fc0600030620008b86401000000000262002218176401000000009004565b620002136040805190810160405280600981526020017f54776f47656e646572000000000000000000000000000000000000000000000081525073b16948c62425ed389454186139cc94178d0efbaf6704fe4c22262840be600030620008b86401000000000262002218176401000000009004565b620002886040805190810160405280600581526020017f4761696e7300000000000000000000000000000000000000000000000000000081525073a69e065734f57b73f17b38436f8a6259ccd090fd6704fe4c22262840be600030620008b86401000000000262002218176401000000009004565b620002fd6040805190810160405280600581526020017f5472756d7000000000000000000000000000000000000000000000000000000081525073bcce2ce773be0250bdddd4487d927accd748414f67015135d0ccc51b04600030620008b86401000000000262002218176401000000009004565b620003726040805190810160405280600581526020017f427261696e00000000000000000000000000000000000000000000000000000081525073bcce2ce773be0250bdddd4487d927accd748414f67015135d0ccc51b04600030620008b86401000000000262002218176401000000009004565b620003e76040805190810160405280600a81526020017f496c6c756d696e6174690000000000000000000000000000000000000000000081525073bd6a9d2c44b571f33ee2192bd2d46aba2866405a67015135d0ccc51b04600030620008b86401000000000262002218176401000000009004565b6200045c6040805190810160405280600481526020017f48616e6700000000000000000000000000000000000000000000000000000000815250732c659bf56012deeec69aea6e87b6587664b9955067015135d0ccc51b04600030620008b86401000000000262002218176401000000009004565b620004d16040805190810160405280600881526020017f5065706573617572000000000000000000000000000000000000000000000000815250737d9450a4e85136f46ba3f519e20fea52f5bed0636702908c3913bd7fc0600030620008b86401000000000262002218176401000000009004565b620005466040805190810160405280600a81526020017f426c6f636b436861696e00000000000000000000000000000000000000000000815250732c3756c4cb4ff488f666a3856516ba981197f3f36702908c3913bd7fc0600030620008b86401000000000262002218176401000000009004565b620005bb6040805190810160405280600881526020017f57616e646572657200000000000000000000000000000000000000000000000081525073bcce2ce773be0250bdddd4487d927accd748414f6702908c3913bd7fc0600030620008b86401000000000262002218176401000000009004565b620006306040805190810160405280600481526020017f4c696e6b0000000000000000000000000000000000000000000000000000000081525073bcce2ce773be0250bdddd4487d927accd748414f6702908c3913bd7fc0600030620008b86401000000000262002218176401000000009004565b6040805190810160405280737d9450a4e85136f46ba3f519e20fea52f5bed06373ffffffffffffffffffffffffffffffffffffffff1681526020016704db732547630000815250600360006001815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050604080519081016040528073b16948c62425ed389454186139cc94178d0efbaf73ffffffffffffffffffffffffffffffffffffffff1681526020016704db732547630000815250600360006002815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050604080519081016040528073a69e065734f57b73f17b38436f8a6259ccd090fd73ffffffffffffffffffffffffffffffffffffffff1681526020016704db732547630000815250600360006003815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000ec5565b620008c262000cdb565b6000606060405190810160405280888152602001856000191681526020018473ffffffffffffffffffffffffffffffffffffffff1681525091506001600b805480600101828162000914919062000d1e565b9160005260206000209060030201600085909190915060008201518160000190805190602001906200094892919062000d53565b506020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050500390508063ffffffff1681141515620009ba57600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281888860405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101562000a5857808201518184015260208101905062000a3b565b50505050905090810190601f16801562000a865780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a184600860008381526020019081526020016000208190555062000acf6000878362000ad86401000000000262001fa7176401000000009004565b50505050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151562000c3757600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60606040519081016040528062000cf162000dda565b815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b81548183558181151162000d4e5760030281600302836000526020600020918201910162000d4d919062000dee565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d9657805160ff191683800117855562000dc7565b8280016001018555821562000dc7579182015b8281111562000dc657825182559160200191906001019062000da9565b5b50905062000dd6919062000e51565b5090565b602060405190810160405280600081525090565b62000e4e91905b8082111562000e4a576000808201600062000e11919062000e79565b60018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060030162000df5565b5090565b90565b62000e7691905b8082111562000e7257600081600090555060010162000e58565b5090565b90565b50805460018160011615610100020316600290046000825580601f1062000ea1575062000ec2565b601f01602090049060005260206000209081019062000ec1919062000e51565b5b50565b61263e8062000ed56000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461014e578063095ea7b3146101dc5780630a0f81681461021e5780630b7e9c44146102735780631051db34146102ac57806313238dd6146102d957806318160ddd1461033c57806323b872dd1461036557806327d7874c146103c65780632ba73c15146103ff5780633129e773146104385780636352211e1461055057806370a08231146105b35780638462151c14610600578063880727001461068e57806388888f61146106f157806395d89b4114610716578063a3f4df7e146107a4578063a9059cbb14610832578063b047fb5014610874578063b2e6ceeb146108c9578063b9186d7d146108ec578063e09e251d14610923578063f76f8d78146109ac578063fe9b1a8914610a3a575b600080fd5b341561015957600080fd5b610161610a9d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101e757600080fd5b61021c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ae0565b005b341561022957600080fd5b610231610bb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027e57600080fd5b6102aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bd6565b005b34156102b757600080fd5b6102bf610c96565b604051808215151515815260200191505060405180910390f35b34156102e457600080fd5b6102fa6004808035906020019091905050610c9f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034757600080fd5b61034f610cd2565b6040518082815260200191505060405180910390f35b341561037057600080fd5b6103c4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cdf565b005b34156103d157600080fd5b6103fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d2d565b005b341561040a57600080fd5b610436600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e09565b005b341561044357600080fd5b6104596004808035906020019091905050610ee5565b60405180806020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825287818151815260200191508051906020019080838360005b838110156105115780820151818401526020810190506104f6565b50505050905090810190601f16801561053e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561055b57600080fd5b6105716004808035906020019091905050611037565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105be57600080fd5b6105ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110b0565b6040518082815260200191505060405180910390f35b341561060b57600080fd5b610637600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110f9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561067a57808201518184015260208101905061065f565b505050509050019250505060405180910390f35b341561069957600080fd5b6106af6004808035906020019091905050611230565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610714600480803590602001909190803560001916906020019091905050611263565b005b341561072157600080fd5b610729611b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076957808201518184015260208101905061074e565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107af57600080fd5b6107b7611b83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f75780820151818401526020810190506107dc565b50505050905090810190601f1680156108245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561083d57600080fd5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bbc565b005b341561087f57600080fd5b610887611bf4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108d457600080fd5b6108ea6004808035906020019091905050611c1a565b005b34156108f757600080fd5b61090d6004808035906020019091905050611c8f565b6040518082815260200191505060405180910390f35b341561092e57600080fd5b6109aa600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611cac565b005b34156109b757600080fd5b6109bf611d1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ff5780820151818401526020810190506109e4565b50505050905090810190601f168015610a2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a4557600080fd5b610a5b6004808035906020019091905050611d55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610aa5612418565b6040805190810160405280601181526020017f43727970746f536f6369616c4d65646961000000000000000000000000000000815250905090565b610aea3382611d88565b1515610af557600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c7f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610c8a57600080fd5b610c9381611df4565b50565b60006001905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b80549050905090565b610ce98382611d88565b1515610cf457600080fd5b610cfe8282611f02565b1515610d0957600080fd5b610d1282611f6e565b1515610d1d57600080fd5b610d28838383611fa7565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610dc557600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ea157600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610eed612418565b6000806000806000600b87815481101515610f0457fe5b90600052602060002090600302019050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fac5780601f10610f8157610100808354040283529160200191610fac565b820191906000526020600020905b815481529060010190602001808311610f8f57829003601f168201915b5050505050955080600101549250600860008881526020019081526020016000205494506005600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091939590929450565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110ab57600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61110161242c565b600061110b61242c565b6000806000611119876110b0565b9450600085141561114b5760006040518059106111335750595b90808252806020026020018201604052509550611226565b846040518059106111595750595b90808252806020026020018201604052509350611174610cd2565b925060009150600090505b8281111515611222578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611215578084838151811015156111fe57fe5b906020019060200201818152505081806001019250505b808060010191505061117f565b8395505b5050505050919050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850339750600860008c81526020019081526020016000205496508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515156112fb57600080fd5b61130488611f6e565b151561130f57600080fd5b34955086861015151561132157600080fd5b61133661132f8860566121a9565b60646121e4565b945061134d6113468860646121e4565b60026121a9565b9350600360006001815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156113c657600080fd5b600360006002815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561143d57600080fd5b600360006003815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156114b457600080fd5b6114c96114c28860646121e4565b60046121a9565b9250600460006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561153f57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16600b8c81548110151561156557fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561163557600b8b8154811015156115c357fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561163457600080fd5b5b6001548710156116705761165461164d8860c86121a9565b60566121e4565b600860008d8152602001908152602001600020819055506116d9565b6002548710156116ab5761168f6116888860786121a9565b60566121e4565b600860008d8152602001908152602001600020819055506116d8565b6116c06116b98860736121a9565b60566121e4565b600860008d8152602001908152602001600020819055505b5b6116e489898d611fa7565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151561175a578873ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561175957600080fd5b5b89600b8c81548110151561176a57fe5b906000526020600020906003020160010181600019169055507f366e81d6675b75f581d1b7b428bc717efb1fa8b4bb542c1d26e15a1bc770baad8b88600860008f8152602001908152602001600020548c8c604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a133600460006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360006003815260200190815260200160002060010154871115611ae757600391505b60018260ff16101515611ae657600360008360ff16815260200190815260200160002060010154871115611ad85760028260ff1611151561199457600360006002815260200190815260200160002060036000600381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101559050505b60018260ff16111515611a3e57600360006001815260200190815260200160002060036000600281526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101559050505b60408051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815250600360008460ff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050611ae6565b8180600190039250506118bc565b5b611af134886121ff565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611b3357600080fd5b5050505050505050505050565b611b48612418565b6040805190810160405280601581526020017f43727970746f506570654d61726b6574546f6b656e0000000000000000000000815250905090565b6040805190810160405280601181526020017f43727970746f536f6369616c4d6564696100000000000000000000000000000081525081565b611bc63382611d88565b1515611bd157600080fd5b611bda82611f6e565b1515611be557600080fd5b611bf0338383611fa7565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611c5f82611f6e565b1515611c6a57600080fd5b611c748284611f02565b1515611c7f57600080fd5b611c8a818385611fa7565b505050565b600060086000838152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0857600080fd5b611d1783306000548585612218565b505050565b6040805190810160405280601581526020017f43727970746f506570654d61726b6574546f6b656e000000000000000000000081525081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ea757600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611ea257600080fd5b611eff565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611efe57600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561210557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008060008414156121be57600091506121dd565b82840290508284828115156121cf57fe5b041415156121d957fe5b8091505b5092915050565b60008082848115156121f257fe5b0490508091505092915050565b600082821115151561220d57fe5b818303905092915050565b612220612440565b6000606060405190810160405280888152602001856000191681526020018473ffffffffffffffffffffffffffffffffffffffff1681525091506001600b80548060010182816122709190612481565b9160005260206000209060030201600085909190915060008201518160000190805190602001906122a29291906124b3565b506020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050500390508063ffffffff168114151561231357600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281888860405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156123af578082015181840152602081019050612394565b50505050905090810190601f1680156123dc5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a184600860008381526020019081526020016000208190555061240f60008783611fa7565b50505050505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b606060405190810160405280612454612533565b815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b8154818355818115116124ae576003028160030283600052602060002091820191016124ad9190612547565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124f457805160ff1916838001178555612522565b82800160010185558215612522579182015b82811115612521578251825591602001919060010190612506565b5b50905061252f91906125a5565b5090565b602060405190810160405280600081525090565b6125a291905b8082111561259e576000808201600061256691906125ca565b60018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060030161254d565b5090565b90565b6125c791905b808211156125c35760008160009055506001016125ab565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125f0575061260f565b601f01602090049060005260206000209081019061260e91906125a5565b5b505600a165627a7a72305820f24ecdf0fabb8ec58d73ec86d94e02599635ff6986eac721970080e6561708dc0029

Deployed Bytecode

0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461014e578063095ea7b3146101dc5780630a0f81681461021e5780630b7e9c44146102735780631051db34146102ac57806313238dd6146102d957806318160ddd1461033c57806323b872dd1461036557806327d7874c146103c65780632ba73c15146103ff5780633129e773146104385780636352211e1461055057806370a08231146105b35780638462151c14610600578063880727001461068e57806388888f61146106f157806395d89b4114610716578063a3f4df7e146107a4578063a9059cbb14610832578063b047fb5014610874578063b2e6ceeb146108c9578063b9186d7d146108ec578063e09e251d14610923578063f76f8d78146109ac578063fe9b1a8914610a3a575b600080fd5b341561015957600080fd5b610161610a9d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101e757600080fd5b61021c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ae0565b005b341561022957600080fd5b610231610bb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027e57600080fd5b6102aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bd6565b005b34156102b757600080fd5b6102bf610c96565b604051808215151515815260200191505060405180910390f35b34156102e457600080fd5b6102fa6004808035906020019091905050610c9f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034757600080fd5b61034f610cd2565b6040518082815260200191505060405180910390f35b341561037057600080fd5b6103c4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cdf565b005b34156103d157600080fd5b6103fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d2d565b005b341561040a57600080fd5b610436600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e09565b005b341561044357600080fd5b6104596004808035906020019091905050610ee5565b60405180806020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825287818151815260200191508051906020019080838360005b838110156105115780820151818401526020810190506104f6565b50505050905090810190601f16801561053e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561055b57600080fd5b6105716004808035906020019091905050611037565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105be57600080fd5b6105ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110b0565b6040518082815260200191505060405180910390f35b341561060b57600080fd5b610637600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110f9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561067a57808201518184015260208101905061065f565b505050509050019250505060405180910390f35b341561069957600080fd5b6106af6004808035906020019091905050611230565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610714600480803590602001909190803560001916906020019091905050611263565b005b341561072157600080fd5b610729611b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076957808201518184015260208101905061074e565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107af57600080fd5b6107b7611b83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f75780820151818401526020810190506107dc565b50505050905090810190601f1680156108245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561083d57600080fd5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bbc565b005b341561087f57600080fd5b610887611bf4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108d457600080fd5b6108ea6004808035906020019091905050611c1a565b005b34156108f757600080fd5b61090d6004808035906020019091905050611c8f565b6040518082815260200191505060405180910390f35b341561092e57600080fd5b6109aa600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611cac565b005b34156109b757600080fd5b6109bf611d1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ff5780820151818401526020810190506109e4565b50505050905090810190601f168015610a2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a4557600080fd5b610a5b6004808035906020019091905050611d55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610aa5612418565b6040805190810160405280601181526020017f43727970746f536f6369616c4d65646961000000000000000000000000000000815250905090565b610aea3382611d88565b1515610af557600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c7f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610c8a57600080fd5b610c9381611df4565b50565b60006001905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b80549050905090565b610ce98382611d88565b1515610cf457600080fd5b610cfe8282611f02565b1515610d0957600080fd5b610d1282611f6e565b1515610d1d57600080fd5b610d28838383611fa7565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610dc557600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ea157600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610eed612418565b6000806000806000600b87815481101515610f0457fe5b90600052602060002090600302019050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fac5780601f10610f8157610100808354040283529160200191610fac565b820191906000526020600020905b815481529060010190602001808311610f8f57829003601f168201915b5050505050955080600101549250600860008881526020019081526020016000205494506005600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091939590929450565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110ab57600080fd5b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61110161242c565b600061110b61242c565b6000806000611119876110b0565b9450600085141561114b5760006040518059106111335750595b90808252806020026020018201604052509550611226565b846040518059106111595750595b90808252806020026020018201604052509350611174610cd2565b925060009150600090505b8281111515611222578673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611215578084838151811015156111fe57fe5b906020019060200201818152505081806001019250505b808060010191505061117f565b8395505b5050505050919050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000600560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850339750600860008c81526020019081526020016000205496508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515156112fb57600080fd5b61130488611f6e565b151561130f57600080fd5b34955086861015151561132157600080fd5b61133661132f8860566121a9565b60646121e4565b945061134d6113468860646121e4565b60026121a9565b9350600360006001815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156113c657600080fd5b600360006002815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561143d57600080fd5b600360006003815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f1935050505015156114b457600080fd5b6114c96114c28860646121e4565b60046121a9565b9250600460006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561153f57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16600b8c81548110151561156557fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561163557600b8b8154811015156115c357fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561163457600080fd5b5b6001548710156116705761165461164d8860c86121a9565b60566121e4565b600860008d8152602001908152602001600020819055506116d9565b6002548710156116ab5761168f6116888860786121a9565b60566121e4565b600860008d8152602001908152602001600020819055506116d8565b6116c06116b98860736121a9565b60566121e4565b600860008d8152602001908152602001600020819055505b5b6116e489898d611fa7565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151561175a578873ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561175957600080fd5b5b89600b8c81548110151561176a57fe5b906000526020600020906003020160010181600019169055507f366e81d6675b75f581d1b7b428bc717efb1fa8b4bb542c1d26e15a1bc770baad8b88600860008f8152602001908152602001600020548c8c604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a133600460006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360006003815260200190815260200160002060010154871115611ae757600391505b60018260ff16101515611ae657600360008360ff16815260200190815260200160002060010154871115611ad85760028260ff1611151561199457600360006002815260200190815260200160002060036000600381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101559050505b60018260ff16111515611a3e57600360006001815260200190815260200160002060036000600281526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101559050505b60408051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815250600360008460ff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050611ae6565b8180600190039250506118bc565b5b611af134886121ff565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611b3357600080fd5b5050505050505050505050565b611b48612418565b6040805190810160405280601581526020017f43727970746f506570654d61726b6574546f6b656e0000000000000000000000815250905090565b6040805190810160405280601181526020017f43727970746f536f6369616c4d6564696100000000000000000000000000000081525081565b611bc63382611d88565b1515611bd157600080fd5b611bda82611f6e565b1515611be557600080fd5b611bf0338383611fa7565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611c5f82611f6e565b1515611c6a57600080fd5b611c748284611f02565b1515611c7f57600080fd5b611c8a818385611fa7565b505050565b600060086000838152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0857600080fd5b611d1783306000548585612218565b505050565b6040805190810160405280601581526020017f43727970746f506570654d61726b6574546f6b656e000000000000000000000081525081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ea757600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611ea257600080fd5b611eff565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611efe57600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561210557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008060008414156121be57600091506121dd565b82840290508284828115156121cf57fe5b041415156121d957fe5b8091505b5092915050565b60008082848115156121f257fe5b0490508091505092915050565b600082821115151561220d57fe5b818303905092915050565b612220612440565b6000606060405190810160405280888152602001856000191681526020018473ffffffffffffffffffffffffffffffffffffffff1681525091506001600b80548060010182816122709190612481565b9160005260206000209060030201600085909190915060008201518160000190805190602001906122a29291906124b3565b506020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050500390508063ffffffff168114151561231357600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281888860405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156123af578082015181840152602081019050612394565b50505050905090810190601f1680156123dc5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a184600860008381526020019081526020016000208190555061240f60008783611fa7565b50505050505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b606060405190810160405280612454612533565b815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b8154818355818115116124ae576003028160030283600052602060002091820191016124ad9190612547565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124f457805160ff1916838001178555612522565b82800160010185558215612522579182015b82811115612521578251825591602001919060010190612506565b5b50905061252f91906125a5565b5090565b602060405190810160405280600081525090565b6125a291905b8082111561259e576000808201600061256691906125ca565b60018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060030161254d565b5090565b90565b6125c791905b808211156125c35760008160009055506001016125ab565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125f0575061260f565b601f01602090049060005260206000209081019061260e91906125a5565b5b505600a165627a7a72305820f24ecdf0fabb8ec58d73ec86d94e02599635ff6986eac721970080e6561708dc0029

Swarm Source

bzzr://f24ecdf0fabb8ec58d73ec86d94e02599635ff6986eac721970080e6561708dc

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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