Latest 25 transactions from a total of 2175 transactions

TxHash Age From To Value [TxFee]
0x158c9955ff903de69ca0ebb8d9f53d336b0878a4dee758c6143b04f5dbb15c2612 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x9e282cfa8a7a183499069f460296ba69cef724ea29bf05c73bddec199033a59a12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x459c2c1a218ebd5a3bca2ad6d232d2e8d11a7d8b1a2bd7af13a961966cff37ef12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xc3c77097c27dfae4c3befd4533721c252b242bf99ac26cb46a2e0e67c3e1f1b012 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
0x7ce8d464b11d0838d5fb1ae2b8ac457ae283154d08571baa11890e91aa6c210212 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x8698e071bc476269883a07ee6d252f9d7061dcaa13dd01f0b49b156d8b47428112 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x061efe9f15ba5d0c6db350dfc850a1f9c16c9595902cc2dc69b60006209b5ae212 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x7f55c8da847a090d1225d3f90b1ed8624b342e0db9472ff71c0b03be0399577912 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x4e2b31f48e44800d0edc756aba829e22d548377d060b8ddcf84d741859cf5edb12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xfa117c184a13481c532a0379a64b017ca758c2d942fa6d59ad8d5977b2f9910512 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145626
0x9085bec3487d269692b15fca877a9f10d68639dda2070c5804d319ef3d110e6312 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x46fa5445e23d1c55da6b2e81dcb8fa53455965487458a1c34f97522c1c3b677212 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x28d8927b1ade8ed770d380f0a1d6b41353ddf36bcc91b413d73f964db437806d12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
0x4ae02002e5c224df01493e6e32f9f3b59fd29de27c0ead8a5b35c8a72248386d12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145626
0x241e76f797d8bc91e81a847574f42fca6ed5aaa8ce48d3eae6817c21a1d6dc9e12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xc17db2ab8d291027171649f6bb1dca3a232d1e120ff76845e897a8782540bbea12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x351ff7ff67accd9aedd487dcca6b7456bf65e3b5d97f1c7a3b0c0f36a1fb8dfa12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x1045e948f9cfffdd2aeaf558c01cbfaf99fa4ea89d8ed29819dc9d77a0396d0412 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
0x91e3acf3dc9a50741e4ed7e643279de4a7d36f3ef325134f574c0940563fed9d12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xdc20ff4eb1fadabeb49c1dd6100e6508231a2e4d7d85e83ee38ba2acc102699112 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
0x2058fd0ca04f051f28435252934b102ac0aeba9927c1e2acf1e83e6d2eab1a2d12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xb2c2840b648361210b5f659695e267a21bd2f2913da086ce2fc75756243d31cb12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0x5321e0685041d71aa26605b13401cc36099068c10c09ce8a93963e05dac2974712 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
0x2b4b9e7a74bbe7ba8e2d70b4542f9b1fc92d91a6bd97fe795c43b4c26ce25e7212 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.00014569
0xc5530c7c9209e52aee479c3787d51683deb4422c769c29c5ae0b20ccfaa5808e12 days 17 hrs ago0xf51ee496342b485e6006aeaf85fa9d9e24785c05  IN   0x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether0.000145754
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x1365d5e91bfd79eed53c110a90c8a17c71c24d950095bfdc8758d1aa9a3b9caf457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x1365d5e91bfd79eed53c110a90c8a17c71c24d950095bfdc8758d1aa9a3b9caf457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x1365d5e91bfd79eed53c110a90c8a17c71c24d950095bfdc8758d1aa9a3b9caf457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x1365d5e91bfd79eed53c110a90c8a17c71c24d950095bfdc8758d1aa9a3b9caf457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x1365d5e91bfd79eed53c110a90c8a17c71c24d950095bfdc8758d1aa9a3b9caf457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4ff7e1a68cb76b6e68954b6ba56f6d7cc32588b28a4de60299351ad591734896457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4ff7e1a68cb76b6e68954b6ba56f6d7cc32588b28a4de60299351ad591734896457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4ff7e1a68cb76b6e68954b6ba56f6d7cc32588b28a4de60299351ad591734896457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4ff7e1a68cb76b6e68954b6ba56f6d7cc32588b28a4de60299351ad591734896457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4ff7e1a68cb76b6e68954b6ba56f6d7cc32588b28a4de60299351ad591734896457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0xae364bee6c8f2520462ec0bb10babe2f4e6cd4430ba8431354e0afef6a092397457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0xae364bee6c8f2520462ec0bb10babe2f4e6cd4430ba8431354e0afef6a092397457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0xae364bee6c8f2520462ec0bb10babe2f4e6cd4430ba8431354e0afef6a092397457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0xae364bee6c8f2520462ec0bb10babe2f4e6cd4430ba8431354e0afef6a092397457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0xae364bee6c8f2520462ec0bb10babe2f4e6cd4430ba8431354e0afef6a092397457272412 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x5d4e6b08aa832d0763768bbbd8c53ed5c1f4ab795dcc3e3ae9238da4d02ec8ab457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x5d4e6b08aa832d0763768bbbd8c53ed5c1f4ab795dcc3e3ae9238da4d02ec8ab457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x5d4e6b08aa832d0763768bbbd8c53ed5c1f4ab795dcc3e3ae9238da4d02ec8ab457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x5d4e6b08aa832d0763768bbbd8c53ed5c1f4ab795dcc3e3ae9238da4d02ec8ab457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x5d4e6b08aa832d0763768bbbd8c53ed5c1f4ab795dcc3e3ae9238da4d02ec8ab457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4dd5808adb265d9eb65d6730bf045b72fb11d4d3209977f48e81617b8f8b43dc457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4dd5808adb265d9eb65d6730bf045b72fb11d4d3209977f48e81617b8f8b43dc457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4dd5808adb265d9eb65d6730bf045b72fb11d4d3209977f48e81617b8f8b43dc457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4dd5808adb265d9eb65d6730bf045b72fb11d4d3209977f48e81617b8f8b43dc457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
0x4dd5808adb265d9eb65d6730bf045b72fb11d4d3209977f48e81617b8f8b43dc457272312 days 17 hrs ago0x5d461018b698afd109ba6339035f9ad26066e7240x72860be2a7941bc42d3eed66085ff587ac9de5a60 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: AuctionHouseBidRegistry
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;

