ETH Price: $1,938.68 (-2.26%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Re Fund Token141114162022-01-31 4:12:521491 days ago1643602372IN
0x3574f856...2001cA2EF
0 ETH0.00767449101.82971492
Update Re Fund A...141113872022-01-31 4:07:151491 days ago1643602035IN
0x3574f856...2001cA2EF
0 ETH0.0027710288.74083167
Re Fund Token118675962021-02-16 11:41:181839 days ago1613475678IN
0x3574f856...2001cA2EF
0 ETH0.00748446151
Re Fund Token118673652021-02-16 10:47:521840 days ago1613472472IN
0x3574f856...2001cA2EF
0 ETH0.0060012993
Update Re Fund A...118673182021-02-16 10:38:321840 days ago1613471912IN
0x3574f856...2001cA2EF
0 ETH0.00396365129
Deliver Tokens107046382020-08-21 16:21:272018 days ago1598026887IN
0x3574f856...2001cA2EF
0 ETH0.0090861100
Deliver Tokens105748272020-08-01 16:00:422038 days ago1596297642IN
0x3574f856...2001cA2EF
0 ETH0.0105861100
Deliver Tokens105683542020-07-31 16:03:032039 days ago1596211383IN
0x3574f856...2001cA2EF
0 ETH0.0105861100
Deliver Tokens105683502020-07-31 16:01:542039 days ago1596211314IN
0x3574f856...2001cA2EF
0 ETH0.0105861100
Deliver Tokens105554882020-07-29 16:01:322041 days ago1596038492IN
0x3574f856...2001cA2EF
0 ETH0.0105861100
Deliver Tokens85999582019-09-22 16:00:582352 days ago1569168058IN
0x3574f856...2001cA2EF
0 ETH0.002804100
Deliver Tokens83496062019-08-14 16:00:572391 days ago1565798457IN
0x3574f856...2001cA2EF
0 ETH0.0028104100
Deliver Tokens82722042019-08-02 16:01:002403 days ago1564761660IN
0x3574f856...2001cA2EF
0 ETH0.0092509100
Deliver Tokens82657912019-08-01 16:01:002404 days ago1564675260IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens82528892019-07-30 16:00:532406 days ago1564502453IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens72793082019-02-28 16:01:332558 days ago1551369693IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens71790052019-02-05 16:00:532581 days ago1549382453IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens71446552019-01-29 16:01:362588 days ago1548777696IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens71247192019-01-25 16:02:552592 days ago1548432175IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens71247142019-01-25 16:01:302592 days ago1548432090IN
0x3574f856...2001cA2EF
0 ETH0.0092509100
Deliver Tokens67464672018-11-21 16:01:022657 days ago1542816062IN
0x3574f856...2001cA2EF
0 ETH0.0077573100
Deliver Tokens67404142018-11-20 16:01:332658 days ago1542729693IN
0x3574f856...2001cA2EF
0 ETH0.0107573100
Deliver Tokens67343782018-11-19 16:01:062659 days ago1542643266IN
0x3574f856...2001cA2EF
0 ETH0.0092509100
Deliver Tokens66428312018-11-04 16:01:052674 days ago1541347265IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
Deliver Tokens66062182018-10-29 16:01:042680 days ago1540828864IN
0x3574f856...2001cA2EF
0 ETH0.0092573100
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer62498472018-09-01 1:41:272739 days ago1535766087
0x3574f856...2001cA2EF
0.04 ETH
Transfer62434982018-08-31 0:13:102740 days ago1535674390
0x3574f856...2001cA2EF
0.3 ETH
Transfer62244382018-08-27 18:50:012743 days ago1535395801
0x3574f856...2001cA2EF
0.13951465 ETH
Transfer61949142018-08-22 18:58:552748 days ago1534964335
0x3574f856...2001cA2EF
0.14 ETH
Transfer61939332018-08-22 15:05:072748 days ago1534950307
0x3574f856...2001cA2EF
0.37 ETH
Transfer61917052018-08-22 6:00:582749 days ago1534917658
0x3574f856...2001cA2EF
0.04 ETH
Transfer61868192018-08-21 10:25:012750 days ago1534847101
0x3574f856...2001cA2EF
0.12 ETH
Transfer61782052018-08-19 23:31:152751 days ago1534721475
0x3574f856...2001cA2EF
0.8 ETH
Transfer61603532018-08-16 22:51:022754 days ago1534459862
0x3574f856...2001cA2EF
0.059 ETH
Transfer61506032018-08-15 7:25:042756 days ago1534317904
0x3574f856...2001cA2EF
0.5 ETH
Transfer61487302018-08-14 23:52:592756 days ago1534290779
0x3574f856...2001cA2EF
0.5 ETH
Transfer61380762018-08-13 4:39:222758 days ago1534135162
0x3574f856...2001cA2EF
1.1 ETH
Transfer61123892018-08-08 20:17:502762 days ago1533759470
0x3574f856...2001cA2EF
0.15 ETH
Transfer61093992018-08-08 8:16:382763 days ago1533716198
0x3574f856...2001cA2EF
2 ETH
Transfer61056372018-08-07 17:02:422763 days ago1533661362
0x3574f856...2001cA2EF
0.1 ETH
Transfer60981522018-08-06 10:31:062765 days ago1533551466
0x3574f856...2001cA2EF
1 ETH
Transfer60822402018-08-03 18:32:582767 days ago1533321178
0x3574f856...2001cA2EF
0.02307845 ETH
Transfer60746312018-08-02 11:20:032768 days ago1533208803
0x3574f856...2001cA2EF
0.2 ETH
Transfer60718282018-08-01 23:57:312769 days ago1533167851
0x3574f856...2001cA2EF
0.5 ETH
Transfer60695792018-08-01 14:54:362769 days ago1533135276
0x3574f856...2001cA2EF
0.02 ETH
Transfer60688592018-08-01 12:02:292769 days ago1533124949
0x3574f856...2001cA2EF
0.02 ETH
Transfer60665152018-08-01 2:11:342770 days ago1533089494
0x3574f856...2001cA2EF
1 ETH
Transfer60629622018-07-31 11:57:012770 days ago1533038221
0x3574f856...2001cA2EF
3 ETH
Transfer60568182018-07-30 10:56:382772 days ago1532948198
0x3574f856...2001cA2EF
0.06 ETH
Transfer60566492018-07-30 10:16:382772 days ago1532945798
0x3574f856...2001cA2EF
1 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
COTCoinPublicSaleCrowdsale

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-02-28
*/

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

pragma solidity ^0.4.23;


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


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


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

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

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

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

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

// File: contracts/WhiteList.sol

pragma solidity ^0.4.21;


contract WhiteList is Ownable{


	mapping(address => uint8) public whitelist;
	bool public publicsale_need_whitelist = true;

	event ImportList(address indexed owner, address[] users, uint8 flag);
	event UpdatePublicSaleWhitelistStatus(address indexed owner, bool flag);

  	/**
	* @dev Function to import user's address into whitelist, only user who in the whitelist can purchase token.
	*      Whitelistにユーザーアドレスを記録。sale期間に、Whitelistに記録したユーザーたちしかトークンを購入できない
	* @param _users The address list that can purchase token when sale period.
	* @param _flag The flag for record different lv user, 1: pre sale user, 2: public sale user. 3: premium sale user
	* @return A bool that indicates if the operation was successful.
	*/
	function importList(address[] _users, uint8 _flag) onlyOwner public returns(bool){

		require(_users.length > 0);

        for(uint i = 0; i < _users.length; i++) {
            whitelist[_users[i]] = _flag;
        }		

        emit ImportList(msg.sender, _users, _flag);

		return true;
	}

  	/**
	* @dev Function check the current user can purchase token or not.
	*      ユーザーアドレスはWhitelistに記録かどうかチェック
	* @param _user The user address that can purchase token or not when public salse.
	* @return A bool that indicates if the operation was successful.
	*/
	function checkList(address _user)public view returns(uint8){
		return whitelist[_user];
	}

  	/**
	* @dev Function get whitelist able status in public sale 
	* @return A bool that indicates if the operation was successful.
	*/
	function getPublicSaleWhitelistStatus()public view returns(bool){
		return publicsale_need_whitelist;
	}	

  	/**
	* @dev Function update whitelist able status in public sale 
	* @param _flag bool whitelist status
	* @return A bool that indicates if the operation was successful.
	*/
	function updatePublicSaleWhitelistStatus(bool _flag) onlyOwner public returns(bool){
		publicsale_need_whitelist = _flag;

		emit UpdatePublicSaleWhitelistStatus(msg.sender, _flag);

		return true;
	}	
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.4.23;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

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

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/Deliver.sol

pragma solidity ^0.4.21;



contract Deliver is Ownable{
	using SafeMath for uint256;

	mapping(address => uint256) public waiting_plate;
	mapping(bytes32 => uint256) public token_deliver_date_plate;
	mapping(bytes32 => uint256) public token_deliver_plate;
	mapping(bytes32 => bool) public already_deliver_token;
	mapping(address => uint256) public deliver_balance;
	mapping(bytes32 => address) public hash_mapping;
	mapping(bytes32 => bool) public deliver_suspending;

	event UpdateWaitingPlate(address indexed updater, address indexed user, uint256 waiting_time);
	event UpdateTokenDeliverPlate(address indexed updater, bytes32 indexed hash_id, uint256 token_amount);
	event UpdateTokenDeliverCheck(address indexed updater, bytes32 indexed hash_id, bool flag);
	event UpdateTokenDeliverBalance(address indexed updater, address indexed user, uint256 pending_token_amount);
	event UpdateHashMapping(address indexed updater, bytes32 indexed hash_id, address indexed user);
	event UpdateDeliverSuspending(address indexed updater, bytes32 indexed hash_id, bool deliver_suspending);

	/**
	* @dev called for get user waiting time
	* @param _user Address
	* @return A uint256 that if the operation was successful.
	*/
	function getWaitingPlate(address _user) public view returns(uint256){
		return waiting_plate[_user];
	}
	
	/**
	* @dev called for get user deliver date
	* @param _hash_id transaction unique hash id
	* @return A uint256 that if the operation was successful.
	*/
	function getTokenDeliverDatePlate(bytes32 _hash_id) public view returns(uint256){
		return token_deliver_date_plate[_hash_id];
	}

	/**
	* @dev called for get user waiting time
	* @param _hash_id transaction unique hash id
	* @return A uint256 that if the operation was successful.
	*/
	function getTokenDeliverPlate(bytes32 _hash_id) public view returns(uint256){
		return token_deliver_plate[_hash_id];
	}

	/**
	* @dev called for get user total pending token amount
	* @param _user user address
	* @return A uint256 that if the operation was successful.
	*/
	function getPendingDeliverToken(address _user) public view returns(uint256){
		return deliver_balance[_user];
	}

	/**
	* @dev called for get user address from hash_id
	* @param _hash_id transaction unique hash id
	* @return A address that if the operation was successful.
	*/
	function getHashMappingAddress(bytes32 _hash_id) public view returns(address){
		return hash_mapping[_hash_id];
	}

	/**
	* @dev called for get user token deliver suspending status
	* @param _hash_id transaction unique hash id
	* @return A bool that if the operation was successful.
	*/
	function getDeliverSuspending(bytes32 _hash_id) public view returns(bool){
		return deliver_suspending[_hash_id];
	}

	/**
	* @dev called for get user total pending token amount
	* @param _hash_id transaction unique hash id
	* @return A bool that if the operation was successful.
	*/
	function deliverCheck(bytes32 _hash_id) public view returns(bool){
		return already_deliver_token[_hash_id];
	}

	/**
	* @dev called for insert user waiting time
	* @param _users Address list
	* @param _waiting_times 時期申告時間リスト
	* @return A bool that if the operation was successful.
	*/
	function pushWaitingPlate(address[] _users, uint256[] _waiting_times)onlyOwner public returns(bool){

		require(_users.length > 0 && _waiting_times.length > 0);
		require(_users.length == _waiting_times.length);

		address user;
		uint256 waiting_time;

        for(uint i = 0; i < _users.length; i++) {
        	user = _users[i];
        	waiting_time = _waiting_times[i];

            waiting_plate[user] = waiting_time;

            emit UpdateWaitingPlate(msg.sender, user, waiting_time);
        }		

		return true;

	}

	/**
	* @dev called for insert user waiting time
	* @param _hash_id transaction unique hash id
	* @param _suspending ユーザーのトークン配布禁止フラグ
	* @return A bool that if the operation was successful.
	*/
	function updateDeliverSuspending(bytes32 _hash_id, bool _suspending)onlyOwner public returns(bool){
		deliver_suspending[_hash_id] = _suspending;

		emit UpdateDeliverSuspending(msg.sender, _hash_id, _suspending);
		return true;
	}

	/**
	* @dev called for insert user token info in the mapping
	* @param _hash_id transaction unique hash id
	* @param _total_token_amount the token amount that include bonus
	* @return A bool that if the operation was successful.
	*/
	function pushTokenDeliverPlate(address _beneficiary, bytes32 _hash_id, uint256 _total_token_amount, uint256 _deliver_date)onlyOwner public returns(bool){

		require(_total_token_amount > 0);

		token_deliver_plate[_hash_id] = _total_token_amount;
		already_deliver_token[_hash_id] = false;
		deliver_balance[_beneficiary] = deliver_balance[_beneficiary].add(_total_token_amount);
		hash_mapping[_hash_id] = _beneficiary;
		token_deliver_date_plate[_hash_id] = _deliver_date;

		emit UpdateTokenDeliverPlate(msg.sender, _hash_id, _total_token_amount);
		emit UpdateTokenDeliverCheck(msg.sender, _hash_id, true);
		emit UpdateTokenDeliverBalance(msg.sender, _beneficiary, deliver_balance[_beneficiary]);
		emit UpdateHashMapping(msg.sender, _hash_id, _beneficiary);
		return true;
	}

	/**
	* @dev called for reset user token info in the mapping
	* @param _hash_id transaction unique hash id
	* @return A bool that if the operation was successful.
	*/
	function resetTokenDeliverPlate(address _beneficiary, bytes32 _hash_id, uint256 _token_amount)onlyOwner public returns(bool){

		require(_token_amount > 0);

		token_deliver_plate[_hash_id] = 0;
		already_deliver_token[_hash_id] = true;
		deliver_balance[_beneficiary] = deliver_balance[_beneficiary].sub(_token_amount);

		emit UpdateTokenDeliverPlate(msg.sender, _hash_id, 0);
		emit UpdateTokenDeliverCheck(msg.sender, _hash_id, false);
		emit UpdateTokenDeliverBalance(msg.sender, _beneficiary, deliver_balance[_beneficiary]);
		return true;
	}

}

// File: contracts/Bonus.sol

pragma solidity ^0.4.21;



contract Bonus is Ownable{
	using SafeMath for uint256;

	uint256 public constant day = 24*60*60;

	uint256 public publicSale_first_stage_endTime;

	mapping(uint8 => uint256) public bonus_time_gate;
	mapping(uint8 => uint8) public bonus_rate;

	event UpdateBonusPhase(address indexed updater, uint8 indexed phase_type, uint256 time_gate, uint8 bonus);
	event UpdatePublicSaleFirstStageEndTime(address indexed updater, uint256 publicSale_first_stage_endTime);

	constructor(
		uint256 _publicSale_first_stage_endTime,
		uint256 _bonus_time_gate_1, 
		uint256 _bonus_time_gate_2,
		uint256 _bonus_time_gate_3, 
		uint256 _bonus_time_gate_4,
		uint8 _bonus_rate_1, 
		uint8 _bonus_rate_2,
		uint8 _bonus_rate_3,
		uint8 _bonus_rate_4) public
	{
		bonus_time_gate[0] = _bonus_time_gate_1*uint256(day);
		bonus_time_gate[1] = _bonus_time_gate_2*uint256(day);
		bonus_time_gate[2] = _bonus_time_gate_3*uint256(day);
		bonus_time_gate[3] = _bonus_time_gate_4*uint256(day);

		bonus_rate[0] = _bonus_rate_1;
		bonus_rate[1] = _bonus_rate_2;
		bonus_rate[2] = _bonus_rate_3;
		bonus_rate[3] = _bonus_rate_4;
	
		publicSale_first_stage_endTime = _publicSale_first_stage_endTime;

		emit UpdateBonusPhase(msg.sender, 1, _bonus_time_gate_1, _bonus_rate_1);
		emit UpdateBonusPhase(msg.sender, 2, _bonus_time_gate_2, _bonus_rate_2);
		emit UpdateBonusPhase(msg.sender, 3, _bonus_time_gate_3, _bonus_rate_3);
		emit UpdateBonusPhase(msg.sender, 4, _bonus_time_gate_4, _bonus_rate_4);
	}

	/**
	* @dev called for get bonus rate
	* @param _phase_type uint8 bonus phase block
	* @return A uint8, bonus rate that if the operation was successful.
	*/
	function getBonusRate(uint8 _phase_type) public view returns(uint8){
		return bonus_rate[_phase_type];
	}

	/**
	* @dev called for get bonus time block
	* @param _phase_type uint8 bonus phase block
	* @return A uint8, phase block time that if the operation was successful.	
	*/
	function getBonusTimeGate(uint8 _phase_type) public view returns(uint256){
		return bonus_time_gate[_phase_type];
	}

	/**
	* @dev called for get the public sale first stage end time
	* @return A uint256, the public sale first stage end time that if the operation was successful.	
	*/
	function getPublicSaleFirstStageEndTime() public view returns(uint256){
		return publicSale_first_stage_endTime;
	}

	/**
	* @dev called for get total token amount that include the bonus
	* @param _waiting_time uint256 KYV waiting time
	* @param _tokenAmount uint256 basic token amount
	* @return A uint256, total token amount that if the operation was successful.		
	*/
	function getTotalAmount(uint256 _waiting_time, uint256 _tokenAmount) public view returns(uint256){
		uint256 total_token_amount;

		if(_waiting_time < bonus_time_gate[0]){
			//user still can get bonus if user purchase token before publicSale first stage end time.
			if(now <= publicSale_first_stage_endTime){
				total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[0])) / 100;
			}else{
				total_token_amount = _tokenAmount;
			}
		}else if(_waiting_time < bonus_time_gate[1]){
			total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[0])) / 100;
		}else if(_waiting_time < bonus_time_gate[2]){
			total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[1])) / 100;
		}else if(_waiting_time < bonus_time_gate[3]){
			total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[2])) / 100;
		}else{
			total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[3])) / 100;
		}

		return total_token_amount;
	}
	
	/**
	* @dev called for update the public sale first stage end time
	* @param _new_stage_endTime uint256 new public sale first stage end time
	* @return A uint256, the public sale first stage end time that if the operation was successful.	
	*/
	function updatePublicSaleFirstStageEndTime(uint256 _new_stage_endTime)onlyOwner public returns(bool){
		publicSale_first_stage_endTime = _new_stage_endTime;

		emit UpdatePublicSaleFirstStageEndTime(msg.sender, _new_stage_endTime);
		return true;
	}

	/**
	* @dev called for update bonus phase time block and rate
	* @param _phase_type uint8 phase block
	* @param _new_days uint256 new phase block time
	* @param _new_bonus uint8 new rate
	* @return A bool that if the operation was successful.
	*/
	function updateBonusPhase(uint8 _phase_type, uint256 _new_days, uint8 _new_bonus)onlyOwner public returns(bool){

		uint256 _new_gate = _new_days * uint256(day);

		//gate phase only have 4 phase
		require(0 < _phase_type && _phase_type <= 4);

		//gate phase 1
		if(_phase_type == 1){

			//new gate time needs to be early than the next gate time
			require( _new_gate < bonus_time_gate[1] );

			//new gate rate needs to be less than the next gate's rate
			require( _new_bonus < bonus_rate[1] );

			bonus_time_gate[0] = _new_gate;
			bonus_rate[0] = _new_bonus;
		}else if(_phase_type == 2){

			//new gate time needs to be early than the next gate time and need to be late than the perious gate time
			require( bonus_time_gate[0] < _new_gate && _new_gate < bonus_time_gate[2] );

			//new gate rate needs to be less than the next gate's rate and need to be bigger than the perious gate rate
			require( bonus_rate[0] < _new_bonus && _new_bonus < bonus_rate[2] );

			bonus_time_gate[1] = _new_gate;
			bonus_rate[1] = _new_bonus;
		}else if(_phase_type == 3){

			require( bonus_time_gate[1] < _new_gate && _new_gate < bonus_time_gate[3] );
			require( bonus_rate[1] < _new_bonus && _new_bonus < bonus_rate[3] );

			bonus_time_gate[2] = _new_gate;
			bonus_rate[2] = _new_bonus;
		}else{

			require( bonus_time_gate[2] < _new_gate );
			require( bonus_rate[2] < _new_bonus );

			bonus_time_gate[3] = _new_gate;
			bonus_rate[3] = _new_bonus;
		}

		emit UpdateBonusPhase(msg.sender, _phase_type, _new_days, _new_bonus);
	}
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

