Contract 0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2

 

TxHash Block Age From To Value [TxFee]
0xe07f7185de963e65ffce22eed6ce1d8b92ddcabfa2d02f413af1f02275fdd82c725688522 mins ago0xf1451070013cfaed5ce59fa600f305eb82b62378 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022395
0xaeda62a7d4a4d1b81502403d70afcd98cc39eb3e779f1153ac1054d78ddbddf1725686728 mins ago0x00806c04ffa1e812545c7ac7aa33e6bb99728649 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x6124a12fb9fb743cd1703a2be8d1838c12998d94c675d45b922ff359cb203349725685132 mins ago0x00806c04ffa1e812545c7ac7aa33e6bb99728649 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x14fcffb5acfcaf8707c72db211cb9b6e9dea3725c22b8efa1580fd56617dd992725684733 mins ago0x00806c04ffa1e812545c7ac7aa33e6bb99728649 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x0c5091ed0959f32c4387d426e91a9f49a32e526270e2b5d64feb34d00d741cd1725682637 mins ago0x00806c04ffa1e812545c7ac7aa33e6bb99728649 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x5f10ae36eb54b076fa162104b584cfdf9be1bb487a8784ceaf5d63fde8bab33b725681341 mins ago0x50f432f15c009b80b237aaaaff7814ad6a2f3b67 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000779345
0x9f189c7260bcaa84abbc1d928bc7d3661a394a0d96a9b79890b2a41f6a080670725678351 mins ago0x00806c04ffa1e812545c7ac7aa33e6bb99728649 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x5b1361136f563553ca3f046676f8051eb616d88e689234cdc6b4bdeb17c6f44972566351 hr 42 mins ago0x6fa9ba793156d429431b8436f68f3cca6c345f71 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046132
0x89dcac311fe2dd7c54c7a47513d78833e9067307f737d7c017fad2b75056272c72564842 hrs 37 mins ago0xb70fc3e1af552279444a850fbc9b1dde46173e19 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022395
0x7758373bc0c22af78dc53061713cfef643a1629b2a1d5eb1645c09d9c9f1737072563273 hrs 24 mins ago0x4f6e4451752bd14488490f5b4a05d919c31291eb IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0003408769
0x55c63cbe23f45b082209cca1aeb00052c515f7667dec9c45fd289ca15998058872562743 hrs 43 mins ago0x4f538aad0757507f0da68c320d77f11be1da745c IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0004652868
0x81f2ed479ba465ed10e8213da10a00ab5ec084fb99a7b28597cb12edc7ea687c72561684 hrs 17 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001098951
0xaeaf2c1d89a7b799a9f9791980cc40a786fdd594c14f0c38845f1d616100194e72561284 hrs 31 mins ago0x3c02290922a3618a4646e3bbca65853ea45fe7c6 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000224754
0x32f75f9ad804a36bd0bd498f628aa2132d93e0368fc96bb0245b99f23b2463c772561094 hrs 36 mins ago0x4f538aad0757507f0da68c320d77f11be1da745c IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000507452
0xa8b721bf5d2eef0da961bf65c48d1bd23b134a2e5fcaee265ace0ccf7153289a72560414 hrs 55 mins ago0x8f4a3b99fa26cb4fdda3a1b9ed6e81f0610aa627 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022395
0xa02b8ec559ce995f6c7534cb950751c4fa0080a16fe33e9cf435008946d6274f72559195 hrs 33 mins ago0x3c6563b5232d55c0f9f130fb4b7b9882d2ce52b3 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022395
0x5d31424ee92c6f0c78f628806dae8ab64db48acee4d51995373c647589245be272559195 hrs 33 mins ago0xbdfffeffe524618647ff24c1339e8b7a30ef9cda IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022459
0xe946d7f766b1d406e5ddad0f4ac4e834f90296f8838ec05d36c659ffc857ef0472558395 hrs 58 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001100295
0xe4f7c79d0656dbbf8bc5be5260eb60dadd55513e6a644836f1169b4e5e5487ac72557956 hrs 10 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001101639
0x736675a009c177443d0b96608e7be3ae7265c34d03ccf0d998272a37ffdad45772557166 hrs 35 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0x2e1bf1f74b2cd6f6ce0725dec3b7e05dabae2fe127554e53e7a4c9ceb7669c8472556766 hrs 49 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001100295
0x484933d89a0bad50c64db9910d7afb6891c200a6254f9fb187b9d93632b2a26c72556167 hrs 9 mins agoMercatox IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001100295
0xccaf18b6b9fa98c4393c4dd267a5b1a19320e9d1e61c007e77caa4abcc9a0f5e725475711 hrs 59 mins ago0x7c509bf58fad29b4ec20e7d4d597922e7d00a13e IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022395
0x9bc800da9c0b7ab41442269ab63d51742a7702571280440f1af1f9c615abc5ec725443513 hrs 49 mins ago0xc37672ee3caef6bad6b780408bf3fc8abf067fd6 IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000165723
0xe0bb15b21d1509dc9cd84f9046dcf96f9c1f4f41067368f561ebc98730fd185a725438114 hrs 7 mins ago0x3186f2a3a3a7c3803c2fa84294e77a8de142e0cc IN  0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000360368
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x3ae72a5a8ceda0db790e356e1fc6559919a159165a7a16eb51e9641c9e210acf5252013346 days 4 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.15 Ether
0x702ca5045d613fb4d28a8c7b0f663763c92c1d7859c06b8b441842beb3d524705251883346 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.2 Ether
0xf7e5bb6157fcad2bc6e920f6d8bcde4d3ace424cb9a9fe943ace190bd8c05c3f5251586346 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.4 Ether
0xeb05d1e514d5c5f55b4bb9281cdd6ef3e7756e8a20e277b0c70633d700a8612a5251496346 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcc6f6aa441ccad090afb8da4dfbf5a927ccc24904c4d6714a0fa41857ba7a0405251472346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.71 Ether
0x797fee3ab677203559cb4befbcd1b4db152116660088f111dba1a8f50365bcf15251456346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0x660d94c02cdb5e49df2b6bcf5de5eac7c7c5b95aec0121b7ae835d1343d17ebe5251448346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcfa538a494f0b04377e08540501ed41189c0e866f2d4a9594fbce816661395505251440346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.1 Ether
0x17316c442dffa10fe7a924258bd7a2e4cec7733de88581888d32ec7bfb6e0f265251427346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.5 Ether
0x50df8d78618599e1154b13f122d00725a5e8d4a24baaf81d56a5b1c764a3733e5251424346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.13 Ether
0xae91d4134b57386379c2a6b4e8289f7e8271907b97075c47734a0ccb2a7e9c0b5251397346 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3.388605635 Ether
0x0aa423d0ca3c709a62d0b378e27fb8ce82d9327a38a166615d5c1922a67497475251237346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2 Ether
0xa4c4791758486d4de2395a0d0608a974b6a00651406a39f69715a30232aef6475251192346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.3 Ether
0x432704696d0f016afe2a0e453c3bb14bb7f13d64558739fef886f01e63efef765251166346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.88 Ether
0x63d57cb1d7bc67ab776402a9a26002f799006232958586dc42c11662c07c7f7e5251140346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.25 Ether
0x174f8ec5f90af19d3042f615c85a3eec7a6d9178d6a1a5589a8dafe9204cc97d5251135346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.29 Ether
0x39ee959036e55161b4211284869e9c8845f36c32c1894151c882977b6a122bad5251024346 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0xc68aa188e407a97f68884da4c998b961775ef775053fdacd15bea596c259a6a35250933346 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0xf4119dda6f6255299f6b533d8b9024cca928bfdba6d7ee8899255cd0cc036f5e5250909346 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.22129898 Ether
0x9e4e8e69eee5c0876f5ae50877b5d3cf230f0cbf6bec95e53630918256c79d9d5250826346 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0x65b4404e31165404ca334ce943a20e2a01ce913b425da4d888a278ae9abd2cfb5250822346 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.07374179 Ether
0x359cc22cb5eb10bc901a8ec18428ad68cd3a6ea5dc2197bcaa9c39d592b92b775250816346 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0x5e6dd1d794da0a4531a0a4c6256bffb170306818918a5ba2bf6117845f10af7f5250774346 days 10 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.03848 Ether
0x028e9ea2a8d2b0063d18ec83f35053a0cb32056e804c11abe1017ae31c0de9c55250721346 days 10 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xb41f841ebe33b1b2b0a84a24bff5b6d8223d8cb8c3807d052b184677611e552f5250669346 days 10 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Coin
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.4;