// imported contracts/proposals/OCP-IP-1/BlindBidRegistryProxiable.sol
// imported contracts/proposals/OCP-IP-1/BlindBidRegistry.sol
// imported contracts/proposals/OCP-IP-1/BidRegistry.sol
// imported node_modules/openzeppelin-solidity/contracts/ownership/Secondary.sol
/**
 * @title Secondary
 * @dev A Secondary contract can only be used by its primary account (the one that created it)
 */
contract Secondary {
  address private _primary;
  event PrimaryTransferred(
    address recipient
  );
  /**
   * @dev Sets the primary account to the one that is creating the Secondary contract.
   */
  constructor() internal {
    _primary = msg.sender;
    emit PrimaryTransferred(_primary);
  }
  /**
   * @dev Reverts if called from any account other than the primary.
   */
  modifier onlyPrimary() {
    require(msg.sender == _primary);
    _;
  }
  /**
   * @return the address of the primary.
   */
  function primary() public view returns (address) {
    return _primary;
  }
  /**
   * @dev Transfers contract to a new primary.
   * @param recipient The address of new primary. 
   */
  function transferPrimary(address recipient) public onlyPrimary {
    require(recipient != address(0));
    _primary = recipient;
    emit PrimaryTransferred(_primary);
  }
}

// imported contracts/proposals/OCP-IP-1/IBidRegistry.sol
// implementation from https://github.com/open-city-protocol/OCP-IPs/blob/jeichel/ocp-ip-1/OCP-IPs/ocp-ip-1.md
contract IBidRegistry {
  enum AuctionStatus {
    Undetermined,
    Lost,
    Won
  }
  enum BidState {
    Created,
    Submitted,
    Lost,
    Won,
    Refunded,
    Allocated,
    Redeemed
  }
  event BidCreated(
    bytes32 indexed hash,
    address creator,
    uint256 indexed auction,
    address indexed bidder,
    bytes32 schema,
    bytes32 licenseTerms,
    uint256 durationSec,
    uint256 bidPrice,
    uint256 updatedAtUtcSec
  );
  event BidAuctionStatusChange(bytes32 indexed hash, uint8 indexed auctionStatus, uint256 updatedAtUtcSec);
  event BidStateChange(bytes32 indexed hash, uint8 indexed bidState, uint256 updatedAtUtcSec);
  event BidClearingPriceChange(bytes32 indexed hash, uint256 clearingPrice, uint256 updatedAtUtcSec);
  function hashBid(
    address _creator,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public constant returns(bytes32);
  function verifyStoredData(bytes32 hash) public view returns(bool);
  function creator(bytes32 hash) public view returns(address);
  function auction(bytes32 hash) public view returns(uint256);
  function bidder(bytes32 hash) public view returns(address);
  function schema(bytes32 hash) public view returns(bytes32);
  function licenseTerms(bytes32 hash) public view returns(bytes32);
  function durationSec(bytes32 hash) public view returns(uint256);
  function bidPrice(bytes32 hash) public view returns(uint256);
  function clearingPrice(bytes32 hash) public view returns(uint256);
  function auctionStatus(bytes32 hash) public view returns(uint8);
  function bidState(bytes32 hash) public view returns(uint8);
  function allocationFee(bytes32 hash) public view returns(uint256);
  function createBid(
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public;
  function setAllocationFee(bytes32 hash, uint256 fee) public;
  function setAuctionStatus(bytes32 hash, uint8 _auctionStatus) public;
  function setBidState(bytes32 hash, uint8 _bidState) public;
  function setClearingPrice(bytes32 hash, uint256 _clearingPrice) public;
}

contract BidRegistry is Secondary, IBidRegistry {
  uint256 public constant INIT_CLEARING_PRICE = 0;
  AuctionStatus public constant INIT_AUCTION_STATUS = AuctionStatus.Undetermined;
  BidState public constant INIT_BID_STATE = BidState.Created;
  uint256 public constant INIT_ALLOCATION_FEE = 0;
  struct Bid {
    // read-only after init
    address creator;
    uint256 auction;
    address bidder;
    bytes32 schema;
    bytes32 licenseTerms;
    uint256 durationSec;
    uint256 bidPrice;
    // changes through state transitions
    uint256 clearingPrice;
    uint8 auctionStatus;
    uint8 bidState;
    uint256 allocationFee;
  }
  mapping(bytes32 => Bid) public registry;
  function hashBid(
    address _creator,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public constant returns(bytes32) {
    return keccak256(abi.encodePacked(
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    ));
  }
  function verifyStoredData(bytes32 hash) public view returns(bool) {
    Bid memory bid = registry[hash];
    bytes32 storedBidHash = hashBid(
      bid.creator,
      bid.auction,
      bid.bidder,
      bid.schema,
      bid.licenseTerms,
      bid.durationSec,
      bid.bidPrice
    );
    return storedBidHash == hash;
  }
  function creator(bytes32 hash) public view returns(address) {
    return registry[hash].creator;
  }
  function auction(bytes32 hash) public view returns(uint256) {
    return registry[hash].auction;
  }
  function bidder(bytes32 hash) public view returns(address) {
    return registry[hash].bidder;
  }
  function schema(bytes32 hash) public view returns(bytes32) {
    return registry[hash].schema;
  }
  function licenseTerms(bytes32 hash) public view returns(bytes32) {
    return registry[hash].licenseTerms;
  }
  function durationSec(bytes32 hash) public view returns(uint256) {
    return registry[hash].durationSec;
  }
  function bidPrice(bytes32 hash) public view returns(uint256) {
    return registry[hash].bidPrice;
  }
  function clearingPrice(bytes32 hash) public view returns(uint) {
    return registry[hash].clearingPrice;
  }
  function auctionStatus(bytes32 hash) public view returns(uint8) {
    return registry[hash].auctionStatus;
  }
  function bidState(bytes32 hash) public view returns(uint8) {
    return registry[hash].bidState;
  }
  function allocationFee(bytes32 hash) public view returns(uint256) {
    return registry[hash].allocationFee;
  }
  function createBid(
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint _durationSec,
    uint _bidPrice
  ) public {
    _createBid(
      msg.sender,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    );
  }
  function setAllocationFee(bytes32 hash, uint256 fee) public onlyPrimary {
    _setAllocationFee(hash, fee);
  }
  function setAuctionStatus(bytes32 hash, uint8 _auctionStatus) public onlyPrimary {
    _setAuctionStatus(hash, _auctionStatus);
  }
  function setBidState(bytes32 hash, uint8 _bidState) public onlyPrimary {
    _setBidState(hash, _bidState);
  }
  function setClearingPrice(bytes32 hash, uint256 _clearingPrice) public onlyPrimary {
    _setClearingPrice(hash, _clearingPrice);
  }
  function _createBid(
    address _creator,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint _durationSec,
    uint _bidPrice
  ) internal {
    bytes32 hash = hashBid(
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    );
    registry[hash] = Bid(
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice,
      INIT_CLEARING_PRICE,
      uint8(INIT_AUCTION_STATUS),
      uint8(INIT_BID_STATE),
      INIT_ALLOCATION_FEE
    );
    emit BidCreated(
      hash,
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice,
      now // solhint-disable-line not-rely-on-time
    );
  }
  function _setAllocationFee(bytes32 hash, uint256 fee) internal {
    registry[hash].allocationFee = fee;
  }
  function _setAuctionStatus(bytes32 hash, uint8 _auctionStatus) internal {
    registry[hash].auctionStatus = _auctionStatus;
    emit BidAuctionStatusChange(hash, _auctionStatus, now); // solhint-disable-line
  }
  function _setBidState(bytes32 hash, uint8 _bidState) internal {
    registry[hash].bidState = _bidState;
    emit BidStateChange(hash, _bidState, now); // solhint-disable-line
  }
  function _setClearingPrice(bytes32 hash, uint256 _clearingPrice) internal {
    registry[hash].clearingPrice = _clearingPrice;
    emit BidClearingPriceChange(hash, _clearingPrice, now); // solhint-disable-line
  }
}

// imported contracts/proposals/OCP-IP-1/IBlindBidRegistry.sol
// implementation from https://github.com/open-city-protocol/OCP-IPs/blob/jeichel/ocp-ip-1/OCP-IPs/ocp-ip-1.md
contract IBlindBidRegistry is IBidRegistry {
  event BlindBidCreated(
    bytes32 indexed hash,
    address creator,
    uint256 indexed auction,
    uint256 updatedAtUtcSec
  );
  event BlindBidRevealed(
    bytes32 indexed hash,
    address creator,
    uint256 indexed auction,
    address indexed bidder,
    bytes32 schema,
    bytes32 licenseTerms,
    uint256 durationSec,
    uint256 bidPrice,
    uint256 updatedAtUtcSec
  );
  enum BlindBidState {
    // must match IBidRegistry.BidState
    Created,
    Submitted,
    Lost,
    Won,
    Refunded,
    Allocated,
    Redeemed,
    // new states
    Revealed
  }
  function createBid(bytes32 hash, uint256 _auction) public;
  function revealBid(
    bytes32 hash,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public;
}

contract BlindBidRegistry is BidRegistry, IBlindBidRegistry {
  address public constant BLIND_BIDDER = 0;
  bytes32 public constant BLIND_SCHEMA = 0x0;
  bytes32 public constant BLIND_LICENSE = 0x0;
  uint256 public constant BLIND_DURATION = 0;
  uint256 public constant BLIND_PRICE = 0;
  function createBid(bytes32 hash, uint256 _auction) public {
    _createBid(hash, msg.sender, _auction);
  }
  function revealBid(
    bytes32 hash,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public {
    _revealBid(
      hash,
      msg.sender,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    );
  }
  function _createBid(bytes32 hash, address _creator, uint256 _auction) internal {
    registry[hash] = Bid(
      _creator,
      _auction,
      BLIND_BIDDER,
      BLIND_SCHEMA,
      BLIND_LICENSE,
      BLIND_DURATION,
      BLIND_PRICE,
      INIT_CLEARING_PRICE,
      uint8(INIT_AUCTION_STATUS),
      uint8(INIT_BID_STATE),
      INIT_ALLOCATION_FEE
    );
    emit BlindBidCreated(
      hash,
      _creator,
      _auction,
      now // solhint-disable-line not-rely-on-time
    );
  }
  function _revealBid(
    bytes32 hash,
    address _creator,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) internal {
    require(!verifyStoredData(hash));
    require(registry[hash].creator == _creator);
    require(registry[hash].auction == _auction);
    bytes32 revealedHash = hashBid(
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    );
    require(revealedHash == hash);
    registry[hash] = Bid(
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice,
      INIT_CLEARING_PRICE,
      uint8(INIT_AUCTION_STATUS),
      bidState(hash),
      INIT_ALLOCATION_FEE
    );
    emit BlindBidRevealed(
      hash,
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice,
      now // solhint-disable-line not-rely-on-time
    );
  }
}

// imported contracts/proposals/OCP-IP-4/Proxiable.sol
// imported contracts/access/roles/ProxyManagerRole.sol
// imported node_modules/openzeppelin-solidity/contracts/access/Roles.sol
/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
  struct Role {
    mapping (address => bool) bearer;
  }
  /**
   * @dev give an account access to this role
   */
  function add(Role storage role, address account) internal {
    require(account != address(0));
    require(!has(role, account));
    role.bearer[account] = true;
  }
  /**
   * @dev remove an account's access to this role
   */
  function remove(Role storage role, address account) internal {
    require(account != address(0));
    require(has(role, account));
    role.bearer[account] = false;
  }
  /**
   * @dev check if an account has this role
   * @return bool
   */
  function has(Role storage role, address account)
    internal
    view
    returns (bool)
  {
    require(account != address(0));
    return role.bearer[account];
  }
}

contract ProxyManagerRole {
  using Roles for Roles.Role;
  event ProxyManagerAdded(address indexed account);
  event ProxyManagerRemoved(address indexed account);
  Roles.Role private proxyManagers;
  constructor() public {
    proxyManagers.add(msg.sender);
  }
  modifier onlyProxyManager() {
    require(isProxyManager(msg.sender));
    _;
  }
  function isProxyManager(address account) public view returns (bool) {
    return proxyManagers.has(account);
  }
  function addProxyManager(address account) public onlyProxyManager {
    proxyManagers.add(account);
    emit ProxyManagerAdded(account);
  }
  function renounceProxyManager() public {
    proxyManagers.remove(msg.sender);
  }
  function _removeProxyManager(address account) internal {
    proxyManagers.remove(account);
    emit ProxyManagerRemoved(account);
  }
}

// implementation from https://github.com/open-city-protocol/OCP-IPs/blob/master/OCP-IPs/ocp-ip-4.md
contract Proxiable is ProxyManagerRole {
  mapping(address => bool) private _globalProxies; // proxy -> valid
  mapping(address => mapping(address => bool)) private _senderProxies; // sender -> proxy -> valid
  event ProxyAdded(address indexed proxy, uint256 updatedAtUtcSec);
  event ProxyRemoved(address indexed proxy, uint256 updatedAtUtcSec);
  event ProxyForSenderAdded(address indexed proxy, address indexed sender, uint256 updatedAtUtcSec);
  event ProxyForSenderRemoved(address indexed proxy, address indexed sender, uint256 updatedAtUtcSec);
  modifier proxyOrSender(address claimedSender) {
    require(isProxyOrSender(claimedSender));
    _;
  }
  function isProxyOrSender(address claimedSender) public view returns (bool) {
    return msg.sender == claimedSender ||
    _globalProxies[msg.sender] ||
    _senderProxies[claimedSender][msg.sender];
  }
  function isProxy(address proxy) public view returns (bool) {
    return _globalProxies[proxy];
  }
  function isProxyForSender(address proxy, address sender) public view returns (bool) {
    return _senderProxies[sender][proxy];
  }
  function addProxy(address proxy) public onlyProxyManager {
    require(!_globalProxies[proxy]);
    _globalProxies[proxy] = true;
    emit ProxyAdded(proxy, now); // solhint-disable-line
  }
  function removeProxy(address proxy) public onlyProxyManager {
    require(_globalProxies[proxy]);
    delete _globalProxies[proxy];
    emit ProxyRemoved(proxy, now); // solhint-disable-line
  }
  function addProxyForSender(address proxy, address sender) public proxyOrSender(sender) {
    require(!_senderProxies[sender][proxy]);
    _senderProxies[sender][proxy] = true;
    emit ProxyForSenderAdded(proxy, sender, now); // solhint-disable-line
  }
  function removeProxyForSender(address proxy, address sender) public proxyOrSender(sender) {
    require(_senderProxies[sender][proxy]);
    delete _senderProxies[sender][proxy];
    emit ProxyForSenderRemoved(proxy, sender, now); // solhint-disable-line
  }
}

contract BlindBidRegistryProxiable is BlindBidRegistry, Proxiable {
  function createBid(bytes32 hash, address _creator, uint256 _auction) public proxyOrSender(_creator) {
    super._createBid(hash, _creator, _auction);
  }
  function revealBid(
    bytes32 hash,
    address _creator,
    uint256 _auction,
    address _bidder,
    bytes32 _schema,
    bytes32 _licenseTerms,
    uint256 _durationSec,
    uint256 _bidPrice
  ) public proxyOrSender(_creator) {
    super._revealBid(
      hash,
      _creator,
      _auction,
      _bidder,
      _schema,
      _licenseTerms,
      _durationSec,
      _bidPrice
    );
  }
}

contract AuctionHouseBidRegistry is BlindBidRegistryProxiable {
  constructor(address auctionBiddingComponent) public {
    transferPrimary(auctionBiddingComponent);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"fee","type":"uint256"}],"name":"setAllocationFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"schema","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"claimedSender","type":"address"}],"name":"isProxyOrSender","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"allocationFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_auction","type":"uint256"}],"name":"createBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addProxyManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_creator","type":"address"},{"name":"_auction","type":"uint256"},{"name":"_bidder","type":"address"},{"name":"_schema","type":"bytes32"},{"name":"_licenseTerms","type":"bytes32"},{"name":"_durationSec","type":"uint256"},{"name":"_bidPrice","type":"uint256"}],"name":"revealBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"bidState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_creator","type":"address"},{"name":"_auction","type":"uint256"}],"name":"createBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_auction","type":"uint256"},{"name":"_bidder","type":"address"},{"name":"_schema","type":"bytes32"},{"name":"_licenseTerms","type":"bytes32"},{"name":"_durationSec","type":"uint256"},{"name":"_bidPrice","type":"uint256"}],"name":"createBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"transferPrimary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"proxy","type":"address"}],"name":"addProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BLIND_SCHEMA","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_clearingPrice","type":"uint256"}],"name":"setClearingPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"proxy","type":"address"}],"name":"isProxy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"proxy","type":"address"},{"name":"sender","type":"address"}],"name":"addProxyForSender","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceProxyManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"bidPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"proxy","type":"address"},{"name":"sender","type":"address"}],"name":"isProxyForSender","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_auction","type":"uint256"},{"name":"_bidder","type":"address"},{"name":"_schema","type":"bytes32"},{"name":"_licenseTerms","type":"bytes32"},{"name":"_durationSec","type":"uint256"},{"name":"_bidPrice","type":"uint256"}],"name":"revealBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INIT_CLEARING_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BLIND_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INIT_BID_STATE","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"auction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BLIND_LICENSE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"registry","outputs":[{"name":"creator","type":"address"},{"name":"auction","type":"uint256"},{"name":"bidder","type":"address"},{"name":"schema","type":"bytes32"},{"name":"licenseTerms","type":"bytes32"},{"name":"durationSec","type":"uint256"},{"name":"bidPrice","type":"uint256"},{"name":"clearingPrice","type":"uint256"},{"name":"auctionStatus","type":"uint8"},{"name":"bidState","type":"uint8"},{"name":"allocationFee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"clearingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"verifyStoredData","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INIT_ALLOCATION_FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"durationSec","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_bidState","type":"uint8"}],"name":"setBidState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"auctionStatus","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"proxy","type":"address"}],"name":"removeProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"primary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"_auctionStatus","type":"uint8"}],"name":"setAuctionStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BLIND_BIDDER","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INIT_AUCTION_STATUS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"bidder","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BLIND_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"licenseTerms","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isProxyManager","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_creator","type":"address"},{"name":"_auction","type":"uint256"},{"name":"_bidder","type":"address"},{"name":"_schema","type":"bytes32"},{"name":"_licenseTerms","type":"bytes32"},{"name":"_durationSec","type":"uint256"},{"name":"_bidPrice","type":"uint256"}],"name":"hashBid","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"proxy","type":"address"},{"name":"sender","type":"address"}],"name":"removeProxyForSender","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"auctionBiddingComponent","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"proxy","type":"address"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"ProxyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"proxy","type":"address"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"ProxyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"proxy","type":"address"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"ProxyForSenderAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"proxy","type":"address"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"ProxyForSenderRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"ProxyManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"ProxyManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"creator","type":"address"},{"indexed":true,"name":"auction","type":"uint256"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BlindBidCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"creator","type":"address"},{"indexed":true,"name":"auction","type":"uint256"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"schema","type":"bytes32"},{"indexed":false,"name":"licenseTerms","type":"bytes32"},{"indexed":false,"name":"durationSec","type":"uint256"},{"indexed":false,"name":"bidPrice","type":"uint256"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BlindBidRevealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"creator","type":"address"},{"indexed":true,"name":"auction","type":"uint256"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"schema","type":"bytes32"},{"indexed":false,"name":"licenseTerms","type":"bytes32"},{"indexed":false,"name":"durationSec","type":"uint256"},{"indexed":false,"name":"bidPrice","type":"uint256"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BidCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"auctionStatus","type":"uint8"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BidAuctionStatusChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"bidState","type":"uint8"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BidStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"clearingPrice","type":"uint256"},{"indexed":false,"name":"updatedAtUtcSec","type":"uint256"}],"name":"BidClearingPriceChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"}],"name":"PrimaryTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040523480156200001157600080fd5b506040516020806200331583398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16200011d3360026200013e64010000000002620024bf179091906401000000009004565b620001378162000201640100000000026401000000009004565b50620003f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200017b57600080fd5b62000196828262000361640100000000026401000000009004565b151515620001a357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200025d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200029a57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200039f57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612f0f80620004066000396000f300608060405260043610610219576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062f1c7ec1461021e578063072b9cf2146102595780630a0fac2b146102a65780630c5f9a60146103015780631277b0c91461034657806313bbae9b1461038157806313e2cae1146103c45780631bbce9a21461046f5780631c997344146104ba578063218bc5ec146105155780632348238c1461059257806323b11d8d146105d5578063282b7b74146106185780632888c7011461064b57806329710388146106865780633d7bed99146106e15780634e4fbee11461074457806359faf0621461075b5780635b791420146107a05780635e734f5c1461081b57806361f9da1c146108a657806365da9068146108d15780636ea880f0146108fc578063715ede9414610935578063761a79e91461097a5780637ef50298146109ad5780637fe551fd14610aac5780638121b0d414610af15780638a3fdbbc14610b3a57806399f6021d14610b655780639f5ac8f714610baa578063af2e285c14610c1b578063b060332614610c59578063be116c3b14610ca4578063c6dbdf6114610ce7578063cceb921414610d3e578063cdb93b7614610d7c578063da44f13214610dd3578063e90acd5314610e0c578063edc9f0ba14610e7d578063ef19792a14610ea8578063f25ebdad14610ef5578063f5f5bb3b14610f50578063fa27e07014611009575b600080fd5b34801561022a57600080fd5b5061025760048036038101908080356000191690602001909291908035906020019092919050505061106c565b005b34801561026557600080fd5b5061028860048036038101908080356000191690602001909291905050506110d5565b60405180826000191660001916815260200191505060405180910390f35b3480156102b257600080fd5b506102e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110fd565b604051808215151515815260200191505060405180910390f35b34801561030d57600080fd5b50610330600480360381019080803560001916906020019092919050505061121a565b6040518082815260200191505060405180910390f35b34801561035257600080fd5b5061037f600480360381019080803560001916906020019092919080359060200190929190505050611242565b005b34801561038d57600080fd5b506103c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611251565b005b3480156103d057600080fd5b5061046d6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803560001916906020019092919080359060200190929190803590602001909291905050506112bf565b005b34801561047b57600080fd5b5061049e60048036038101908080356000191690602001909291905050506112ef565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104c657600080fd5b506105136004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611324565b005b34801561052157600080fd5b5061059060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291908035600019169060200190929190803590602001909291908035906020019092919050505061134a565b005b34801561059e57600080fd5b506105d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611361565b005b3480156105e157600080fd5b50610616600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114bf565b005b34801561062457600080fd5b5061062d6115d5565b60405180826000191660001916815260200191505060405180910390f35b34801561065757600080fd5b506106846004803603810190808035600019169060200190929190803590602001909291905050506115dd565b005b34801561069257600080fd5b506106c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611646565b604051808215151515815260200191505060405180910390f35b3480156106ed57600080fd5b50610742600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169c565b005b34801561075057600080fd5b50610759611846565b005b34801561076757600080fd5b5061078a600480360381019080803560001916906020019092919050505061185c565b6040518082815260200191505060405180910390f35b3480156107ac57600080fd5b50610801600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b604051808215151515815260200191505060405180910390f35b34801561082757600080fd5b506108a4600480360381019080803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080356000191690602001909291908035906020019092919080359060200190929190505050611918565b005b3480156108b257600080fd5b506108bb611931565b6040518082815260200191505060405180910390f35b3480156108dd57600080fd5b506108e6611936565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b5061091161193b565b6040518082600681111561092157fe5b60ff16815260200191505060405180910390f35b34801561094157600080fd5b506109646004803603810190808035600019169060200190929190505050611940565b6040518082815260200191505060405180910390f35b34801561098657600080fd5b5061098f611968565b60405180826000191660001916815260200191505060405180910390f35b3480156109b957600080fd5b506109dc6004803603810190808035600019169060200190929190505050611970565b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001896000191660001916815260200188600019166000191681526020018781526020018681526020018581526020018460ff1660ff1681526020018360ff1660ff1681526020018281526020019b50505050505050505050505060405180910390f35b348015610ab857600080fd5b50610adb6004803603810190808035600019169060200190929190505050611a24565b6040518082815260200191505060405180910390f35b348015610afd57600080fd5b50610b206004803603810190808035600019169060200190929190505050611a4c565b604051808215151515815260200191505060405180910390f35b348015610b4657600080fd5b50610b4f611bff565b6040518082815260200191505060405180910390f35b348015610b7157600080fd5b50610b946004803603810190808035600019169060200190929190505050611c04565b6040518082815260200191505060405180910390f35b348015610bb657600080fd5b50610bd96004803603810190808035600019169060200190929190505050611c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2757600080fd5b50610c576004803603810190808035600019169060200190929190803560ff169060200190929190505050611c74565b005b348015610c6557600080fd5b50610c886004803603810190808035600019169060200190929190505050611cdd565b604051808260ff1660ff16815260200191505060405180910390f35b348015610cb057600080fd5b50610ce5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d12565b005b348015610cf357600080fd5b50610cfc611e1e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d4a57600080fd5b50610d7a6004803603810190808035600019169060200190929190803560ff169060200190929190505050611e47565b005b348015610d8857600080fd5b50610d91611eb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ddf57600080fd5b50610de8611eb5565b60405180826002811115610df857fe5b60ff16815260200191505060405180910390f35b348015610e1857600080fd5b50610e3b6004803603810190808035600019169060200190929190505050611eba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e8957600080fd5b50610e92611f02565b6040518082815260200191505060405180910390f35b348015610eb457600080fd5b50610ed76004803603810190808035600019169060200190929190505050611f07565b60405180826000191660001916815260200191505060405180910390f35b348015610f0157600080fd5b50610f36600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2f565b604051808215151515815260200191505060405180910390f35b348015610f5c57600080fd5b50610feb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080356000191690602001909291908035906020019092919080359060200190929190505050611f4c565b60405180826000191660001916815260200191505060405180910390f35b34801561101557600080fd5b5061106a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612093565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c757600080fd5b6110d18282612233565b5050565b6000600160008360001916600019168152602001908152602001600020600301549050919050565b60008173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111825750600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806112135750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b6000600160008360001916600019168152602001908152602001600020600901549050919050565b61124d82338361225a565b5050565b61125a33611f2f565b151561126557600080fd5b6112798160026124bf90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f7fd9388eed61d6c8286637fdf1afc25624585cab358450328dd43b0c7aeed95b60405160405180910390a250565b866112c9816110fd565b15156112d457600080fd5b6112e4898989898989898961256f565b505050505050505050565b600060016000836000191660001916815260200190815260200160002060080160019054906101000a900460ff169050919050565b8161132e816110fd565b151561133957600080fd5b61134484848461225a565b50505050565b611359338787878787876128f4565b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113bc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113f857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6114c833611f2f565b15156114d357600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561152c57600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fb6a7032fe3eb4e07207181a752f893754c0a19f7188c7be0221a456cbec6ee5c426040518082815260200191505060405180910390a250565b600060010281565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163857600080fd5b6116428282612bac565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b806116a6816110fd565b15156116b157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561174757600080fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f03eb2e619f22c50c782751f77c71c7cad6ce3840c208a3a65974cfee0bc54bbf426040518082815260200191505060405180910390a3505050565b61185a336002612c1790919063ffffffff16565b565b6000600160008360001916600019168152602001908152602001600020600601549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611928873388888888888861256f565b50505050505050565b600081565b600081565b600081565b6000600160008360001916600019168152602001908152602001600020600101549050919050565b600060010281565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900460ff16908060080160019054906101000a900460ff1690806009015490508b565b6000600160008360001916600019168152602001908152602001600020600701549050919050565b6000611a56612e50565b600060016000856000191660001916815260200190815260200160002061016060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154600019166000191681526020016004820154600019166000191681526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a900460ff1660ff1660ff1681526020016008820160019054906101000a900460ff1660ff1660ff1681526020016009820154815250509150611be9826000015183602001518460400151856060015186608001518760a001518860c00151611f4c565b9050836000191681600019161492505050919050565b600081565b6000600160008360001916600019168152602001908152602001600020600501549050919050565b600060016000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ccf57600080fd5b611cd98282612cc6565b5050565b600060016000836000191660001916815260200190815260200160002060080160009054906101000a900460ff169050919050565b611d1b33611f2f565b1515611d2657600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d7e57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558073ffffffffffffffffffffffffffffffffffffffff167f955981272de9a405d530a29cab23dda64b892b32e1c7a778cd699baf367b537b426040518082815260200191505060405180910390a250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea257600080fd5b611eac8282612d41565b5050565b600081565b600081565b600060016000836000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081565b6000600160008360001916600019168152602001908152602001600020600401549050919050565b6000611f45826002612dbc90919063ffffffff16565b9050919050565b600087878787878787604051602001808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401856000191660001916815260200184600019166000191681526020018381526020018281526020019750505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156120595780518252602082019150602081019050602083039250612034565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050979650505050505050565b8061209d816110fd565b15156120a857600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561213d57600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f53f4fdbf046e2ed867f0f8d1cc7d5063ce080d58e9ae6d57f16c668514664c34426040518082815260200191505060405180910390a3505050565b80600160008460001916600019168152602001908152602001600020600901819055505050565b610160604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006001026000191681526020016000600102600019168152602001600081526020016000815260200160008152602001600060028111156122e457fe5b60ff168152602001600060068111156122f957fe5b60ff168152602001600081525060016000856000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301906000191690556080820151816004019060001916905560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908360ff1602179055506101208201518160080160016101000a81548160ff021916908360ff16021790555061014082015181600901559050508083600019167f7b9fd021caee69b4f2162870c45df668bee286526bf656e58e1c154ac5ba154e8442604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124fb57600080fd5b6125058282612dbc565b15151561251157600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061257a89611a4c565b15151561258657600080fd5b8773ffffffffffffffffffffffffffffffffffffffff16600160008b6000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156125fe57600080fd5b86600160008b600019166000191681526020019081526020016000206001015414151561262a57600080fd5b61263988888888888888611f4c565b90508860001916816000191614151561265157600080fd5b610160604051908101604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018773ffffffffffffffffffffffffffffffffffffffff168152602001866000191681526020018560001916815260200184815260200183815260200160008152602001600060028111156126d057fe5b60ff1681526020016126e18b6112ef565b60ff1681526020016000815250600160008b6000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301906000191690556080820151816004019060001916905560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908360ff1602179055506101208201518160080160016101000a81548160ff021916908360ff16021790555061014082015181600901559050508573ffffffffffffffffffffffffffffffffffffffff16878a600019167f5e36e80616408e3e33d7901e4d51973791cce37bfad1bc4426598afd451a273d8b8989898942604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186600019166000191681526020018560001916600019168152602001848152602001838152602001828152602001965050505050505060405180910390a4505050505050505050565b600061290588888888888888611f4c565b9050610160604051908101604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018660001916815260200185600019168152602001848152602001838152602001600081526020016000600281111561298657fe5b60ff1681526020016000600681111561299b57fe5b60ff168152602001600081525060016000836000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301906000191690556080820151816004019060001916905560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908360ff1602179055506101208201518160080160016101000a81548160ff021916908360ff16021790555061014082015181600901559050508573ffffffffffffffffffffffffffffffffffffffff168782600019167eb2ccc2abfcac4eb8a29fdc84c0dce6f90994fddc4b0d71653e65fa3434efa68b8989898942604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186600019166000191681526020018560001916600019168152602001848152602001838152602001828152602001965050505050505060405180910390a45050505050505050565b806001600084600019166000191681526020019081526020016000206007018190555081600019167f2d296949964b6b6bb49ca57f5533e7b1bc64aba05147520754482b70e9b62b6b8242604051808381526020018281526020019250505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c5357600080fd5b612c5d8282612dbc565b1515612c6857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b8060016000846000191660001916815260200190815260200160002060080160016101000a81548160ff021916908360ff1602179055508060ff1682600019167f0791181607e47fcbb954d0efff762bb624c64f4810bd6b605c563fbea3cf8bab426040518082815260200191505060405180910390a35050565b8060016000846000191660001916815260200190815260200160002060080160006101000a81548160ff021916908360ff1602179055508060ff1682600019167f8f972cd8f51dd7be223b51e70da55a3a8590d1ef13e6e2cf9ac3a1d8ea3e5141426040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612df957600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000801916815260200160008019168152602001600081526020016000815260200160008152602001600060ff168152602001600060ff1681526020016000815250905600a165627a7a723058204be33e8e620375d8eb31f7218ad1f0d4fa7801c0a3fc443b6cd5c6da3ab8f99000290000000000000000000000005d461018b698afd109ba6339035f9ad26066e724

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005d461018b698afd109ba6339035f9ad26066e724

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005d461018b698afd109ba6339035f9ad26066e724


   Swarm Source:
bzzr://4be33e8e620375d8eb31f7218ad1f0d4fa7801c0a3fc443b6cd5c6da3ab8f990

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward