Contract 0x159903d22cd86e2e04747b52c8eab795e5ce92ce

 

TxHash Block Age From To Value [TxFee]
0x3c2e623cf53777e9d9e728a8fd87a3ad01ac83ad334b81d06873b234cb4037d3714388817 days 15 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.000889464
0x0bf2ad5089524bb5182366e52abd6b55404da8809341dd6a010373d00cec1bef714388617 days 15 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.003131544
0x8dc19f495e4c6c73fcd7fee58f73b104980f0eaf9c9f0cb3c7d1d258150e97d1714384717 days 15 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.001174137
0x35124465574e4e1efdfe1913ea8a3d3b8a3368ec8f3424b892405c0ffdb49595714381617 days 15 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.001045248
0x74ddcaaf3bc53513680b0bc51d032c933b49306412794fc108a2a83d7d3cf669714378517 days 15 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.000787476
0x02fb5ec463142991767b60e0d67d4ac19c5f6961e79c13153c1a1326d1a865a0714366617 days 16 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.000377937
0xa8baeeae0c44388a1289315fc44d3296b90448725301d12b77bf2a6c6612fb7b714348117 days 17 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   0x159903d22cd86e2e04747b52c8eab795e5ce92ce0 Ether0.001737364
0x0a514fecb7152336039ecd3fce270ff98446f61e835da72cc00c2c7185f4e4a6713843518 days 18 hrs ago0x35d415bf0e6bbf8e10eba814e10325c46a2cf009  IN   Contract Creation0 Ether0.004482894
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Bounty
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.24;

// File: 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];
  }
}

// File: node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol

contract PauserRole {
  using Roles for Roles.Role;

  event PauserAdded(address indexed account);
  event PauserRemoved(address indexed account);

  Roles.Role private pausers;

  constructor() internal {
    _addPauser(msg.sender);
  }

  modifier onlyPauser() {
    require(isPauser(msg.sender));
    _;
  }

  function isPauser(address account) public view returns (bool) {
    return pausers.has(account);
  }

  function addPauser(address account) public onlyPauser {
    _addPauser(account);
  }

  function renouncePauser() public {
    _removePauser(msg.sender);
  }

  function _addPauser(address account) internal {
    pausers.add(account);
    emit PauserAdded(account);
  }

  function _removePauser(address account) internal {
    pausers.remove(account);
    emit PauserRemoved(account);
  }
}

