ETH Price: $3,418.29 (-1.77%)
Gas: 6 Gwei

Contract

0x1eD3d2c916cab00631cce4b08a7F880d4Badae94
 

Overview

ETH Balance

8.008785459751839315 ETH

Eth Value

$27,376.36 (@ $3,418.29/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Redeem Shares189176112024-01-02 5:24:47197 days ago1704173087IN
0x1eD3d2c9...d4Badae94
0 ETH0.0005522814.41010055
Withdraw189116572024-01-01 9:19:35198 days ago1704100775IN
0x1eD3d2c9...d4Badae94
0 ETH0.0002448410.19062738
Chicken To Altar189082532023-12-31 21:51:35199 days ago1704059495IN
0x1eD3d2c9...d4Badae94
0 ETH0.0018976812.65122487
Join189070292023-12-31 17:45:11199 days ago1704044711IN
0x1eD3d2c9...d4Badae94
0 ETH0.0039839413.79100218
Join183754712023-10-18 6:31:23273 days ago1697610683IN
0x1eD3d2c9...d4Badae94
0 ETH0.002103357.28106163
Withdraw183018772023-10-07 23:25:35284 days ago1696721135IN
0x1eD3d2c9...d4Badae94
0 ETH0.000150445.23715316
Ethereum From Al...183018722023-10-07 23:24:35284 days ago1696721075IN
0x1eD3d2c9...d4Badae94
0 ETH0.00020335.2745397
Chicken To Altar182905572023-10-06 9:25:47285 days ago1696584347IN
0x1eD3d2c9...d4Badae94
0 ETH0.000935566.84993345
Withdraw182843972023-10-05 12:45:23286 days ago1696509923IN
0x1eD3d2c9...d4Badae94
0 ETH0.000196336.8348207
Chicken To Altar182410392023-09-29 11:21:35292 days ago1695986495IN
0x1eD3d2c9...d4Badae94
0 ETH0.000833996.96772787
Chicken To Altar181900882023-09-22 8:06:23299 days ago1695369983IN
0x1eD3d2c9...d4Badae94
0 ETH0.001040898.71191566
Chicken To Altar181738442023-09-20 1:30:59302 days ago1695173459IN
0x1eD3d2c9...d4Badae94
0 ETH0.001205858.81512342
Withdraw181451962023-09-16 0:35:47306 days ago1694824547IN
0x1eD3d2c9...d4Badae94
0 ETH0.000263549.17444104
Chicken To Altar181418282023-09-15 13:10:47306 days ago1694783447IN
0x1eD3d2c9...d4Badae94
0 ETH0.0020705917.33003076
Chicken To Altar181102212023-09-11 2:45:47310 days ago1694400347IN
0x1eD3d2c9...d4Badae94
0 ETH0.001046618.7440881
Upgrade Strength180811422023-09-07 1:01:59315 days ago1694048519IN
0x1eD3d2c9...d4Badae94
0.00005 ETH0.001374979.0073818
Chicken To Altar180621302023-09-04 9:10:11317 days ago1693818611IN
0x1eD3d2c9...d4Badae94
0 ETH0.0016294413.07198181
Ethereum From Al...180523722023-09-03 0:24:23319 days ago1693700663IN
0x1eD3d2c9...d4Badae94
0 ETH0.000575710.34619971
Chicken To Altar180452012023-09-02 0:14:35320 days ago1693613675IN
0x1eD3d2c9...d4Badae94
0 ETH0.001710110.76541991
Join180320942023-08-31 4:13:35321 days ago1693455215IN
0x1eD3d2c9...d4Badae94
0 ETH0.0039226613.57886478
Join179170532023-08-15 1:45:47338 days ago1692063947IN
0x1eD3d2c9...d4Badae94
0 ETH0.0039704213.74418643
Chicken To Altar177294362023-07-19 19:52:23364 days ago1689796343IN
0x1eD3d2c9...d4Badae94
0 ETH0.0030976224.80283188
Chicken To Altar175104672023-06-19 1:16:47395 days ago1687137407IN
0x1eD3d2c9...d4Badae94
0 ETH0.0019091412.72760457
Chicken To Altar174824342023-06-15 2:50:47398 days ago1686797447IN
0x1eD3d2c9...d4Badae94
0 ETH0.0029057619.37175193
Chicken To Altar174824232023-06-15 2:48:23398 days ago1686797303IN
0x1eD3d2c9...d4Badae94
0 ETH0.0025611917.07460777
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
183018772023-10-07 23:25:35284 days ago1696721135
0x1eD3d2c9...d4Badae94
0.00147658 ETH
182843972023-10-05 12:45:23286 days ago1696509923
0x1eD3d2c9...d4Badae94
0.00288899 ETH
181451962023-09-16 0:35:47306 days ago1694824547
0x1eD3d2c9...d4Badae94
0.00395415 ETH
169525682023-04-01 6:37:23473 days ago1680331043
0x1eD3d2c9...d4Badae94
0.00379925 ETH
168069212023-03-11 19:29:47494 days ago1678562987
0x1eD3d2c9...d4Badae94
0.0553221 ETH
156324662022-09-28 14:34:59658 days ago1664375699
0x1eD3d2c9...d4Badae94
0.01433027 ETH
154639942022-09-03 7:16:34683 days ago1662189394
0x1eD3d2c9...d4Badae94
0.00319354 ETH
137125702021-11-30 3:46:04960 days ago1638243964
0x1eD3d2c9...d4Badae94
0.44122301 ETH
126510402021-06-17 9:03:571126 days ago1623920637
0x1eD3d2c9...d4Badae94
0.01300879 ETH
126446802021-06-16 9:24:241127 days ago1623835464
0x1eD3d2c9...d4Badae94
0.00742363 ETH
125875282021-06-07 13:01:101136 days ago1623070870
0x1eD3d2c9...d4Badae94
0.00697406 ETH
122990462021-04-23 21:56:031181 days ago1619214963
0x1eD3d2c9...d4Badae94
0.05488357 ETH
118661352021-02-16 6:16:181247 days ago1613456178
0x1eD3d2c9...d4Badae94
0.30692308 ETH
118661142021-02-16 6:11:271247 days ago1613455887
0x1eD3d2c9...d4Badae94
0.01532058 ETH
117587162021-01-30 17:50:001264 days ago1612029000
0x1eD3d2c9...d4Badae94
0.11436009 ETH
116142052021-01-08 12:53:221286 days ago1610110402
0x1eD3d2c9...d4Badae94
0.00340875 ETH
110787242020-10-18 8:04:501368 days ago1603008290
0x1eD3d2c9...d4Badae94
0.14697019 ETH
109931952020-10-05 2:53:481381 days ago1601866428
0x1eD3d2c9...d4Badae94
0.02402504 ETH
109371372020-09-26 8:20:151390 days ago1601108415
0x1eD3d2c9...d4Badae94
0.17770138 ETH
105856362020-08-03 7:59:221444 days ago1596441562
0x1eD3d2c9...d4Badae94
0.0109811 ETH
104919002020-07-19 19:48:551459 days ago1595188135
0x1eD3d2c9...d4Badae94
0.01977365 ETH
104255282020-07-09 13:24:181469 days ago1594301058
0x1eD3d2c9...d4Badae94
0.11078547 ETH
103006632020-06-20 5:03:241488 days ago1592629404
0x1eD3d2c9...d4Badae94
0.0126623 ETH
102824772020-06-17 9:41:111491 days ago1592386871
0x1eD3d2c9...d4Badae94
0.00414751 ETH
102622062020-06-14 6:16:181494 days ago1592115378
0x1eD3d2c9...d4Badae94
0.0088269 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ChickenHunt

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity 0.4.24;


library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
  }

  function square(uint256 a) internal pure returns (uint256) {
    return mul(a, a);
  }

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

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

}


contract ERC20Interface {

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );

  function totalSupply() public view returns (uint256);
  function balanceOf(address _owner) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool);
  function approve(address _spender, uint256 _value) public returns (bool);
  function allowance( address _owner, address _spender) public view returns (uint256);

}


/**
 * @title CHStock
 * @author M.H. Kang
 */