pragma solidity ^0.4.23;


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.4.23;



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender)
    public view returns (uint256);

  function transferFrom(address from, address to, uint256 value)
    public returns (bool);

  function approve(address spender, uint256 value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol

pragma solidity ^0.4.23;




/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale,
 * allowing investors to purchase tokens with ether. This contract implements
 * such functionality in its most fundamental form and can be extended to provide additional
 * functionality and/or custom behavior.
 * The external interface represents the basic interface for purchasing tokens, and conform
 * the base architecture for crowdsales. They are *not* intended to be modified / overriden.
 * The internal interface conforms the extensible and modifiable surface of crowdsales. Override
 * the methods to add functionality. Consider using 'super' where appropiate to concatenate
 * behavior.
 */
contract Crowdsale {
  using SafeMath for uint256;

  // The token being sold
  ERC20 public token;

  // Address where funds are collected
  address public wallet;

  // How many token units a buyer gets per wei.
  // The rate is the conversion between wei and the smallest and indivisible token unit.
  // So, if you are using a rate of 1 with a DetailedERC20 token with 3 decimals called TOK
  // 1 wei will give you 1 unit, or 0.001 TOK.
  uint256 public rate;

  // Amount of wei raised
  uint256 public weiRaised;

  /**
   * Event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value weis paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(
    address indexed purchaser,
    address indexed beneficiary,
    uint256 value,
    uint256 amount
  );

  /**
   * @param _rate Number of token units a buyer gets per wei
   * @param _wallet Address where collected funds will be forwarded to
   * @param _token Address of the token being sold
   */
  constructor(uint256 _rate, address _wallet, ERC20 _token) public {
    require(_rate > 0);
    require(_wallet != address(0));
    require(_token != address(0));

    rate = _rate;
    wallet = _wallet;
    token = _token;
  }

  // -----------------------------------------
  // Crowdsale external interface
  // -----------------------------------------

  /**
   * @dev fallback function ***DO NOT OVERRIDE***
   */
  function () external payable {
    buyTokens(msg.sender);
  }

  /**
   * @dev low level token purchase ***DO NOT OVERRIDE***
   * @param _beneficiary Address performing the token purchase
   */
  function buyTokens(address _beneficiary) public payable {

    uint256 weiAmount = msg.value;
    _preValidatePurchase(_beneficiary, weiAmount);

    // calculate token amount to be created
    uint256 tokens = _getTokenAmount(weiAmount);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    _processPurchase(_beneficiary, tokens);
    emit TokenPurchase(
      msg.sender,
      _beneficiary,
      weiAmount,
      tokens
    );

    _updatePurchasingState(_beneficiary, weiAmount);

    _forwardFunds();
    _postValidatePurchase(_beneficiary, weiAmount);
  }

  // -----------------------------------------
  // Internal interface (extensible)
  // -----------------------------------------

  /**
   * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use super to concatenate validations.
   * @param _beneficiary Address performing the token purchase
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _preValidatePurchase(
    address _beneficiary,
    uint256 _weiAmount
  )
    internal
  {
    require(_beneficiary != address(0));
    require(_weiAmount != 0);
  }

  /**
   * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met.
   * @param _beneficiary Address performing the token purchase
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _postValidatePurchase(
    address _beneficiary,
    uint256 _weiAmount
  )
    internal
  {
    // optional override
  }

  /**
   * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens.
   * @param _beneficiary Address performing the token purchase
   * @param _tokenAmount Number of tokens to be emitted
   */
  function _deliverTokens(
    address _beneficiary,
    uint256 _tokenAmount
  )
    internal
  {
    token.transfer(_beneficiary, _tokenAmount);
  }

  /**
   * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
   * @param _beneficiary Address receiving the tokens
   * @param _tokenAmount Number of tokens to be purchased
   */
  function _processPurchase(
    address _beneficiary,
    uint256 _tokenAmount
  )
    internal
  {
    _deliverTokens(_beneficiary, _tokenAmount);
  }

  /**
   * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.)
   * @param _beneficiary Address receiving the tokens
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _updatePurchasingState(
    address _beneficiary,
    uint256 _weiAmount
  )
    internal
  {
    // optional override
  }

  /**
   * @dev Override to extend the way in which ether is converted to tokens.
   * @param _weiAmount Value in wei to be converted into tokens
   * @return Number of tokens that can be purchased with the specified _weiAmount
   */
  function _getTokenAmount(uint256 _weiAmount)
    internal view returns (uint256)
  {
    return _weiAmount.mul(rate);
  }

  /**
   * @dev Determines how ETH is stored/forwarded on purchases.
   */
  function _forwardFunds() internal {
    wallet.transfer(msg.value);
  }
}

// File: openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol

pragma solidity ^0.4.23;




/**
 * @title TimedCrowdsale
 * @dev Crowdsale accepting contributions only within a time frame.
 */
contract TimedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public openingTime;
  uint256 public closingTime;

  /**
   * @dev Reverts if not in crowdsale time range.
   */
  modifier onlyWhileOpen {
    // solium-disable-next-line security/no-block-members
    require(block.timestamp >= openingTime && block.timestamp <= closingTime);
    _;
  }

  /**
   * @dev Constructor, takes crowdsale opening and closing times.
   * @param _openingTime Crowdsale opening time
   * @param _closingTime Crowdsale closing time
   */
  constructor(uint256 _openingTime, uint256 _closingTime) public {
    // solium-disable-next-line security/no-block-members
    require(_openingTime >= block.timestamp);
    require(_closingTime >= _openingTime);

    openingTime = _openingTime;
    closingTime = _closingTime;
  }

  /**
   * @dev Checks whether the period in which the crowdsale is open has already elapsed.
   * @return Whether crowdsale period has elapsed
   */
  function hasClosed() public view returns (bool) {
    // solium-disable-next-line security/no-block-members
    return block.timestamp > closingTime;
  }

  /**
   * @dev Extend parent behavior requiring to be within contributing period
   * @param _beneficiary Token purchaser
   * @param _weiAmount Amount of wei contributed
   */
  function _preValidatePurchase(
    address _beneficiary,
    uint256 _weiAmount
  )
    internal
    onlyWhileOpen
  {
    super._preValidatePurchase(_beneficiary, _weiAmount);
  }

}

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