/**
 * @title ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {

  uint public totalSupply;
  uint public decimals;

  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);

  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);

}


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

  /* New owner which can be set in future */
  address public newOwner;

  /* event to indicate finally ownership has been succesfully transferred and accepted */
  event OwnershipTransferred(address indexed _from, address indexed _to);

  /**
   * The Ownable constructor sets the original `owner` of the contract to the sender account.
   */
  function Ownable() {
    owner = msg.sender;
  }

  /**
   * Throws if called by any account other than the owner.
   */
  modifier onlyOwner {
    require(msg.sender == owner);
    _;
  }

  /**
   * Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) onlyOwner {
    require(_newOwner != address(0));
    newOwner = _newOwner;
  }

  /**
   * Allows the new owner toaccept ownership
   */
  function acceptOwnership() {
    require(msg.sender == newOwner);
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/*
*This library is used to do mathematics safely
*/
contract SafeMathLib {
  function safeMul(uint a, uint b) returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeSub(uint a, uint b) returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) returns (uint) {
    uint c = a + b;
    assert(c>=a);
    return c;
  }
}


/**
 * Upgrade agent interface inspired by Lunyr.
 * Taken and inspired from https://tokenmarket.net
 *
 * Upgrade agent transfers tokens to a new version of a token contract.
 * Upgrade agent can be set on a token by the upgrade master.
 *
 * Steps are
 * - Upgradeabletoken.upgradeMaster calls UpgradeableToken.setUpgradeAgent()
 * - Individual token holders can now call UpgradeableToken.upgrade()
 *   -> This results to call UpgradeAgent.upgradeFrom() that issues new tokens
 *   -> UpgradeableToken.upgrade() reduces the original total supply based on amount of upgraded tokens
 *
 * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting.
 */