contract CHStock is ERC20Interface {

  using SafeMath for uint256;

  /* EVENT */

  event RedeemShares(
    address indexed user,
    uint256 shares,
    uint256 dividends
  );

  /* STORAGE */

  string public name = "ChickenHuntStock";
  string public symbol = "CHS";
  uint8 public decimals = 18;
  uint256 public totalShares;
  uint256 public dividendsPerShare;
  uint256 public constant CORRECTION = 1 << 64;
  mapping (address => uint256) public ethereumBalance;
  mapping (address => uint256) internal shares;
  mapping (address => uint256) internal refund;
  mapping (address => uint256) internal deduction;
  mapping (address => mapping (address => uint256)) internal allowed;

  /* FUNCTION */

  function redeemShares() public {
    uint256 _shares = shares[msg.sender];
    uint256 _dividends = dividendsOf(msg.sender);

    delete shares[msg.sender];
    delete refund[msg.sender];
    delete deduction[msg.sender];
    totalShares = totalShares.sub(_shares);
    ethereumBalance[msg.sender] = ethereumBalance[msg.sender].add(_dividends);

    emit RedeemShares(msg.sender, _shares, _dividends);
  }

  function transfer(address _to, uint256 _value) public returns (bool) {
    _transfer(msg.sender, _to, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint256 _value)
    public
    returns (bool)
  {
    require(_value <= allowed[_from][msg.sender]);
    allowed[_from][msg.sender] -= _value;
    _transfer(_from, _to, _value);
    return true;
  }

  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  function dividendsOf(address _shareholder) public view returns (uint256) {
    return dividendsPerShare.mul(shares[_shareholder]).add(refund[_shareholder]).sub(deduction[_shareholder]) / CORRECTION;
  }

  function totalSupply() public view returns (uint256) {
    return totalShares;
  }

  function balanceOf(address _owner) public view returns (uint256) {
    return shares[_owner];
  }

  function allowance(address _owner, address _spender)
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /* INTERNAL FUNCTION */

  function _giveShares(address _user, uint256 _ethereum) internal {
    if (_ethereum > 0) {
      totalShares = totalShares.add(_ethereum);
      deduction[_user] = deduction[_user].add(dividendsPerShare.mul(_ethereum));
      shares[_user] = shares[_user].add(_ethereum);
      dividendsPerShare = dividendsPerShare.add(_ethereum.mul(CORRECTION) / totalShares);

      emit Transfer(address(0), _user, _ethereum);
    }
  }

  function _transfer(address _from, address _to, uint256 _value) internal {
    require(_to != address(0));
    require(_value <= shares[_from]);
    uint256 _rawProfit = dividendsPerShare.mul(_value);

    uint256 _refund = refund[_from].add(_rawProfit);
    uint256 _min = _refund < deduction[_from] ? _refund : deduction[_from];
    refund[_from] = _refund.sub(_min);
    deduction[_from] = deduction[_from].sub(_min);
    deduction[_to] = deduction[_to].add(_rawProfit);

    shares[_from] = shares[_from].sub(_value);
    shares[_to] = shares[_to].add(_value);

    emit Transfer(_from, _to, _value);
  }

}


/**
 * @title CHGameBase
 * @author M.H. Kang
 */
contract CHGameBase is CHStock {

  /* DATA STRUCT */

  struct House {
    Hunter hunter;
    uint256 huntingPower;
    uint256 offensePower;
    uint256 defensePower;
    uint256 huntingMultiplier;
    uint256 offenseMultiplier;
    uint256 defenseMultiplier;
    uint256 depots;
    uint256[] pets;
  }

  struct Hunter {
    uint256 strength;
    uint256 dexterity;
    uint256 constitution;
    uint256 resistance;
  }

  struct Store {
    address owner;
    uint256 cut;
    uint256 cost;
    uint256 balance;
  }

  /* STORAGE */

  Store public store;
  uint256 public devCut;
  uint256 public devFee;
  uint256 public altarCut;
  uint256 public altarFund;
  uint256 public dividendRate;
  uint256 public totalChicken;
  address public chickenTokenDelegator;
  mapping (address => uint256) public lastSaveTime;
  mapping (address => uint256) public savedChickenOf;
  mapping (address => House) internal houses;

  /* FUNCTION */

  function saveChickenOf(address _user) public returns (uint256) {
    uint256 _unclaimedChicken = _unclaimedChickenOf(_user);
    totalChicken = totalChicken.add(_unclaimedChicken);
    uint256 _chicken = savedChickenOf[_user].add(_unclaimedChicken);
    savedChickenOf[_user] = _chicken;
    lastSaveTime[_user] = block.timestamp;
    return _chicken;
  }

  function transferChickenFrom(address _from, address _to, uint256 _value)
    public
    returns (bool)
  {
    require(msg.sender == chickenTokenDelegator);
    require(saveChickenOf(_from) >= _value);
    savedChickenOf[_from] = savedChickenOf[_from] - _value;
    savedChickenOf[_to] = savedChickenOf[_to].add(_value);

    return true;
  }

  function chickenOf(address _user) public view returns (uint256) {
    return savedChickenOf[_user].add(_unclaimedChickenOf(_user));
  }

  /* INTERNAL FUNCTION */

  function _payChicken(address _user, uint256 _chicken) internal {
    uint256 _unclaimedChicken = _unclaimedChickenOf(_user);
    uint256 _extraChicken;

    if (_chicken > _unclaimedChicken) {
      _extraChicken = _chicken - _unclaimedChicken;
      require(savedChickenOf[_user] >= _extraChicken);
      savedChickenOf[_user] -= _extraChicken;
      totalChicken -= _extraChicken;
    } else {
      _extraChicken = _unclaimedChicken - _chicken;
      totalChicken = totalChicken.add(_extraChicken);
      savedChickenOf[_user] += _extraChicken;
    }

    lastSaveTime[_user] = block.timestamp;
  }

  function _payEthereumAndDistribute(uint256 _cost) internal {
    require(_cost * 100 / 100 == _cost);
    _payEthereum(_cost);

    uint256 _toShareholders = _cost * dividendRate / 100;
    uint256 _toAltar = _cost * altarCut / 100;
    uint256 _toStore = _cost * store.cut / 100;
    devFee = devFee.add(_cost - _toShareholders - _toAltar - _toStore);

    _giveShares(msg.sender, _toShareholders);
    altarFund = altarFund.add(_toAltar);
    store.balance = store.balance.add(_toStore);
  }

  function _payEthereum(uint256 _cost) internal {
    uint256 _extra;
    if (_cost > msg.value) {
      _extra = _cost - msg.value;
      require(ethereumBalance[msg.sender] >= _extra);
      ethereumBalance[msg.sender] -= _extra;
    } else {
      _extra = msg.value - _cost;
      ethereumBalance[msg.sender] = ethereumBalance[msg.sender].add(_extra);
    }
  }

  function _unclaimedChickenOf(address _user) internal view returns (uint256) {
    uint256 _timestamp = lastSaveTime[_user];
    if (_timestamp > 0 && _timestamp < block.timestamp) {
      return houses[_user].huntingPower.mul(
        houses[_user].huntingMultiplier
      ).mul(block.timestamp - _timestamp) / 100;
    } else {
      return 0;
    }
  }

  function _houseOf(address _user)
    internal
    view
    returns (House storage _house)
  {
    _house = houses[_user];
    require(_house.depots > 0);
  }

}


/**
 * @title CHHunter
 * @author M.H. Kang
 */
contract CHHunter is CHGameBase {

  /* EVENT */

  event UpgradeHunter(
    address indexed user,
    string attribute,
    uint256 to
  );

  /* DATA STRUCT */

  struct Config {
    uint256 chicken;
    uint256 ethereum;
    uint256 max;
  }

  /* STORAGE */

  Config public typeA;
  Config public typeB;

  /* FUNCTION */

  function upgradeStrength(uint256 _to) external payable {
    House storage _house = _houseOf(msg.sender);
    uint256 _from = _house.hunter.strength;
    require(typeA.max >= _to && _to > _from);
    _payForUpgrade(_from, _to, typeA);

    uint256 _increment = _house.hunter.dexterity.mul(2).add(8).mul(_to.square() - _from ** 2);
    _house.hunter.strength = _to;
    _house.huntingPower = _house.huntingPower.add(_increment);
    _house.offensePower = _house.offensePower.add(_increment);

    emit UpgradeHunter(msg.sender, "strength", _to);
  }

  function upgradeDexterity(uint256 _to) external payable {
    House storage _house = _houseOf(msg.sender);
    uint256 _from = _house.hunter.dexterity;
    require(typeB.max >= _to && _to > _from);
    _payForUpgrade(_from, _to, typeB);

    uint256 _increment = _house.hunter.strength.square().mul((_to - _from).mul(2));
    _house.hunter.dexterity = _to;
    _house.huntingPower = _house.huntingPower.add(_increment);
    _house.offensePower = _house.offensePower.add(_increment);

    emit UpgradeHunter(msg.sender, "dexterity", _to);
  }

  function upgradeConstitution(uint256 _to) external payable {
    House storage _house = _houseOf(msg.sender);
    uint256 _from = _house.hunter.constitution;
    require(typeA.max >= _to && _to > _from);
    _payForUpgrade(_from, _to, typeA);

    uint256 _increment = _house.hunter.resistance.mul(2).add(8).mul(_to.square() - _from ** 2);
    _house.hunter.constitution = _to;
    _house.defensePower = _house.defensePower.add(_increment);

    emit UpgradeHunter(msg.sender, "constitution", _to);
  }

  function upgradeResistance(uint256 _to) external payable {
    House storage _house = _houseOf(msg.sender);
    uint256 _from = _house.hunter.resistance;
    require(typeB.max >= _to && _to > _from);
    _payForUpgrade(_from, _to, typeB);

    uint256 _increment = _house.hunter.constitution.square().mul((_to - _from).mul(2));
    _house.hunter.resistance = _to;
    _house.defensePower = _house.defensePower.add(_increment);

    emit UpgradeHunter(msg.sender, "resistance", _to);
  }

  /* INTERNAL FUNCTION */

  function _payForUpgrade(uint256 _from, uint256 _to, Config _type) internal {
    uint256 _chickenCost = _type.chicken.mul(_gapOfCubeSum(_from, _to));
    _payChicken(msg.sender, _chickenCost);
    uint256 _ethereumCost = _type.ethereum.mul(_gapOfSquareSum(_from, _to));
    _payEthereumAndDistribute(_ethereumCost);
  }

  function _gapOfSquareSum(uint256 _before, uint256 _after)
    internal
    pure
    returns (uint256)
  {
    // max value is capped to uint32
    return (_after * (_after - 1) * (2 * _after - 1) - _before * (_before - 1) * (2 * _before - 1)) / 6;
  }

  function _gapOfCubeSum(uint256 _before, uint256 _after)
    internal
    pure
    returns (uint256)
  {
    // max value is capped to uint32
    return ((_after * (_after - 1)) ** 2 - (_before * (_before - 1)) ** 2) >> 2;
  }

}


/**
 * @title CHHouse
 * @author M.H. Kang
 */
contract CHHouse is CHHunter {

  /* EVENT */

  event UpgradePet(
    address indexed user,
    uint256 id,
    uint256 to
  );

  event UpgradeDepot(
    address indexed user,
    uint256 to
  );

  event BuyItem(
    address indexed from,
    address indexed to,
    uint256 indexed id,
    uint256 cost
  );

  event BuyStore(
    address indexed from,
    address indexed to,
    uint256 cost
  );

  /* DATA STRUCT */

  struct Pet {
    uint256 huntingPower;
    uint256 offensePower;
    uint256 defensePower;
    uint256 chicken;
    uint256 ethereum;
    uint256 max;
  }

  struct Item {
    address owner;
    uint256 huntingMultiplier;
    uint256 offenseMultiplier;
    uint256 defenseMultiplier;
    uint256 cost;
  }

  struct Depot {
    uint256 ethereum;
    uint256 max;
  }

  /* STORAGE */

  uint256 public constant INCREMENT_RATE = 12; // 120% for Item and Store
  Depot public depot;
  Pet[] public pets;
  Item[] public items;

  /* FUNCTION */

  function buyDepots(uint256 _amount) external payable {
    House storage _house = _houseOf(msg.sender);
    _house.depots = _house.depots.add(_amount);
    require(_house.depots <= depot.max);
    _payEthereumAndDistribute(_amount.mul(depot.ethereum));

    emit UpgradeDepot(msg.sender, _house.depots);
  }

  function buyPets(uint256 _id, uint256 _amount) external payable {
    require(_id < pets.length);
    Pet memory _pet = pets[_id];
    uint256 _chickenCost = _amount * _pet.chicken;
    _payChicken(msg.sender, _chickenCost);
    uint256 _ethereumCost = _amount * _pet.ethereum;
    _payEthereumAndDistribute(_ethereumCost);

    House storage _house = _houseOf(msg.sender);
    if (_house.pets.length < _id + 1) {
      _house.pets.length = _id + 1;
    }
    _house.pets[_id] = _house.pets[_id].add(_amount);
    require(_house.pets[_id] <= _pet.max);

    _house.huntingPower = _house.huntingPower.add(_pet.huntingPower * _amount);
    _house.offensePower = _house.offensePower.add(_pet.offensePower * _amount);
    _house.defensePower = _house.defensePower.add(_pet.defensePower * _amount);

    emit UpgradePet(msg.sender, _id, _house.pets[_id]);
  }

  // This is independent of Stock and Altar.
  function buyItem(uint256 _id) external payable {
    Item storage _item = items[_id];
    address _from = _item.owner;
    uint256 _price = _item.cost.mul(INCREMENT_RATE) / 10;
    _payEthereum(_price);

    saveChickenOf(_from);
    House storage _fromHouse = _houseOf(_from);
    _fromHouse.huntingMultiplier = _fromHouse.huntingMultiplier.sub(_item.huntingMultiplier);
    _fromHouse.offenseMultiplier = _fromHouse.offenseMultiplier.sub(_item.offenseMultiplier);
    _fromHouse.defenseMultiplier = _fromHouse.defenseMultiplier.sub(_item.defenseMultiplier);

    saveChickenOf(msg.sender);
    House storage _toHouse = _houseOf(msg.sender);
    _toHouse.huntingMultiplier = _toHouse.huntingMultiplier.add(_item.huntingMultiplier);
    _toHouse.offenseMultiplier = _toHouse.offenseMultiplier.add(_item.offenseMultiplier);
    _toHouse.defenseMultiplier = _toHouse.defenseMultiplier.add(_item.defenseMultiplier);

    uint256 _halfMargin = _price.sub(_item.cost) / 2;
    devFee = devFee.add(_halfMargin);
    ethereumBalance[_from] = ethereumBalance[_from].add(_price - _halfMargin);

    items[_id].cost = _price;
    items[_id].owner = msg.sender;

    emit BuyItem(_from, msg.sender, _id, _price);
  }

  // This is independent of Stock and Altar.
  function buyStore() external payable {
    address _from = store.owner;
    uint256 _price = store.cost.mul(INCREMENT_RATE) / 10;
    _payEthereum(_price);

    uint256 _halfMargin = (_price - store.cost) / 2;
    devFee = devFee.add(_halfMargin);
    ethereumBalance[_from] = ethereumBalance[_from].add(_price - _halfMargin).add(store.balance);

    store.cost = _price;
    store.owner = msg.sender;
    delete store.balance;

    emit BuyStore(_from, msg.sender, _price);
  }

  function withdrawStoreBalance() public {
    ethereumBalance[store.owner] = ethereumBalance[store.owner].add(store.balance);
    delete store.balance;
  }

}


/**
 * @title CHArena
 * @author M.H. Kang
 */
contract CHArena is CHHouse {

  /* EVENT */

  event Attack(
    address indexed attacker,
    address indexed defender,
    uint256 booty
  );

  /* STORAGE */

  mapping(address => uint256) public attackCooldown;
  uint256 public cooldownTime;

  /* FUNCTION */

  function attack(address _target) external {
    require(attackCooldown[msg.sender] < block.timestamp);
    House storage _attacker = houses[msg.sender];
    House storage _defender = houses[_target];
    if (_attacker.offensePower.mul(_attacker.offenseMultiplier)
        > _defender.defensePower.mul(_defender.defenseMultiplier)) {
      uint256 _chicken = saveChickenOf(_target);
      _chicken = _defender.depots > 0 ? _chicken / _defender.depots : _chicken;
      savedChickenOf[_target] = savedChickenOf[_target] - _chicken;
      savedChickenOf[msg.sender] = savedChickenOf[msg.sender].add(_chicken);
      attackCooldown[msg.sender] = block.timestamp + cooldownTime;

      emit Attack(msg.sender, _target, _chicken);
    }
  }

}


/**
 * @title CHAltar
 * @author M.H. Kang
 */
contract CHAltar is CHArena {

  /* EVENT */

  event NewAltarRecord(uint256 id, uint256 ethereum);
  event ChickenToAltar(address indexed user, uint256 id, uint256 chicken);
  event EthereumFromAltar(address indexed user, uint256 id, uint256 ethereum);

  /* DATA STRUCT */

  struct AltarRecord {
    uint256 ethereum;
    uint256 chicken;
  }

  struct TradeBook {
    uint256 altarRecordId;
    uint256 chicken;
  }

  /* STORAGE */

  uint256 public genesis;
  mapping (uint256 => AltarRecord) public altarRecords;
  mapping (address => TradeBook) public tradeBooks;

  /* FUNCTION */

  function chickenToAltar(uint256 _chicken) external {
    require(_chicken > 0);

    _payChicken(msg.sender, _chicken);
    uint256 _id = _getCurrentAltarRecordId();
    AltarRecord storage _altarRecord = _getAltarRecord(_id);
    require(_altarRecord.ethereum * _chicken / _chicken == _altarRecord.ethereum);
    TradeBook storage _tradeBook = tradeBooks[msg.sender];
    if (_tradeBook.altarRecordId < _id) {
      _resolveTradeBook(_tradeBook);
      _tradeBook.altarRecordId = _id;
    }
    _altarRecord.chicken = _altarRecord.chicken.add(_chicken);
    _tradeBook.chicken += _chicken;

    emit ChickenToAltar(msg.sender, _id, _chicken);
  }

  function ethereumFromAltar() external {
    uint256 _id = _getCurrentAltarRecordId();
    TradeBook storage _tradeBook = tradeBooks[msg.sender];
    require(_tradeBook.altarRecordId < _id);
    _resolveTradeBook(_tradeBook);
  }

  function tradeBookOf(address _user)
    public
    view
    returns (
      uint256 _id,
      uint256 _ethereum,
      uint256 _totalChicken,
      uint256 _chicken,
      uint256 _income
    )
  {
    TradeBook memory _tradeBook = tradeBooks[_user];
    _id = _tradeBook.altarRecordId;
    _chicken = _tradeBook.chicken;
    AltarRecord memory _altarRecord = altarRecords[_id];
    _totalChicken = _altarRecord.chicken;
    _ethereum = _altarRecord.ethereum;
    _income = _totalChicken > 0 ? _ethereum.mul(_chicken) / _totalChicken : 0;
  }

  /* INTERNAL FUNCTION */

  function _resolveTradeBook(TradeBook storage _tradeBook) internal {
    if (_tradeBook.chicken > 0) {
      AltarRecord memory _oldAltarRecord = altarRecords[_tradeBook.altarRecordId];
      uint256 _ethereum = _oldAltarRecord.ethereum.mul(_tradeBook.chicken) / _oldAltarRecord.chicken;
      delete _tradeBook.chicken;
      ethereumBalance[msg.sender] = ethereumBalance[msg.sender].add(_ethereum);

      emit EthereumFromAltar(msg.sender, _tradeBook.altarRecordId, _ethereum);
    }
  }

  function _getCurrentAltarRecordId() internal view returns (uint256) {
    return (block.timestamp - genesis) / 86400;
  }

  function _getAltarRecord(uint256 _id) internal returns (AltarRecord storage _altarRecord) {
    _altarRecord = altarRecords[_id];
    if (_altarRecord.ethereum == 0) {
      uint256 _ethereum = altarFund / 10;
      _altarRecord.ethereum = _ethereum;
      altarFund -= _ethereum;

      emit NewAltarRecord(_id, _ethereum);
    }
  }

}


/**
 * @title CHCommittee
 * @author M.H. Kang
 */
contract CHCommittee is CHAltar {

  /* EVENT */

  event NewPet(
    uint256 id,
    uint256 huntingPower,
    uint256 offensePower,
    uint256 defense,
    uint256 chicken,
    uint256 ethereum,
    uint256 max
  );

  event ChangePet(
    uint256 id,
    uint256 chicken,
    uint256 ethereum,
    uint256 max
  );

  event NewItem(
    uint256 id,
    uint256 huntingMultiplier,
    uint256 offenseMultiplier,
    uint256 defenseMultiplier,
    uint256 ethereum
  );

  event SetDepot(uint256 ethereum, uint256 max);

  event SetConfiguration(
    uint256 chickenA,
    uint256 ethereumA,
    uint256 maxA,
    uint256 chickenB,
    uint256 ethereumB,
    uint256 maxB
  );

  event SetDistribution(
    uint256 dividendRate,
    uint256 altarCut,
    uint256 storeCut,
    uint256 devCut
  );

  event SetCooldownTime(uint256 cooldownTime);
  event SetNameAndSymbol(string name, string symbol);
  event SetDeveloper(address developer);
  event SetCommittee(address committee);

  /* STORAGE */

  address public committee;
  address public developer;

  /* FUNCTION */

  function callFor(address _to, uint256 _value, uint256 _gas, bytes _code)
    external
    payable
    onlyCommittee
    returns (bool)
  {
    return _to.call.value(_value).gas(_gas)(_code);
  }

  function addPet(
    uint256 _huntingPower,
    uint256 _offensePower,
    uint256 _defense,
    uint256 _chicken,
    uint256 _ethereum,
    uint256 _max
  )
    public
    onlyCommittee
  {
    require(_max > 0);
    require(_max == uint256(uint32(_max)));
    uint256 _newLength = pets.push(
      Pet(_huntingPower, _offensePower, _defense, _chicken, _ethereum, _max)
    );

    emit NewPet(
      _newLength - 1,
      _huntingPower,
      _offensePower,
      _defense,
      _chicken,
      _ethereum,
      _max
    );
  }

  function changePet(
    uint256 _id,
    uint256 _chicken,
    uint256 _ethereum,
    uint256 _max
  )
    public
    onlyCommittee
  {
    require(_id < pets.length);
    Pet storage _pet = pets[_id];
    require(_max >= _pet.max && _max == uint256(uint32(_max)));

    _pet.chicken = _chicken;
    _pet.ethereum = _ethereum;
    _pet.max = _max;

    emit ChangePet(_id, _chicken, _ethereum, _max);
  }

  function addItem(
    uint256 _huntingMultiplier,
    uint256 _offenseMultiplier,
    uint256 _defenseMultiplier,
    uint256 _price
  )
    public
    onlyCommittee
  {
    uint256 _cap = 1 << 16;
    require(
      _huntingMultiplier < _cap &&
      _offenseMultiplier < _cap &&
      _defenseMultiplier < _cap
    );
    saveChickenOf(committee);
    House storage _house = _houseOf(committee);
    _house.huntingMultiplier = _house.huntingMultiplier.add(_huntingMultiplier);
    _house.offenseMultiplier = _house.offenseMultiplier.add(_offenseMultiplier);
    _house.defenseMultiplier = _house.defenseMultiplier.add(_defenseMultiplier);

    uint256 _newLength = items.push(
      Item(
        committee,
        _huntingMultiplier,
        _offenseMultiplier,
        _defenseMultiplier,
        _price
      )
    );

    emit NewItem(
      _newLength - 1,
      _huntingMultiplier,
      _offenseMultiplier,
      _defenseMultiplier,
      _price
    );
  }

  function setDepot(uint256 _price, uint256 _max) public onlyCommittee {
    require(_max >= depot.max);

    depot.ethereum = _price;
    depot.max = _max;

    emit SetDepot(_price, _max);
  }

  function setConfiguration(
    uint256 _chickenA,
    uint256 _ethereumA,
    uint256 _maxA,
    uint256 _chickenB,
    uint256 _ethereumB,
    uint256 _maxB
  )
    public
    onlyCommittee
  {
    require(_maxA >= typeA.max && (_maxA == uint256(uint32(_maxA))));
    require(_maxB >= typeB.max && (_maxB == uint256(uint32(_maxB))));

    typeA.chicken = _chickenA;
    typeA.ethereum = _ethereumA;
    typeA.max = _maxA;

    typeB.chicken = _chickenB;
    typeB.ethereum = _ethereumB;
    typeB.max = _maxB;

    emit SetConfiguration(_chickenA, _ethereumA, _maxA, _chickenB, _ethereumB, _maxB);
  }

  function setDistribution(
    uint256 _dividendRate,
    uint256 _altarCut,
    uint256 _storeCut,
    uint256 _devCut
  )
    public
    onlyCommittee
  {
    require(_storeCut > 0);
    require(
      _dividendRate.add(_altarCut).add(_storeCut).add(_devCut) == 100
    );

    dividendRate = _dividendRate;
    altarCut = _altarCut;
    store.cut = _storeCut;
    devCut = _devCut;

    emit SetDistribution(_dividendRate, _altarCut, _storeCut, _devCut);
  }

  function setCooldownTime(uint256 _cooldownTime) public onlyCommittee {
    cooldownTime = _cooldownTime;

    emit SetCooldownTime(_cooldownTime);
  }

  function setNameAndSymbol(string _name, string _symbol)
    public
    onlyCommittee
  {
    name = _name;
    symbol = _symbol;

    emit SetNameAndSymbol(_name, _symbol);
  }

  function setDeveloper(address _developer) public onlyCommittee {
    require(_developer != address(0));
    withdrawDevFee();
    developer = _developer;

    emit SetDeveloper(_developer);
  }

  function setCommittee(address _committee) public onlyCommittee {
    require(_committee != address(0));
    committee = _committee;

    emit SetCommittee(_committee);
  }

  function withdrawDevFee() public {
    ethereumBalance[developer] = ethereumBalance[developer].add(devFee);
    delete devFee;
  }

  /* MODIFIER */

  modifier onlyCommittee {
    require(msg.sender == committee);
    _;
  }

}


/**
 * @title ChickenHunt
 * @author M.H. Kang
 */
contract ChickenHunt is CHCommittee {

  /* EVENT */

  event Join(address user);

  /* CONSTRUCTOR */

  constructor() public {
    committee = msg.sender;
    developer = msg.sender;
  }

  /* FUNCTION */

  function init(address _chickenTokenDelegator) external onlyCommittee {
    require(chickenTokenDelegator == address(0));
    chickenTokenDelegator = _chickenTokenDelegator;
    genesis = 1525791600;
    join();
    store.owner = msg.sender;
    store.cost = 0.1 ether;
    setConfiguration(100, 0.00001 ether, 99, 100000, 0.001 ether, 9);
    setDistribution(20, 75, 1, 4);
    setCooldownTime(600);
    setDepot(0.05 ether, 9);
    addItem(5, 5, 0, 0.01 ether);
    addItem(0, 0, 5, 0.01 ether);
    addPet(1000, 0, 0, 100000, 0.01 ether, 9);
    addPet(0, 1000, 0, 100000, 0.01 ether, 9);
    addPet(0, 0, 1000, 202500, 0.01 ether, 9);
  }

  function withdraw() external {
    uint256 _ethereum = ethereumBalance[msg.sender];
    delete ethereumBalance[msg.sender];
    msg.sender.transfer(_ethereum);
  }

  function join() public {
    House storage _house = houses[msg.sender];
    require(_house.depots == 0);
    _house.hunter = Hunter(1, 1, 1, 1);
    _house.depots = 1;
    _house.huntingPower = 10;
    _house.offensePower = 10;
    _house.defensePower = 110;
    _house.huntingMultiplier = 10;
    _house.offenseMultiplier = 10;
    _house.defenseMultiplier = 10;
    lastSaveTime[msg.sender] = block.timestamp;

    emit Join(msg.sender);
  }

  function hunterOf(address _user)
    public
    view
    returns (
      uint256 _strength,
      uint256 _dexterity,
      uint256 _constitution,
      uint256 _resistance
    )
  {
    Hunter memory _hunter = houses[_user].hunter;
    return (
      _hunter.strength,
      _hunter.dexterity,
      _hunter.constitution,
      _hunter.resistance
    );
  }

  function detailsOf(address _user)
    public
    view
    returns (
      uint256[2] _hunting,
      uint256[2] _offense,
      uint256[2] _defense,
      uint256[4] _hunter,
      uint256[] _pets,
      uint256 _depots,
      uint256 _savedChicken,
      uint256 _lastSaveTime,
      uint256 _cooldown
    )
  {
    House memory _house = houses[_user];

    _hunting = [_house.huntingPower, _house.huntingMultiplier];
    _offense = [_house.offensePower, _house.offenseMultiplier];
    _defense = [_house.defensePower, _house.defenseMultiplier];
    _hunter = [
      _house.hunter.strength,
      _house.hunter.dexterity,
      _house.hunter.constitution,
      _house.hunter.resistance
    ];
    _pets = _house.pets;
    _depots = _house.depots;
    _savedChicken = savedChickenOf[_user];
    _lastSaveTime = lastSaveTime[_user];
    _cooldown = attackCooldown[_user];
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_shareholder","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"depot","outputs":[{"name":"ethereum","type":"uint256"},{"name":"max","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"buyPets","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"detailsOf","outputs":[{"name":"_hunting","type":"uint256[2]"},{"name":"_offense","type":"uint256[2]"},{"name":"_defense","type":"uint256[2]"},{"name":"_hunter","type":"uint256[4]"},{"name":"_pets","type":"uint256[]"},{"name":"_depots","type":"uint256"},{"name":"_savedChicken","type":"uint256"},{"name":"_lastSaveTime","type":"uint256"},{"name":"_cooldown","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dividendRate","type":"uint256"},{"name":"_altarCut","type":"uint256"},{"name":"_storeCut","type":"uint256"},{"name":"_devCut","type":"uint256"}],"name":"setDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_chickenTokenDelegator","type":"address"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"uint256"}],"name":"upgradeDexterity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"altarCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawStoreBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"typeB","outputs":[{"name":"chicken","type":"uint256"},{"name":"ethereum","type":"uint256"},{"name":"max","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_chicken","type":"uint256"}],"name":"chickenToAltar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyStore","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"uint256"}],"name":"upgradeConstitution","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_huntingMultiplier","type":"uint256"},{"name":"_offenseMultiplier","type":"uint256"},{"name":"_defenseMultiplier","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"addItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"uint256"}],"name":"upgradeResistance","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"name":"setNameAndSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INCREMENT_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ethereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"chickenOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cooldownTime","type":"uint256"}],"name":"setCooldownTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"buyDepots","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"typeA","outputs":[{"name":"chicken","type":"uint256"},{"name":"ethereum","type":"uint256"},{"name":"max","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"setDepot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"savedChickenOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_huntingPower","type":"uint256"},{"name":"_offensePower","type":"uint256"},{"name":"_defense","type":"uint256"},{"name":"_chicken","type":"uint256"},{"name":"_ethereum","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"addPet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"store","outputs":[{"name":"owner","type":"address"},{"name":"cut","type":"uint256"},{"name":"cost","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ethereumFromAltar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"devCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"genesis","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"hunterOf","outputs":[{"name":"_strength","type":"uint256"},{"name":"_dexterity","type":"uint256"},{"name":"_constitution","type":"uint256"},{"name":"_resistance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"altarRecords","outputs":[{"name":"ethereum","type":"uint256"},{"name":"chicken","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cooldownTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"redeemShares","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_chickenA","type":"uint256"},{"name":"_ethereumA","type":"uint256"},{"name":"_maxA","type":"uint256"},{"name":"_chickenB","type":"uint256"},{"name":"_ethereumB","type":"uint256"},{"name":"_maxB","type":"uint256"}],"name":"setConfiguration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tradeBooks","outputs":[{"name":"altarRecordId","type":"uint256"},{"name":"chicken","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_committee","type":"address"}],"name":"setCommittee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"items","outputs":[{"name":"owner","type":"address"},{"name":"huntingMultiplier","type":"uint256"},{"name":"offenseMultiplier","type":"uint256"},{"name":"defenseMultiplier","type":"uint256"},{"name":"cost","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalChicken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gas","type":"uint256"},{"name":"_code","type":"bytes"}],"name":"callFor","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferChickenFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDevFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CORRECTION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pets","outputs":[{"name":"huntingPower","type":"uint256"},{"name":"offensePower","type":"uint256"},{"name":"defensePower","type":"uint256"},{"name":"chicken","type":"uint256"},{"name":"ethereum","type":"uint256"},{"name":"max","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"attack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"tradeBookOf","outputs":[{"name":"_id","type":"uint256"},{"name":"_ethereum","type":"uint256"},{"name":"_totalChicken","type":"uint256"},{"name":"_chicken","type":"uint256"},{"name":"_income","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"uint256"}],"name":"upgradeStrength","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"dividendRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"committee","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"chickenTokenDelegator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"saveChickenOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dividendsPerShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"buyItem","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"altarFund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastSaveTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"attackCooldown","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_chicken","type":"uint256"},{"name":"_ethereum","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"changePet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_developer","type":"address"}],"name":"setDeveloper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"}],"name":"Join","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"huntingPower","type":"uint256"},{"indexed":false,"name":"offensePower","type":"uint256"},{"indexed":false,"name":"defense","type":"uint256"},{"indexed":false,"name":"chicken","type":"uint256"},{"indexed":false,"name":"ethereum","type":"uint256"},{"indexed":false,"name":"max","type":"uint256"}],"name":"NewPet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"chicken","type":"uint256"},{"indexed":false,"name":"ethereum","type":"uint256"},{"indexed":false,"name":"max","type":"uint256"}],"name":"ChangePet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"huntingMultiplier","type":"uint256"},{"indexed":false,"name":"offenseMultiplier","type":"uint256"},{"indexed":false,"name":"defenseMultiplier","type":"uint256"},{"indexed":false,"name":"ethereum","type":"uint256"}],"name":"NewItem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethereum","type":"uint256"},{"indexed":false,"name":"max","type":"uint256"}],"name":"SetDepot","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"chickenA","type":"uint256"},{"indexed":false,"name":"ethereumA","type":"uint256"},{"indexed":false,"name":"maxA","type":"uint256"},{"indexed":false,"name":"chickenB","type":"uint256"},{"indexed":false,"name":"ethereumB","type":"uint256"},{"indexed":false,"name":"maxB","type":"uint256"}],"name":"SetConfiguration","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dividendRate","type":"uint256"},{"indexed":false,"name":"altarCut","type":"uint256"},{"indexed":false,"name":"storeCut","type":"uint256"},{"indexed":false,"name":"devCut","type":"uint256"}],"name":"SetDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cooldownTime","type":"uint256"}],"name":"SetCooldownTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"symbol","type":"string"}],"name":"SetNameAndSymbol","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"developer","type":"address"}],"name":"SetDeveloper","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"committee","type":"address"}],"name":"SetCommittee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"ethereum","type":"uint256"}],"name":"NewAltarRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"chicken","type":"uint256"}],"name":"ChickenToAltar","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"ethereum","type":"uint256"}],"name":"EthereumFromAltar","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"attacker","type":"address"},{"indexed":true,"name":"defender","type":"address"},{"indexed":false,"name":"booty","type":"uint256"}],"name":"Attack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"UpgradePet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"to","type":"uint256"}],"name":"UpgradeDepot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"cost","type":"uint256"}],"name":"BuyItem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"cost","type":"uint256"}],"name":"BuyStore","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"attribute","type":"string"},{"indexed":false,"name":"to","type":"uint256"}],"name":"UpgradeHunter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"shares","type":"uint256"},{"indexed":false,"name":"dividends","type":"uint256"}],"name":"RedeemShares","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052601060808190527f436869636b656e48756e7453746f636b0000000000000000000000000000000060a0908152620000409160009190620000cb565b506040805180820190915260038082527f434853000000000000000000000000000000000000000000000000000000000060209092019182526200008791600191620000cb565b506002805460ff19166012179055348015620000a257600080fd5b506027805433600160a060020a0319918216811790925560288054909116909117905562000170565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200010e57805160ff19168380011785556200013e565b828001600101855582156200013e579182015b828111156200013e57825182559160200191906001019062000121565b506200014c92915062000150565b5090565b6200016d91905b808211156200014c576000815560010162000157565b90565b613b8b80620001806000396000f3006080604052600436106103415763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b8114610346578063016899de14610379578063045f955b146103a757806306fdde03146103b7578063095ea7b3146104415780630adae972146104795780630fc709e5146105ba57806318160ddd146105db57806319ab453c146105f05780631fa087551461061157806323b872dd1461061c57806327bb020a1461064657806328b8b1081461065b5780632b2e715914610670578063313ce567146106a35780633a98ef39146106ce5780633ccfd60b146106e357806341ad3f57146106f8578063463ac31b146107105780634c97c83614610718578063572b130f146107235780635996228e146107445780635a4462151461074f5780635baef4f3146107e65780635c5c1285146107fb57806363fd7eb01461081c5780636827e7641461083d5780636ff732011461085257806370a082311461086a578063765878471461088b5780637ebd02f8146108965780638e7a1697146108ab578063910ab259146108c6578063916a4b57146108e757806395d89b411461090e578063975057e71461092357806398d714ac146109685780639c2868371461097d578063a7f0b3de14610992578063a9059cbb146109a7578063a9782954146109cb578063aaa363c914610a12578063b319c6b714610a2a578063b460481d14610a3f578063b48fcdc014610a54578063b688a36314610a7b578063b92c404f14610a90578063bddae40e14610ab1578063bfb231d214610ad2578063c3ba65e714610b1f578063c60c3aca14610b34578063ca1a308614610b5c578063ca4b208b14610b86578063cb93f7ef14610bb7578063ce5e9ffb14610bcc578063cfb869bf14610be1578063d018db3e14610c2c578063d1a6102514610c4d578063d583644b14610c99578063d6a3f37414610ca4578063d864e74014610cb9578063dba8be6e14610cce578063dd62ed3e14610ce3578063de2f827e14610d0a578063e2d2e21914610d2b578063e7fb74c714610d40578063eb4eecec14610d4b578063efab37bf14610d60578063f0bb754014610d81578063f67501f714610da2578063ff70fa4914610dc3575b600080fd5b34801561035257600080fd5b50610367600160a060020a0360043516610de4565b60408051918252519081900360200190f35b34801561038557600080fd5b5061038e610e61565b6040805192835260208301919091528051918290030190f35b6103b5600435602435610e6a565b005b3480156103c357600080fd5b506103cc611074565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044d57600080fd5b50610465600160a060020a0360043516602435611102565b604080519115158252519081900360200190f35b34801561048557600080fd5b5061049a600160a060020a0360043516611169565b604051808a600260200280838360005b838110156104c25781810151838201526020016104aa565b5050505090500189600260200280838360005b838110156104ed5781810151838201526020016104d5565b5050505090500188600260200280838360005b83811015610518578181015183820152602001610500565b5050505090500187600460200280838360005b8381101561054357818101518382015260200161052b565b5050505090500180602001868152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019060200280838360005b8381101561059e578181015183820152602001610586565b505050509050019a505050505050505050505060405180910390f35b3480156105c657600080fd5b506103b56004356024356044356064356113c0565b3480156105e757600080fd5b50610367611467565b3480156105fc57600080fd5b506103b5600160a060020a036004351661146e565b6103b56004356115b4565b34801561062857600080fd5b50610465600160a060020a03600435811690602435166044356116de565b34801561065257600080fd5b5061036761174d565b34801561066757600080fd5b506103b5611753565b34801561067c57600080fd5b506106856117a3565b60408051938452602084019290925282820152519081900360600190f35b3480156106af57600080fd5b506106b86117af565b6040805160ff9092168252519081900360200190f35b3480156106da57600080fd5b506103676117b8565b3480156106ef57600080fd5b506103b56117be565b34801561070457600080fd5b506103b5600435611803565b6103b56118d9565b6103b56004356119e5565b34801561072f57600080fd5b506103b5600435602435604435606435611af9565b6103b5600435611d36565b34801561075b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103b594369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611e3d9650505050505050565b3480156107f257600080fd5b50610367611f80565b34801561080757600080fd5b50610367600160a060020a0360043516611f85565b34801561082857600080fd5b50610367600160a060020a0360043516611f97565b34801561084957600080fd5b50610367611fca565b34801561085e57600080fd5b506103b5600435611fd0565b34801561087657600080fd5b50610367600160a060020a0360043516612022565b6103b560043561203d565b3480156108a257600080fd5b506106856120d0565b3480156108b757600080fd5b506103b56004356024356120dc565b3480156108d257600080fd5b50610367600160a060020a036004351661214b565b3480156108f357600080fd5b506103b560043560243560443560643560843560a43561215d565b34801561091a57600080fd5b506103cc612328565b34801561092f57600080fd5b50610938612382565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561097457600080fd5b506103b561239d565b34801561098957600080fd5b506103676123d2565b34801561099e57600080fd5b506103676123d8565b3480156109b357600080fd5b50610465600160a060020a03600435166024356123de565b3480156109d757600080fd5b506109ec600160a060020a03600435166123f4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610a1e57600080fd5b5061038e60043561245d565b348015610a3657600080fd5b50610367612476565b348015610a4b57600080fd5b506103b561247c565b348015610a6057600080fd5b506103b560043560243560443560643560843560a43561254b565b348015610a8757600080fd5b506103b5612621565b348015610a9c57600080fd5b5061038e600160a060020a03600435166126f0565b348015610abd57600080fd5b506103b5600160a060020a0360043516612709565b348015610ade57600080fd5b50610aea600435612789565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610b2b57600080fd5b506103676127d2565b61046560048035600160a060020a0316906024803591604435916064359081019101356127d8565b348015610b6857600080fd5b50610465600160a060020a036004358116906024351660443561282f565b348015610b9257600080fd5b50610b9b6128b9565b60408051600160a060020a039092168252519081900360200190f35b348015610bc357600080fd5b506103b56128c8565b348015610bd857600080fd5b50610367612918565b348015610bed57600080fd5b50610bf9600435612925565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610c3857600080fd5b506103b5600160a060020a0360043516612969565b348015610c5957600080fd5b50610c6e600160a060020a0360043516612ab6565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6103b5600435612b66565b348015610cb057600080fd5b50610367612c8d565b348015610cc557600080fd5b50610b9b612c93565b348015610cda57600080fd5b50610b9b612ca2565b348015610cef57600080fd5b50610367600160a060020a0360043581169060243516612cb1565b348015610d1657600080fd5b50610367600160a060020a0360043516612cdc565b348015610d3757600080fd5b50610367612d5e565b6103b5600435612d64565b348015610d5757600080fd5b50610367612fd4565b348015610d6c57600080fd5b50610367600160a060020a0360043516612fda565b348015610d8d57600080fd5b50610367600160a060020a0360043516612fec565b348015610dae57600080fd5b506103b5600435602435604435606435612ffe565b348015610dcf57600080fd5b506103b5600160a060020a03600435166130cb565b600160a060020a03811660009081526008602090815260408083205460078352818420546006909352908320546004546801000000000000000093610e4f9392610e4392610e379163ffffffff61315316565b9063ffffffff61317c16565b9063ffffffff61318916565b811515610e5857fe5b0490505b919050565b601e54601f5482565b610e7261397f565b602054600090819081908610610e8757600080fd5b6020805487908110610e9557fe5b906000526020600020906006020160c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815250509350836060015185029250610f00338461319b565b836080015185029150610f1282613261565b610f1b336132fb565b600b810154909150600187011115610f405760018601610f3e600b8301826139b6565b505b610f6e8582600b0188815481101515610f5557fe5b906000526020600020015461317c90919063ffffffff16565b600b8201805488908110610f7e57fe5b60009182526020909120015560a0840151600b8201805488908110610f9f57fe5b906000526020600020015411151515610fb757600080fd5b83516004820154610fcf91870263ffffffff61317c16565b600482015560208401516005820154610fef91870263ffffffff61317c16565b60058201556040840151600682015461100f91870263ffffffff61317c16565b6006820155600b8101805433917f16ab5780b3810d9cdc9a1ed37ce0fa7ea98e877c6f8a257fb37b16833bcba471918991908290811061104b57fe5b6000918252602091829020015460408051938452918301528051918290030190a2505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050505081565b336000818152600960209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6111716139da565b6111796139da565b6111816139da565b6111896139f5565b6060600080600080611199613a14565b600160a060020a038b1660009081526017602090815260409182902082516101a0810184528154610120820190815260018301546101408301526002830154610160830152600383015461018083015281526004820154818401526005820154818501526006820154606082015260078201546080820152600882015460a0820152600982015460c0820152600a82015460e0820152600b8201805485518186028101860190965280865291949293610100860193929083018282801561127f57602002820191906000526020600020905b81548152602001906001019080831161126b575b5050505050815250509050604080519081016040528082602001518152602001826080015181525099506040805190810160405280826040015181526020018260a0015181525098506040805190810160405280826060015181526020018260c001518152509750608060405190810160405280826000015160000151815260200182600001516020015181526020018260000151604001518152602001826000015160600151815250965080610100015195508060e001519450601660008c600160a060020a0316600160a060020a03168152602001908152602001600020549350601560008c600160a060020a0316600160a060020a03168152602001908152602001600020549250602260008c600160a060020a0316600160a060020a03168152602001908152602001600020549150509193959799909294969850565b602754600160a060020a031633146113d757600080fd5b600082116113e457600080fd5b6113fa81610e378481888863ffffffff61317c16565b60641461140657600080fd5b60128490556010839055600b829055600e81905560408051858152602081018590528082018490526060810183905290517f19b0c2b62f3fec0fb2a4ad13aa46c5627e326ae04dd8fba61a5b905cd53f7eb79181900360800190a150505050565b6003545b90565b602754600160a060020a0316331461148557600080fd5b601454600160a060020a03161561149b57600080fd5b60148054600160a060020a031916600160a060020a038316179055635af1bb706024556114c6612621565b600a8054600160a060020a0319163317905567016345785d8a0000600c5561150560646509184e72a0006063620186a066038d7ea4c68000600961254b565b6115156014604b600160046113c0565b611520610258611fd0565b61153266b1a2bc2ec5000060096120dc565b6115476005806000662386f26fc10000611af9565b61155c6000806005662386f26fc10000611af9565b6115786103e8600080620186a0662386f26fc10000600961215d565b61159560006103e86000620186a0662386f26fc10000600961215d565b6115b16000806103e862031704662386f26fc10000600961215d565b50565b60008060006115c2336132fb565b6001810154601d54919450925084118015906115dd57508184115b15156115e857600080fd5b60408051606081018252601b548152601c546020820152601d54918101919091526116169083908690613324565b61164361162c838603600263ffffffff61315316565b84546116379061337e565b9063ffffffff61315316565b600184018590556004840154909150611662908263ffffffff61317c16565b6004840155600583015461167c908263ffffffff61317c16565b600584015560408051602081018690528181526009818301527f6465787465726974790000000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b600160a060020a038316600090815260096020908152604080832033845290915281205482111561170e57600080fd5b600160a060020a038416600090815260096020908152604080832033845290915290208054839003905561174384848461338a565b5060019392505050565b60105481565b600d54600a54600160a060020a03166000908152600560205260409020546117809163ffffffff61317c16565b600a54600160a060020a0316600090815260056020526040812091909155600d55565b601b54601c54601d5483565b60025460ff1681565b60035481565b33600081815260056020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156117ff573d6000803e3d6000fd5b5050565b6000808080841161181357600080fd5b61181d338561319b565b611825613595565b9250611830836135a5565b80549092508480820281151561184257fe5b041461184d57600080fd5b5033600090815260266020526040902080548311156118735761186f81613614565b8281555b6001820154611888908563ffffffff61317c16565b60018084019190915581018054850190556040805184815260208101869052815133927f249d3c255987361d5d69f32914f89ba3b6617f290ed9e435126a39a7cff6d996928290030190a250505050565b600a8054600c8054600160a060020a03909216926000928392611902919063ffffffff61315316565b81151561190b57fe5b049150611917826136fd565b600c54600290830304905061193781600f5461317c90919063ffffffff16565b600f55600d54600160a060020a03841660009081526005602052604090205461196d9190610e379084860363ffffffff61317c16565b600160a060020a038416600081815260056020908152604080832094909455600c869055600a8054600160a060020a03191633908117909155600d929092558351868152935191937f0f24f9f79a489f214543721c774ce6b52901934b07e7da8c77642f1866f0e841929081900390910190a3505050565b60008060006119f3336132fb565b6002810154601a5491945092508411801590611a0e57508184115b1515611a1957600080fd5b6040805160608101825260185481526019546020820152601a5491810191909152611a479083908690613324565b611a786002830a611a578661337e565b036116376008610e376002886000016003015461315390919063ffffffff16565b600284018590556006840154909150611a97908263ffffffff61317c16565b60068401556040805160208101869052818152600c818301527f636f6e737469747574696f6e0000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b60275460009081908190600160a060020a03163314611b1757600080fd5b6201000092508287108015611b2b57508286105b8015611b3657508285105b1515611b4157600080fd5b602754611b5690600160a060020a0316612cdc565b50602754611b6c90600160a060020a03166132fb565b6007810154909250611b84908863ffffffff61317c16565b60078301556008820154611b9e908763ffffffff61317c16565b60088301556009820154611bb8908663ffffffff61317c16565b6009830155506040805160a08082018352602754600160a060020a03908116835260208084018b81528486018b815260608087018c815260808089018d815260218054600181018083556000929092529a517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57060058d029081018054600160a060020a03191692909b169190911790995595517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57189015593517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57288015590517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57387015591517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5749095019490945586519586529185018c90528486018b9052918401899052830187905292517f2f770e091da1eb4be223d793b34fcd1b5cbff2f4c74ad7f2d7d55c1eceda488d9281900390910190a150505050505050565b6000806000611d44336132fb565b6003810154601d5491945092508411801590611d5f57508184115b1515611d6a57600080fd5b60408051606081018252601b548152601c546020820152601d5491810191909152611d989083908690613324565b611dbc611dae838603600263ffffffff61315316565b60028501546116379061337e565b600384018590556006840154909150611ddb908263ffffffff61317c16565b60068401556040805160208101869052818152600a818301527f726573697374616e636500000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b602754600160a060020a03163314611e5457600080fd5b8151611e67906000906020850190613a67565b508051611e7b906001906020840190613a67565b507fd150542982eaa18f20ceb10f524c418899e6a331a81ee4a70daa921f976fab3b8282604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ee0578181015183820152602001611ec8565b50505050905090810190601f168015611f0d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611f40578181015183820152602001611f28565b50505050905090810190601f168015611f6d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050565b600c81565b60056020526000908152604090205481565b6000611163611fa58361377d565b600160a060020a0384166000908152601660205260409020549063ffffffff61317c16565b600f5481565b602754600160a060020a03163314611fe757600080fd5b60238190556040805182815290517ff1f62fb53f063eeed657f6ed8c238c2e61ef9547b206dac91c836599fb8f7a339181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000612048336132fb565b600a810154909150612060908363ffffffff61317c16565b600a8201819055601f54101561207557600080fd5b601e546120929061208d90849063ffffffff61315316565b613261565b600a810154604080519182525133917f088f18ecb97af8211f9549cddf9227ee53f8fda22b969dab5621461c80fc7d50919081900360200190a25050565b601854601954601a5483565b602754600160a060020a031633146120f357600080fd5b601f5481101561210257600080fd5b601e829055601f819055604080518381526020810183905281517f25e5d03ea9004bbd99c954a40cefdb9a23e87966152ac725e8c44386f6e11798929181900390910190a15050565b60166020526000908152604090205481565b602754600090600160a060020a0316331461217757600080fd5b6000821161218457600080fd5b63ffffffff8216821461219657600080fd5b506040805160c08181018352888252602082810189815283850189815260608086018a815260808088018b815260a0808a018c8152885460018101808b5560008b90529b51600682027fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb81019190915598517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bc8a015596517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bd89015593517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866be88015590517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bf87015591517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866c09095019490945587519283529382018d90528187018c905281018a9052908101889052908101869052908101849052915190917f825cf2439eaf73dfac2c09fd8f2d837fad3d41ae9997922036b523f11e6c1226919081900360e00190a150505050505050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110fa5780601f106110cf576101008083540402835291602001916110fa565b600a54600b54600c54600d54600160a060020a039093169284565b6000806123a8613595565b3360009081526026602052604090208054919350915082116123c957600080fd5b6117ff81613614565b600e5481565b60245481565b60006123eb33848461338a565b50600192915050565b600080600080612402613ae5565b50505050600160a060020a039190911660009081526017602090815260409182902082516080810184528154808252600183015493820184905260028301549482018590526003909201546060909101819052909491935090565b6025602052600090815260409020805460019091015482565b60235481565b336000818152600660205260408120549161249690610de4565b3360009081526006602090815260408083208390556007825280832083905560089091528120556003549091506124d3908363ffffffff61318916565b600355336000908152600560205260409020546124f6908263ffffffff61317c16565b33600081815260056020908152604091829020939093558051858152928301849052805191927fef7fb21fed1701a6c82b78d78bad1ddab67e41025c2d5078a1be2a3a238b4e62929081900390910190a25050565b602754600160a060020a0316331461256257600080fd5b601a54841080159061257957508363ffffffff1684145b151561258457600080fd5b601d54811080159061259b57508063ffffffff1681145b15156125a657600080fd5b60188690556019859055601a849055601b839055601c829055601d8190556040805187815260208101879052808201869052606081018590526080810184905260a0810183905290517fdd7612d23bf1ba260c41948384c8a672815d6e6f03705f4ccb8db39d01bb49d09181900360c00190a1505050505050565b336000908152601760205260409020600a8101541561263f57600080fd5b604080516080810182526001808252602080830182905282840182905260609092018190528084558381018190556002840181905560038401819055600a808501919091556004840181905560058401819055606e60068501556007840181905560088401819055600984015533600081815260158352839020429055825190815291517f0764c80c4165f118547b301a0b4b91eac21bd2f2d9b61d0ac723ff0aab27bb799281900390910190a150565b6026602052600090815260409020805460019091015482565b602754600160a060020a0316331461272057600080fd5b600160a060020a038116151561273557600080fd5b60278054600160a060020a038316600160a060020a0319909116811790915560408051918252517f22a3400c609e52ea781540daed872a0ff7b79a428f634be082c24c2faf0684639181900360200190a150565b602180548290811061279757fe5b600091825260209091206005909102018054600182015460028301546003840154600490940154600160a060020a0390931694509092909185565b60135481565b602754600090600160a060020a031633146127f257600080fd5b85600160a060020a0316858590858560405180838380828437820191505092505050600060405180830381858888f19a9950505050505050505050565b601454600090600160a060020a0316331461284957600080fd5b8161285385612cdc565b101561285e57600080fd5b600160a060020a038085166000908152601660205260408082208054869003905591851681522054612896908363ffffffff61317c16565b600160a060020a0384166000908152601660205260409020555060019392505050565b602854600160a060020a031681565b600f54602854600160a060020a03166000908152600560205260409020546128f59163ffffffff61317c16565b602854600160a060020a0316600090815260056020526040812091909155600f55565b6801000000000000000081565b602080548290811061293357fe5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501549395509193909286565b3360009081526022602052604081205481908190421161298857600080fd5b33600090815260176020526040808220600160a060020a03871683529120600981015460068201549295509093506129c6919063ffffffff61315316565b600884015460058501546129df9163ffffffff61315316565b1115612ab0576129ee84612cdc565b9050600082600a015411612a025780612a13565b81600a015481811515612a1157fe5b045b600160a060020a03851660009081526016602052604080822080548490039055338252902054909150612a4c908263ffffffff61317c16565b3360008181526016602090815260408083209490945560235460228252918490204290920190915582518481529251600160a060020a038816937f07fc6d85ef6db5c911f925dd0be5e0b6139a4d732479327729330fcf4ab15e2d92908290030190a35b50505050565b6000806000806000612ac6613b0e565b612ace613b0e565b5050600160a060020a03861660009081526026602090815260408083208151808301835281548082526001928301548286018190528187526025865284872085518087019096528054808752940154958501869052909a50919850929650945090918511612b3d576000612b59565b84612b4e878663ffffffff61315316565b811515612b5757fe5b045b9250505091939590929450565b6000806000612b74336132fb565b8054601a5491945092508411801590612b8c57508184115b1515612b9757600080fd5b6040805160608101825260185481526019546020820152601a5491810191909152612bc59083908690613324565b612bf66002830a612bd58661337e565b036116376008610e376002886000016001015461315390919063ffffffff16565b8484556004840154909150612c11908263ffffffff61317c16565b60048401556005830154612c2b908263ffffffff61317c16565b600584015560408051602081018690528181526008818301527f737472656e677468000000000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b60125481565b602754600160a060020a031681565b601454600160a060020a031681565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b6000806000612cea8461377d565b601354909250612d00908363ffffffff61317c16565b601355600160a060020a038416600090815260166020526040902054612d2c908363ffffffff61317c16565b600160a060020a0394909416600090815260166020908152604080832087905560159091529020429055509192915050565b60045481565b600080600080600080602187815481101515612d7c57fe5b6000918252602090912060059091020180546004820154919750600160a060020a03169550600a90612db590600c63ffffffff61315316565b811515612dbe57fe5b049350612dca846136fd565b612dd385612cdc565b50612ddd856132fb565b9250612dfa8660010154846007015461318990919063ffffffff16565b600784015560028601546008840154612e189163ffffffff61318916565b600884015560038601546009840154612e369163ffffffff61318916565b6009840155612e4433612cdc565b50612e4e336132fb565b9150612e6b8660010154836007015461317c90919063ffffffff16565b600783015560028601546008830154612e899163ffffffff61317c16565b600883015560038601546009830154612ea79163ffffffff61317c16565b60098301556004860154600290612ec590869063ffffffff61318916565b811515612ece57fe5b049050612ee681600f5461317c90919063ffffffff16565b600f55600160a060020a038516600090815260056020526040902054612f149082860363ffffffff61317c16565b600160a060020a0386166000908152600560205260409020556021805485919089908110612f3e57fe5b90600052602060002090600502016004018190555033602188815481101515612f6357fe5b6000918252602091829020600591909102018054600160a060020a031916600160a060020a039384161790556040805187815290518a933393908a16927fc6d7a5e59f38ae48e0f1577ce4627ba9b270bfd4c2c0c7be609c429421bc3d68929081900390910190a450505050505050565b60115481565b60156020526000908152604090205481565b60226020526000908152604090205481565b602754600090600160a060020a0316331461301857600080fd5b602054851061302657600080fd5b602080548690811061303457fe5b906000526020600020906006020190508060050154821015801561305d57508163ffffffff1682145b151561306857600080fd5b60038101849055600481018390556005810182905560408051868152602081018690528082018590526060810184905290517f2c2e9072543dfe5f0b03fabc22ced8ddd4e6f976a64f2f4726c4ea72cf8d31c09181900360800190a15050505050565b602754600160a060020a031633146130e257600080fd5b600160a060020a03811615156130f757600080fd5b6130ff6128c8565b60288054600160a060020a038316600160a060020a0319909116811790915560408051918252517f8aaf3a0823afdd08e2480f3fac4af353fad0c1e1aeffae73284c2295e441fc939181900360200190a150565b600082151561316457506000611163565b5081810281838281151561317457fe5b041461116357fe5b8181018281101561116357fe5b60008282111561319557fe5b50900390565b6000806131a78461377d565b9150818311156132085750600160a060020a038316600090815260166020526040902054818303908111156131db57600080fd5b600160a060020a038416600090815260166020526040902080548290039055601380548290039055613242565b5060135482820390613220908263ffffffff61317c16565b601355600160a060020a03841660009081526016602052604090208054820190555b505050600160a060020a03166000908152601560205260409020429055565b60008080836064808202041461327657600080fd5b61327f846136fd565b601254601054606491860282900494508502600b54919004925060649085020490506132bc81838587030303600f5461317c90919063ffffffff16565b600f556132c93384613802565b6011546132dc908363ffffffff61317c16565b601155600d546132f2908263ffffffff61317c16565b600d5550505050565b600160a060020a0381166000908152601760205260408120600a810154909110610e5c57600080fd5b600080613342613334868661392d565b84519063ffffffff61315316565b915061334e338361319b565b61336c61335b868661394d565b60208501519063ffffffff61315316565b905061337781613261565b5050505050565b60006111638283613153565b60008080600160a060020a03851615156133a357600080fd5b600160a060020a0386166000908152600660205260409020548411156133c857600080fd5b6004546133db908563ffffffff61315316565b600160a060020a038716600090815260076020526040902054909350613407908463ffffffff61317c16565b600160a060020a038716600090815260086020526040902054909250821061344757600160a060020a038616600090815260086020526040902054613449565b815b905061345b828263ffffffff61318916565b600160a060020a038716600090815260076020908152604080832093909355600890522054613490908263ffffffff61318916565b600160a060020a0380881660009081526008602052604080822093909355908716815220546134c5908463ffffffff61317c16565b600160a060020a03808716600090815260086020908152604080832094909455918916815260069091522054613501908563ffffffff61318916565b600160a060020a038088166000908152600660205260408082209390935590871681522054613536908563ffffffff61317c16565b600160a060020a0380871660008181526006602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b6024546201518042919091030490565b60008181526025602052604081208054909190151561360e575060118054600a90048083558154819003909155604080518481526020810183905281517f3d823e1b0137c31466d0d26831c5b359c4eab1d1237ead4a8ff564264d9a2c53929181900390910190a15b50919050565b61361c613b0e565b600080836001015411156136f857825460009081526025602090815260409182902082518084019093528054808452600191820154928401839052908601549294509091613670919063ffffffff61315316565b81151561367957fe5b6000600186018190553381526005602052604090205491900491506136a4908263ffffffff61317c16565b336000818152600560209081526040918290209390935585548151908152928301849052805191927f1999f960f6c1318254fc32602ac8ba7ebe18123b1bfe4d21cb9b5ac24761aae4929081900390910190a25b505050565b6000348211156137435750336000908152600560205260409020543482039081111561372857600080fd5b336000908152600560205260409020805482900390556117ff565b50336000908152600560205260409020543482900390613769908263ffffffff61317c16565b336000908152600560205260409020555050565b600160a060020a03811660009081526015602052604081205481811180156137a457504281105b156137f957600160a060020a038316600090815260176020526040902060078101546004909101546064916137e8914285900391611637919063ffffffff61315316565b8115156137f157fe5b04915061360e565b6000915061360e565b60008111156117ff5760035461381e908263ffffffff61317c16565b60035560045461385d90613838908363ffffffff61315316565b600160a060020a0384166000908152600860205260409020549063ffffffff61317c16565b600160a060020a038316600090815260086020908152604080832093909355600690522054613892908263ffffffff61317c16565b600160a060020a0383166000908152600660205260409020556003546138e5906138cb836801000000000000000063ffffffff61315316565b8115156138d457fe5b60045491900463ffffffff61317c16565b600455604080518281529051600160a060020a038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60046002600019808501850282900a90840184029190910a030492915050565b60006006600184600202036001850385020260018460020203600185038502020381151561397757fe5b049392505050565b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156136f8576000838152602090206136f8918101908301613b25565b60408051808201825290600290829080388339509192915050565b6080604051908101604052806004906020820280388339509192915050565b61018060405190810160405280613a29613ae5565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613aa857805160ff1916838001178555613ad5565b82800160010185558215613ad5579182015b82811115613ad5578251825591602001919060010190613aba565b50613ae1929150613b25565b5090565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b61146b91905b80821115613ae15760008155600101613b2b56009a18b08f786ded2f49322290bcefb5a9ad611fae6a3c2cdf63c46a8a4573bf17a165627a7a72305820b6f087fe4031eb79d8bd609c9571aea4625e9f63c3da4813d397f2c390ef85cf0029