pragma solidity ^0.4.23;



/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


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

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

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    emit Unpause();
  }
}

// File: contracts/COTCoinPublicSaleCrowdsale.sol

pragma solidity ^0.4.21;








contract COTCoinPublicSaleCrowdsale is TimedCrowdsale, Ownable, Pausable{
	using SafeMath for uint256;

	address public admin_wallet; //wallet to controll system
	address public sale_owner_wallet; 
	address public eth_management_wallet; //wallet to reveive eth
	address public refund_token_wallet; //wallet that contract will return token
	address public cot_sale_wallet;

	uint256 public minimum_weiAmount;

	uint256 public public_opening_time;
	uint256 public public_closing_time;

	WhiteList public white_list;
	Deliver public deliver;
	Bonus public bonus;

	uint256 public pending_balance;

	event UpdateRate(address indexed updater, uint256 transaction_date, uint256 rate);
	event ReFundToken(address indexed from, address indexed to, uint256 token_amount);
	event PublicsalePurchase(address indexed beneficiary, 
							uint256 transaction_date,
							uint256 waiting_time, 
							uint256 deliver_date, 
							uint256 value, 
							uint256 origin_token_amount, 
							uint256 total_token_amount,
							bytes32 hash_id,
							uint256 sale_balance,
							uint256 publicsale_balance,
							uint256 remain_balance);
	event DeliverTokens(address indexed from, address indexed to, uint256 token_amount, uint256 deliver_time, bytes32 hash_id);
	event UpdateMinimumAmount( address indexed updater, uint256 minimumWeiAmount);
	event UpdateReFundAddress( address indexed updater, address indexed refund_address);

	constructor(
		uint256 _openingTime, 
		uint256 _closingTime,
		uint256 _minimum_weiAmount,
		uint256 _rate,
		address _admin_wallet, 
		address _eth_management_wallet,
		address _refund_token_wallet,
		address _cot_sale_wallet,
		WhiteList _whiteList,
		ERC20 _cot,
		Deliver _deliver,
		Bonus _bonus) public
	    Crowdsale(_rate, _eth_management_wallet, _cot)
	    TimedCrowdsale(_openingTime, _closingTime)
	{
		minimum_weiAmount = _minimum_weiAmount;

		admin_wallet = _admin_wallet;
		eth_management_wallet = _eth_management_wallet;
		refund_token_wallet = _refund_token_wallet;
		cot_sale_wallet = _cot_sale_wallet;

		public_opening_time = _openingTime;
		public_closing_time = _closingTime;

		white_list = _whiteList;
		deliver = _deliver;
		bonus = _bonus;

		emit UpdateRate( msg.sender, now,  _rate);
		emit UpdateMinimumAmount(msg.sender, _minimum_weiAmount);
	}

	/**
	* @dev low level token purchase ***DO NOT OVERRIDE***
	* @param _beneficiary Address performing the token purchase
	*/
	function buyTokens(address _beneficiary) onlyWhileOpen whenNotPaused public payable {

		uint256 weiAmount = msg.value;
		_preValidatePurchase(_beneficiary, weiAmount);

		// calculate token amount to be created
		uint256 tokens = _getTokenAmount(weiAmount);

		// update state
		weiRaised = weiRaised.add(weiAmount);

		_processPurchase(_beneficiary, tokens);
		emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);

		_updatePurchasingState(_beneficiary, weiAmount);

		_forwardFunds();
		_postValidatePurchase(_beneficiary, weiAmount);
	}

	/**
	* @dev Validation of an incoming purchase. Use require statemens to revert state when conditions are not met. Use super to concatenate validations.
	* @param _beneficiary Address performing the token purchase
	* @param _weiAmount Value in wei involved in the purchase
	*/
	function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
		require(_beneficiary != address(0));
		require(_weiAmount != 0);

		//minimum ether check
		uint256 publicSale_first_stage_endTime = bonus.getPublicSaleFirstStageEndTime();

		//need to check minimum ether
		require(_weiAmount >= minimum_weiAmount);
		
		//owner can not purchase token
		require(_beneficiary != admin_wallet);
		require(_beneficiary != eth_management_wallet);

		//whitelist check
		//whitelist 2-public sale user
		uint8 inWhitelist = white_list.checkList(_beneficiary);

		//if need to check whitelist status
		//0:white listに入ってない, 1:プレセール, 2:パブリックセール, 3:プレミアムセール
		if( white_list.getPublicSaleWhitelistStatus() ){
			require( inWhitelist != 0);
		}

	}

	/**
	* @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
	* @param _beneficiary Address receiving the tokens
	* @param _tokenAmount Number of tokens to be purchased
	*/
	function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {

		//check waiting time date which provided by KVC
		uint256 waiting_time = deliver.getWaitingPlate(_beneficiary);

		require(waiting_time != 0);

		//calculate that when will deliver token to purchaser
		uint256 deliver_date = waiting_time + now;

		//calculate the token + bonus
		uint256 total_token_amount = bonus.getTotalAmount(waiting_time, _tokenAmount);

		//make the unique id
		bytes32 hash_id = keccak256(abi.encodePacked(_beneficiary,now));

        //get total cot sale amount
        uint256 cot_sale_wallet_balance = token.balanceOf(cot_sale_wallet);
        uint256 publicsale_balance = token.balanceOf(address(this));

		uint256 total_cot_amount =  cot_sale_wallet_balance.add(publicsale_balance);
		uint256 expect_pending_balance = pending_balance.add(total_token_amount);
        require(total_cot_amount > expect_pending_balance);
        uint256 remain_cot_amount = total_cot_amount.sub(expect_pending_balance);


		pending_balance = pending_balance.add(total_token_amount);

		require(deliver.pushTokenDeliverPlate(_beneficiary, hash_id, total_token_amount , deliver_date));

		emit PublicsalePurchase(_beneficiary, now, waiting_time, deliver_date, msg.value, _tokenAmount, total_token_amount, hash_id, cot_sale_wallet_balance, publicsale_balance, remain_cot_amount);
	}

	/**
	* @dev called for get pending balance
	*/
	function getPendingBalance() public view returns(uint256){
		return pending_balance; 
	}	

	/**
	* @dev called for update user waiting time
	* @param _users Address 
	* @param _waiting_times 時期申告時間
	* @return A bool that indicates if the operation was successful.
	*/
	function updateWaitingPlate(address[] _users, uint256[] _waiting_times)onlyOwner public returns(bool){

		require(deliver.pushWaitingPlate(_users, _waiting_times));

		return true;		
	}

	/**
	* @dev called for update user deliver suspending status
	* @param _hash_id unique hash id
	* @param _suspending ユーザーのトークン配布禁止フラグ
	* @return A bool that indicates if the operation was successful.
	*/
	function updateDeliverSuspending(bytes32 _hash_id, bool _suspending)onlyOwner public returns(bool){

		require(deliver.updateDeliverSuspending(_hash_id, _suspending));

		return true;		
	}

	/**
	* @dev called for get status of pause.
	*/
	function ispause() public view returns(bool){
		return paused;
	}	

	/**
	* @dev Function update rate
	* @param _newRate rate
	* @return A bool that indicates if the operation was successful.
	*/
	function updateRate(int256 _newRate)onlyOwner public returns(bool){
		require(_newRate >= 1);

		rate = uint256(_newRate);

		emit UpdateRate( msg.sender, now, rate);

		return true;
	}

	/**
	* @dev Function get rate
	* @return A uint256 that indicates if the operation was successful.
	*/
	function getRate() public view returns(uint256){
		return rate;
	}

	/**
	* @dev Function return token back to the admin wallet
	* @return A bool that indicates if the operation was successful.
	*/
	function reFundToken(uint256 _value)onlyOwner public returns (bool){
		token.transfer(refund_token_wallet, _value);

		emit ReFundToken(msg.sender, refund_token_wallet, _value);
	}

	/**
	* @dev Function to update refund address
	* @param _add new refund Address 
	* @return A bool that indicates if the operation was successful.
	*/
	function updateReFundAddress(address _add)onlyOwner public returns (bool){
		refund_token_wallet = _add;

		emit UpdateReFundAddress(msg.sender, _add);
		return true;
	}

	/**
	* @dev called for deliver token
	* @param _beneficiary Address 
	* @param _hash_id unique hash id
	* @return A bool that indicates if the operation was successful.
	*/
	function deliverTokens(address _beneficiary, bytes32 _hash_id)onlyOwner public returns (bool){
		
		// will reject if already delivered token 
		bool already_delivered = deliver.deliverCheck(_hash_id);
		require(already_delivered == false);

		//get the token deliver date 
		uint256 deliver_token_date = deliver.getTokenDeliverDatePlate(_hash_id);
		require(deliver_token_date <= now);

		//get the token amount that need to deliver 
		uint256 deliver_token_amount = deliver.getTokenDeliverPlate(_hash_id);
		require(deliver_token_amount > 0);

		//deliver user should match
		address deliver_user = deliver.getHashMappingAddress(_hash_id);
		require(deliver_user == _beneficiary);

		//get token deliver suspending status
		bool deliver_suspending = deliver.getDeliverSuspending(_hash_id);
		require(!deliver_suspending);

		//get the total pending token amount for this user
		uint256 penging_total_deliver_token_amount = deliver.getPendingDeliverToken(_beneficiary);
		require(penging_total_deliver_token_amount > 0);

		//the remain pending token amount should not less than 0
		uint256 remain_panding_total_deliver_token_amount = penging_total_deliver_token_amount - deliver_token_amount;
		require(remain_panding_total_deliver_token_amount >= 0);

		//deliver token
		token.transfer(_beneficiary, deliver_token_amount);

		//reset data
		require(deliver.resetTokenDeliverPlate(_beneficiary, _hash_id, deliver_token_amount));

		pending_balance = pending_balance.sub(deliver_token_amount);

		emit DeliverTokens(msg.sender, _beneficiary, deliver_token_amount, now, _hash_id);
	}

	/**
	* @dev get admin wallet
	*/
	function getAdminAddress() public view returns(address) {
		return admin_wallet;
	}

	/**
	* @dev get eth management owner wallet
	*/
	function getEtherManagementAddress() public view returns(address) {
		return eth_management_wallet;
	}

	/**
	* @dev get token refund wallet
	*/
	function getReFundAddress() public view returns(address) {
		return refund_token_wallet;
	}

	/**
	* @dev get start date for public sale
	*/
	function getPublicsaleOpeningDate() public view returns(uint256) {
		return public_opening_time;
	}

	/**
	* @dev get end date for public sale
	*/
	function getPublicsaleClosingDate() public view returns(uint256) {
		return public_closing_time;
	}

	/**
	* @dev Function get minimum wei amount
	* @return A uint256 that indicates if the operation was successful.
	*/
	function getMinimumAmount() public view returns(uint256){
		return minimum_weiAmount;
	}

	/**
	* @dev Function update minimum wei amount
	* @return A uint256 that indicates if the operation was successful.
	*/
	function updateMinimumAmount(int256 _new_minimum_weiAmount)onlyOwner public returns(bool){

		require(_new_minimum_weiAmount >= 0);

		minimum_weiAmount = uint256(_new_minimum_weiAmount);

		emit UpdateMinimumAmount( msg.sender, minimum_weiAmount);

		return true;
	}

}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_hash_id","type":"bytes32"}],"name":"deliverTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_hash_id","type":"bytes32"},{"name":"_suspending","type":"bool"}],"name":"updateDeliverSuspending","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_new_minimum_weiAmount","type":"int256"}],"name":"updateMinimumAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getReFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEtherManagementAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPublicsaleOpeningDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cot_sale_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eth_management_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"reFundToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"refund_token_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMinimumAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"public_closing_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonus","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"public_opening_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sale_owner_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRate","type":"int256"}],"name":"updateRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ispause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAdminAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"white_list","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_add","type":"address"}],"name":"updateReFundAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pending_balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPublicsaleClosingDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_users","type":"address[]"},{"name":"_waiting_times","type":"uint256[]"}],"name":"updateWaitingPlate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimum_weiAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deliver","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_openingTime","type":"uint256"},{"name":"_closingTime","type":"uint256"},{"name":"_minimum_weiAmount","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_admin_wallet","type":"address"},{"name":"_eth_management_wallet","type":"address"},{"name":"_refund_token_wallet","type":"address"},{"name":"_cot_sale_wallet","type":"address"},{"name":"_whiteList","type":"address"},{"name":"_cot","type":"address"},{"name":"_deliver","type":"address"},{"name":"_bonus","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":false,"name":"transaction_date","type":"uint256"},{"indexed":false,"name":"rate","type":"uint256"}],"name":"UpdateRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"token_amount","type":"uint256"}],"name":"ReFundToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"transaction_date","type":"uint256"},{"indexed":false,"name":"waiting_time","type":"uint256"},{"indexed":false,"name":"deliver_date","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"origin_token_amount","type":"uint256"},{"indexed":false,"name":"total_token_amount","type":"uint256"},{"indexed":false,"name":"hash_id","type":"bytes32"},{"indexed":false,"name":"sale_balance","type":"uint256"},{"indexed":false,"name":"publicsale_balance","type":"uint256"},{"indexed":false,"name":"remain_balance","type":"uint256"}],"name":"PublicsalePurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"token_amount","type":"uint256"},{"indexed":false,"name":"deliver_time","type":"uint256"},{"indexed":false,"name":"hash_id","type":"bytes32"}],"name":"DeliverTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":false,"name":"minimumWeiAmount","type":"uint256"}],"name":"UpdateMinimumAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":true,"name":"refund_address","type":"address"}],"name":"UpdateReFundAddress","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