// File: node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is PauserRole {
  event Paused(address account);
  event Unpaused(address account);

  bool private _paused;

  constructor() internal {
    _paused = false;
  }

  /**
   * @return true if the contract is paused, false otherwise.
   */
  function paused() public view returns(bool) {
    return _paused;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!_paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(_paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyPauser whenNotPaused {
    _paused = true;
    emit Paused(msg.sender);
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyPauser whenPaused {
    _paused = false;
    emit Unpaused(msg.sender);
  }
}

// File: node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address private _owner;

  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() internal {
    _owner = msg.sender;
    emit OwnershipTransferred(address(0), _owner);
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  /**
   * @return true if `msg.sender` is the owner of the contract.
   */
  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

// File: contracts/IBounty.sol

interface IBounty {

  function packageBounty(
    address owner,
    uint256 needHopsAmount,
    address[] tokenAddress,
    uint256[] tokenAmount)
    external returns (bool);
  
  function openBounty(uint256 bountyId)
    external returns (bool);
  
  function checkBounty(uint256 bountyId)
    external view returns (address, uint256, address[], uint256[]);

  /* Events */
  event BountyEvt (
    uint256 bountyId,
    address owner,
    uint256 needHopsAmount,
    address[] tokenAddress,
    uint256[] tokenAmount
  );

  event OpenBountyEvt (
    uint256 bountyId,
    address sender,
    uint256 needHopsAmount,
    address[] tokenAddress,
    uint256[] tokenAmount
  );
}

// File: contracts/Role/WhitelistAdminRole.sol

/**
 * @title WhitelistAdminRole
 * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
 */
contract WhitelistAdminRole {
  using Roles for Roles.Role;

  event WhitelistAdminAdded(address indexed account);
  event WhitelistAdminRemoved(address indexed account);

  Roles.Role private _whitelistAdmins;

  constructor () internal {
    _addWhitelistAdmin(msg.sender);
  }

  modifier onlyWhitelistAdmin() {
    require(isWhitelistAdmin(msg.sender));
    _;
  }

  function isWhitelistAdmin(address account) public view returns (bool) {
    return _whitelistAdmins.has(account);
  }

  function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
    _addWhitelistAdmin(account);
  }

  function renounceWhitelistAdmin() public {
    _removeWhitelistAdmin(msg.sender);
  }

  function _addWhitelistAdmin(address account) internal {
    _whitelistAdmins.add(account);
    emit WhitelistAdminAdded(account);
  }

  function _removeWhitelistAdmin(address account) internal {
    _whitelistAdmins.remove(account);
    emit WhitelistAdminRemoved(account);
  }
}

// File: contracts/Role/WhitelistedRole.sol

/**
 * @title WhitelistedRole
 * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a
 * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove
 * it), and not Whitelisteds themselves.
 */
contract WhitelistedRole is WhitelistAdminRole {
  using Roles for Roles.Role;

  event WhitelistedAdded(address indexed account);
  event WhitelistedRemoved(address indexed account);

  Roles.Role private _whitelisteds;

  modifier onlyWhitelisted() {
    require(isWhitelisted(msg.sender));
    _;
  }

  function isWhitelisted(address account) public view returns (bool) {
    return _whitelisteds.has(account);
  }

  function addWhitelisted(address account) public onlyWhitelistAdmin {
    _addWhitelisted(account);
  }

  function removeWhitelisted(address account) public onlyWhitelistAdmin {
    _removeWhitelisted(account);
  }

  function renounceWhitelisted() public {
    _removeWhitelisted(msg.sender);
  }

  function _addWhitelisted(address account) internal {
    _whitelisteds.add(account);
    emit WhitelistedAdded(account);
  }

  function _removeWhitelisted(address account) internal {
    _whitelisteds.remove(account);
    emit WhitelistedRemoved(account);
  }
}

// File: contracts/SafeMath.sol

/**
 * @title SafeMath
 */
library SafeMath {
  /**
  * @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 a / b;
  }

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

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

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b)
      internal
      pure
      returns (uint256 c) 
  {
    c = a + b;
    require(c >= a, "SafeMath add failed");
    return c;
  }
  
  /**
    * @dev gives square root of given x.
    */
  function sqrt(uint256 x)
      internal
      pure
      returns (uint256 y) 
  {
    uint256 z = ((add(x,1)) / 2);
    y = x;
    while (z < y) 
    {
      y = z;
      z = ((add((x / z),z)) / 2);
    }
  }
  
  /**
    * @dev gives square. batchplies x by x
    */
  function sq(uint256 x)
      internal
      pure
      returns (uint256)
  {
    return (mul(x,x));
  }
  
  /**
    * @dev x to the power of y 
    */
  function pwr(uint256 x, uint256 y)
      internal 
      pure 
      returns (uint256)
  {
    if (x==0)
        return (0);
    else if (y==0)
        return (1);
    else 
    {
      uint256 z = x;
      for (uint256 i=1; i < y; i++)
        z = mul(z,x);
      return (z);
    }
  }
}

// File: contracts/Bounty.sol

interface IERC20 {
  function transfer(address to, uint256 value) external returns (bool);
  function balanceOf(address who) external view returns (uint256);
  function allowance(address tokenOwner, address spender) external view returns (uint256);
  function burnFrom(address from, uint256 value) external;
}

interface IERC721 {
  function mintTo(address to) external returns (bool, uint256);
  function ownerOf(uint256 tokenId) external view returns (address);
  function burn(uint256 tokenId) external;
  function isApprovedForAll(address owner, address operator) external view returns (bool);
}

contract Bounty is WhitelistedRole, IBounty, Pausable {

  using SafeMath for *;

  address public erc20Address;
  address public bountyNFTAddress;

  struct Bounty {
    uint256 needHopsAmount;
    address[] tokenAddress;
    uint256[] tokenAmount;
  }

  bytes32[] public planBaseIds;

  mapping (uint256 => Bounty) bountyIdToBounty;

  constructor (address _erc20Address, address _bountyNFTAddress) {
    erc20Address = _erc20Address;
    bountyNFTAddress = _bountyNFTAddress;
  }

  function packageBounty (
    address owner,
    uint256 needHopsAmount,
    address[] tokenAddress,
    uint256[] tokenAmount
  ) whenNotPaused external returns (bool) {
    require(isWhitelisted(msg.sender)||isWhitelistAdmin(msg.sender));
    Bounty memory bounty = Bounty(needHopsAmount, tokenAddress, tokenAmount);
    (bool success, uint256 bountyId) = IERC721(bountyNFTAddress).mintTo(owner);
    require(success);
    bountyIdToBounty[bountyId] = bounty;
    emit BountyEvt(bountyId, owner, needHopsAmount, tokenAddress, tokenAmount);
  }

  function openBounty(uint256 bountyId)
    whenNotPaused external returns (bool) {
    Bounty storage bounty = bountyIdToBounty[bountyId];
    require(IERC721(bountyNFTAddress).ownerOf(bountyId) == msg.sender);

    require(IERC721(bountyNFTAddress).isApprovedForAll(msg.sender, address(this)));
    require(IERC20(erc20Address).balanceOf(msg.sender) >= bounty.needHopsAmount);
    require(IERC20(erc20Address).allowance(msg.sender, address(this)) >= bounty.needHopsAmount);
    IERC20(erc20Address).burnFrom(msg.sender, bounty.needHopsAmount);

    for (uint8 i = 0; i < bounty.tokenAddress.length; i++) {
      require(IERC20(bounty.tokenAddress[i]).transfer(msg.sender, bounty.tokenAmount[i]));
    }

    IERC721(bountyNFTAddress).burn(bountyId);
    delete bountyIdToBounty[bountyId];

    emit OpenBountyEvt(bountyId, msg.sender, bounty.needHopsAmount, bounty.tokenAddress, bounty.tokenAmount);
  }

  function checkBounty(uint256 bountyId) external view returns (
    address,
    uint256,
    address[],
    uint256[]) {
    Bounty storage bounty = bountyIdToBounty[bountyId];
    address owner = IERC721(bountyNFTAddress).ownerOf(bountyId);
    return (owner, bounty.needHopsAmount, bounty.tokenAddress, bounty.tokenAmount);
  }
}

Contract ABI
[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"erc20Address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"planBaseIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"bountyId","type":"uint256"}],"name":"checkBounty","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"address[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bountyNFTAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"bountyId","type":"uint256"}],"name":"openBounty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"needHopsAmount","type":"uint256"},{"name":"tokenAddress","type":"address[]"},{"name":"tokenAmount","type":"uint256[]"}],"name":"packageBounty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_erc20Address","type":"address"},{"name":"_bountyNFTAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bountyId","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"needHopsAmount","type":"uint256"},{"indexed":false,"name":"tokenAddress","type":"address[]"},{"indexed":false,"name":"tokenAmount","type":"uint256[]"}],"name":"BountyEvt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bountyId","type":"uint256"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"needHopsAmount","type":"uint256"},{"indexed":false,"name":"tokenAddress","type":"address[]"},{"indexed":false,"name":"tokenAmount","type":"uint256[]"}],"name":"OpenBountyEvt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistedRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"}]