contract UpgradeAgent {

  uint public originalSupply;

  /** Interface marker */
  function isUpgradeAgent() public constant returns (bool) {
    return true;
  }

  /**
   * Upgrade amount of tokens to a new version.
   *
   * Only callable by UpgradeableToken.
   *
   * @param _tokenHolder Address that wants to upgrade its tokens
   * @param _amount Number of tokens to upgrade. The address may consider to hold back some amount of tokens in the old version.
   */
  function upgradeFrom(address _tokenHolder, uint256 _amount) external;
}


/**
 * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
 *
 * Based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, SafeMathLib {

  /* Actual balances of token holders */
  mapping(address => uint) balances;

  /* approve() allowances */
  mapping (address => mapping (address => uint)) allowed;

  function transfer(address _to, uint _value) returns (bool success) {

      // SafMaths will automatically handle the overflow checks
      balances[msg.sender] = safeSub(balances[msg.sender],_value);
      balances[_to] = safeAdd(balances[_to],_value);
      Transfer(msg.sender, _to, _value);
      return true;

  }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {

    uint _allowance = allowed[_from][msg.sender];

    // Check is not needed because safeSub(_allowance, _value) will already throw if this condition is not met
    balances[_to] = safeAdd(balances[_to],_value);
    balances[_from] = safeSub(balances[_from],_value);
    allowed[_from][msg.sender] = safeSub(_allowance,_value);
    Transfer(_from, _to, _value);
    return true;

  }

  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }

  function approve(address _spender, uint _value) returns (bool success) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require(!((_value != 0) && (allowed[msg.sender][_spender] != 0)));

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}


/**
 * A token upgrade mechanism where users can opt-in amount of tokens to the next smart contract revision.
 * First envisioned by Golem and Lunyr projects.
 * Taken and inspired from https://tokenmarket.net
 */