60806040526000600660146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405161018080620036248339810180604052810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508b8b8a8986600083111515620000d457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200011157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200014e57600080fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050428210151515620001e957600080fd5b818110151515620001f957600080fd5b8160048190555080600581905550505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089600c8190555087600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600d819055508a600e8190555083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b428b604051808381526020018281526020019250505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e8b6040518082815260200191505060405180910390a250505050505050505050505061313e80620004e66000396000f300608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c7938ca1461020f5780630f02f1d5146102785780631515bc2b146102cd5780631e2c8c6a146102fc57806329b3eea6146103415780632c4e722e146103985780632dfda7a7146103c35780633f4ba83a1461041a5780633f89383d146104315780633fbed97f1461045c5780634042b66f146104b35780634b6753bc146104de5780634c81bb2814610509578063521eb2731461056057806353725e67146105b757806353ed1eae146105fc5780635c975abb1461065357806362066eb314610682578063679aefce146106ad5780636d242972146106d8578063715018a61461070357806375978e4f1461071a57806375b4d78c146107455780638456cb591461079c5780638630a7b2146107b35780638da5cb5b146107de57806397dc351914610835578063a08edce81461088c578063a1df8b1e146108d1578063ab6e907214610900578063b2e6b91214610957578063b7a8807c146109ae578063b7fc4276146109d9578063bc3ec38d14610a30578063bfb2cf8614610a8b578063c37b648c14610ab6578063d0a7fc9d14610ae1578063d7aecb3414610ba2578063ec8ac4d814610bcd578063f2fde38b14610c03578063fc0c546a14610c46578063fd3e50a714610c9d575b61020d33610cf4565b005b34801561021b57600080fd5b5061025e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610dfd565b604051808215151515815260200191505060405180910390f35b34801561028457600080fd5b506102b360048036038101908080356000191690602001909291908035151590602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156102d957600080fd5b506102e261183b565b604051808215151515815260200191505060405180910390f35b34801561030857600080fd5b5061032760048036038101908080359060200190929190505050611847565b604051808215151515815260200191505060405180910390f35b34801561034d57600080fd5b50610356611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61193f565b6040518082815260200191505060405180910390f35b3480156103cf57600080fd5b506103d8611945565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042657600080fd5b5061042f61196f565b005b34801561043d57600080fd5b50610446611a2f565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b50610471611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bf57600080fd5b506104c8611a5f565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3611a65565b6040518082815260200191505060405180910390f35b34801561051557600080fd5b5061051e611a6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056c57600080fd5b50610575611a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105e260048036038101908080359060200190929190505050611ab7565b604051808215151515815260200191505060405180910390f35b34801561060857600080fd5b50610611611cc3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065f57600080fd5b50610668611ce9565b604051808215151515815260200191505060405180910390f35b34801561068e57600080fd5b50610697611cfc565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c2611d06565b6040518082815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611d10565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611d1a565b005b34801561072657600080fd5b5061072f611e1f565b6040518082815260200191505060405180910390f35b34801561075157600080fd5b5061075a611e25565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611e4b565b005b3480156107bf57600080fd5b506107c8611f0c565b6040518082815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611f12565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561084157600080fd5b5061084a611f38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089857600080fd5b506108b760048036038101908080359060200190929190505050611f5e565b604051808215151515815260200191505060405180910390f35b3480156108dd57600080fd5b506108e6612034565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b5061091561204b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096357600080fd5b5061096c612071565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ba57600080fd5b506109c361209b565b6040518082815260200191505060405180910390f35b3480156109e557600080fd5b506109ee6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa06121c9565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb6121cf565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610b8860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506121d9565b604051808215151515815260200191505060405180910390f35b348015610bae57600080fd5b50610bb76123a2565b6040518082815260200191505060405180910390f35b610c01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf4565b005b348015610c0f57600080fd5b50610c44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a8565b005b348015610c5257600080fd5b50610c5b612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb2612435565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806004544210158015610d0b57506005544211155b1515610d1657600080fd5b600660149054906101000a900460ff16151515610d3257600080fd5b349150610d3f838361245b565b610d4882612812565b9050610d5f8260035461283090919063ffffffff16565b600381905550610d6f838261284c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610de68383612f52565b610dee612f56565b610df88383612fc1565b505050565b600080600080600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357ffb3af8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b8101908080519060200190929190505050965060001515871515141515610f4e57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662a6020b8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b8101908080519060200190929190505050955042861115151561103257600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f85cbae8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156110cb57600080fd5b505af11580156110df573d6000803e3d6000fd5b505050506040513d60208110156110f557600080fd5b8101908080519060200190929190505050945060008511151561111757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339bead4f8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b810190808051906020019092919050505093508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561122757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639febfb428a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b505050506040513d60208110156112ea57600080fd5b810190808051906020019092919050505092508215151561130a57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635211e63b8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d60208110156113f157600080fd5b8101908080519060200190929190505050915060008211151561141357600080fd5b84820390506000811015151561142857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ec57600080fd5b505af1158015611500573d6000803e3d6000fd5b505050506040513d602081101561151657600080fd5b810190808051906020019092919050505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d4f498b8b886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b8101908080519060200190929190505050151561164357600080fd5b61165885601254612fc590919063ffffffff16565b6012819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9e920532103a0094c025a5221792b807c2ff3dda1da49a97787ffc680055b42687428d604051808481526020018381526020018260001916600019168152602001935050505060405180910390a35050505050505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174657600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f02f1d584846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050602060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050506040513d602081101561181557600080fd5b8101908080519060200190929190505050151561183157600080fd5b6001905092915050565b60006005544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a557600080fd5b600082121515156118b557600080fd5b81600c819055503373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e600c546040518082815260200191505060405180910390a260019050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cb57600080fd5b600660149054906101000a900460ff1615156119e657600080fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600d54905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60055481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040513d6020811015611c2557600080fd5b810190808051906020019092919050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa1656b9109f62970230d63e1400f9dc7edfb5155c8365931826d68d1269b4d8846040518082815260200191505060405180910390a3919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660149054906101000a900460ff1681565b6000600c54905090565b6000600254905090565b6000601254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7657600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea757600080fd5b600660149054906101000a900460ff16151515611ec357600080fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600d5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fbc57600080fd5b60018212151515611fcc57600080fd5b816002819055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b42600254604051808381526020018281526020019250505060405180910390a260019050919050565b6000600660149054906101000a900460ff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212557600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f28c01cb303b89d02665ba5d587a8c0362fa55a8fc0d6a5e603e1f170d5a6ad4e60405160405180910390a360019050919050565b60125481565b6000600e54905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392e10e0e84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122e95780820151818401526020810190506122ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561232b578082015181840152602081019050612310565b50505050905001945050505050602060405180830381600087803b15801561235257600080fd5b505af1158015612366573d6000803e3d6000fd5b505050506040513d602081101561237c57600080fd5b8101908080519060200190929190505050151561239857600080fd5b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240457600080fd5b61240d81612fde565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561249a57600080fd5b600083141515156124aa57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390ed940c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b505050506040513d602081101561255a57600080fd5b81019080805190602001909291905050509150600c54831015151561257e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156125db57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561263857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dc29f7f856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b505050506040513d602081101561271f57600080fd5b81019080805190602001909291905050509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ce31f716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b81019080805190602001909291905050501561280c5760008160ff161415151561280b57600080fd5b5b50505050565b6000612829600254836130da90919063ffffffff16565b9050919050565b6000818301905082811015151561284357fe5b80905092915050565b6000806000806000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be0376d8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291757600080fd5b505af115801561292b573d6000803e3d6000fd5b505050506040513d602081101561294157600080fd5b810190808051906020019092919050505098506000891415151561296457600080fd5b4289019750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cb84a838a8c6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b810190808051906020019092919050505096508a42604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad75780518252602082019150602081019050602083039250612ab2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902095506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612be457600080fd5b505af1158015612bf8573d6000803e3d6000fd5b505050506040513d6020811015612c0e57600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612cdd57600080fd5b505af1158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b81019080805190602001909291905050509350612d2d848661283090919063ffffffff16565b9250612d448760125461283090919063ffffffff16565b91508183111515612d5457600080fd5b612d678284612fc590919063ffffffff16565b9050612d7e8760125461283090919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce0a5e68c888a8c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460001916600019168152602001838152602001828152602001945050505050602060405180830381600087803b158015612e6157600080fd5b505af1158015612e75573d6000803e3d6000fd5b505050506040513d6020811015612e8b57600080fd5b81019080805190602001909291905050501515612ea757600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff167fc6f1f3ccbf75538a38979e6be1b841d8d2cdaf8634951e6fae6c4e08c167ef58428b8b348f8d8d8d8d8b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050505050505050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612fbe573d6000803e3d6000fd5b50565b5050565b6000828211151515612fd357fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561301a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156130ed576000905061310c565b81830290508183828115156130fe57fe5b0414151561310857fe5b8090505b929150505600a165627a7a72305820b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae0029000000000000000000000000000000000000000000000000000000005b5d0380000000000000000000000000000000000000000000000000000000005f4d8eff00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea700000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e340000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a

