ETH Price: $3,361.98 (-7.27%)
Gas: 21 Gwei

Contract

0xd9a340502737Dc652B1e1973a3F4b02A471A98Af
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer152395442022-07-29 20:28:26598 days ago1659126506IN
0xd9a34050...A471A98Af
0 ETH0.000536249.52154993
Transfer129195482021-07-29 8:08:10963 days ago1627546090IN
0xd9a34050...A471A98Af
0 ETH0.0011817228.6
Transfer125745052021-06-05 12:42:371017 days ago1622896957IN
0xd9a34050...A471A98Af
0 ETH0.0004958212.00000112
Transfer123468142021-05-01 7:00:361052 days ago1619852436IN
0xd9a34050...A471A98Af
0 ETH0.0010783820
Transfer113541802020-11-29 14:30:321205 days ago1606660232IN
0xd9a34050...A471A98Af
0 ETH0.0006616217
Transfer112023642020-11-06 7:15:391228 days ago1604646939IN
0xd9a34050...A471A98Af
0 ETH0.0016345942
Transfer107038722020-08-21 13:34:371305 days ago1598016877IN
0xd9a34050...A471A98Af
0 ETH0.02147267551.72742333
Transfer98769532020-04-15 12:17:121433 days ago1586953032IN
0xd9a34050...A471A98Af
0 ETH0.000163454.2
Transfer98538572020-04-11 23:10:551437 days ago1586646655IN
0xd9a34050...A471A98Af
0 ETH0.000042811.1
Transfer98308712020-04-08 10:04:191440 days ago1586340259IN
0xd9a34050...A471A98Af
0 ETH0.000338598.7
Transfer97930142020-04-02 14:06:291446 days ago1585836389IN
0xd9a34050...A471A98Af
0 ETH0.000194595
Transfer97572172020-03-28 2:14:501452 days ago1585361690IN
0xd9a34050...A471A98Af
0 ETH0.00007541.9375
Transfer97543502020-03-27 15:58:361452 days ago1585324716IN
0xd9a34050...A471A98Af
0 ETH0.000194595
Transfer97412922020-03-25 15:27:391454 days ago1585150059IN
0xd9a34050...A471A98Af
0 ETH0.000038911
Transfer97301822020-03-23 21:34:441456 days ago1584999284IN
0xd9a34050...A471A98Af
0 ETH0.000023911
Transfer97122172020-03-21 2:01:231459 days ago1584756083IN
0xd9a34050...A471A98Af
0 ETH0.000038911
Transfer96984162020-03-18 22:52:341461 days ago1584571954IN
0xd9a34050...A471A98Af
0 ETH0.000116753
Transfer96753382020-03-15 9:45:331464 days ago1584265533IN
0xd9a34050...A471A98Af
0 ETH0.000023911
Transfer96753382020-03-15 9:45:331464 days ago1584265533IN
0xd9a34050...A471A98Af
0 ETH0.000023911
Transfer96326322020-03-08 19:19:441471 days ago1583695184IN
0xd9a34050...A471A98Af
0 ETH0.000023911
Transfer96324172020-03-08 18:32:531471 days ago1583692373IN
0xd9a34050...A471A98Af
0 ETH0.000077832
Transfer96154702020-03-06 4:28:391474 days ago1583468919IN
0xd9a34050...A471A98Af
0 ETH0.000038911
Transfer95900642020-03-02 6:41:381478 days ago1583131298IN
0xd9a34050...A471A98Af
0 ETH0.000350279
Transfer95892052020-03-02 3:28:511478 days ago1583119731IN
0xd9a34050...A471A98Af
0 ETH0.000077832
Transfer95841282020-03-01 8:40:231478 days ago1583052023IN
0xd9a34050...A471A98Af
0 ETH0.000038911
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MDC

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-06-15
*/

pragma solidity ^0.5.7;