contract XinfinUpgradeableToken is StandardToken {

  /** Contract / person who can set the upgrade path. This can be the same as team multisig wallet, as what it is with its default value. */
  address public upgradeMaster;

  /** The next contract where the tokens will be migrated. */
  UpgradeAgent public upgradeAgent;

  /** How many tokens we have upgraded by now. */
  uint256 public totalUpgraded;

  /**
   * Upgrade states.
   *
   * - NotAllowed: The child contract has not reached a condition where the upgrade can bgun
   * - WaitingForAgent: Token allows upgrade, but we don't have a new agent yet
   * - ReadyToUpgrade: The agent is set, but not a single token has been upgraded yet
   * - Upgrading: Upgrade agent is set and the balance holders can upgrade their tokens
   *
   */
  enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading}

  /**
   * Somebody has upgraded some of his tokens.
   */
  event Upgrade(address indexed _from, address indexed _to, uint256 _value);

  /**
   * New upgrade agent available.
   */
  event UpgradeAgentSet(address agent);

  /**
   * Do not allow construction without upgrade master set.
   */
  function XinfinUpgradeableToken(address _upgradeMaster) {
    upgradeMaster = _upgradeMaster;
  }

  /**
   * Allow the token holder to upgrade some of their tokens to a new contract.
   */
  function upgrade(uint256 value) public {

      UpgradeState state = getUpgradeState();
      require(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading);

      // Validate input value.
      require(value != 0);

      balances[msg.sender] = safeSub(balances[msg.sender], value);

      // Take tokens out from circulation
      totalSupply = safeSub(totalSupply, value);
      totalUpgraded = safeAdd(totalUpgraded, value);

      // Upgrade agent reissues the tokens
      upgradeAgent.upgradeFrom(msg.sender, value);
      Upgrade(msg.sender, upgradeAgent, value);
  }

  /**
   * Set an upgrade agent that handles
   */
  function setUpgradeAgent(address agent) external {


      // The token is not yet in a state that we could think upgrading
      require(canUpgrade());

      require(agent != 0x0);
      // Only a master can designate the next agent
      require(msg.sender == upgradeMaster);
      // Upgrade has already begun for an agent
      require(getUpgradeState() != UpgradeState.Upgrading);

      upgradeAgent = UpgradeAgent(agent);

      // Bad interface
      require(upgradeAgent.isUpgradeAgent());
      // Make sure that token supplies match in source and target
      require(upgradeAgent.originalSupply() == totalSupply);

      UpgradeAgentSet(upgradeAgent);
  }

  /**
   * Get the state of the token upgrade.
   */
  function getUpgradeState() public constant returns(UpgradeState) {
    if(!canUpgrade()) return UpgradeState.NotAllowed;
    else if(address(upgradeAgent) == 0x00) return UpgradeState.WaitingForAgent;
    else if(totalUpgraded == 0) return UpgradeState.ReadyToUpgrade;
    else return UpgradeState.Upgrading;
  }

  /**
   * Change the upgrade master.
   *
   * This allows us to set a new owner for the upgrade mechanism.
   */
  function setUpgradeMaster(address master) public {
      require(master != 0x0);
      require(msg.sender == upgradeMaster);
      upgradeMaster = master;
  }

  /**
   * Child contract can enable to provide the condition when the upgrade can begun.
   */
  function canUpgrade() public constant returns(bool) {
     return true;
  }

}


/**
 * Define interface for releasing the token transfer after a successful crowdsale.
 * Taken and inspired from https://tokenmarket.net
 */
contract ReleasableToken is ERC20, Ownable {

  /* The finalizer contract that allows unlift the transfer limits on this token */
  address public releaseAgent;

  /** A crowdsale contract can release us to the wild if ICO success. If false we are are in transfer lock up period.*/
  bool public released = false;

  /** Map of agents that are allowed to transfer tokens regardless of the lock down period. These are crowdsale contracts and possible the team multisig itself. */
  mapping (address => bool) public transferAgents;

  /**
   * Limit token transfer until the crowdsale is over.
   *
   */
  modifier canTransfer(address _sender) {

    if(!released) {
        require(transferAgents[_sender]);
    }

    _;
  }

  /**
   * Set the contract that can call release and make the token transferable.
   */
  function setReleaseAgent(address addr) onlyOwner inReleaseState(false) public {

    // We don't do interface check here as we might want to a normal wallet address to act as a release agent
    releaseAgent = addr;
  }

  /**
   * Owner can allow a particular address (a crowdsale contract) to transfer tokens despite the lock up period.
   */
  function setTransferAgent(address addr, bool state) onlyOwner inReleaseState(false) public {
    transferAgents[addr] = state;
  }

  /**
   * One way function to release the tokens to the wild.
   *
   * Can be called only from the release agent that is the final ICO contract. It is only called if the crowdsale has been success (first milestone reached).
   */
  function releaseTokenTransfer() public onlyReleaseAgent {
    released = true;
  }

  /** The function can be called only before or after the tokens have been releasesd */
  modifier inReleaseState(bool releaseState) {
    require(releaseState == released);
    _;
  }

  /** The function can be called only by a whitelisted release agent. */
  modifier onlyReleaseAgent() {
    require(msg.sender == releaseAgent);
    _;
  }


  function transfer(address _to, uint _value) canTransfer(msg.sender) returns (bool success) {
    // Call StandardToken.transfer()
   return super.transfer(_to, _value);
  }

  function transferFrom(address _from, address _to, uint _value) canTransfer(_from) returns (bool success) {
    // Call StandardToken.transferFrom()
    return super.transferFrom(_from, _to, _value);
  }

}