Deployed Bytecode

0x608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c7938ca1461020f5780630f02f1d5146102785780631515bc2b146102cd5780631e2c8c6a146102fc57806329b3eea6146103415780632c4e722e146103985780632dfda7a7146103c35780633f4ba83a1461041a5780633f89383d146104315780633fbed97f1461045c5780634042b66f146104b35780634b6753bc146104de5780634c81bb2814610509578063521eb2731461056057806353725e67146105b757806353ed1eae146105fc5780635c975abb1461065357806362066eb314610682578063679aefce146106ad5780636d242972146106d8578063715018a61461070357806375978e4f1461071a57806375b4d78c146107455780638456cb591461079c5780638630a7b2146107b35780638da5cb5b146107de57806397dc351914610835578063a08edce81461088c578063a1df8b1e146108d1578063ab6e907214610900578063b2e6b91214610957578063b7a8807c146109ae578063b7fc4276146109d9578063bc3ec38d14610a30578063bfb2cf8614610a8b578063c37b648c14610ab6578063d0a7fc9d14610ae1578063d7aecb3414610ba2578063ec8ac4d814610bcd578063f2fde38b14610c03578063fc0c546a14610c46578063fd3e50a714610c9d575b61020d33610cf4565b005b34801561021b57600080fd5b5061025e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610dfd565b604051808215151515815260200191505060405180910390f35b34801561028457600080fd5b506102b360048036038101908080356000191690602001909291908035151590602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156102d957600080fd5b506102e261183b565b604051808215151515815260200191505060405180910390f35b34801561030857600080fd5b5061032760048036038101908080359060200190929190505050611847565b604051808215151515815260200191505060405180910390f35b34801561034d57600080fd5b50610356611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61193f565b6040518082815260200191505060405180910390f35b3480156103cf57600080fd5b506103d8611945565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042657600080fd5b5061042f61196f565b005b34801561043d57600080fd5b50610446611a2f565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b50610471611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bf57600080fd5b506104c8611a5f565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3611a65565b6040518082815260200191505060405180910390f35b34801561051557600080fd5b5061051e611a6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056c57600080fd5b50610575611a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105e260048036038101908080359060200190929190505050611ab7565b604051808215151515815260200191505060405180910390f35b34801561060857600080fd5b50610611611cc3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065f57600080fd5b50610668611ce9565b604051808215151515815260200191505060405180910390f35b34801561068e57600080fd5b50610697611cfc565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c2611d06565b6040518082815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611d10565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611d1a565b005b34801561072657600080fd5b5061072f611e1f565b6040518082815260200191505060405180910390f35b34801561075157600080fd5b5061075a611e25565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611e4b565b005b3480156107bf57600080fd5b506107c8611f0c565b6040518082815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611f12565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561084157600080fd5b5061084a611f38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089857600080fd5b506108b760048036038101908080359060200190929190505050611f5e565b604051808215151515815260200191505060405180910390f35b3480156108dd57600080fd5b506108e6612034565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b5061091561204b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096357600080fd5b5061096c612071565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ba57600080fd5b506109c361209b565b6040518082815260200191505060405180910390f35b3480156109e557600080fd5b506109ee6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa06121c9565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb6121cf565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610b8860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506121d9565b604051808215151515815260200191505060405180910390f35b348015610bae57600080fd5b50610bb76123a2565b6040518082815260200191505060405180910390f35b610c01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf4565b005b348015610c0f57600080fd5b50610c44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a8565b005b348015610c5257600080fd5b50610c5b612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb2612435565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806004544210158015610d0b57506005544211155b1515610d1657600080fd5b600660149054906101000a900460ff16151515610d3257600080fd5b349150610d3f838361245b565b610d4882612812565b9050610d5f8260035461283090919063ffffffff16565b600381905550610d6f838261284c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610de68383612f52565b610dee612f56565b610df88383612fc1565b505050565b600080600080600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357ffb3af8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b8101908080519060200190929190505050965060001515871515141515610f4e57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662a6020b8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b8101908080519060200190929190505050955042861115151561103257600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f85cbae8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156110cb57600080fd5b505af11580156110df573d6000803e3d6000fd5b505050506040513d60208110156110f557600080fd5b8101908080519060200190929190505050945060008511151561111757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339bead4f8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b810190808051906020019092919050505093508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561122757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639febfb428a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b505050506040513d60208110156112ea57600080fd5b810190808051906020019092919050505092508215151561130a57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635211e63b8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d60208110156113f157600080fd5b8101908080519060200190929190505050915060008211151561141357600080fd5b84820390506000811015151561142857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ec57600080fd5b505af1158015611500573d6000803e3d6000fd5b505050506040513d602081101561151657600080fd5b810190808051906020019092919050505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d4f498b8b886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b8101908080519060200190929190505050151561164357600080fd5b61165885601254612fc590919063ffffffff16565b6012819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9e920532103a0094c025a5221792b807c2ff3dda1da49a97787ffc680055b42687428d604051808481526020018381526020018260001916600019168152602001935050505060405180910390a35050505050505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174657600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f02f1d584846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050602060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050506040513d602081101561181557600080fd5b8101908080519060200190929190505050151561183157600080fd5b6001905092915050565b60006005544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a557600080fd5b600082121515156118b557600080fd5b81600c819055503373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e600c546040518082815260200191505060405180910390a260019050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cb57600080fd5b600660149054906101000a900460ff1615156119e657600080fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600d54905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60055481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040513d6020811015611c2557600080fd5b810190808051906020019092919050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa1656b9109f62970230d63e1400f9dc7edfb5155c8365931826d68d1269b4d8846040518082815260200191505060405180910390a3919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660149054906101000a900460ff1681565b6000600c54905090565b6000600254905090565b6000601254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7657600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea757600080fd5b600660149054906101000a900460ff16151515611ec357600080fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600d5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fbc57600080fd5b60018212151515611fcc57600080fd5b816002819055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b42600254604051808381526020018281526020019250505060405180910390a260019050919050565b6000600660149054906101000a900460ff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212557600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f28c01cb303b89d02665ba5d587a8c0362fa55a8fc0d6a5e603e1f170d5a6ad4e60405160405180910390a360019050919050565b60125481565b6000600e54905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392e10e0e84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122e95780820151818401526020810190506122ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561232b578082015181840152602081019050612310565b50505050905001945050505050602060405180830381600087803b15801561235257600080fd5b505af1158015612366573d6000803e3d6000fd5b505050506040513d602081101561237c57600080fd5b8101908080519060200190929190505050151561239857600080fd5b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240457600080fd5b61240d81612fde565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561249a57600080fd5b600083141515156124aa57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390ed940c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b505050506040513d602081101561255a57600080fd5b81019080805190602001909291905050509150600c54831015151561257e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156125db57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561263857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dc29f7f856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b505050506040513d602081101561271f57600080fd5b81019080805190602001909291905050509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ce31f716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b81019080805190602001909291905050501561280c5760008160ff161415151561280b57600080fd5b5b50505050565b6000612829600254836130da90919063ffffffff16565b9050919050565b6000818301905082811015151561284357fe5b80905092915050565b6000806000806000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be0376d8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291757600080fd5b505af115801561292b573d6000803e3d6000fd5b505050506040513d602081101561294157600080fd5b810190808051906020019092919050505098506000891415151561296457600080fd5b4289019750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cb84a838a8c6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b810190808051906020019092919050505096508a42604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad75780518252602082019150602081019050602083039250612ab2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902095506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612be457600080fd5b505af1158015612bf8573d6000803e3d6000fd5b505050506040513d6020811015612c0e57600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612cdd57600080fd5b505af1158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b81019080805190602001909291905050509350612d2d848661283090919063ffffffff16565b9250612d448760125461283090919063ffffffff16565b91508183111515612d5457600080fd5b612d678284612fc590919063ffffffff16565b9050612d7e8760125461283090919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce0a5e68c888a8c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460001916600019168152602001838152602001828152602001945050505050602060405180830381600087803b158015612e6157600080fd5b505af1158015612e75573d6000803e3d6000fd5b505050506040513d6020811015612e8b57600080fd5b81019080805190602001909291905050501515612ea757600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff167fc6f1f3ccbf75538a38979e6be1b841d8d2cdaf8634951e6fae6c4e08c167ef58428b8b348f8d8d8d8d8b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050505050505050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612fbe573d6000803e3d6000fd5b50565b5050565b6000828211151515612fd357fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561301a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156130ed576000905061310c565b81830290508183828115156130fe57fe5b0414151561310857fe5b8090505b929150505600a165627a7a72305820b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae0029

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