Contract Creation Code
60806040523480156200001157600080fd5b50604051604080620015738339810160405280516020909101516200003f336401000000006200008e810204565b6200005333640100000000620000e0810204565b60038054600160a860020a031916610100600160a060020a039485160217905560048054600160a060020a03191691909216179055620001c5565b620000a9600082640100000000620011986200013282021704565b604051600160a060020a038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b620000fb600282640100000000620011986200013282021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61139e80620001d56000396000f3006080604052600436106100ed5763ffffffff60e060020a60003504166310154bad81146100f2578063276184ae14610115578063291d9549146101465780633af32abf146101675780633f4ba83a1461019c57806346fbf68e146101b15780634c5a628c146101d25780634db1b0f9146101e75780635c975abb146102115780636ef8d66d146102265780637362d9c81461023b57806375aa07c01461025c57806382dc1ec41461032d5780638456cb591461034e5780639dfe22bd14610363578063bb5f747b14610378578063bb9114b114610399578063c7a3571f146103b1578063d6cd9473146103ee575b600080fd5b3480156100fe57600080fd5b50610113600160a060020a0360043516610403565b005b34801561012157600080fd5b5061012a610423565b60408051600160a060020a039092168252519081900360200190f35b34801561015257600080fd5b50610113600160a060020a0360043516610437565b34801561017357600080fd5b50610188600160a060020a0360043516610454565b604080519115158252519081900360200190f35b3480156101a857600080fd5b5061011361046d565b3480156101bd57600080fd5b50610188600160a060020a03600435166104d1565b3480156101de57600080fd5b506101136104e4565b3480156101f357600080fd5b506101ff6004356104ef565b60408051918252519081900360200190f35b34801561021d57600080fd5b5061018861050e565b34801561023257600080fd5b50610113610518565b34801561024757600080fd5b50610113600160a060020a0360043516610521565b34801561026857600080fd5b5061027460043561053e565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156102d65781810151838201526020016102be565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156103155781810151838201526020016102fd565b50505050905001965050505050505060405180910390f35b34801561033957600080fd5b50610113600160a060020a03600435166106b0565b34801561035a57600080fd5b506101136106cd565b34801561036f57600080fd5b5061012a610733565b34801561038457600080fd5b50610188600160a060020a0360043516610742565b3480156103a557600080fd5b50610188600435610754565b3480156103bd57600080fd5b5061018860048035600160a060020a0316906024803591604435808301929082013591606435918201910135610d3c565b3480156103fa57600080fd5b50610113610fa8565b61040c33610742565b151561041757600080fd5b61042081610fb1565b50565b6003546101009004600160a060020a031681565b61044033610742565b151561044b57600080fd5b61042081610ff9565b600061046760018363ffffffff61104116565b92915050565b610476336104d1565b151561048157600080fd5b60035460ff16151561049257600080fd5b6003805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061046760028363ffffffff61104116565b6104ed33611078565b565b60058054829081106104fd57fe5b600091825260209091200154905081565b60035460ff165b90565b6104ed336110c0565b61052a33610742565b151561053557600080fd5b61042081611108565b60008181526006602090815260408083206004805483517f6352211e000000000000000000000000000000000000000000000000000000008152918201879052925185946060948594938793600160a060020a0390921692636352211e9260248084019382900301818787803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050506040513d60208110156105e157600080fd5b505182546001840180546040805160208381028201810190925282815294955085946002880192909184919083018282801561064657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610628575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561069857602002820191906000526020600020905b815481526020019060010190808311610684575b50505050509050955095509550955050509193509193565b6106b9336104d1565b15156106c457600080fd5b61042081611150565b6106d6336104d1565b15156106e157600080fd5b60035460ff16156106f157600080fd5b6003805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600454600160a060020a031681565b6000610467818363ffffffff61104116565b6003546000908190819060ff161561076b57600080fd5b60008481526006602090815260408083206004805483517f6352211e0000000000000000000000000000000000000000000000000000000081529182018a905292519196503394600160a060020a0390931693636352211e9360248084019492938390030190829087803b1580156107e257600080fd5b505af11580156107f6573d6000803e3d6000fd5b505050506040513d602081101561080c57600080fd5b5051600160a060020a03161461082157600080fd5b60048054604080517fe985e9c5000000000000000000000000000000000000000000000000000000008152339381019390935230602484015251600160a060020a039091169163e985e9c59160448083019260209291908290030181600087803b15801561088e57600080fd5b505af11580156108a2573d6000803e3d6000fd5b505050506040513d60208110156108b857600080fd5b505115156108c557600080fd5b8154600354604080517f70a082310000000000000000000000000000000000000000000000000000000081523360048201529051610100909204600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d602081101561095b57600080fd5b5051101561096857600080fd5b8154600354604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051610100909204600160a060020a03169163dd62ed3e916044808201926020929091908290030181600087803b1580156109da57600080fd5b505af11580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b50511015610a1157600080fd5b6003548254604080517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481019290925251610100909204600160a060020a0316916379cc67909160448082019260009290919082900301818387803b158015610a8357600080fd5b505af1158015610a97573d6000803e3d6000fd5b50505050600090505b600182015460ff82161015610b915760018201805460ff8316908110610ac257fe5b600091825260209091200154600283018054600160a060020a039092169163a9059cbb91339160ff8616908110610af557fe5b90600052602060002001546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610b5257600080fd5b505af1158015610b66573d6000803e3d6000fd5b505050506040513d6020811015610b7c57600080fd5b50511515610b8957600080fd5b600101610aa0565b60048054604080517f42966c6800000000000000000000000000000000000000000000000000000000815292830187905251600160a060020a03909116916342966c6891602480830192600092919082900301818387803b158015610bf557600080fd5b505af1158015610c09573d6000803e3d6000fd5b50505060008581526006602052604081208181559150610c2c6001830182611232565b610c3a600283016000611232565b50507fbe12419c40782b8a1a20e111255a8f34ecaf96e614ac9f9c7b73c43434fad7308433846000015485600101866002016040518086815260200185600160a060020a0316600160a060020a0316815260200184815260200180602001806020018381038352858181548152602001915080548015610ce357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cc5575b50508381038252848181548152602001915080548015610d2257602002820191906000526020600020905b815481526020019060010190808311610d0e575b505097505050505050505060405180910390a15050919050565b6000610d46611250565b600354600090819060ff1615610d5b57600080fd5b610d6433610454565b80610d735750610d7333610742565b1515610d7e57600080fd5b6060604051908101604052808a815260200189898080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505081526020018787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508152509250600460009054906101000a9004600160a060020a0316600160a060020a031663755edd178b6040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a031681526020019150506040805180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b505050506040513d6040811015610e9357600080fd5b5080516020909101519092509050811515610ead57600080fd5b6000818152600660209081526040909120845181558185015180518693610edb926001850192910190611272565b5060408201518051610ef79160028401916020909101906112e4565b509050507fc90cfb9908412f62869e7855ca724e3ea618328daad5a21e7606367d101ab278818b8b8b8b8b8b6040518088815260200187600160a060020a0316600160a060020a0316815260200186815260200180602001806020018381038352878782818152602001925060200280828437909101848103835285815260209081019150869086028082843760405192018290039b50909950505050505050505050a15050509695505050505050565b6104ed33610ff9565b610fc260018263ffffffff61119816565b604051600160a060020a038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b61100a60018263ffffffff6111e616565b604051600160a060020a038216907f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b690600090a250565b6000600160a060020a038216151561105857600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61108960008263ffffffff6111e616565b604051600160a060020a038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6110d160028263ffffffff6111e616565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61111960008263ffffffff61119816565b604051600160a060020a038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b61116160028263ffffffff61119816565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03811615156111ad57600080fd5b6111b78282611041565b156111c157600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156111fb57600080fd5b6112058282611041565b151561121057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b50805460008255906000526020600020908101906104209190611327565b6060604051908101604052806000815260200160608152602001606081525090565b8280548282559060005260206000209081019282156112d4579160200282015b828111156112d4578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190611292565b506112e0929150611341565b5090565b82805482825590600052602060002090810192821561131f579160200282015b8281111561131f578251825591602001919060010190611304565b506112e09291505b61051591905b808211156112e0576000815560010161132d565b61051591905b808211156112e057805473ffffffffffffffffffffffffffffffffffffffff191681556001016113475600a165627a7a723058200fe369552a9b51bc270d5637f127f45afe729936f942c6e11730cb4104ff71200029000000000000000000000000471daee6e481b2ab7d2f2f64b8f9b083daae29da000000000000000000000000b9250c9581e4594b7c6914897823ad18d6b78e96


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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000471daee6e481b2ab7d2f2f64b8f9b083daae29da
Arg [1] : 000000000000000000000000b9250c9581e4594b7c6914897823ad18d6b78e96


   Swarm Source:
bzzr://0fe369552a9b51bc270d5637f127f45afe729936f942c6e11730cb4104ff7120
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.