contract Coin is XinfinUpgradeableToken, ReleasableToken {

  event UpdatedTokenInformation(string newName, string newSymbol);

  /* name of the token */
  string public name = "XinFin XDCE";

  /* symbol of the token */
  string public symbol = "XDCE";

  /* token decimals to handle fractions */
  uint public decimals = 18;

  //Crowdsale running
  bool public isCrowdsaleOpen=false;

  /* initial token supply */
  uint public totalSupply = 15000000000 * (10 ** decimals);
  uint public onSaleTokens = 10000000000 * (10 ** decimals);


  uint tokensForPublicSale = 0;

  address contractAddress;

  uint256 pricePerToken = 7518796992481; //1 Eth = 133000 XDCE

  uint minETH = 0 * 10**decimals; // 0 ether
  uint maxETH = 15 * 10**decimals; // 15 ether

  function Coin() XinfinUpgradeableToken(msg.sender) {

    owner = msg.sender;
    contractAddress = address(this);
    //tokens are kept in contract address rather than owner
    balances[contractAddress] = totalSupply;
  }

  /* function to update token name and symbol */
  function updateTokenInformation(string _name, string _symbol) onlyOwner {
    name = _name;
    symbol = _symbol;
    UpdatedTokenInformation(name, symbol);
  }


  function sendTokensToOwner(uint _tokens) onlyOwner returns (bool ok){
      require(balances[contractAddress] >= _tokens);
      balances[contractAddress] = safeSub(balances[contractAddress],_tokens);
      balances[owner] = safeAdd(balances[owner],_tokens);
      return true;
  }


  /* single address */
  function sendTokensToInvestors(address _investor, uint _tokens) onlyOwner returns (bool ok){
      require(balances[contractAddress] >= _tokens);
      onSaleTokens = safeSub(onSaleTokens, _tokens);
      balances[contractAddress] = safeSub(balances[contractAddress],_tokens);
      balances[_investor] = safeAdd(balances[_investor],_tokens);
      return true;
  }



  /* A dispense feature to allocate some addresses with Xinfin tokens
  * calculation done using token count
  *  Can be called only by owner
  */
  function dispenseTokensToInvestorAddressesByValue(address[] _addresses, uint[] _value) onlyOwner returns (bool ok){
     require(_addresses.length == _value.length);
     for(uint256 i=0; i<_addresses.length; i++){
        onSaleTokens = safeSub(onSaleTokens, _value[i]);
        balances[_addresses[i]] = safeAdd(balances[_addresses[i]], _value[i]);
        balances[contractAddress] = safeSub(balances[contractAddress], _value[i]);
     }
     return true;
  }


  function startCrowdSale() onlyOwner {
     isCrowdsaleOpen=true;
  }

   function stopCrowdSale() onlyOwner {
     isCrowdsaleOpen=false;
  }


 function setPublicSaleParams(uint _tokensForPublicSale, uint _min, uint _max, bool _crowdsaleStatus ) onlyOwner {
    require(_tokensForPublicSale != 0);
    require(_tokensForPublicSale <= onSaleTokens);
    tokensForPublicSale = _tokensForPublicSale;
    isCrowdsaleOpen=_crowdsaleStatus;
    require(_min >= 0);
    require(_max > 0);
    minETH = _min;
    maxETH = _max;
 }


 function setTotalTokensForPublicSale(uint _value) onlyOwner{
      require(_value != 0);
      tokensForPublicSale = _value;
  }

 function increaseSupply(uint value) onlyOwner returns (bool) {
  totalSupply = safeAdd(totalSupply, value);
  balances[contractAddress] = safeAdd(balances[contractAddress], value);
  Transfer(0x0, contractAddress, value);
  return true;
}

function decreaseSupply(uint value) onlyOwner returns (bool) {
  balances[contractAddress] = safeSub(balances[contractAddress], value);
  totalSupply = safeSub(totalSupply, value);
  Transfer(contractAddress, 0x0, value);
  return true;
}

  function setMinAndMaxEthersForPublicSale(uint _min, uint _max) onlyOwner{
      require(_min >= 0);
      require(_max > 0);
      minETH = _min;
      maxETH = _max;
  }

  function updateTokenPrice(uint _value) onlyOwner{
      require(_value != 0);
      pricePerToken = _value;
  }


  function updateOnSaleSupply(uint _newSupply) onlyOwner{
      require(_newSupply != 0);
      onSaleTokens = _newSupply;
  }


  function buyTokens() public payable returns(uint tokenAmount) {

    uint _tokenAmount;
    uint multiplier = (10 ** decimals);
    uint weiAmount = msg.value;

    require(isCrowdsaleOpen);
    //require(whitelistedAddress[msg.sender]);

    require(weiAmount >= minETH);
    require(weiAmount <= maxETH);

    _tokenAmount =  safeMul(weiAmount,multiplier) / pricePerToken;

    require(_tokenAmount > 0);

    //safe sub will automatically handle overflows
    tokensForPublicSale = safeSub(tokensForPublicSale, _tokenAmount);
    onSaleTokens = safeSub(onSaleTokens, _tokenAmount);
    balances[contractAddress] = safeSub(balances[contractAddress],_tokenAmount);
    //assign tokens
    balances[msg.sender] = safeAdd(balances[msg.sender], _tokenAmount);

    //send money to the owner
    require(owner.send(weiAmount));

    return _tokenAmount;

  }

  // There is no need for vesting. It will be done manually by manually releasing tokens to certain addresses

  function() payable {
      buyTokens();
  }

  function destroyToken() public onlyOwner {
      selfdestruct(msg.sender);
  }

}