000000000000000000000000000000000000000000000000000000005b5d0380000000000000000000000000000000000000000000000000000000005f4d8eff00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea700000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e340000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a

-----Decoded View---------------
Arg [0] : _openingTime (uint256): 1532822400
Arg [1] : _closingTime (uint256): 1598918399
Arg [2] : _minimum_weiAmount (uint256): 20000000000000000
Arg [3] : _rate (uint256): 12500
Arg [4] : _admin_wallet (address): 0x894D52703566A5Bc2e47837A3Eeb8eb43381Ee29
Arg [5] : _eth_management_wallet (address): 0xA3d779Daff51A3c7a4eD7107C7B35D8f5b48767b
Arg [6] : _refund_token_wallet (address): 0x5A5A58dBaC64B70712c4dC2D28BFFAc71EB2beA7
Arg [7] : _cot_sale_wallet (address): 0x25B94A458d19C97c7bE62D1c2653669BCCBb3e34
Arg [8] : _whiteList (address): 0x5C524F8B8d94999B42295ee0b6E088a4B43110b4
Arg [9] : _cot (address): 0xed64142f7D0a4d94cE0e7Fe45D12f712fe360BD0
Arg [10] : _deliver (address): 0xBeDE284180C4b539430b0bfECaf1c4AdFf3fFDDa
Arg [11] : _bonus (address): 0xEcea235bd2172BcFFb7B280090cf06B2B14B193A

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005b5d0380
Arg [1] : 000000000000000000000000000000000000000000000000000000005f4d8eff
Arg [2] : 00000000000000000000000000000000000000000000000000470de4df820000
Arg [3] : 00000000000000000000000000000000000000000000000000000000000030d4
Arg [4] : 000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29
Arg [5] : 000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b
Arg [6] : 0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea7
Arg [7] : 00000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e34
Arg [8] : 0000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4
Arg [9] : 000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0
Arg [10] : 000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda
Arg [11] : 000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a