/*
 * Creator: MidasCoin 

/*
 * Abstract Token Smart Contract
 *
 */

 
 /*
 * Safe Math Smart Contract. 
 * https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol
 */

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

  function safeDiv(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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




/**
 * ERC-20 standard token interface, as defined
 * <a href="http://github.com/ethereum/EIPs/issues/20">here</a>.
 */
contract Token {
  
  function totalSupply() public view returns (uint256 supply);
  function balanceOf(address _owner) public view returns (uint256 balance);
  function transfer(address _to, uint256 _value) public returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
  function approve(address _spender, uint256 _value) public returns (bool success);
  function allowance(address _owner, address _spender) public view returns (uint256 remaining);
  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}



/**
 * Abstract Token Smart Contract that could be used as a base contract for
 * ERC-20 token contracts.
 */
contract AbstractToken is Token, SafeMath {
  /**
   * Create new Abstract Token contract.
   */
  constructor () public {
    // Do nothing
  }
  
  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
   *        owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return accounts [_owner];
  }

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   * accounts [_to] + _value > accounts [_to] for overflow check
   * which is already in safeMath
   */
  function transfer(address _to, uint256 _value) public returns (bool success) {
    require(_to != address(0));
    if (accounts [msg.sender] < _value) return false;
    if (_value > 0 && msg.sender != _to) {
      accounts [msg.sender] = safeSub (accounts [msg.sender], _value);
      accounts [_to] = safeAdd (accounts [_to], _value);
    }
    emit Transfer (msg.sender, _to, _value);
    return true;
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
   *        recipient
   * @return true if tokens were transferred successfully, false otherwise
   * accounts [_to] + _value > accounts [_to] for overflow check
   * which is already in safeMath
   */
  function transferFrom(address _from, address _to, uint256 _value) public
  returns (bool success) {
    require(_to != address(0));
    if (allowances [_from][msg.sender] < _value) return false;
    if (accounts [_from] < _value) return false; 

    if (_value > 0 && _from != _to) {
	  allowances [_from][msg.sender] = safeSub (allowances [_from][msg.sender], _value);
      accounts [_from] = safeSub (accounts [_from], _value);
      accounts [_to] = safeAdd (accounts [_to], _value);
    }
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * Allow given spender to transfer given number of tokens from message sender.
   * @param _spender address to allow the owner of to transfer tokens from message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
   function approve (address _spender, uint256 _value) public returns (bool success) {
    allowances [msg.sender][_spender] = _value;
    emit Approval (msg.sender, _spender, _value);
    return true;
  }

  /**
   * Tell how many tokens given spender is currently allowed to transfer from
   * given owner.
   *
   * @param _owner address to get number of tokens allowed to be transferred
   *        from the owner of
   * @param _spender address to get number of tokens allowed to be transferred
   *        by the owner of
   * @return number of tokens given spender is currently allowed to transfer
   *         from given owner
   */
  function allowance(address _owner, address _spender) public view
  returns (uint256 remaining) {
    return allowances [_owner][_spender];
  }

  /**
   * Mapping from addresses of token holders to the numbers of tokens belonging
   * to these token holders.
   */
  mapping (address => uint256) accounts;

  /**
   * Mapping from addresses of token holders to the mapping of addresses of
   * spenders to the allowances set by these token holders to these spenders.
   */
  mapping (address => mapping (address => uint256)) private allowances;
  
}


/**
 * MidasCoin smart contract.
 */
contract MDC is AbstractToken {
  /**
   * Maximum allowed number of tokens in circulation.
   * tokenSupply = tokensIActuallyWant * (10 ^ decimals)
   */
   
   
  uint256 constant MAX_TOKEN_COUNT = 250000000 * (10**18);
   
  /**
   * Address of the owner of this smart contract.
   */
  address private owner;
  
  /**
   * Frozen account list holder
   */
  mapping (address => bool) private frozenAccount;

  /**
   * Current number of tokens in circulation.
   */
  uint256 tokenCount = 0;
  
 
  /**
   * True if tokens transfers are currently frozen, false otherwise.
   */
  bool frozen = false;
  
 
  /**
   * Create new token smart contract and make msg.sender the
   * owner of this smart contract.
   */
  constructor () public {
    owner = msg.sender;
  }

  /**
   * Get total number of tokens in circulation.
   *
   * @return total number of tokens in circulation
   */
  function totalSupply() public view returns (uint256 supply) {
    return tokenCount;
  }

  string constant public name = "MidasCoin";
  string constant public symbol = "MDC";
  uint8 constant public decimals = 18;
  
  /**
   * Transfer given number of tokens from message sender to given recipient.ss
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer(address _to, uint256 _value) public returns (bool success) {
    require(!frozenAccount[msg.sender]);
	if (frozen) return false;
    else return AbstractToken.transfer (_to, _value);
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
   *        recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom(address _from, address _to, uint256 _value) public
    returns (bool success) {
	require(!frozenAccount[_from]);
    if (frozen) return false;
    else return AbstractToken.transferFrom (_from, _to, _value);
  }

   /**
   * Change how many tokens given spender is allowed to transfer from message
   * spender.  In order to prevent double spending of allowance,
   * 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
   * @param _spender address to allow the owner of to transfer tokens from
   *        message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
  function approve (address _spender, uint256 _value) public
    returns (bool success) {
	require(allowance (msg.sender, _spender) == 0 || _value == 0);
    return AbstractToken.approve (_spender, _value);
  }

  /**
   * Create _value new tokens and give new created tokens to msg.sender.
   * May only be called by smart contract owner.
   *
   * @param _value number of tokens to create
   * @return true if tokens were created successfully, false otherwise
   */
  function createTokens(uint256 _value) public
    returns (bool success) {
    require (msg.sender == owner);

    if (_value > 0) {
      if (_value > safeSub (MAX_TOKEN_COUNT, tokenCount)) return false;
	  
      accounts [msg.sender] = safeAdd (accounts [msg.sender], _value);
      tokenCount = safeAdd (tokenCount, _value);
	  
	  // adding transfer event and _from address as null address
	  emit Transfer(address(0), msg.sender, _value);
	  
	  return true;
    }
	
	  return false;
    
  }
  
  /**
   * For future use only when we will need more tokens for our main application
   * Create mintedAmount new tokens and give new created tokens to target.
   * May only be called by smart contract owner.
   * @param mintedAmount number of tokens to create
   * @return true if tokens were created successfully, false otherwise
   */
  
  function mintToken(address target, uint256 mintedAmount) public
  returns (bool success) {
    require (msg.sender == owner);
      if (mintedAmount > 0) {
	  
      accounts [target] = safeAdd (accounts [target], mintedAmount);
      tokenCount = safeAdd (tokenCount, mintedAmount);
	  
	  // adding transfer event and _from address as null address
	  emit Transfer(address(0), target, mintedAmount);
	  
	   return true;
    }
	  return false;
   
    }
	
  /**
   * Burn intended tokens.
   * Only be called by by burnable addresses.
   *
   * @param _value number of tokens to burn
   * @return true if burnt successfully, false otherwise
   */
  
  function burn(uint256 _value) public returns (bool success) {
  
        require(accounts[msg.sender] >= _value); 
		
		require (msg.sender == owner);
		
		accounts [msg.sender] = safeSub (accounts [msg.sender], _value);
		
        tokenCount = safeSub (tokenCount, _value);	
		
        emit Burn(msg.sender, _value);
		
        return true;
    }	
  

  /**
   * Set new owner for the smart contract.
   * May only be called by smart contract owner.
   *
   * @param _newOwner address of new owner of the smart contract
   */
  function setOwner(address _newOwner) public {
    require (msg.sender == owner);

    owner = _newOwner;
  }

  /**
   * Freeze ALL token transfers.
   * May only be called by smart contract owner.
   */
  function freezeTransfers () public {
    require (msg.sender == owner);

    if (!frozen) {
      frozen = true;
      emit Freeze ();
    }
  }

  /**
   * Unfreeze ALL token transfers.
   * May only be called by smart contract owner.
   */
  function unfreezeTransfers () public {
    require (msg.sender == owner);

    if (frozen) {
      frozen = false;
      emit Unfreeze ();
    }
  }
  
  
  /*A user is able to unintentionally send tokens to a contract 
  * and if the contract is not prepared to refund them they will get stuck in the contract. 
  * The same issue used to happen for Ether too but new Solidity versions added the payable modifier to
  * prevent unintended Ether transfers. However, there’s no such mechanism for token transfers.
  * so the below function is created
  */
  
  function refundTokens(address _token, address _refund, uint256 _value) public {
    require (msg.sender == owner);
    require(_token != address(this));
    AbstractToken token = AbstractToken(_token);
    token.transfer(_refund, _value);
    emit RefundTokens(_token, _refund, _value);
  }
  
  /**
   * Freeze specific account
   * May only be called by smart contract owner.
   */
  function freezeAccount(address _target, bool freeze) public {
      require (msg.sender == owner);
	  require (msg.sender != _target);
      frozenAccount[_target] = freeze;
      emit FrozenFunds(_target, freeze);
 }

  /**
   * Logged when token transfers were frozen.
   */
  event Freeze ();

  /**
   * Logged when token transfers were unfrozen.
   */
  event Unfreeze ();
  
  /**
   * Logged when a particular account is frozen.
   */
  
  event FrozenFunds(address target, bool frozen);
  
   /**
   * Logged when a token is burnt.
   */  
  
  event Burn(address target,uint256 _value);


  
  /**
   * when accidentally send other tokens are refunded
   */
  
  event RefundTokens(address _token, address _refund, uint256 _value);
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"freezeTransfers","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":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","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":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unfreezeTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"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":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"createTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_refund","type":"address"},{"name":"_value","type":"uint256"}],"name":"refundTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_token","type":"address"},{"indexed":false,"name":"_refund","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"RefundTokens","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"}]

608060405260006004556000600560006101000a81548160ff02191690831515021790555034801561003057600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ae0806100816000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806342966c68116100a257806389519c501161007157806389519c501461046357806395d89b41146104d1578063a9059cbb14610554578063dd62ed3e146105ba578063e724529c146106325761010b565b806342966c681461031957806370a082311461035f57806379c65068146103b75780637e1f2bb81461041d5761010b565b806318160ddd116100de57806318160ddd1461024757806323b872dd14610265578063313ce567146102eb57806331c420d41461030f5761010b565b8063015024601461011057806306fdde031461011a578063095ea7b31461019d57806313af403514610203575b600080fd5b610118610682565b005b61012261073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610162578082015181840152602081019050610147565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e9600480360360408110156101b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610773565b604051808215151515815260200191505060405180910390f35b6102456004803603602081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a7565b005b61024f610845565b6040518082815260200191505060405180910390f35b6102d16004803603606081101561027b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061084f565b604051808215151515815260200191505060405180910390f35b6102f36108db565b604051808260ff1660ff16815260200191505060405180910390f35b6103176108e0565b005b6103456004803603602081101561032f57600080fd5b8101908080359060200190929190505050610999565b604051808215151515815260200191505060405180910390f35b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b50565b6040518082815260200191505060405180910390f35b610403600480360360408110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b98565b604051808215151515815260200191505060405180910390f35b6104496004803603602081101561043357600080fd5b8101908080359060200190929190505050610d13565b604051808215151515815260200191505060405180910390f35b6104cf6004803603606081101561047957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb4565b005b6104d96110b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105195780820151818401526020810190506104fe565b50505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105a06004803603604081101561056a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ed565b604051808215151515815260200191505060405180910390f35b61061c600480360360408110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611177565b6040518082815260200191505060405180910390f35b6106806004803603604081101561064857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506111fe565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106dc57600080fd5b600560009054906101000a900460ff16610738576001600560006101000a81548160ff0219169083151502179055507f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de60405160405180910390a15b565b6040518060400160405280600981526020017f4d69646173436f696e000000000000000000000000000000000000000000000081525081565b6000806107803385611177565b148061078c5750600082145b61079557600080fd5b61079f838361135b565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080157600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108a857600080fd5b600560009054906101000a900460ff16156108c657600090506108d4565b6108d184848461144d565b90505b9392505050565b601281565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093a57600080fd5b600560009054906101000a900460ff1615610997576000600560006101000a81548160ff0219169083151502179055507f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded60405160405180910390a15b565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109e657600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4057600080fd5b610a886000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ad660045483611831565b6004819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000821115610d0857610c456000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c9360045483611848565b6004819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610d0d565b600090505b92915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b6000821115610eaa57610d8f6acecb8f27f4200f3a000000600454611831565b821115610d9f5760009050610eaf565b610de76000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3560045483611848565b6004819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610eaf565b600090505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f0e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4757600080fd5b60008390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b505050506040513d6020811015610ffd57600080fd5b8101908080519060200190929190505050507ffab5e7a27e02736e52f60776d307340051d8bc15aee0ef211c7a4aa2a8cdc154848484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6040518060400160405280600381526020017f4d4443000000000000000000000000000000000000000000000000000000000081525081565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561114657600080fd5b600560009054906101000a900460ff16156111645760009050611171565b61116e8383611864565b90505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461125857600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561129157600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561148857600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611515576000905061182a565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611564576000905061182a565b6000821180156115a057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117c05761162b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f36000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177d6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b60008282111561183d57fe5b818303905092915050565b60008082840190508381101561185a57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189f57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156118ee5760009050611aae565b60008211801561192a57508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611a44576119776000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9291505056fea165627a7a723058209b16178d45dc936153bcb225f075863bd7cc0f991f62506b766ee5b11ce8bfcd0029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806342966c68116100a257806389519c501161007157806389519c501461046357806395d89b41146104d1578063a9059cbb14610554578063dd62ed3e146105ba578063e724529c146106325761010b565b806342966c681461031957806370a082311461035f57806379c65068146103b75780637e1f2bb81461041d5761010b565b806318160ddd116100de57806318160ddd1461024757806323b872dd14610265578063313ce567146102eb57806331c420d41461030f5761010b565b8063015024601461011057806306fdde031461011a578063095ea7b31461019d57806313af403514610203575b600080fd5b610118610682565b005b61012261073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610162578082015181840152602081019050610147565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e9600480360360408110156101b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610773565b604051808215151515815260200191505060405180910390f35b6102456004803603602081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a7565b005b61024f610845565b6040518082815260200191505060405180910390f35b6102d16004803603606081101561027b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061084f565b604051808215151515815260200191505060405180910390f35b6102f36108db565b604051808260ff1660ff16815260200191505060405180910390f35b6103176108e0565b005b6103456004803603602081101561032f57600080fd5b8101908080359060200190929190505050610999565b604051808215151515815260200191505060405180910390f35b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b50565b6040518082815260200191505060405180910390f35b610403600480360360408110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b98565b604051808215151515815260200191505060405180910390f35b6104496004803603602081101561043357600080fd5b8101908080359060200190929190505050610d13565b604051808215151515815260200191505060405180910390f35b6104cf6004803603606081101561047957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb4565b005b6104d96110b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105195780820151818401526020810190506104fe565b50505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105a06004803603604081101561056a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ed565b604051808215151515815260200191505060405180910390f35b61061c600480360360408110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611177565b6040518082815260200191505060405180910390f35b6106806004803603604081101561064857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506111fe565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106dc57600080fd5b600560009054906101000a900460ff16610738576001600560006101000a81548160ff0219169083151502179055507f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de60405160405180910390a15b565b6040518060400160405280600981526020017f4d69646173436f696e000000000000000000000000000000000000000000000081525081565b6000806107803385611177565b148061078c5750600082145b61079557600080fd5b61079f838361135b565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080157600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108a857600080fd5b600560009054906101000a900460ff16156108c657600090506108d4565b6108d184848461144d565b90505b9392505050565b601281565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093a57600080fd5b600560009054906101000a900460ff1615610997576000600560006101000a81548160ff0219169083151502179055507f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded60405160405180910390a15b565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109e657600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4057600080fd5b610a886000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ad660045483611831565b6004819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000821115610d0857610c456000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c9360045483611848565b6004819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610d0d565b600090505b92915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6f57600080fd5b6000821115610eaa57610d8f6acecb8f27f4200f3a000000600454611831565b821115610d9f5760009050610eaf565b610de76000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3560045483611848565b6004819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610eaf565b600090505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f0e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4757600080fd5b60008390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b505050506040513d6020811015610ffd57600080fd5b8101908080519060200190929190505050507ffab5e7a27e02736e52f60776d307340051d8bc15aee0ef211c7a4aa2a8cdc154848484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b6040518060400160405280600381526020017f4d4443000000000000000000000000000000000000000000000000000000000081525081565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561114657600080fd5b600560009054906101000a900460ff16156111645760009050611171565b61116e8383611864565b90505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461125857600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561129157600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561148857600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611515576000905061182a565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611564576000905061182a565b6000821180156115a057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117c05761162b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f36000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177d6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b60008282111561183d57fe5b818303905092915050565b60008082840190508381101561185a57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189f57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156118ee5760009050611aae565b60008211801561192a57508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611a44576119776000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611831565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611848565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9291505056fea165627a7a723058209b16178d45dc936153bcb225f075863bd7cc0f991f62506b766ee5b11ce8bfcd0029

Deployed Bytecode Sourcemap

5981:7818:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5981:7818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11787:151;;;:::i;:::-;;7012:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7012:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8987:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11571:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11571:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6916:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8060:238;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8060:238:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7100:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12044:155;;;:::i;:::-;;11020:360;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11020:360:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2368:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2368:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10341:470;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10341:470:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9468:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9468:515:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12623:296;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12623:296:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7058:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7058:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7453:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7453:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5369:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5369:145:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13021:222;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13021:222:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11787:151;11852:5;;;;;;;;;;;11838:19;;:10;:19;;;11829:29;;;;;;11872:6;;;;;;;;;;;11867:66;;11898:4;11889:6;;:13;;;;;;;;;;;;;;;;;;11916:9;;;;;;;;;;11867:66;11787:151::o;7012:41::-;;;;;;;;;;;;;;;;;;;:::o;8987:212::-;9060:12;9122:1;9086:32;9097:10;9109:8;9086:9;:32::i;:::-;:37;:52;;;;9137:1;9127:6;:11;9086:52;9078:61;;;;;;9153:40;9176:8;9186:6;9153:21;:40::i;:::-;9146:47;;8987:212;;;;:::o;11571:112::-;11645:5;;;;;;;;;;;11631:19;;:10;:19;;;11622:29;;;;;;11668:9;11660:5;;:17;;;;;;;;;;;;;;;;;;11571:112;:::o;6916:90::-;6960:14;6990:10;;6983:17;;6916:90;:::o;8060:238::-;8147:12;8174:13;:20;8188:5;8174:20;;;;;;;;;;;;;;;;;;;;;;;;;8173:21;8165:30;;;;;;8206:6;;;;;;;;;;;8202:90;;;8221:5;8214:12;;;;8202:90;8245:47;8273:5;8280:3;8285:6;8245:26;:47::i;:::-;8238:54;;8060:238;;;;;;:::o;7100:35::-;7133:2;7100:35;:::o;12044:155::-;12111:5;;;;;;;;;;;12097:19;;:10;:19;;;12088:29;;;;;;12130:6;;;;;;;;;;;12126:68;;;12156:5;12147:6;;:14;;;;;;;;;;;;;;;;;;12175:11;;;;;;;;;;12126:68;12044:155::o;11020:360::-;11066:12;11127:6;11103:8;:20;11112:10;11103:20;;;;;;;;;;;;;;;;:30;;11095:39;;;;;;11167:5;;;;;;;;;;;11153:19;;:10;:19;;;11144:29;;;;;;11206:39;11215:8;:21;11225:10;11215:21;;;;;;;;;;;;;;;;11238:6;11206:7;:39::i;:::-;11182:8;:21;11192:10;11182:21;;;;;;;;;;;;;;;:63;;;;11273:28;11282:10;;11294:6;11273:7;:28::i;:::-;11260:10;:41;;;;11322:24;11327:10;11339:6;11322:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;11368:4;11361:11;;11020:360;;;:::o;2368:110::-;2424:15;2455:8;:17;2465:6;2455:17;;;;;;;;;;;;;;;;2448:24;;2368:110;;;:::o;10341:470::-;10417:12;10461:5;;;;;;;;;;;10447:19;;:10;:19;;;10438:29;;;;;;10495:1;10480:12;:16;10476:305;;;10532:41;10541:8;:17;10551:6;10541:17;;;;;;;;;;;;;;;;10560:12;10532:7;:41::i;:::-;10512:8;:17;10522:6;10512:17;;;;;;;;;;;;;;;:61;;;;10595:34;10604:10;;10616:12;10595:7;:34::i;:::-;10582:10;:47;;;;10729:6;10708:42;;10725:1;10708:42;;;10737:12;10708:42;;;;;;;;;;;;;;;;;;10769:4;10762:11;;;;10476:305;10793:5;10786:12;;10341:470;;;;;:::o;9468:515::-;9527:12;9571:5;;;;;;;;;;;9557:19;;:10;:19;;;9548:29;;;;;;9599:1;9590:6;:10;9586:365;;;9624:37;6188:20;9650:10;;9624:7;:37::i;:::-;9615:6;:46;9611:64;;;9670:5;9663:12;;;;9611:64;9713:39;9722:8;:21;9732:10;9722:21;;;;;;;;;;;;;;;;9745:6;9713:7;:39::i;:::-;9689:8;:21;9699:10;9689:21;;;;;;;;;;;;;;;:63;;;;9774:28;9783:10;;9795:6;9774:7;:28::i;:::-;9761:10;:41;;;;9902:10;9881:40;;9898:1;9881:40;;;9914:6;9881:40;;;;;;;;;;;;;;;;;;9939:4;9932:11;;;;9586:365;9966:5;9959:12;;9468:515;;;;:::o;12623:296::-;12731:5;;;;;;;;;;;12717:19;;:10;:19;;;12708:29;;;;;;12770:4;12752:23;;:6;:23;;;;12744:32;;;;;;12783:19;12819:6;12783:43;;12833:5;:14;;;12848:7;12857:6;12833:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12833:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12833:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12833:31:0;;;;;;;;;;;;;;;;;12876:37;12889:6;12897:7;12906:6;12876:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12623:296;;;;:::o;7058:37::-;;;;;;;;;;;;;;;;;;;:::o;7453:208::-;7516:12;7546:13;:25;7560:10;7546:25;;;;;;;;;;;;;;;;;;;;;;;;;7545:26;7537:35;;;;;;7580:6;;;;;;;;;;;7576:79;;;7595:5;7588:12;;;;7576:79;7619:36;7643:3;7648:6;7619:22;:36::i;:::-;7612:43;;7453:208;;;;;:::o;5369:145::-;5446:17;5479:10;:19;5491:6;5479:19;;;;;;;;;;;;;;;:29;5499:8;5479:29;;;;;;;;;;;;;;;;5472:36;;5369:145;;;;:::o;13021:222::-;13113:5;;;;;;;;;;;13099:19;;:10;:19;;;13090:29;;;;;;13148:7;13134:21;;:10;:21;;;;13125:31;;;;;;13190:6;13165:13;:22;13179:7;13165:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13210:28;13222:7;13231:6;13210:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13021:222;;:::o;4712:206::-;4780:12;4837:6;4801:10;:23;4813:10;4801:23;;;;;;;;;;;;;;;:33;4825:8;4801:33;;;;;;;;;;;;;;;:42;;;;4877:8;4855:39;;4865:10;4855:39;;;4887:6;4855:39;;;;;;;;;;;;;;;;;;4908:4;4901:11;;4712:206;;;;:::o;3814:566::-;3899:12;3943:1;3928:17;;:3;:17;;;;3920:26;;;;;;3990:6;3957:10;:18;3969:5;3957:18;;;;;;;;;;;;;;;:30;3976:10;3957:30;;;;;;;;;;;;;;;;:39;3953:57;;;4005:5;3998:12;;;;3953:57;4040:6;4021:8;:16;4031:5;4021:16;;;;;;;;;;;;;;;;:25;4017:43;;;4055:5;4048:12;;;;4017:43;4083:1;4074:6;:10;:26;;;;;4097:3;4088:12;;:5;:12;;;;4074:26;4070:247;;;4141:48;4150:10;:18;4162:5;4150:18;;;;;;;;;;;;;;;:30;4169:10;4150:30;;;;;;;;;;;;;;;;4182:6;4141:7;:48::i;:::-;4108:10;:18;4120:5;4108:18;;;;;;;;;;;;;;;:30;4127:10;4108:30;;;;;;;;;;;;;;;:81;;;;4217:34;4226:8;:16;4236:5;4226:16;;;;;;;;;;;;;;;;4244:6;4217:7;:34::i;:::-;4198:8;:16;4208:5;4198:16;;;;;;;;;;;;;;;:53;;;;4277:32;4286:8;:14;4296:3;4286:14;;;;;;;;;;;;;;;;4302:6;4277:7;:32::i;:::-;4260:8;:14;4270:3;4260:14;;;;;;;;;;;;;;;:49;;;;4070:247;4344:3;4328:28;;4337:5;4328:28;;;4349:6;4328:28;;;;;;;;;;;;;;;;;;4370:4;4363:11;;3814:566;;;;;;:::o;735:117::-;797:7;825:1;820;:6;;813:14;;;;845:1;841;:5;834:12;;735:117;;;;:::o;858:137::-;920:7;936:9;952:1;948;:5;936:17;;972:1;967;:6;;960:14;;;;988:1;981:8;;;858:137;;;;:::o;2898:416::-;2961:12;3005:1;2990:17;;:3;:17;;;;2982:26;;;;;;3043:6;3019:8;:21;3029:10;3019:21;;;;;;;;;;;;;;;;:30;3015:48;;;3058:5;3051:12;;;;3015:48;3083:1;3074:6;:10;:31;;;;;3102:3;3088:17;;:10;:17;;;;3074:31;3070:175;;;3140:39;3149:8;:21;3159:10;3149:21;;;;;;;;;;;;;;;;3172:6;3140:7;:39::i;:::-;3116:8;:21;3126:10;3116:21;;;;;;;;;;;;;;;:63;;;;3205:32;3214:8;:14;3224:3;3214:14;;;;;;;;;;;;;;;;3230:6;3205:7;:32::i;:::-;3188:8;:14;3198:3;3188:14;;;;;;;;;;;;;;;:49;;;;3070:175;3278:3;3256:34;;3266:10;3256:34;;;3283:6;3256:34;;;;;;;;;;;;;;;;;;3304:4;3297:11;;2898:416;;;;;:::o

Swarm Source

bzzr://9b16178d45dc936153bcb225f075863bd7cc0f991f62506b766ee5b11ce8bfcd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

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