Deployed Bytecode

0x6080604052600436106103415763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b8114610346578063016899de14610379578063045f955b146103a757806306fdde03146103b7578063095ea7b3146104415780630adae972146104795780630fc709e5146105ba57806318160ddd146105db57806319ab453c146105f05780631fa087551461061157806323b872dd1461061c57806327bb020a1461064657806328b8b1081461065b5780632b2e715914610670578063313ce567146106a35780633a98ef39146106ce5780633ccfd60b146106e357806341ad3f57146106f8578063463ac31b146107105780634c97c83614610718578063572b130f146107235780635996228e146107445780635a4462151461074f5780635baef4f3146107e65780635c5c1285146107fb57806363fd7eb01461081c5780636827e7641461083d5780636ff732011461085257806370a082311461086a578063765878471461088b5780637ebd02f8146108965780638e7a1697146108ab578063910ab259146108c6578063916a4b57146108e757806395d89b411461090e578063975057e71461092357806398d714ac146109685780639c2868371461097d578063a7f0b3de14610992578063a9059cbb146109a7578063a9782954146109cb578063aaa363c914610a12578063b319c6b714610a2a578063b460481d14610a3f578063b48fcdc014610a54578063b688a36314610a7b578063b92c404f14610a90578063bddae40e14610ab1578063bfb231d214610ad2578063c3ba65e714610b1f578063c60c3aca14610b34578063ca1a308614610b5c578063ca4b208b14610b86578063cb93f7ef14610bb7578063ce5e9ffb14610bcc578063cfb869bf14610be1578063d018db3e14610c2c578063d1a6102514610c4d578063d583644b14610c99578063d6a3f37414610ca4578063d864e74014610cb9578063dba8be6e14610cce578063dd62ed3e14610ce3578063de2f827e14610d0a578063e2d2e21914610d2b578063e7fb74c714610d40578063eb4eecec14610d4b578063efab37bf14610d60578063f0bb754014610d81578063f67501f714610da2578063ff70fa4914610dc3575b600080fd5b34801561035257600080fd5b50610367600160a060020a0360043516610de4565b60408051918252519081900360200190f35b34801561038557600080fd5b5061038e610e61565b6040805192835260208301919091528051918290030190f35b6103b5600435602435610e6a565b005b3480156103c357600080fd5b506103cc611074565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044d57600080fd5b50610465600160a060020a0360043516602435611102565b604080519115158252519081900360200190f35b34801561048557600080fd5b5061049a600160a060020a0360043516611169565b604051808a600260200280838360005b838110156104c25781810151838201526020016104aa565b5050505090500189600260200280838360005b838110156104ed5781810151838201526020016104d5565b5050505090500188600260200280838360005b83811015610518578181015183820152602001610500565b5050505090500187600460200280838360005b8381101561054357818101518382015260200161052b565b5050505090500180602001868152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019060200280838360005b8381101561059e578181015183820152602001610586565b505050509050019a505050505050505050505060405180910390f35b3480156105c657600080fd5b506103b56004356024356044356064356113c0565b3480156105e757600080fd5b50610367611467565b3480156105fc57600080fd5b506103b5600160a060020a036004351661146e565b6103b56004356115b4565b34801561062857600080fd5b50610465600160a060020a03600435811690602435166044356116de565b34801561065257600080fd5b5061036761174d565b34801561066757600080fd5b506103b5611753565b34801561067c57600080fd5b506106856117a3565b60408051938452602084019290925282820152519081900360600190f35b3480156106af57600080fd5b506106b86117af565b6040805160ff9092168252519081900360200190f35b3480156106da57600080fd5b506103676117b8565b3480156106ef57600080fd5b506103b56117be565b34801561070457600080fd5b506103b5600435611803565b6103b56118d9565b6103b56004356119e5565b34801561072f57600080fd5b506103b5600435602435604435606435611af9565b6103b5600435611d36565b34801561075b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103b594369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611e3d9650505050505050565b3480156107f257600080fd5b50610367611f80565b34801561080757600080fd5b50610367600160a060020a0360043516611f85565b34801561082857600080fd5b50610367600160a060020a0360043516611f97565b34801561084957600080fd5b50610367611fca565b34801561085e57600080fd5b506103b5600435611fd0565b34801561087657600080fd5b50610367600160a060020a0360043516612022565b6103b560043561203d565b3480156108a257600080fd5b506106856120d0565b3480156108b757600080fd5b506103b56004356024356120dc565b3480156108d257600080fd5b50610367600160a060020a036004351661214b565b3480156108f357600080fd5b506103b560043560243560443560643560843560a43561215d565b34801561091a57600080fd5b506103cc612328565b34801561092f57600080fd5b50610938612382565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561097457600080fd5b506103b561239d565b34801561098957600080fd5b506103676123d2565b34801561099e57600080fd5b506103676123d8565b3480156109b357600080fd5b50610465600160a060020a03600435166024356123de565b3480156109d757600080fd5b506109ec600160a060020a03600435166123f4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610a1e57600080fd5b5061038e60043561245d565b348015610a3657600080fd5b50610367612476565b348015610a4b57600080fd5b506103b561247c565b348015610a6057600080fd5b506103b560043560243560443560643560843560a43561254b565b348015610a8757600080fd5b506103b5612621565b348015610a9c57600080fd5b5061038e600160a060020a03600435166126f0565b348015610abd57600080fd5b506103b5600160a060020a0360043516612709565b348015610ade57600080fd5b50610aea600435612789565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610b2b57600080fd5b506103676127d2565b61046560048035600160a060020a0316906024803591604435916064359081019101356127d8565b348015610b6857600080fd5b50610465600160a060020a036004358116906024351660443561282f565b348015610b9257600080fd5b50610b9b6128b9565b60408051600160a060020a039092168252519081900360200190f35b348015610bc357600080fd5b506103b56128c8565b348015610bd857600080fd5b50610367612918565b348015610bed57600080fd5b50610bf9600435612925565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610c3857600080fd5b506103b5600160a060020a0360043516612969565b348015610c5957600080fd5b50610c6e600160a060020a0360043516612ab6565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6103b5600435612b66565b348015610cb057600080fd5b50610367612c8d565b348015610cc557600080fd5b50610b9b612c93565b348015610cda57600080fd5b50610b9b612ca2565b348015610cef57600080fd5b50610367600160a060020a0360043581169060243516612cb1565b348015610d1657600080fd5b50610367600160a060020a0360043516612cdc565b348015610d3757600080fd5b50610367612d5e565b6103b5600435612d64565b348015610d5757600080fd5b50610367612fd4565b348015610d6c57600080fd5b50610367600160a060020a0360043516612fda565b348015610d8d57600080fd5b50610367600160a060020a0360043516612fec565b348015610dae57600080fd5b506103b5600435602435604435606435612ffe565b348015610dcf57600080fd5b506103b5600160a060020a03600435166130cb565b600160a060020a03811660009081526008602090815260408083205460078352818420546006909352908320546004546801000000000000000093610e4f9392610e4392610e379163ffffffff61315316565b9063ffffffff61317c16565b9063ffffffff61318916565b811515610e5857fe5b0490505b919050565b601e54601f5482565b610e7261397f565b602054600090819081908610610e8757600080fd5b6020805487908110610e9557fe5b906000526020600020906006020160c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815250509350836060015185029250610f00338461319b565b836080015185029150610f1282613261565b610f1b336132fb565b600b810154909150600187011115610f405760018601610f3e600b8301826139b6565b505b610f6e8582600b0188815481101515610f5557fe5b906000526020600020015461317c90919063ffffffff16565b600b8201805488908110610f7e57fe5b60009182526020909120015560a0840151600b8201805488908110610f9f57fe5b906000526020600020015411151515610fb757600080fd5b83516004820154610fcf91870263ffffffff61317c16565b600482015560208401516005820154610fef91870263ffffffff61317c16565b60058201556040840151600682015461100f91870263ffffffff61317c16565b6006820155600b8101805433917f16ab5780b3810d9cdc9a1ed37ce0fa7ea98e877c6f8a257fb37b16833bcba471918991908290811061104b57fe5b6000918252602091829020015460408051938452918301528051918290030190a2505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050505081565b336000818152600960209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6111716139da565b6111796139da565b6111816139da565b6111896139f5565b6060600080600080611199613a14565b600160a060020a038b1660009081526017602090815260409182902082516101a0810184528154610120820190815260018301546101408301526002830154610160830152600383015461018083015281526004820154818401526005820154818501526006820154606082015260078201546080820152600882015460a0820152600982015460c0820152600a82015460e0820152600b8201805485518186028101860190965280865291949293610100860193929083018282801561127f57602002820191906000526020600020905b81548152602001906001019080831161126b575b5050505050815250509050604080519081016040528082602001518152602001826080015181525099506040805190810160405280826040015181526020018260a0015181525098506040805190810160405280826060015181526020018260c001518152509750608060405190810160405280826000015160000151815260200182600001516020015181526020018260000151604001518152602001826000015160600151815250965080610100015195508060e001519450601660008c600160a060020a0316600160a060020a03168152602001908152602001600020549350601560008c600160a060020a0316600160a060020a03168152602001908152602001600020549250602260008c600160a060020a0316600160a060020a03168152602001908152602001600020549150509193959799909294969850565b602754600160a060020a031633146113d757600080fd5b600082116113e457600080fd5b6113fa81610e378481888863ffffffff61317c16565b60641461140657600080fd5b60128490556010839055600b829055600e81905560408051858152602081018590528082018490526060810183905290517f19b0c2b62f3fec0fb2a4ad13aa46c5627e326ae04dd8fba61a5b905cd53f7eb79181900360800190a150505050565b6003545b90565b602754600160a060020a0316331461148557600080fd5b601454600160a060020a03161561149b57600080fd5b60148054600160a060020a031916600160a060020a038316179055635af1bb706024556114c6612621565b600a8054600160a060020a0319163317905567016345785d8a0000600c5561150560646509184e72a0006063620186a066038d7ea4c68000600961254b565b6115156014604b600160046113c0565b611520610258611fd0565b61153266b1a2bc2ec5000060096120dc565b6115476005806000662386f26fc10000611af9565b61155c6000806005662386f26fc10000611af9565b6115786103e8600080620186a0662386f26fc10000600961215d565b61159560006103e86000620186a0662386f26fc10000600961215d565b6115b16000806103e862031704662386f26fc10000600961215d565b50565b60008060006115c2336132fb565b6001810154601d54919450925084118015906115dd57508184115b15156115e857600080fd5b60408051606081018252601b548152601c546020820152601d54918101919091526116169083908690613324565b61164361162c838603600263ffffffff61315316565b84546116379061337e565b9063ffffffff61315316565b600184018590556004840154909150611662908263ffffffff61317c16565b6004840155600583015461167c908263ffffffff61317c16565b600584015560408051602081018690528181526009818301527f6465787465726974790000000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b600160a060020a038316600090815260096020908152604080832033845290915281205482111561170e57600080fd5b600160a060020a038416600090815260096020908152604080832033845290915290208054839003905561174384848461338a565b5060019392505050565b60105481565b600d54600a54600160a060020a03166000908152600560205260409020546117809163ffffffff61317c16565b600a54600160a060020a0316600090815260056020526040812091909155600d55565b601b54601c54601d5483565b60025460ff1681565b60035481565b33600081815260056020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156117ff573d6000803e3d6000fd5b5050565b6000808080841161181357600080fd5b61181d338561319b565b611825613595565b9250611830836135a5565b80549092508480820281151561184257fe5b041461184d57600080fd5b5033600090815260266020526040902080548311156118735761186f81613614565b8281555b6001820154611888908563ffffffff61317c16565b60018084019190915581018054850190556040805184815260208101869052815133927f249d3c255987361d5d69f32914f89ba3b6617f290ed9e435126a39a7cff6d996928290030190a250505050565b600a8054600c8054600160a060020a03909216926000928392611902919063ffffffff61315316565b81151561190b57fe5b049150611917826136fd565b600c54600290830304905061193781600f5461317c90919063ffffffff16565b600f55600d54600160a060020a03841660009081526005602052604090205461196d9190610e379084860363ffffffff61317c16565b600160a060020a038416600081815260056020908152604080832094909455600c869055600a8054600160a060020a03191633908117909155600d929092558351868152935191937f0f24f9f79a489f214543721c774ce6b52901934b07e7da8c77642f1866f0e841929081900390910190a3505050565b60008060006119f3336132fb565b6002810154601a5491945092508411801590611a0e57508184115b1515611a1957600080fd5b6040805160608101825260185481526019546020820152601a5491810191909152611a479083908690613324565b611a786002830a611a578661337e565b036116376008610e376002886000016003015461315390919063ffffffff16565b600284018590556006840154909150611a97908263ffffffff61317c16565b60068401556040805160208101869052818152600c818301527f636f6e737469747574696f6e0000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b60275460009081908190600160a060020a03163314611b1757600080fd5b6201000092508287108015611b2b57508286105b8015611b3657508285105b1515611b4157600080fd5b602754611b5690600160a060020a0316612cdc565b50602754611b6c90600160a060020a03166132fb565b6007810154909250611b84908863ffffffff61317c16565b60078301556008820154611b9e908763ffffffff61317c16565b60088301556009820154611bb8908663ffffffff61317c16565b6009830155506040805160a08082018352602754600160a060020a03908116835260208084018b81528486018b815260608087018c815260808089018d815260218054600181018083556000929092529a517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57060058d029081018054600160a060020a03191692909b169190911790995595517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57189015593517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57288015590517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57387015591517f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5749095019490945586519586529185018c90528486018b9052918401899052830187905292517f2f770e091da1eb4be223d793b34fcd1b5cbff2f4c74ad7f2d7d55c1eceda488d9281900390910190a150505050505050565b6000806000611d44336132fb565b6003810154601d5491945092508411801590611d5f57508184115b1515611d6a57600080fd5b60408051606081018252601b548152601c546020820152601d5491810191909152611d989083908690613324565b611dbc611dae838603600263ffffffff61315316565b60028501546116379061337e565b600384018590556006840154909150611ddb908263ffffffff61317c16565b60068401556040805160208101869052818152600a818301527f726573697374616e636500000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b602754600160a060020a03163314611e5457600080fd5b8151611e67906000906020850190613a67565b508051611e7b906001906020840190613a67565b507fd150542982eaa18f20ceb10f524c418899e6a331a81ee4a70daa921f976fab3b8282604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ee0578181015183820152602001611ec8565b50505050905090810190601f168015611f0d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611f40578181015183820152602001611f28565b50505050905090810190601f168015611f6d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050565b600c81565b60056020526000908152604090205481565b6000611163611fa58361377d565b600160a060020a0384166000908152601660205260409020549063ffffffff61317c16565b600f5481565b602754600160a060020a03163314611fe757600080fd5b60238190556040805182815290517ff1f62fb53f063eeed657f6ed8c238c2e61ef9547b206dac91c836599fb8f7a339181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000612048336132fb565b600a810154909150612060908363ffffffff61317c16565b600a8201819055601f54101561207557600080fd5b601e546120929061208d90849063ffffffff61315316565b613261565b600a810154604080519182525133917f088f18ecb97af8211f9549cddf9227ee53f8fda22b969dab5621461c80fc7d50919081900360200190a25050565b601854601954601a5483565b602754600160a060020a031633146120f357600080fd5b601f5481101561210257600080fd5b601e829055601f819055604080518381526020810183905281517f25e5d03ea9004bbd99c954a40cefdb9a23e87966152ac725e8c44386f6e11798929181900390910190a15050565b60166020526000908152604090205481565b602754600090600160a060020a0316331461217757600080fd5b6000821161218457600080fd5b63ffffffff8216821461219657600080fd5b506040805160c08181018352888252602082810189815283850189815260608086018a815260808088018b815260a0808a018c8152885460018101808b5560008b90529b51600682027fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb81019190915598517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bc8a015596517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bd89015593517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866be88015590517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bf87015591517fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866c09095019490945587519283529382018d90528187018c905281018a9052908101889052908101869052908101849052915190917f825cf2439eaf73dfac2c09fd8f2d837fad3d41ae9997922036b523f11e6c1226919081900360e00190a150505050505050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110fa5780601f106110cf576101008083540402835291602001916110fa565b600a54600b54600c54600d54600160a060020a039093169284565b6000806123a8613595565b3360009081526026602052604090208054919350915082116123c957600080fd5b6117ff81613614565b600e5481565b60245481565b60006123eb33848461338a565b50600192915050565b600080600080612402613ae5565b50505050600160a060020a039190911660009081526017602090815260409182902082516080810184528154808252600183015493820184905260028301549482018590526003909201546060909101819052909491935090565b6025602052600090815260409020805460019091015482565b60235481565b336000818152600660205260408120549161249690610de4565b3360009081526006602090815260408083208390556007825280832083905560089091528120556003549091506124d3908363ffffffff61318916565b600355336000908152600560205260409020546124f6908263ffffffff61317c16565b33600081815260056020908152604091829020939093558051858152928301849052805191927fef7fb21fed1701a6c82b78d78bad1ddab67e41025c2d5078a1be2a3a238b4e62929081900390910190a25050565b602754600160a060020a0316331461256257600080fd5b601a54841080159061257957508363ffffffff1684145b151561258457600080fd5b601d54811080159061259b57508063ffffffff1681145b15156125a657600080fd5b60188690556019859055601a849055601b839055601c829055601d8190556040805187815260208101879052808201869052606081018590526080810184905260a0810183905290517fdd7612d23bf1ba260c41948384c8a672815d6e6f03705f4ccb8db39d01bb49d09181900360c00190a1505050505050565b336000908152601760205260409020600a8101541561263f57600080fd5b604080516080810182526001808252602080830182905282840182905260609092018190528084558381018190556002840181905560038401819055600a808501919091556004840181905560058401819055606e60068501556007840181905560088401819055600984015533600081815260158352839020429055825190815291517f0764c80c4165f118547b301a0b4b91eac21bd2f2d9b61d0ac723ff0aab27bb799281900390910190a150565b6026602052600090815260409020805460019091015482565b602754600160a060020a0316331461272057600080fd5b600160a060020a038116151561273557600080fd5b60278054600160a060020a038316600160a060020a0319909116811790915560408051918252517f22a3400c609e52ea781540daed872a0ff7b79a428f634be082c24c2faf0684639181900360200190a150565b602180548290811061279757fe5b600091825260209091206005909102018054600182015460028301546003840154600490940154600160a060020a0390931694509092909185565b60135481565b602754600090600160a060020a031633146127f257600080fd5b85600160a060020a0316858590858560405180838380828437820191505092505050600060405180830381858888f19a9950505050505050505050565b601454600090600160a060020a0316331461284957600080fd5b8161285385612cdc565b101561285e57600080fd5b600160a060020a038085166000908152601660205260408082208054869003905591851681522054612896908363ffffffff61317c16565b600160a060020a0384166000908152601660205260409020555060019392505050565b602854600160a060020a031681565b600f54602854600160a060020a03166000908152600560205260409020546128f59163ffffffff61317c16565b602854600160a060020a0316600090815260056020526040812091909155600f55565b6801000000000000000081565b602080548290811061293357fe5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501549395509193909286565b3360009081526022602052604081205481908190421161298857600080fd5b33600090815260176020526040808220600160a060020a03871683529120600981015460068201549295509093506129c6919063ffffffff61315316565b600884015460058501546129df9163ffffffff61315316565b1115612ab0576129ee84612cdc565b9050600082600a015411612a025780612a13565b81600a015481811515612a1157fe5b045b600160a060020a03851660009081526016602052604080822080548490039055338252902054909150612a4c908263ffffffff61317c16565b3360008181526016602090815260408083209490945560235460228252918490204290920190915582518481529251600160a060020a038816937f07fc6d85ef6db5c911f925dd0be5e0b6139a4d732479327729330fcf4ab15e2d92908290030190a35b50505050565b6000806000806000612ac6613b0e565b612ace613b0e565b5050600160a060020a03861660009081526026602090815260408083208151808301835281548082526001928301548286018190528187526025865284872085518087019096528054808752940154958501869052909a50919850929650945090918511612b3d576000612b59565b84612b4e878663ffffffff61315316565b811515612b5757fe5b045b9250505091939590929450565b6000806000612b74336132fb565b8054601a5491945092508411801590612b8c57508184115b1515612b9757600080fd5b6040805160608101825260185481526019546020820152601a5491810191909152612bc59083908690613324565b612bf66002830a612bd58661337e565b036116376008610e376002886000016001015461315390919063ffffffff16565b8484556004840154909150612c11908263ffffffff61317c16565b60048401556005830154612c2b908263ffffffff61317c16565b600584015560408051602081018690528181526008818301527f737472656e677468000000000000000000000000000000000000000000000000606082015290513391600080516020613b40833981519152919081900360800190a250505050565b60125481565b602754600160a060020a031681565b601454600160a060020a031681565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b6000806000612cea8461377d565b601354909250612d00908363ffffffff61317c16565b601355600160a060020a038416600090815260166020526040902054612d2c908363ffffffff61317c16565b600160a060020a0394909416600090815260166020908152604080832087905560159091529020429055509192915050565b60045481565b600080600080600080602187815481101515612d7c57fe5b6000918252602090912060059091020180546004820154919750600160a060020a03169550600a90612db590600c63ffffffff61315316565b811515612dbe57fe5b049350612dca846136fd565b612dd385612cdc565b50612ddd856132fb565b9250612dfa8660010154846007015461318990919063ffffffff16565b600784015560028601546008840154612e189163ffffffff61318916565b600884015560038601546009840154612e369163ffffffff61318916565b6009840155612e4433612cdc565b50612e4e336132fb565b9150612e6b8660010154836007015461317c90919063ffffffff16565b600783015560028601546008830154612e899163ffffffff61317c16565b600883015560038601546009830154612ea79163ffffffff61317c16565b60098301556004860154600290612ec590869063ffffffff61318916565b811515612ece57fe5b049050612ee681600f5461317c90919063ffffffff16565b600f55600160a060020a038516600090815260056020526040902054612f149082860363ffffffff61317c16565b600160a060020a0386166000908152600560205260409020556021805485919089908110612f3e57fe5b90600052602060002090600502016004018190555033602188815481101515612f6357fe5b6000918252602091829020600591909102018054600160a060020a031916600160a060020a039384161790556040805187815290518a933393908a16927fc6d7a5e59f38ae48e0f1577ce4627ba9b270bfd4c2c0c7be609c429421bc3d68929081900390910190a450505050505050565b60115481565b60156020526000908152604090205481565b60226020526000908152604090205481565b602754600090600160a060020a0316331461301857600080fd5b602054851061302657600080fd5b602080548690811061303457fe5b906000526020600020906006020190508060050154821015801561305d57508163ffffffff1682145b151561306857600080fd5b60038101849055600481018390556005810182905560408051868152602081018690528082018590526060810184905290517f2c2e9072543dfe5f0b03fabc22ced8ddd4e6f976a64f2f4726c4ea72cf8d31c09181900360800190a15050505050565b602754600160a060020a031633146130e257600080fd5b600160a060020a03811615156130f757600080fd5b6130ff6128c8565b60288054600160a060020a038316600160a060020a0319909116811790915560408051918252517f8aaf3a0823afdd08e2480f3fac4af353fad0c1e1aeffae73284c2295e441fc939181900360200190a150565b600082151561316457506000611163565b5081810281838281151561317457fe5b041461116357fe5b8181018281101561116357fe5b60008282111561319557fe5b50900390565b6000806131a78461377d565b9150818311156132085750600160a060020a038316600090815260166020526040902054818303908111156131db57600080fd5b600160a060020a038416600090815260166020526040902080548290039055601380548290039055613242565b5060135482820390613220908263ffffffff61317c16565b601355600160a060020a03841660009081526016602052604090208054820190555b505050600160a060020a03166000908152601560205260409020429055565b60008080836064808202041461327657600080fd5b61327f846136fd565b601254601054606491860282900494508502600b54919004925060649085020490506132bc81838587030303600f5461317c90919063ffffffff16565b600f556132c93384613802565b6011546132dc908363ffffffff61317c16565b601155600d546132f2908263ffffffff61317c16565b600d5550505050565b600160a060020a0381166000908152601760205260408120600a810154909110610e5c57600080fd5b600080613342613334868661392d565b84519063ffffffff61315316565b915061334e338361319b565b61336c61335b868661394d565b60208501519063ffffffff61315316565b905061337781613261565b5050505050565b60006111638283613153565b60008080600160a060020a03851615156133a357600080fd5b600160a060020a0386166000908152600660205260409020548411156133c857600080fd5b6004546133db908563ffffffff61315316565b600160a060020a038716600090815260076020526040902054909350613407908463ffffffff61317c16565b600160a060020a038716600090815260086020526040902054909250821061344757600160a060020a038616600090815260086020526040902054613449565b815b905061345b828263ffffffff61318916565b600160a060020a038716600090815260076020908152604080832093909355600890522054613490908263ffffffff61318916565b600160a060020a0380881660009081526008602052604080822093909355908716815220546134c5908463ffffffff61317c16565b600160a060020a03808716600090815260086020908152604080832094909455918916815260069091522054613501908563ffffffff61318916565b600160a060020a038088166000908152600660205260408082209390935590871681522054613536908563ffffffff61317c16565b600160a060020a0380871660008181526006602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b6024546201518042919091030490565b60008181526025602052604081208054909190151561360e575060118054600a90048083558154819003909155604080518481526020810183905281517f3d823e1b0137c31466d0d26831c5b359c4eab1d1237ead4a8ff564264d9a2c53929181900390910190a15b50919050565b61361c613b0e565b600080836001015411156136f857825460009081526025602090815260409182902082518084019093528054808452600191820154928401839052908601549294509091613670919063ffffffff61315316565b81151561367957fe5b6000600186018190553381526005602052604090205491900491506136a4908263ffffffff61317c16565b336000818152600560209081526040918290209390935585548151908152928301849052805191927f1999f960f6c1318254fc32602ac8ba7ebe18123b1bfe4d21cb9b5ac24761aae4929081900390910190a25b505050565b6000348211156137435750336000908152600560205260409020543482039081111561372857600080fd5b336000908152600560205260409020805482900390556117ff565b50336000908152600560205260409020543482900390613769908263ffffffff61317c16565b336000908152600560205260409020555050565b600160a060020a03811660009081526015602052604081205481811180156137a457504281105b156137f957600160a060020a038316600090815260176020526040902060078101546004909101546064916137e8914285900391611637919063ffffffff61315316565b8115156137f157fe5b04915061360e565b6000915061360e565b60008111156117ff5760035461381e908263ffffffff61317c16565b60035560045461385d90613838908363ffffffff61315316565b600160a060020a0384166000908152600860205260409020549063ffffffff61317c16565b600160a060020a038316600090815260086020908152604080832093909355600690522054613892908263ffffffff61317c16565b600160a060020a0383166000908152600660205260409020556003546138e5906138cb836801000000000000000063ffffffff61315316565b8115156138d457fe5b60045491900463ffffffff61317c16565b600455604080518281529051600160a060020a038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60046002600019808501850282900a90840184029190910a030492915050565b60006006600184600202036001850385020260018460020203600185038502020381151561397757fe5b049392505050565b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156136f8576000838152602090206136f8918101908301613b25565b60408051808201825290600290829080388339509192915050565b6080604051908101604052806004906020820280388339509192915050565b61018060405190810160405280613a29613ae5565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613aa857805160ff1916838001178555613ad5565b82800160010185558215613ad5579182015b82811115613ad5578251825591602001919060010190613aba565b50613ae1929150613b25565b5090565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b61146b91905b80821115613ae15760008155600101613b2b56009a18b08f786ded2f49322290bcefb5a9ad611fae6a3c2cdf63c46a8a4573bf17a165627a7a72305820b6f087fe4031eb79d8bd609c9571aea4625e9f63c3da4813d397f2c390ef85cf0029

Swarm Source

bzzr://b6f087fe4031eb79d8bd609c9571aea4625e9f63c3da4813d397f2c390ef85cf

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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