Deployed Bytecode Sourcemap

27517:11292:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21055:21;21065:10;21055:9;:21::i;:::-;27517:11292;35816:1623;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35816:1623:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34142:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34142:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25867:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25867:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;38528:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38528:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37776:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37776:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19926:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19926:19:0;;;;;;;;;;;;;;;;;;;;;;;37623:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37623:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27320:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27320:95:0;;;;;;37925:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37925:101:0;;;;;;;;;;;;;;;;;;;;;;;27864:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27864:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19979:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19979:24:0;;;;;;;;;;;;;;;;;;;;;;;24961:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24961:26:0;;;;;;;;;;;;;;;;;;;;;;;27721:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27721:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19618:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19618:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35111:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35111:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27785:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27785:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26699:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26699:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;38308:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38308:90:0;;;;;;;;;;;;;;;;;;;;;;;34904:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34904:68:0;;;;;;;;;;;;;;;;;;;;;;;33413:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33413:90:0;;;;;;;;;;;;;;;;;;;;;;;931:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;931:114:0;;;;;;27976:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27976:34:0;;;;;;;;;;;;;;;;;;;;;;;28073:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28073:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27140:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27140:93:0;;;;;;27938:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27938:34:0;;;;;;;;;;;;;;;;;;;;;;;313:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;313:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27684:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27684:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;34598:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34598:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34392:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34392:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27625:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27625:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;37481:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37481:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;24930:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24930:26:0;;;;;;;;;;;;;;;;;;;;;;;28016:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28016:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35457:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35457:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28097:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28097:30:0;;;;;;;;;;;;;;;;;;;;;;;38080:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38080:101:0;;;;;;;;;;;;;;;;;;;;;;;33704:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33704:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27900:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27900:32:0;;;;;;;;;;;;;;;;;;;;;;;30015:570;;;;;;;;;;;;;;;;;;;;;;;;;;;;1213:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1213:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19553:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19553:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;28047:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28047:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;30015:570;30106:17;30235:14;25175:11;;25156:15;:30;;:64;;;;;25209:11;;25190:15;:30;;25156:64;25148:73;;;;;;;;26875:6;;;;;;;;;;;26874:7;26866:16;;;;;;;;30126:9;30106:29;;30140:45;30161:12;30175:9;30140:20;:45::i;:::-;30252:26;30268:9;30252:15;:26::i;:::-;30235:43;;30316:24;30330:9;30316;;:13;;:24;;;;:::i;:::-;30304:9;:36;;;;30347:38;30364:12;30378:6;30347:16;:38::i;:::-;30421:12;30395:58;;30409:10;30395:58;;;30435:9;30446:6;30395:58;;;;;;;;;;;;;;;;;;;;;;;;30460:47;30483:12;30497:9;30460:22;:47::i;:::-;30514:15;:13;:15::i;:::-;30534:46;30556:12;30570:9;30534:21;:46::i;:::-;30015:570;;;:::o;35816:1623::-;35904:4;35964:22;36099:26;36264:28;36409:20;36561:23;36719:42;36927:49;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35989:7;;;;;;;;;;;:20;;;36010:8;35989:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35989:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35989:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35989:30:0;;;;;;;;;;;;;;;;35964:55;;36053:5;36032:26;;:17;:26;;;36024:35;;;;;;;;36128:7;;;;;;;;;;;:32;;;36161:8;36128:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36128:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36128:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36128:42:0;;;;;;;;;;;;;;;;36099:71;;36205:3;36183:18;:25;;36175:34;;;;;;;;36295:7;;;;;;;;;;;:28;;;36324:8;36295:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36295:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36295:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36295:38:0;;;;;;;;;;;;;;;;36264:69;;36369:1;36346:20;:24;36338:33;;;;;;;;36432:7;;;;;;;;;;;:29;;;36462:8;36432:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36432:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36432:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36432:39:0;;;;;;;;;;;;;;;;36409:62;;36500:12;36484:28;;:12;:28;;;36476:37;;;;;;;;36587:7;;;;;;;;;;;:28;;;36616:8;36587:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36587:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36587:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36587:38:0;;;;;;;;;;;;;;;;36561:64;;36639:18;36638:19;36630:28;;;;;;;;36764:7;;;;;;;;;;;:30;;;36795:12;36764:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36764:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36764:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36764:44:0;;;;;;;;;;;;;;;;36719:89;;36858:1;36821:34;:38;36813:47;;;;;;;;37016:20;36979:34;:57;36927:109;;37094:1;37049:41;:46;;37041:55;;;;;;;;37122:5;;;;;;;;;;;:14;;;37137:12;37151:20;37122:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37122:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37122:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37122:50:0;;;;;;;;;;;;;;;;;37203:7;;;;;;;;;;;:30;;;37234:12;37248:8;37258:20;37203:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37203:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37203:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37203:76:0;;;;;;;;;;;;;;;;37195:85;;;;;;;;37305:41;37325:20;37305:15;;:19;;:41;;;;:::i;:::-;37287:15;:59;;;;37384:12;37358:76;;37372:10;37358:76;;;37398:20;37420:3;37425:8;37358:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35816:1623;;;;;;;;;;;:::o;34142:193::-;34235:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;34255:7;;;;;;;;;;;:31;;;34287:8;34297:11;34255:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34255:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34255:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34255:54:0;;;;;;;;;;;;;;;;34247:63;;;;;;;;34324:4;34317:11;;34142:193;;;;:::o;25867:156::-;25909:4;26006:11;;25988:15;:29;25981:36;;25867:156;:::o;38528:276::-;38612:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;38658:1;38632:22;:27;;38624:36;;;;;;;;38695:22;38667:17;:51;;;;38751:10;38730:51;;;38763:17;;38730:51;;;;;;;;;;;;;;;;;;38795:4;38788:11;;38528:276;;;:::o;37776:93::-;37824:7;37845:19;;;;;;;;;;;37838:26;;37776:93;:::o;19926:19::-;;;;:::o;37623:104::-;37680:7;37701:21;;;;;;;;;;;37694:28;;37623:104;:::o;27320:95::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;27035:6;;;;;;;;;;;27027:15;;;;;;;;27383:5;27374:6;;:14;;;;;;;;;;;;;;;;;;27400:9;;;;;;;;;;27320:95::o;37925:101::-;37981:7;38002:19;;37995:26;;37925:101;:::o;27864:30::-;;;;;;;;;;;;;:::o;19979:24::-;;;;:::o;24961:26::-;;;;:::o;27721:36::-;;;;;;;;;;;;;:::o;19618:21::-;;;;;;;;;;;;;:::o;35111:184::-;35173:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35183:5;;;;;;;;;;;:14;;;35198:19;;;;;;;;;;;35219:6;35183:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35183:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35183:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35183:43:0;;;;;;;;;;;;;;;;;35262:19;;;;;;;;;;;35238:52;;35250:10;35238:52;;;35283:6;35238:52;;;;;;;;;;;;;;;;;;35111:184;;;:::o;27785:34::-;;;;;;;;;;;;;:::o;26699:26::-;;;;;;;;;;;;;:::o;38308:90::-;38356:7;38376:17;;38369:24;;38308:90;:::o;34904:68::-;34943:7;34963:4;;34956:11;;34904:68;:::o;33413:90::-;33462:7;33482:15;;33475:22;;33413:90;:::o;931:114::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;1008:5;;;;;;;;;;;989:25;;;;;;;;;;;;1037:1;1021:5;;:18;;;;;;;;;;;;;;;;;;931:114::o;27976:34::-;;;;:::o;28073:18::-;;;;;;;;;;;;;:::o;27140:93::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;26875:6;;;;;;;;;;;26874:7;26866:16;;;;;;;;27204:4;27195:6;;:13;;;;;;;;;;;;;;;;;;27220:7;;;;;;;;;;27140:93::o;27938:34::-;;;;:::o;313:20::-;;;;;;;;;;;;;:::o;27684:32::-;;;;;;;;;;;;;:::o;34598:193::-;34659:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;34689:1;34677:8;:13;;34669:22;;;;;;;;34713:8;34698:4;:24;;;;34746:10;34734:34;;;34758:3;34763:4;;34734:34;;;;;;;;;;;;;;;;;;;;;;;;34782:4;34775:11;;34598:193;;;:::o;34392:67::-;34431:4;34448:6;;;;;;;;;;;34441:13;;34392:67;:::o;27625:27::-;;;;;;;;;;;;;:::o;37481:85::-;37528:7;37549:12;;;;;;;;;;;37542:19;;37481:85;:::o;24930:26::-;;;;:::o;28016:27::-;;;;;;;;;;;;;:::o;35457:174::-;35525:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35557:4;35535:19;;:26;;;;;;;;;;;;;;;;;;35605:4;35573:37;;35593:10;35573:37;;;;;;;;;;;;35622:4;35615:11;;35457:174;;;:::o;28097:30::-;;;;:::o;38080:101::-;38136:7;38157:19;;38150:26;;38080:101;:::o;33704:190::-;33800:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;33820:7;;;;;;;;;;;:24;;;33845:6;33853:14;33820:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;33820:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;33820:48:0;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33820:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33820:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33820:48:0;;;;;;;;;;;;;;;;33812:57;;;;;;;;33883:4;33876:11;;33704:190;;;;:::o;27900:32::-;;;;:::o;1213:105::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;1283:29;1302:9;1283:18;:29::i;:::-;1213:105;:::o;19553:18::-;;;;;;;;;;;;;:::o;28047:22::-;;;;;;;;;;;;;:::o;30873:836::-;31055:38;31407:17;30991:1;30967:26;;:12;:26;;;;30959:35;;;;;;;;31021:1;31007:10;:15;;30999:24;;;;;;;;31096:5;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31096:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31096:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31096:38:0;;;;;;;;;;;;;;;;31055:79;;31196:17;;31182:10;:31;;31174:40;;;;;;;;31281:12;;;;;;;;;;;31265:28;;:12;:28;;;;31257:37;;;;;;;;31323:21;;;;;;;;;;;31307:37;;:12;:37;;;;31299:46;;;;;;;;31427:10;;;;;;;;;;;:20;;;31448:12;31427:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31427:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31427:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31427:34:0;;;;;;;;;;;;;;;;31407:54;;31622:10;;;;;;;;;;;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31622:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31622:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31622:41:0;;;;;;;;;;;;;;;;31618:85;;;31695:1;31680:11;:16;;;;31671:26;;;;;;;;31618:85;30873:836;;;;:::o;24343:125::-;24416:7;24442:20;24457:4;;24442:10;:14;;:20;;;;:::i;:::-;24435:27;;24343:125;;;:::o;5211:127::-;5269:9;5295:1;5291;:5;5287:9;;5315:1;5310;:6;;5303:14;;;;;;5331:1;5324:8;;5211:127;;;;:::o;31953:1404::-;32090:20;32247;32328:26;32436:15;32549:31;32626:26;32692:24;32772:30;32916:25;32113:7;;;;;;;;;;;:23;;;32137:12;32113:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32113:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32113:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32113:37:0;;;;;;;;;;;;;;;;32090:60;;32181:1;32165:12;:17;;32157:26;;;;;;;;32285:3;32270:12;:18;32247:41;;32357:5;;;;;;;;;;;:20;;;32378:12;32392;32357:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32357:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32357:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32357:48:0;;;;;;;;;;;;;;;;32328:77;;32481:12;32494:3;32464:34;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32464:34:0;;;32454:45;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32454:45:0;;;;;;;;;;;;;;;;32436:63;;32583:5;;;;;;;;;;;:15;;;32599;;;;;;;;;;;32583:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32583:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32583:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32583:32:0;;;;;;;;;;;;;;;;32549:66;;32655:5;;;;;;;;;;;:15;;;32679:4;32655:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32655:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32655:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32655:30:0;;;;;;;;;;;;;;;;32626:59;;32720:47;32748:18;32720:23;:27;;:47;;;;:::i;:::-;32692:75;;32805:39;32825:18;32805:15;;:19;;:39;;;;:::i;:::-;32772:72;;32882:22;32863:16;:41;32855:50;;;;;;;;32944:44;32965:22;32944:16;:20;;:44;;;;:::i;:::-;32916:72;;33015:39;33035:18;33015:15;;:19;;:39;;;;:::i;:::-;32997:15;:57;;;;33069:7;;;;;;;;;;;:29;;;33099:12;33113:7;33122:18;33143:12;33069:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33069:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33069:87:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33069:87:0;;;;;;;;;;;;;;;;33061:96;;;;;;;;33188:12;33169:183;;;33202:3;33207:12;33221;33235:9;33246:12;33260:18;33280:7;33289:23;33314:18;33334:17;33169:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31953:1404;;;;;;;;;;;:::o;23960:138::-;;;:::o;24552:73::-;24593:6;;;;;;;;;;;:15;;:26;24609:9;24593:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24593:26:0;24552:73::o;22727:137::-;;;:::o;5031:113::-;5089:7;5117:1;5112;:6;;5105:14;;;;;;5137:1;5133;:5;5126:12;;5031:113;;;;:::o;1459:175::-;1551:1;1530:23;;:9;:23;;;;1522:32;;;;;;;;1594:9;1566:38;;1587:5;;;;;;;;;;;1566:38;;;;;;;;;;;;1619:9;1611:5;;:17;;;;;;;;;;;;;;;;;;1459:175;:::o;4166:384::-;4224:9;4459:1;4454;:6;4450:37;;;4478:1;4471:8;;;;4450:37;4503:1;4499;:5;4495:9;;4527:1;4522;4518;:5;;;;;;;;:10;4511:18;;;;;;4543:1;4536:8;;4166:384;;;;;:::o

Swarm Source

bzzr://b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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