Contract ABI
[{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"name":"updateTokenInformation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"state","type":"bool"}],"name":"setTransferAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokensForPublicSale","type":"uint256"},{"name":"_min","type":"uint256"},{"name":"_max","type":"uint256"},{"name":"_crowdsaleStatus","type":"bool"}],"name":"setPublicSaleParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setTotalTokensForPublicSale","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":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setReleaseAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destroyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_min","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"setMinAndMaxEthersForPublicSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"updateTokenPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getUpgradeState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"transferAgents","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"sendTokensToInvestors","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"released","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"decreaseSupply","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"increaseSupply","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopCrowdSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_value","type":"uint256[]"}],"name":"dispenseTokensToInvestorAddressesByValue","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[{"name":"tokenAmount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"releaseAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newSupply","type":"uint256"}],"name":"updateOnSaleSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onSaleTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"sendTokensToOwner","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startCrowdSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newName","type":"string"},{"indexed":false,"name":"newSymbol","type":"string"}],"name":"UpdatedTokenInformation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","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"}]

Contract Creation Code
60606040526000600960146101000a81548160ff0219169083151502179055506040805190810160405280600b81526020017f58696e46696e2058444345000000000000000000000000000000000000000000815250600b90805190602001906200006c929190620002a2565b506040805190810160405280600481526020017f5844434500000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000ba929190620002a2565b506012600d556000600e60006101000a81548160ff021916908315150217905550600d54600a0a64037e11d60002600f55600d54600a0a6402540be4000260105560006011556506d69b394fe1601355600d54600a0a600002601455600d54600a0a600f0260155534156200012e57600080fd5b3380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f5460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000351565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b6200034e91905b808211156200034a57600081600090555060010162000330565b5090565b90565b61378f80620003616000396000f30060606040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025f9bc11461024657806302f652a3146102e657806306fdde031461032a578063095ea7b3146103b857806310001fdd1461041257806317eef4cd1461045257806318160ddd1461047557806323b872dd1461049e57806329ff4f53146105175780632e4eaa1514610550578063313ce567146105655780633a789ffb1461058e57806345977d03146105ba5780635a3320ff146105dd5780635de4ccb01461060a5780635f412d4f1461065f578063600440cb14610674578063676c0d77146106c957806370a08231146106ec57806379ba5097146107395780638444b3911461074e578063867c285714610785578063870488f9146107d65780638da5cb5b1461083057806395d89b411461088557806396132521146109135780639738968c1461094057806398e52f9a1461096d578063a293d1e8146109a8578063a9059cbb146109e8578063b921e16314610a42578063c67c6eab14610a7d578063c752ff6214610a92578063cfae2c6514610abb578063d05c78da14610b6d578063d0febe4c14610bad578063d1f276d314610bcb578063d4ee1d9014610c20578063d7e7088a14610c75578063da23d18b14610cae578063dd62ed3e14610cd1578063df90061b14610d3d578063e6cb901314610d66578063f12ddd2b14610da6578063f2b45ac114610de1578063f2fde38b14610df6578063ffeb7d7514610e2f575b610243610e68565b50005b341561025157600080fd5b6102e4600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110c9565b005b34156102f157600080fd5b610328600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061129c565b005b341561033557600080fd5b61033d611377565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037d578082015181840152602081019050610362565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c357600080fd5b6103f8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611415565b604051808215151515815260200191505060405180910390f35b341561041d57600080fd5b610450600480803590602001909190803590602001909190803590602001909190803515159060200190919050506115a0565b005b341561045d57600080fd5b6104736004808035906020019091905050611671565b005b341561048057600080fd5b6104886116e7565b6040518082815260200191505060405180910390f35b34156104a957600080fd5b6104fd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116ed565b604051808215151515815260200191505060405180910390f35b341561052257600080fd5b61054e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611774565b005b341561055b57600080fd5b610563611838565b005b341561057057600080fd5b6105786118ad565b6040518082815260200191505060405180910390f35b341561059957600080fd5b6105b860048080359060200190919080359060200190919050506118b3565b005b34156105c557600080fd5b6105db6004808035906020019091905050611940565b005b34156105e857600080fd5b6105f0611bb4565b604051808215151515815260200191505060405180910390f35b341561061557600080fd5b61061d611bc7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066a57600080fd5b610672611bed565b005b341561067f57600080fd5b610687611c66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106d457600080fd5b6106ea6004808035906020019091905050611c8c565b005b34156106f757600080fd5b610723600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d02565b6040518082815260200191505060405180910390f35b341561074457600080fd5b61074c611d4b565b005b341561075957600080fd5b610761611eaa565b6040518082600481111561077157fe5b60ff16815260200191505060405180910390f35b341561079057600080fd5b6107bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f29565b604051808215151515815260200191505060405180910390f35b34156107e157600080fd5b610816600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f49565b604051808215151515815260200191505060405180910390f35b341561083b57600080fd5b61084361218f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561089057600080fd5b6108986121b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d85780820151818401526020810190506108bd565b50505050905090810190601f1680156109055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561091e57600080fd5b610926612253565b604051808215151515815260200191505060405180910390f35b341561094b57600080fd5b610953612266565b604051808215151515815260200191505060405180910390f35b341561097857600080fd5b61098e600480803590602001909190505061226f565b604051808215151515815260200191505060405180910390f35b34156109b357600080fd5b6109d2600480803590602001909190803590602001909190505061242a565b6040518082815260200191505060405180910390f35b34156109f357600080fd5b610a28600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612443565b604051808215151515815260200191505060405180910390f35b3415610a4d57600080fd5b610a6360048080359060200190919050506124c8565b604051808215151515815260200191505060405180910390f35b3415610a8857600080fd5b610a90612683565b005b3415610a9d57600080fd5b610aa56126fc565b6040518082815260200191505060405180910390f35b3415610ac657600080fd5b610b5360048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612702565b604051808215151515815260200191505060405180910390f35b3415610b7857600080fd5b610b976004808035906020019091908035906020019091905050612978565b6040518082815260200191505060405180910390f35b610bb5610e68565b6040518082815260200191505060405180910390f35b3415610bd657600080fd5b610bde6129ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c2b57600080fd5b610c336129d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c8057600080fd5b610cac600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129f7565b005b3415610cb957600080fd5b610ccf6004808035906020019091905050612ced565b005b3415610cdc57600080fd5b610d27600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d63565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d50612dea565b6040518082815260200191505060405180910390f35b3415610d7157600080fd5b610d906004808035906020019091908035906020019091905050612df0565b6040518082815260200191505060405180910390f35b3415610db157600080fd5b610dc76004808035906020019091905050612e0e565b604051808215151515815260200191505060405180910390f35b3415610dec57600080fd5b610df4613085565b005b3415610e0157600080fd5b610e2d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130fe565b005b3415610e3a57600080fd5b610e66600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506131da565b005b600080600080600d54600a0a9150349050600e60009054906101000a900460ff161515610e9457600080fd5b6014548110151515610ea557600080fd5b6015548111151515610eb657600080fd5b601354610ec38284612978565b811515610ecc57fe5b049250600083111515610ede57600080fd5b610eea6011548461242a565b601181905550610efc6010548461242a565b601081905550610f6d60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061101b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156110c057600080fd5b82935050505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112557600080fd5b81600b908051906020019061113b9291906136be565b5080600c90805190602001906111529291906136be565b507fd131ab1e6f279deea74e13a18477e13e2107deb6dc8ae955648948be5841fb46600b600c6040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112055780601f106111da57610100808354040283529160200191611205565b820191906000526020600020905b8154815290600101906020018083116111e857829003601f168201915b50508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112885780601f1061125d57610100808354040283529160200191611288565b820191906000526020600020905b81548152906001019060200180831161126b57829003601f168201915b505094505050505060405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f857600080fd5b6000600960149054906101000a900460ff16151581151514151561131b57600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b505050505081565b60008082141580156114a457506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1515156114b057600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fc57600080fd5b6000841415151561160c57600080fd5b601054841115151561161d57600080fd5b8360118190555080600e60006101000a81548160ff0219169083151502179055506000831015151561164e57600080fd5b60008211151561165d57600080fd5b826014819055508160158190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b600081141515156116dd57600080fd5b8060118190555050565b600f5481565b600083600960149054906101000a900460ff16151561175f57600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561175e57600080fd5b5b61176a8585856132a0565b9150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d057600080fd5b6000600960149054906101000a900460ff1615158115151415156117f357600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600d5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b6000821015151561191f57600080fd5b60008111151561192e57600080fd5b81601481905550806015819055505050565b600061194a611eaa565b90506003600481111561195957fe5b81600481111561196557fe5b1480611986575060048081111561197857fe5b81600481111561198457fe5b145b151561199157600080fd5b600082141515156119a157600080fd5b6119ea600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a396000548361242a565b600081905550611a4b60065483612df0565b600681905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611b1557600080fd5b6102c65a03f11515611b2657600080fd5b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600e60009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4957600080fd5b6001600960146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ce857600080fd5b60008114151515611cf857600080fd5b8060138190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da757600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611eb4612266565b1515611ec35760019050611f26565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f0d5760029050611f26565b60006006541415611f215760039050611f26565b600490505b90565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fa757600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561201757600080fd5b6120236010548361242a565b60108190555061209460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612142600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b505050505081565b600960149054906101000a900460ff1681565b60006001905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122cd57600080fd5b61233860026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a9600f548361242a565b600f819055506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600082821115151561243857fe5b818303905092915050565b600033600960149054906101000a900460ff1615156124b557600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124b457600080fd5b5b6124bf8484613535565b91505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561252657600080fd5b612532600f5483612df0565b600f819055506125a360026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126df57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b60065481565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276157600080fd5b8251845114151561277157600080fd5b600090505b835181101561296d576127a2601054848381518110151561279357fe5b9060200190602002015161242a565b60108190555061281f6002600086848151811015156127bd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848381518110151561281057fe5b90602001906020020151612df0565b60026000868481518110151561283157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128fb60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484838151811015156128ec57fe5b9060200190602002015161242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612776565b600191505092915050565b60008082840290506000841480612999575082848281151561299657fe5b04145b15156129a157fe5b8091505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129ff612266565b1515612a0a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515612a3057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a8c57600080fd5b600480811115612a9857fe5b612aa0611eaa565b6004811115612aab57fe5b14151515612ab857600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612b8757600080fd5b6102c65a03f11515612b9857600080fd5b505050604051805190501515612bad57600080fd5b600054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612c3e57600080fd5b6102c65a03f11515612c4f57600080fd5b50505060405180519050141515612c6557600080fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4957600080fd5b60008114151515612d5957600080fd5b8060108190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b6000808284019050838110151515612e0457fe5b8091505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e6c57600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612edc57600080fd5b612f4760026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301760026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130e157600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561315a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561319657600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff161415151561320057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561325c57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061336b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f7600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613444818461242a565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000613580600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360c600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ff57805160ff191683800117855561372d565b8280016001018555821561372d579182015b8281111561372c578251825591602001919060010190613711565b5b50905061373a919061373e565b5090565b61376091905b8082111561375c576000816000905550600101613744565b5090565b905600a165627a7a723058204025b5b49266cfddc318349d4a8fbe2cbc4aa18b97d236cf02c86442ecb0472c0029


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