Sponsored Link:   FTEC - Artificial Intelligence trading revolution! Ready project! Softcap reached! Get MAX Bonus!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 14389 txns
Token Contract: XinFin XDCE (XDCE)
 Latest 25 txns from a total Of 14389 transactions

TxHash Age From To Value [TxFee]
0x6c0e78a64237120362e04768124c8967a7330dcc7cf7f6c54fc199f61e4d759d15 mins ago0x65bb04e2c1c5c4ef0f2f71f2e504ae942d6ac1f2  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00112377
0xfcc81b3eb9e5e7a11e3bd57935f8484dd7266ffb43ad3c1daafde8cf977e126a24 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00132093
0x92d2eedbd14b0729fb6f3e3449b384db5be1b033ab62cb7f486df304e5d1bfa633 mins ago0x9580cb57dad32e24b8f0cd317e266e2d15e2d560  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000138204
0xe6357c9faf6efe818b86cf1a4b98b42ba6cdf477926296777d8989a308f31b8e44 mins ago0x6dcc131c0cbd1602b39a75fb3cdaf86e860be529  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001205085
0xe68d1f8b11d78f1e586020e94ad8003ed3317eb21f8ae0034ccccad67465838654 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00132093
0xec621ab6764b978d4c4313ffeec11868ea06ad1e32de74efceabb6a95b780ab81 hr 7 mins ago0xbe708d227f6dfa0b8f2698bf543b949dfe4e28fb  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00152658
0xe0ce5f27fc7bceea5c0c47d54c9458e096795d6adf8b99673e94638664155bf11 hr 9 mins ago0x5ab9d116a53ef41063e3eae26a7ebe736720e9ba  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00106398
0x98fd304c04ecd3b0e285d03bcdff8d6136b1d65f73be041a71026408909e20a41 hr 19 mins ago0x5ab9d116a53ef41063e3eae26a7ebe736720e9ba  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000968772
0xb771465cca9516c7ac81811585c1d10fbb23721573e9897f6f1e9c3ce5c2a7ae1 hr 19 mins ago0x267b70f2658bf39eccbf8864b7a4c4e123e7ac21  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000968772
0xcee1a9ee088e5aa58e03c70ab6b7c651e18c5307afd60550bbc0153402ce629b1 hr 21 mins ago0x3fa698f0216b6d36010bbd773f78e3298e3992c6  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000560925
0xb6b4b166a4cbbd5695f6e05ebc7075ed4b15ec509d77eaa90489ac389844cc261 hr 24 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00087093
0x1cc4ca4c6520c46673996e86d25f59489de8093dbae64cafe341b14cac6a5f061 hr 30 mins ago0x8136dce5521520034963d40e785eed0e1afefd03  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00139164
0xfd56ca23858fea7033cb3a9ea2bd74fc43ccc0b803859b0cc160d726527d6b141 hr 51 mins ago0xa7ddc3b48887835a3b58fea0ce7375ab5af6dbf6  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00074662
0xe860403d57576f84523899d2d08fd1168e6de3abe1b7d7e4bb76c48385fb82601 hr 53 mins ago0xcb140ab8bdf466c4af30b1e2b48ee9807619693e  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00046516
0x3a60438ea50ee58dc96b6e7ddd2a5202aa27c6cc48b5a1e017e100c4557cef462 hrs 30 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00112185
0xcab792035a2b428dd316636487198dc43804884d6a869ab021865019ebaf7e432 hrs 46 mins ago0xb2cc3cdd53fc9a1aeaf3a68edeba2736238ddc5d  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000524595245
0x11a7b4bd456cd662d25c07b6afae290885bd78fc505e032c48408eaacdc5fc1a3 hrs 26 mins ago0x07080b24c060e84d38ab2ddac83c53918e5e0452  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0x58138932786a4d3fa07b4f2a06875d14e174493e9912404b6784c386fe797df93 hrs 28 mins ago0x267b70f2658bf39eccbf8864b7a4c4e123e7ac21  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00097146
0x87bf557154fe2bf4ef5cf030beebd4f9fb36703f13ee7594f24732cf842b4d353 hrs 32 mins ago0xb4f4338839c2ed54540f502daae7e5b462bd4a50  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000968772
0xbf4752639b1838368d6b99b17c0440877a5b2ef6753289461062bd15bd8dfb863 hrs 39 mins ago0x5ab9d116a53ef41063e3eae26a7ebe736720e9ba  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00097146
0x7ee07677da0ee0dd111276014c123bdf3dd40e5861f82daf21f882bb7efc40c65 hrs 38 mins ago0x43e1eb1537eb2a308bee2cad8e0c7d569c03fe23  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0x0ce3637a15c0daf3291017e41b3ca3c75d0a1a2658f87fe88cab73125d5c14296 hrs 2 mins ago0x0b6eaa81e1e32211c1f52bbfa0fcce97d27cfe61  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0004626
0x74ffc9d567150cc660e945b27a7db9d1d9437a96552ba9a567cdfa68a6981e9c6 hrs 12 mins ago0xa19ad6d7395adb298ef2cdcb151cb4e96464512e  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.001538443
0x110c3f9718e0266d4870840614a0f3118bb5c7924cd2b43e253f9669b8baa4d76 hrs 23 mins ago0x9aebb3852cb987c09ced8390041d3e1048557013  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000471852
0xd88927ec4dd518eb2a9cc496a0ca763eecf2e7415a347479a2d8145b428756eb6 hrs 31 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00156993
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x3ae72a5a8ceda0db790e356e1fc6559919a159165a7a16eb51e9641c9e210acf5252013103 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.15 Ether
0x702ca5045d613fb4d28a8c7b0f663763c92c1d7859c06b8b441842beb3d524705251883103 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.2 Ether
0xf7e5bb6157fcad2bc6e920f6d8bcde4d3ace424cb9a9fe943ace190bd8c05c3f5251586103 days 10 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.4 Ether
0xeb05d1e514d5c5f55b4bb9281cdd6ef3e7756e8a20e277b0c70633d700a8612a5251496103 days 10 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcc6f6aa441ccad090afb8da4dfbf5a927ccc24904c4d6714a0fa41857ba7a0405251472103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.71 Ether
0x797fee3ab677203559cb4befbcd1b4db152116660088f111dba1a8f50365bcf15251456103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0x660d94c02cdb5e49df2b6bcf5de5eac7c7c5b95aec0121b7ae835d1343d17ebe5251448103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcfa538a494f0b04377e08540501ed41189c0e866f2d4a9594fbce816661395505251440103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.1 Ether
0x17316c442dffa10fe7a924258bd7a2e4cec7733de88581888d32ec7bfb6e0f265251427103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.5 Ether
0x50df8d78618599e1154b13f122d00725a5e8d4a24baaf81d56a5b1c764a3733e5251424103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.13 Ether
0xae91d4134b57386379c2a6b4e8289f7e8271907b97075c47734a0ccb2a7e9c0b5251397103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3.388605635 Ether
0x0aa423d0ca3c709a62d0b378e27fb8ce82d9327a38a166615d5c1922a67497475251237103 days 11 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2 Ether
0xa4c4791758486d4de2395a0d0608a974b6a00651406a39f69715a30232aef6475251192103 days 12 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.3 Ether
0x432704696d0f016afe2a0e453c3bb14bb7f13d64558739fef886f01e63efef765251166103 days 12 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.88 Ether
0x63d57cb1d7bc67ab776402a9a26002f799006232958586dc42c11662c07c7f7e5251140103 days 12 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.25 Ether
0x174f8ec5f90af19d3042f615c85a3eec7a6d9178d6a1a5589a8dafe9204cc97d5251135103 days 12 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.29 Ether
0x39ee959036e55161b4211284869e9c8845f36c32c1894151c882977b6a122bad5251024103 days 12 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0xc68aa188e407a97f68884da4c998b961775ef775053fdacd15bea596c259a6a35250933103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0xf4119dda6f6255299f6b533d8b9024cca928bfdba6d7ee8899255cd0cc036f5e5250909103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.22129898 Ether
0x9e4e8e69eee5c0876f5ae50877b5d3cf230f0cbf6bec95e53630918256c79d9d5250826103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0x65b4404e31165404ca334ce943a20e2a01ce913b425da4d888a278ae9abd2cfb5250822103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.07374179 Ether
0x359cc22cb5eb10bc901a8ec18428ad68cd3a6ea5dc2197bcaa9c39d592b92b775250816103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0x5e6dd1d794da0a4531a0a4c6256bffb170306818918a5ba2bf6117845f10af7f5250774103 days 13 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.03848 Ether
0x028e9ea2a8d2b0063d18ec83f35053a0cb32056e804c11abe1017ae31c0de9c55250721103 days 14 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xb41f841ebe33b1b2b0a84a24bff5b6d8223d8cb8c3807d052b184677611e552f5250669103 days 14 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: Coin
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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 Switch To Opcodes View
60606040526000600960146101000a81548160ff0219169083151502179055506040805190810160405280600b81526020017f58696e46696e2058444345000000000000000000000000000000000000000000815250600b90805190602001906200006c929190620002a2565b506040805190810160405280600481526020017f5844434500000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000ba929190620002a2565b506012600d556000600e60006101000a81548160ff021916908315150217905550600d54600a0a64037e11d60002600f55600d54600a0a6402540be4000260105560006011556506d69b394fe1601355600d54600a0a600002601455600d54600a0a600f0260155534156200012e57600080fd5b3380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f5460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000351565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b6200034e91905b808211156200034a57600081600090555060010162000330565b5090565b90565b61378f80620003616000396000f30060606040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025f9bc11461024657806302f652a3146102e657806306fdde031461032a578063095ea7b3146103b857806310001fdd1461041257806317eef4cd1461045257806318160ddd1461047557806323b872dd1461049e57806329ff4f53146105175780632e4eaa1514610550578063313ce567146105655780633a789ffb1461058e57806345977d03146105ba5780635a3320ff146105dd5780635de4ccb01461060a5780635f412d4f1461065f578063600440cb14610674578063676c0d77146106c957806370a08231146106ec57806379ba5097146107395780638444b3911461074e578063867c285714610785578063870488f9146107d65780638da5cb5b1461083057806395d89b411461088557806396132521146109135780639738968c1461094057806398e52f9a1461096d578063a293d1e8146109a8578063a9059cbb146109e8578063b921e16314610a42578063c67c6eab14610a7d578063c752ff6214610a92578063cfae2c6514610abb578063d05c78da14610b6d578063d0febe4c14610bad578063d1f276d314610bcb578063d4ee1d9014610c20578063d7e7088a14610c75578063da23d18b14610cae578063dd62ed3e14610cd1578063df90061b14610d3d578063e6cb901314610d66578063f12ddd2b14610da6578063f2b45ac114610de1578063f2fde38b14610df6578063ffeb7d7514610e2f575b610243610e68565b50005b341561025157600080fd5b6102e4600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110c9565b005b34156102f157600080fd5b610328600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061129c565b005b341561033557600080fd5b61033d611377565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037d578082015181840152602081019050610362565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c357600080fd5b6103f8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611415565b604051808215151515815260200191505060405180910390f35b341561041d57600080fd5b610450600480803590602001909190803590602001909190803590602001909190803515159060200190919050506115a0565b005b341561045d57600080fd5b6104736004808035906020019091905050611671565b005b341561048057600080fd5b6104886116e7565b6040518082815260200191505060405180910390f35b34156104a957600080fd5b6104fd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116ed565b604051808215151515815260200191505060405180910390f35b341561052257600080fd5b61054e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611774565b005b341561055b57600080fd5b610563611838565b005b341561057057600080fd5b6105786118ad565b6040518082815260200191505060405180910390f35b341561059957600080fd5b6105b860048080359060200190919080359060200190919050506118b3565b005b34156105c557600080fd5b6105db6004808035906020019091905050611940565b005b34156105e857600080fd5b6105f0611bb4565b604051808215151515815260200191505060405180910390f35b341561061557600080fd5b61061d611bc7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066a57600080fd5b610672611bed565b005b341561067f57600080fd5b610687611c66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106d457600080fd5b6106ea6004808035906020019091905050611c8c565b005b34156106f757600080fd5b610723600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d02565b6040518082815260200191505060405180910390f35b341561074457600080fd5b61074c611d4b565b005b341561075957600080fd5b610761611eaa565b6040518082600481111561077157fe5b60ff16815260200191505060405180910390f35b341561079057600080fd5b6107bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f29565b604051808215151515815260200191505060405180910390f35b34156107e157600080fd5b610816600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f49565b604051808215151515815260200191505060405180910390f35b341561083b57600080fd5b61084361218f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561089057600080fd5b6108986121b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d85780820151818401526020810190506108bd565b50505050905090810190601f1680156109055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561091e57600080fd5b610926612253565b604051808215151515815260200191505060405180910390f35b341561094b57600080fd5b610953612266565b604051808215151515815260200191505060405180910390f35b341561097857600080fd5b61098e600480803590602001909190505061226f565b604051808215151515815260200191505060405180910390f35b34156109b357600080fd5b6109d2600480803590602001909190803590602001909190505061242a565b6040518082815260200191505060405180910390f35b34156109f357600080fd5b610a28600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612443565b604051808215151515815260200191505060405180910390f35b3415610a4d57600080fd5b610a6360048080359060200190919050506124c8565b604051808215151515815260200191505060405180910390f35b3415610a8857600080fd5b610a90612683565b005b3415610a9d57600080fd5b610aa56126fc565b6040518082815260200191505060405180910390f35b3415610ac657600080fd5b610b5360048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612702565b604051808215151515815260200191505060405180910390f35b3415610b7857600080fd5b610b976004808035906020019091908035906020019091905050612978565b6040518082815260200191505060405180910390f35b610bb5610e68565b6040518082815260200191505060405180910390f35b3415610bd657600080fd5b610bde6129ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c2b57600080fd5b610c336129d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c8057600080fd5b610cac600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129f7565b005b3415610cb957600080fd5b610ccf6004808035906020019091905050612ced565b005b3415610cdc57600080fd5b610d27600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d63565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d50612dea565b6040518082815260200191505060405180910390f35b3415610d7157600080fd5b610d906004808035906020019091908035906020019091905050612df0565b6040518082815260200191505060405180910390f35b3415610db157600080fd5b610dc76004808035906020019091905050612e0e565b604051808215151515815260200191505060405180910390f35b3415610dec57600080fd5b610df4613085565b005b3415610e0157600080fd5b610e2d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130fe565b005b3415610e3a57600080fd5b610e66600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506131da565b005b600080600080600d54600a0a9150349050600e60009054906101000a900460ff161515610e9457600080fd5b6014548110151515610ea557600080fd5b6015548111151515610eb657600080fd5b601354610ec38284612978565b811515610ecc57fe5b049250600083111515610ede57600080fd5b610eea6011548461242a565b601181905550610efc6010548461242a565b601081905550610f6d60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061101b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156110c057600080fd5b82935050505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112557600080fd5b81600b908051906020019061113b9291906136be565b5080600c90805190602001906111529291906136be565b507fd131ab1e6f279deea74e13a18477e13e2107deb6dc8ae955648948be5841fb46600b600c6040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112055780601f106111da57610100808354040283529160200191611205565b820191906000526020600020905b8154815290600101906020018083116111e857829003601f168201915b50508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112885780601f1061125d57610100808354040283529160200191611288565b820191906000526020600020905b81548152906001019060200180831161126b57829003601f168201915b505094505050505060405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f857600080fd5b6000600960149054906101000a900460ff16151581151514151561131b57600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b505050505081565b60008082141580156114a457506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1515156114b057600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fc57600080fd5b6000841415151561160c57600080fd5b601054841115151561161d57600080fd5b8360118190555080600e60006101000a81548160ff0219169083151502179055506000831015151561164e57600080fd5b60008211151561165d57600080fd5b826014819055508160158190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b600081141515156116dd57600080fd5b8060118190555050565b600f5481565b600083600960149054906101000a900460ff16151561175f57600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561175e57600080fd5b5b61176a8585856132a0565b9150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d057600080fd5b6000600960149054906101000a900460ff1615158115151415156117f357600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600d5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b6000821015151561191f57600080fd5b60008111151561192e57600080fd5b81601481905550806015819055505050565b600061194a611eaa565b90506003600481111561195957fe5b81600481111561196557fe5b1480611986575060048081111561197857fe5b81600481111561198457fe5b145b151561199157600080fd5b600082141515156119a157600080fd5b6119ea600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a396000548361242a565b600081905550611a4b60065483612df0565b600681905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611b1557600080fd5b6102c65a03f11515611b2657600080fd5b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600e60009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4957600080fd5b6001600960146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ce857600080fd5b60008114151515611cf857600080fd5b8060138190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da757600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611eb4612266565b1515611ec35760019050611f26565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f0d5760029050611f26565b60006006541415611f215760039050611f26565b600490505b90565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fa757600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561201757600080fd5b6120236010548361242a565b60108190555061209460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612142600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b505050505081565b600960149054906101000a900460ff1681565b60006001905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122cd57600080fd5b61233860026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a9600f548361242a565b600f819055506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600082821115151561243857fe5b818303905092915050565b600033600960149054906101000a900460ff1615156124b557600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124b457600080fd5b5b6124bf8484613535565b91505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561252657600080fd5b612532600f5483612df0565b600f819055506125a360026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126df57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b60065481565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276157600080fd5b8251845114151561277157600080fd5b600090505b835181101561296d576127a2601054848381518110151561279357fe5b9060200190602002015161242a565b60108190555061281f6002600086848151811015156127bd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848381518110151561281057fe5b90602001906020020151612df0565b60026000868481518110151561283157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128fb60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484838151811015156128ec57fe5b9060200190602002015161242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612776565b600191505092915050565b60008082840290506000841480612999575082848281151561299657fe5b04145b15156129a157fe5b8091505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129ff612266565b1515612a0a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515612a3057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a8c57600080fd5b600480811115612a9857fe5b612aa0611eaa565b6004811115612aab57fe5b14151515612ab857600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612b8757600080fd5b6102c65a03f11515612b9857600080fd5b505050604051805190501515612bad57600080fd5b600054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612c3e57600080fd5b6102c65a03f11515612c4f57600080fd5b50505060405180519050141515612c6557600080fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4957600080fd5b60008114151515612d5957600080fd5b8060108190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b6000808284019050838110151515612e0457fe5b8091505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e6c57600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612edc57600080fd5b612f4760026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301760026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130e157600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561315a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561319657600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff161415151561320057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561325c57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061336b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f7600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613444818461242a565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000613580600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360c600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ff57805160ff191683800117855561372d565b8280016001018555821561372d579182015b8281111561372c578251825591602001919060010190613711565b5b50905061373a919061373e565b5090565b61376091905b8082111561375c576000816000905550600101613744565b5090565b905600a165627a7a723058204025b5b49266cfddc318349d4a8fbe2cbc4aa18b97d236cf02c86442ecb0472c0029

   Swarm Source:
bzzr://4025b5b49266cfddc318349d4a8fbe2cbc4aa18b97d236cf02c86442ecb0472c

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.